ONOS-2849: Refactored topo dialog to general DialogService. Implemented confirmation dialog in App view.
Change-Id: Ib20e98253b2d13f7d7debef2dea5a530b61ced99
diff --git a/web/gui/src/main/webapp/app/view/topo/topoDialog.js b/web/gui/src/main/webapp/app/view/topo/topoDialog.js
index 0c47511..c5e89dd 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoDialog.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoDialog.js
@@ -16,175 +16,29 @@
/*
ONOS GUI -- Topology Dialog Module.
- Defines functions for manipulating a dialog box.
+ Creates a dialog box for the topology view.
*/
(function () {
'use strict';
- // injected refs
- var $log, $window, $rootScope, fs, ps, bns;
-
// constants
- var pCls = 'topo-p dialog',
- idDialog = 'topo-p-dialog',
- panelOpts = {
- width: 300,
- edge: 'left'
+ var idDialog = 'topo-p-dialog',
+ opts = {
+ cssCls: 'topo-p'
};
- // internal state
- var pApi, panel, dApi;
-
- // TODO: ESC key invokes Cancel callback
- // TODO: Enter invokes OK callback
-
- // create the dialog; return its API
- function createDialog() {
- var header, body, footer,
- p = ps.createPanel(idDialog, panelOpts);
- p.classed(pCls, true);
- panel = p;
-
- function reset() {
- p.empty();
- p.append('div').classed('header', true);
- p.append('div').classed('body', true);
- p.append('div').classed('footer', true);
-
- header = p.el().select('.header');
- body = p.el().select('.body');
- footer = p.el().select('.footer');
- }
-
- function hAppend(x) {
- if (typeof x === 'string') {
- return header.append(x);
- }
- header.node().appendChild(x.node());
- return header;
- }
-
- function bAppend(x) {
- if (typeof x === 'string') {
- return body.append(x);
- }
- body.node().appendChild(x.node());
- return body;
- }
-
- function fAppend(x) {
- if (typeof x === 'string') {
- return footer.append(x);
- }
- footer.node().appendChild(x.node());
- return footer;
- }
-
- function destroy() {
- ps.destroyPanel(idDialog);
- }
-
- return {
- reset: reset,
- appendHeader: hAppend,
- appendBody: bAppend,
- appendFooter: fAppend,
- destroy: destroy
- };
- }
-
- function makeButton(text, callback) {
- var cb = fs.isF(callback);
-
- function invoke() {
- cb && cb();
- panel.hide();
- }
- return createDiv('dialog-button')
- .text(text)
- .on('click', invoke);
- }
-
- function setTitle(title) {
- if (pApi) {
- pApi.appendHeader('h2').text(title);
- }
- return dApi;
- }
-
- function addContent(content) {
- if (pApi) {
- pApi.appendBody(content);
- }
- return dApi;
- }
-
- function addButton(text, cb) {
- if (pApi) {
- pApi.appendFooter(makeButton(text, cb));
- }
- return dApi;
- }
-
- // opens the dialog (creates if necessary)
- function openDialog() {
- $log.debug('Open DIALOG');
- if (!pApi) {
- pApi = createDialog();
- }
- pApi.reset();
- panel.show();
-
- // return the dialog object API
- dApi = {
- setTitle: setTitle,
- addContent: addContent,
- addButton: addButton
- };
- return dApi;
- }
-
- // closes the dialog (destroying panel)
- function closeDialog() {
- $log.debug('Close DIALOG');
- if (pApi) {
- panel.hide();
- pApi.destroy();
- pApi = null;
- dApi = null;
- }
- }
-
- // creates a detached div, returning D3 selection
- // optional CSS class may be provided
- function createDiv(cls) {
- var div = d3.select(document.createElement('div'));
- if (cls) {
- div.classed(cls, true);
- }
- return div;
- }
-
// ==========================
angular.module('ovTopo')
.factory('TopoDialogService',
- ['$log', '$window', '$rootScope', 'FnService', 'PanelService', 'ButtonService',
+ ['DialogService',
- function (_$log_, _$window_, _$rootScope_,
- _fs_, _ps_, _bns_) {
- $log = _$log_;
- $window = _$window_;
- $rootScope = _$rootScope_;
- fs = _fs_;
- ps = _ps_;
- bns = _bns_;
-
+ function (ds) {
return {
- openDialog: openDialog,
- closeDialog: closeDialog,
- createDiv: createDiv
+ openDialog: function () { return ds.openDialog(idDialog, opts); },
+ closeDialog: ds.closeDialog,
+ createDiv: ds.createDiv
};
}]);
}());