blob: d05dc3eb35c0d3140cb43620023a1f997d3e8ae2 [file] [log] [blame]
/*
* Copyright 2015 Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
ONOS GUI -- Topology Panel Module.
Defines functions for manipulating the summary, detail, and instance panels.
*/
(function () {
'use strict';
// injected refs
var $log, ps;
// constants
var idSum = 'topo-p-summary',
idDet = 'topo-p-detail',
idIns = 'topo-p-instance',
panelOpts = {
width: 260
};
// internal state
var settings;
// SVG elements;
var fooPane;
// D3 selections;
var summaryPanel,
detailPanel,
instancePanel;
// default settings for force layout
var defaultSettings = {
foo: 2
};
// ==========================
function addSep(tbody) {
tbody.append('tr').append('td').attr('colspan', 2).append('hr');
}
function addProp(tbody, label, value) {
var tr = tbody.append('tr');
function addCell(cls, txt) {
tr.append('td').attr('class', cls).text(txt);
}
addCell('label', label + ' :');
addCell('value', value);
}
function populateSummary(data) {
summaryPanel.empty();
var svg = summaryPanel.append('svg').attr({
width: 40,
height: 40
}).style('background-color', 'goldenrod'),
iid = '#' + (data.type || 'unknown');
var title = summaryPanel.append('h2'),
table = summaryPanel.append('table'),
tbody = table.append('tbody');
// append glyph iid to SVG // black fill
// append glyph bird to SVG // white fill
title.text(data.id);
data.propOrder.forEach(function(p) {
if (p === '-') {
addSep(tbody);
} else {
addProp(tbody, p, data.props[p]);
}
});
}
function showSummaryPanel() {
summaryPanel.show();
}
// ==========================
angular.module('ovTopo')
.factory('TopoPanelService',
['$log', 'PanelService',
function (_$log_, _ps_) {
$log = _$log_;
ps = _ps_;
function initPanels() {
summaryPanel = ps.createPanel(idSum, panelOpts);
// TODO: set up detail and instance panels..
}
function destroyPanels() {
ps.destroyPanel(idSum);
summaryPanel = null;
// TODO: destroy detail and instance panels..
}
function showSummary(payload) {
populateSummary(payload);
showSummaryPanel();
}
return {
initPanels: initPanels,
destroyPanels: destroyPanels,
showSummary: showSummary
};
}]);
}());