blob: 49b41c0d67101de8a7897299a26426d0441387dc [file] [log] [blame]
// js for driver view
(function () {
'use strict';
// injected refs
var $log, $scope, fs, wss, mast;
// constants
var detailsReq = 'driverDataRequest',
detailsResp = 'driverDataResponse',
topPad = 13,
labelFudge = 14;
// d3 selections
var tabular, dMatrix, tabHdRot, tabGrid, first;
function fixSizes() {
var dy = fs.noPxStyle(tabular, 'height') +
fs.noPxStyle(tabHdRot, 'height') + mast.mastHeight() + topPad,
tHeight = fs.windowSize(dy).height + 'px',
rowHdr = tabGrid.select('.row-header'),
w;
tabGrid.style('height', tHeight);
if (!rowHdr.empty()) {
w = fs.noPxStyle(rowHdr, 'width') + labelFudge;
first.style('width', w + 'px');
}
}
function respDetailsCb(data) {
$scope.behaviours = data.behaviours;
$scope.drivers = data.drivers;
$scope.matrix = data.matrix;
$scope.$apply();
fixSizes();
}
angular.module('ovDriverMatrix', [])
.run(['IconService', function (is) {
// Create our icon-to-glyph binding here:
is.registerIconMapping('nav_drivers', 'cog');
}])
.controller('OvDriverMatrixCtrl',
['$rootScope', '$window', '$log', '$scope', '$sce',
'FnService', 'WebSocketService', 'MastService',
function ($rootScope, $window, _$log_, _$scope_, $sce,
_fs_, _wss_, _mast_) {
$log = _$log_;
$scope = _$scope_;
fs = _fs_;
wss = _wss_;
mast = _mast_;
var handlers = {},
unbindWatch;
tabular = d3.select('.tabular-header');
dMatrix = d3.select('.driver-matrix');
tabHdRot = d3.select('.table-header-rotated');
tabGrid = d3.select('.table-grid');
first = tabHdRot.select('.first');
unbindWatch = $rootScope.$watchCollection(
function () {
return {
h: $window.innerHeight,
w: $window.innerWidth
};
}, fixSizes
);
$scope.behaviours = [];
$scope.drivers = [];
$scope.matrix = {};
handlers[detailsResp] = respDetailsCb;
wss.bindHandlers(handlers);
wss.sendEvent(detailsReq);
function cellHit(d, b) {
var drec = $scope.matrix[d],
brec = drec && drec[b];
return !!brec;
}
$scope.cellMarked = cellHit;
$scope.checkmark = $sce.trustAsHtml("✓");
// cleanup
$scope.$on('$destroy', function () {
unbindWatch();
wss.unbindHandlers(handlers);
$log.log('OvDriverMatrixCtrl has been destroyed');
});
$log.log('OvDriverMatrixCtrl has been created');
}]);
}());