// Common Controller for the montage view
/* jshint -W041 */
/* jslint browser: true*/
/* global saveAs, cordova,StatusBar,angular,console,ionic, moment, vis , Chart, DJS*/
angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', '$rootScope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$q', '$sce', 'carouselUtils', '$ionicPopup', function ($scope, $rootScope, zm, ZMDataModel, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $q, $sce, carouselUtils, $ionicPopup) {
var Graph2d;
var tcGraph;
var items;
var groups;
var eventImageDigits=5;
var cv;
var ctx;
var options;
var data;
$scope.errorDetails="";
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
$scope.handleAlarms = function () {
$rootScope.isAlarm = !$rootScope.isAlarm;
if (!$rootScope.isAlarm) {
$rootScope.alarmCount = "0";
$ionicHistory.nextViewOptions({
disableBack: true
});
$state.go("events", {
"id": 0
}, {
reload: true
});
}
};
//-------------------------------------------------------
// we use this to reload the connkey if authkey changed
//------------------------------------------------------
$rootScope.$on("auth-success", function () {
ZMDataModel.zmDebug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
});
$scope.scrollUp = function()
{
//console.log ("SWIPE UP");
$ionicScrollDelegate.$getByHandle("timeline-modal-delegate").scrollTop(true);
};
$scope.scrollDown = function()
{
//console.log ("SWIPE DOWN");
$ionicScrollDelegate.$getByHandle("timeline-modal-delegate").scrollBottom(true);
};
//-------------------------------------------------------
// Tapping on a frame shows this image
//------------------------------------------------------
$scope.showImage = function (p,r,f, fid)
{
var img = "";
$rootScope.zmPopup = $ionicPopup.alert({title: 'frame:'+fid+'/Event:'+$scope.eid,template:img, cssClass:'popup80'});
};
$scope.$on('modal.removed', function () {
//Graph2d.destroy();
tcGraph.destroy();
// Execute action
});
//-------------------------------------------------------
// init drawing here
//------------------------------------------------------
$scope.$on('modal.shown', function () {
$scope.graphWidth=$rootScope.devWidth-30;
ZMDataModel.zmLog ("Setting init graph width to " + $scope.graphWidth);
$scope.dataReady = false;
ZMDataModel.getKeyConfigParams(0)
.then(function (data) {
//console.log ("***GETKEY: " + JSON.stringify(data));
eventImageDigits = parseInt(data);
ZMDataModel.zmLog("Image padding digits reported as " + eventImageDigits);
});
$scope.eventdetails = "loading...";
processEvent();
//$scope.eventdetails = JSON.stringify($scope.event);
});
//-------------------------------------------------------
// okay, really init drawing here
//------------------------------------------------------
function processEvent()
{
var eid = $scope.event.Event.Id;
var ld = ZMDataModel.getLogin();
var apiurl = ld.apiurl + "/events/"+eid+".json";
ZMDataModel.zmLog ("Getting " + apiurl);
$http.get (apiurl)
.then (function (success)
{
//$scope.eventdetails = JSON.stringify(success);
drawGraphTC(success.data);
},
function (error)
{
$scope.errorDetails = "there was an error rendering the graph. Please see logs";
ZMDataModel.zmLog ("Error in timeline frames " + JSON.stringify(error));
});
}
//-------------------------------------------------------
// I was kidding, this is where it really is drawn
// scout's promise
//------------------------------------------------------
function drawGraphTC(event)
{
data = {
labels: [],
datasets: [
{
label: 'Score',
backgroundColor: 'rgba(129, 207, 224, 1.0)',
borderColor: 'rgba(129, 207, 224, 1.0)',
hoverBackgroundColor: 'rgba(248, 148, 6,1.0)',
hoverBorderColor: 'rgba(248, 148, 6,1.0)',
data: [],
frames: []
},
]
};
// Chart.js Options
options = {
scales: {
xAxes:[{
display:false
}]
},
responsive: true,
scaleBeginAtZero : true,
scaleShowGridLines : true,
scaleGridLineColor : "rgba(0,0,0,.05)",
scaleGridLineWidth : 1,
barShowStroke : true,
barStrokeWidth : 2,
barValueSpacing : 5,
barDatasetSpacing : 1,
pointDot:true,
pointDotRadius : 4,
hover:
{
mode:'single',
onHover:function(obj)
{
if (obj.length > 0)
tapOrHover(obj[0]._index);
}
},
//String - A legend template
legendTemplate : '