cache: false,
success: callback,
error: function (request, options, error) {
- alert('Request failed with code: ' + request.status);
+ showErrorMessage();
if (callback) {
callback();
}
$.ajax(options);
}
+function showErrorMessage(message) {
+ message = message || 'An error occurred. Refreshing is recommended.';
+ showPopupMessage(message, 'error');
+}
+
Object.keys = Object.keys || (function () {
var hasOwnProperty = Object.prototype.hasOwnProperty;
var hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString');
ajax('POST', '/config/0/set/', pushConfigs, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ endProgress();
+ showErrorMessage(data && data.error);
+ return;
}
/* update the camera name in the device select */
showProgress();
ajax('POST', '/config/' + cameraId + '/rem/', null, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ endProgress();
+ showErrorMessage(data && data.error);
+ return;
}
hideApply();
/* fetch the main configuration */
ajax('GET', '/config/main/get/', null, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ showErrorMessage(data && data.error);
+ return;
}
dict2MainUi(data);
/* fetch the camera list */
ajax('GET', '/config/list/', null, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ showErrorMessage(data && data.error);
+ return;
}
var i, cameras = data.cameras;
}
else {
videoDeviceSelect[0].selectedIndex = -1;
- // TODO if admin, set a message saying that the user should add a camera
}
recreateCameraFrames(cameras);
if (cameraId != null) {
ajax('GET', '/config/' + cameraId + '/get/', null, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ showErrorMessage(data && data.error);
+ return;
}
dict2CameraUi(data);
ajax('POST', '/config/' + cameraId + '/set_preview/', data, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ showErrorMessage(data && data.error);
+ return;
}
});
}
ajax('GET', '/config/list/', data, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ progress.remove();
+ showErrorMessage(data && data.error);
+ return;
}
cameraSelect.html('');
/* fetch the available devices */
ajax('GET', '/config/list_devices/', null, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ hideModalDialog();
+ showErrorMessage(data && data.error);
+ return;
}
/* add available devices */
}
showProgress();
-
ajax('POST', '/config/add/', data, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ endProgress();
+ showErrorMessage(data && data.error);
+ return;
}
hideApply();
cameras = cameras.filter(function (camera) {return camera.enabled;});
var i, camera, cameraId;
+ /* remove everything that is not a camera frame from the page */
+ pageContainer.children().not('div.camera-frame').remove();
+
/* remove no longer existing camera frames */
var addedCameraFrames = pageContainer.find('div.camera-frame');
for (i = 0; i < addedCameraFrames.length; i++) {
cameraFrame[0].framerate = camera.streaming_framerate;
}
}
+
+ if ($('#videoDeviceSelect').find('option').length < 2) {
+ /* invite the user to add a camera */
+ var addCameraLink = $('<div style="text-align: center; margin-top: 30px;">' +
+ '<a href="javascript:runAddCameraDialog()">You have not configured any camera yet. Click here to add one...</a></div>');
+ pageContainer.append(addCameraLink);
+ }
}
if (cameras != null) {
else {
ajax('GET', '/config/list/', null, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ showErrorMessage(data && data.error);
+ return;
}
updateCameras(data.cameras);
showProgress();
ajax('GET', '/config/' + cameraId + '/get/', null, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ endProgress();
+ showErrorMessage(data && data.error);
+ return;
}
data['enabled'] = false;
ajax('POST', '/config/' + cameraId + '/set/', data, function (data) {
if (data == null || data.error) {
- return; // TODO handle error
+ showErrorMessage(data && data.error);
+ return;
}
endProgress();