Bri Prebilic Cole

GUI -- Created initial device view

Change-Id: Ie9b2a4e743d7a8070c3dfe736ad5a953547bd2f9
......@@ -5,4 +5,5 @@
<ul>
<li> <a ng-click="navCtrl.hideNav()" href="#/sample">Sample View</a></li>
<li> <a ng-click="navCtrl.hideNav()" href="#/topo">Topology View</a></li>
<li> <a ng-click="navCtrl.hideNav()" href="#/device">Device View</a></li>
</ul>
......
......@@ -57,12 +57,14 @@
<!-- {INJECTED-JAVASCRIPT} -->
<script src="view/sample/sample.js"></script>
<script src="view/topo/topo.js"></script>
<script src="view/device/device.js"></script>
<!-- TODO: inject javascript refs server-side -->
<!-- This is where contributed stylesheets will get injected -->
<!-- {INJECTED-STYLESHEETS} -->
<link rel="stylesheet" href="view/sample/sample.css">
<link rel="stylesheet" href="view/topo/topo.css">
<link rel="stylesheet" href="view/device/device.css">
<!-- TODO: inject style-sheet refs server-side -->
</head>
<body class="light" ng-app="onosApp">
......
......@@ -30,6 +30,7 @@
// NOTE: 'ov' == 'Onos View'...
'ovSample',
'ovTopo',
'ovDevice',
// (end of view modules)
// core modules...
......@@ -81,6 +82,11 @@
controllerAs: 'ctrl',
templateUrl: 'view/topo/topo.html'
})
.when('/device', {
controller: 'OvDeviceCtrl',
controllerAs: 'ctrl',
templateUrl: 'view/device/device.html'
})
.otherwise({
redirectTo: '/'
})
......
/*
* 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 -- Sample View -- CSS file
@author Simon Hunt
*/
#ov-device table {
border: 1px;
/*color: darkorange;*/
}
\ No newline at end of file
<!-- Device partial HTML -->
<div id="ov-device">
<h2>Device View</h2>
<table>
<tr ng-repeat="dev in ctrl.deviceData">
<!-- add more property fields for table from device data -->
<td>{{dev.id}}</td>
<td>{{dev.mfr}}</td>
<td>{{dev.hw}}</td>
<td>{{dev.sw}}</td>
</tr>
</table>
</div>
/*
* 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 -- Sample View Module
@author Simon Hunt
@author Bri Prebilic Cole
*/
(function () {
'use strict';
var urlSuffix = '/onos/v1/devices';
// TODO : refactor into remote service
function buildUrl($loc) {
return $loc.protocol() + '://' + $loc.host() + ':' + $loc.port();
}
angular.module('ovDevice', [])
.controller('OvDeviceCtrl', ['$log', '$http', '$location',
function ($log, $http, $loc) {
var self = this;
self.deviceData = [];
var url = buildUrl($loc) + urlSuffix;
$log.log(url);
$http.get(url).then(
//success
function (response) {
self.deviceData = response.data.devices;
},
//failure
function (response) {
$log.warn('Failed to get device data ', response.status);
}
);
$log.log('OvDeviceCtrl has been created');
}]);
}());
/*
* 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 -- Device Controller - Unit Tests
@author Simon Hunt
*/
describe('Controller: OvDeviceCtrl', function () {
// instantiate the Device module
beforeEach(module('ovDevice'));
var $log, $controller, ctrl, $mockHttp;
var fakeData = {
"devices": [
{
"id": "of:0000000000000001",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000004",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
}]
};
// we need an instance of the controller
beforeEach(inject(function(_$log_, _$controller_, $httpBackend) {
$log = _$log_;
$controller = _$controller_;
$mockHttp = $httpBackend;
$mockHttp.whenGET(/devices/).respond(fakeData);
}));
//afterEach($mockHttp.resetExpectations);
it('should be an empty array', function () {
ctrl = $controller('OvDeviceCtrl');
expect(ctrl.deviceData).toEqual([]);
});
it('should have data in it', function () {
ctrl = $controller('OvDeviceCtrl');
$mockHttp.flush();
expect(ctrl.deviceData).toEqual(fakeData.devices);
})
});
{
"devices": [
{
"id": "of:0000000000000001",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000004",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000005",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000002",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000003",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000006",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000007",
"available": true,
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
}
]
}
\ No newline at end of file