221 lines
5.2 KiB
JavaScript
221 lines
5.2 KiB
JavaScript
var ZoneMinder = angular.module('ZoneMinder', [
|
|
'ZoneMinderControllers',
|
|
'tc.chartjs',
|
|
'ui.bootstrap',
|
|
'angularUtils.directives.dirPagination',
|
|
'ui.bootstrap.datetimepicker',
|
|
'ui.router'
|
|
]);
|
|
|
|
ZoneMinder.config(['$locationProvider', function($locationProvider) {
|
|
$locationProvider.html5Mode(true);
|
|
}]);
|
|
|
|
ZoneMinder.config(function($stateProvider, $urlRouterProvider) {
|
|
$urlRouterProvider.otherwise('/');
|
|
|
|
$stateProvider
|
|
.state('/', {
|
|
url: '/',
|
|
templateUrl: '/views/console.html'
|
|
})
|
|
.state('events', {
|
|
url: '/events',
|
|
templateUrl: '/views/events.html'
|
|
})
|
|
.state('options', {
|
|
url: '/options',
|
|
templateUrl: '/views/options.html'
|
|
});
|
|
});
|
|
|
|
ZoneMinder.config(function(paginationTemplateProvider) {
|
|
paginationTemplateProvider.setPath('/js/dirPagination.tpl.html');
|
|
});
|
|
|
|
ZoneMinder.factory('Monitor', function($http) {
|
|
return {
|
|
getMonitor: function(mid) {
|
|
return $http.get('/api/monitors/'+mid+'.json');
|
|
},
|
|
saveMonitor: function(monitor) {
|
|
return $http({
|
|
method: 'POST',
|
|
url: '/api/monitors.json',
|
|
data: $.param(monitor),
|
|
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
|
|
});
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('State', function($http) {
|
|
return {
|
|
get: function(callback) {
|
|
$http.get('/api/states.json').success(callback);
|
|
},
|
|
change: function(state) {
|
|
return $http.post('/api/states/change/'+state+'.json');
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('Header', function($http) {
|
|
return {
|
|
getLogState: function(callback) {
|
|
$http.get('/api/monitors.json').success(callback);
|
|
},
|
|
getDaemonStatus: function(callback) {
|
|
$http.get('/api/host/daemonCheck.json').success(callback);
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('Log', function($http) {
|
|
return {
|
|
get: function(page) {
|
|
return $http.get('/api/logs.json?page='+page);
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('Host', function($http) {
|
|
return {
|
|
getDiskPercent: function(callback) {
|
|
$http.get('/api/host/getDiskPercent.json').success(callback);
|
|
},
|
|
getLoad: function(callback) {
|
|
$http.get('/api/host/getLoad.json').success(callback);
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('Footer', function($http) {
|
|
return {
|
|
getVersion: function(callback) {
|
|
$http.get('/api/host/getVersion.json').success(callback);
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('Events', function($http) {
|
|
return {
|
|
get: function(filter, page) {
|
|
if (filter) {
|
|
return $http.get('/api/events/index/'+filter+'.json?page='+page);
|
|
} else {
|
|
return $http.get('/api/events.json?page='+page);
|
|
}
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('Event', function($http) {
|
|
return {
|
|
get: function(eventId) {
|
|
return $http.get('/api/events/'+ eventId +'.json');
|
|
},
|
|
delete: function(eventId) {
|
|
return $http.delete('/api/events/'+ eventId + '.json');
|
|
},
|
|
archive: function(eventId) {
|
|
return $http.post('/api/events/archive/'+ eventId + '.json');
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.factory('Console', function($http) {
|
|
return {
|
|
getConsoleEvents: function(interval) {
|
|
return $http.get('/api/events/consoleEvents/'+interval+'.json');
|
|
},
|
|
getMonitors: function() {
|
|
return $http.get('/api/monitors.json');
|
|
},
|
|
daemonStatus: function(id, daemon) {
|
|
return $http.get('/api/monitors/daemonStatus/id:'+id+'/daemon:'+daemon+'.json');
|
|
},
|
|
delete: function(id) {
|
|
return $http.delete('/api/monitors/'+id+'.json');
|
|
}
|
|
};
|
|
});
|
|
|
|
|
|
ZoneMinder.factory('Config', function($http) {
|
|
return {
|
|
getCategories: function() {
|
|
return $http.get('/api/configs/categories.json');
|
|
},
|
|
getCategory: function(category) {
|
|
return $http.get('/api/configs/categories/' + category + '.json')
|
|
},
|
|
setConfigModel: function() {
|
|
return $http.get('/api/configs/keyValue.json')
|
|
},
|
|
updateOption: function(configId, newValue) {
|
|
var putData = "Config[Value]=" + newValue;
|
|
//var postData = {Config[Value]: configValue};
|
|
|
|
|
|
return $http({
|
|
method: 'POST',
|
|
url: '/api/configs/' + configId + '.json',
|
|
data: putData,
|
|
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
|
|
});
|
|
|
|
|
|
//return $http.post ('/api/configs/' + configId + '.json', postData)
|
|
},
|
|
findByName: function(name) {
|
|
return $http.get('/api/configs/viewByName/'+name+'.json')
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.directive('angularHtmlBind', function($compile) {
|
|
return function(scope, elm, attrs) {
|
|
scope.$watch(attrs.angularHtmlBind, function(newValue, oldValue) {
|
|
if (newValue && newValue !== oldValue) {
|
|
elm.html(newValue);
|
|
$compile(elm.contents())(scope);
|
|
}
|
|
});
|
|
};
|
|
});
|
|
|
|
ZoneMinder.filter('DateDiff', function() {
|
|
return function(StartTime, EndTime, format) {
|
|
var d1 = new Date(StartTime.replace(/-/g,'/'));
|
|
var d2 = new Date(EndTime.replace(/-/g,'/'));
|
|
var miliseconds = d2-d1;
|
|
var seconds = miliseconds/1000;
|
|
var minutes = seconds/60;
|
|
var hours = minutes/60;
|
|
var days = hours/24;
|
|
|
|
switch (format) {
|
|
case "seconds":
|
|
return seconds;
|
|
case "hours":
|
|
return hours;
|
|
case "minutes":
|
|
return minutes;
|
|
case "pretty":
|
|
return Math.floor(minutes)+'m ' + seconds+'s';
|
|
}
|
|
};
|
|
});
|
|
|
|
ZoneMinder.filter('zpad', function() {
|
|
return function(input, n) {
|
|
if(input === undefined)
|
|
input = ""
|
|
if(input.length >= n)
|
|
return input
|
|
var zeros = "0".repeat(n);
|
|
return (zeros + input).slice(-1 * n)
|
|
};
|
|
});
|