Skeleton implementation of TableDetailService, to house common code for creating detail panels for table item selection.

Change-Id: I547f74a2e42699e4242cb8616f0edf3076019e88
This commit is contained in:
Simon Hunt 2017-01-06 20:07:50 -08:00
parent 8a0429ad47
commit 400ebbfffd
3 changed files with 94 additions and 2 deletions

View File

@ -0,0 +1,66 @@
/*
* Copyright 2017-present 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 -- Widget -- Table Detail Panel Service
*/
(function () {
'use strict';
// injected refs
var $log, $interval, $timeout, fs, wss;
// constants
// var refreshInterval = 2000;
function noop() {}
// TODO: describe the input object for the main function
// example params to (functionX):
// {
// ...
// }
function buildBasePanel(opts) {
var popTopF = fs.isF(opts.popTop) || noop,
popMidF = fs.isF(opts.popMid) || noop,
popBotF = fs.isF(opts.popBot) || noop;
$log.debug('options are', opts);
// TODO use panel service to create base panel
// TODO: create divs, and pass into invocations of popTopF(div), etc.
}
// more functions
// TODO: add ref to PanelService
angular.module('onosWidget')
.factory('TableDetailService',
['$log', '$interval', '$timeout', 'FnService', 'WebSocketService',
function (_$log_, _$interval_, _$timeout_, _fs_, _wss_) {
$log = _$log_;
$interval = _$interval_;
$timeout = _$timeout_;
fs = _fs_;
wss = _wss_;
return {
buildBasePanel: buildBasePanel
};
}]);
}());

View File

@ -258,14 +258,29 @@
detailsPanel.hide();
}
// Sample functions for detail panel creation
function popTop(div) {
$log.debug('populateTop');
// TODO: real work
// div.append(.....);
// div.append(.....);
// div.append(.....);
}
function popMid(div) {
$log.debug('populateMiddle');
// TODO: real work
}
angular.module('ovDevice', [])
.controller('OvDeviceCtrl',
['$log', '$scope', '$location', 'TableBuilderService', 'FnService',
['$log', '$scope', '$location', 'TableBuilderService',
'TableDetailService', 'FnService',
'MastService', 'PanelService', 'WebSocketService', 'IconService',
'NavService', 'KeyService',
function (_$log_, _$scope_, _$location_,
tbs, _fs_, _mast_, _ps_, _wss_, _is_, _ns_, _ks_) {
tbs, tds, _fs_, _mast_, _ps_, _wss_, _is_, _ns_, _ks_) {
var params,
handlers = {};
@ -314,6 +329,16 @@
selCb: selCb
});
// ==================== for testing for now ===============
// TODO: more than just an example
tds.buildBasePanel({
popTop: popTop,
popMid: popMid
});
// ==================== for testing for now ===============
$scope.nav = function (path) {
if ($scope.selId) {
ns.navTo(path, { devId: $scope.selId });

View File

@ -81,6 +81,7 @@
<script src="app/fw/widget/toolbar.js"></script>
<script src="app/fw/widget/tooltip.js"></script>
<script src="app/fw/widget/button.js"></script>
<script src="app/fw/widget/tableDetail.js"></script>
<script src="app/fw/widget/tableBuilder.js"></script>
<script src="app/fw/widget/chartBuilder.js"></script>
<script src="app/fw/widget/listBuilder.js"></script>