nano-tetra-modules/get/js/module.js

230 lines
7.8 KiB
JavaScript

registerController("getController", ['$api', '$scope', function($api, $scope) {
getControls();
getClientProfiles();
$scope.messages = [];
$scope.profiles = [];
$scope.throbber = true;
$scope.enabled = false;
$scope.hidden = false;
$scope.dbonsd = false;
$scope.comments = "";
$scope.workshopProfile = {id: "", hostname: "", info: "", mac: "", ip: "", comments: "", date: ""};
$scope.handleControl = function(control) {
control.throbber = true;
switch (control.title) {
/*
case "Hidden iFrame":
$api.request({
module: "get",
action: "handleIFrame",
data: $scope.hidden
}, function(response) {
getControls();
control.throbber = false;
// based on the response from the module, we need to update the variable in the browser
if ( response.hidden_status == "true" ) $scope.hidden = true;
if ( response.hidden_status == "false" ) $scope.hidden = false;
// write message to messages panel
$scope.sendMessage(control.title, response.control_message ); // + " " + response.hidden_status);
});
break;
*/
case "Enable Module":
$api.request({
module: "get",
action: "handleInfoGetter",
data: $scope.enabled
}, function(response) {
getControls();
control.throbber = false;
// based on the response from the module, we need to update the variable in the browser
if ( response.enabled_status == "true" ) $scope.enabled = true;
if ( response.enabled_status == "false" ) $scope.enabled = false;
// write message to messages panel
$scope.sendMessage(control.title, response.control_message ); // + " " + response.enabled_status);
});
break;
case "Database on SD":
//alert($scope.dbonsd);
$api.request({
module: "get",
action: "handleDBLocation",
data: $scope.dbonsd
}, function(response) {
getControls();
control.throbber = false;
// based on the response from the module, we need to update the variable in the browser
if ( response.dbonsd_status == "true" ) $scope.dbonsd = true;
if ( response.dbonsd_status == "false" ) $scope.dbonsd = false;
// write message to messages panel
$scope.sendMessage(control.title, response.control_message ); // + " " + response.dbonsd_status);
});
break;
}
}
$scope.getComments = function(profile) {
console.log("Getting comments for: " + profile.mac );
$scope.workshopProfile = profile;
$api.request({
module: "get",
action: "getComments",
id: profile.id,
mac: profile.mac
}, function(response) {
$scope.sendMessage("Retrieved comments ", response.message);
console.log( $scope.workshopProfile );
});
}
$scope.saveComments = function(profileid, mac, comments) {
//console.log("Saving comments for: " + profileid + " Comments: " + comments);
$api.request({
module: "get",
action: "saveComments",
id: profileid,
comments: comments,
mac: mac
}, function(response) {
$scope.sendMessage("Comments Saved ", response.message);
// we need to refresh the data for all records... This is not a good design, but ok for now..
getClientProfiles();
});
}
$scope.deleteProfile = function(profile) {
//console.log( profile.mac );
$api.request({
module: "get",
action: "deleteProfile",
mac: profile.mac,
id: profile.id
}, function(response) {
$scope.sendMessage("Record Deleted ", response.message);
getClientProfiles();
});
}
$scope.viewInformation = function(profile) {
//console.log( profile.mac );
$api.request({
module: "get",
action: "viewInformation",
mac: profile.mac,
id: profile.id
}, function(response) {
$scope.sendMessage("View information ", response.message);
$scope.workshopProfile.info = response.info;
});
}
$scope.sendMessage = function(t, m) {
// Add a new message to the top of the list
$scope.messages.unshift({title: t, msg: m});
// if there are 4 items in the list remove the 4th item
if ($scope.messages.length == 4) {
$scope.dismissMessage(3);
}
}
$scope.dismissMessage = function($index) {
//var index = $scope.messages.indexOf(message);
$scope.messages.splice($index, 1);
}
function getControls() {
$scope.throbber = true;
$api.request({
module: "get",
action: "getControlValues"
}, function(response) {
updateControls(response);
});
}
function getClientProfiles() {
$scope.throbber = true;
$api.request({
module: "get",
action: "getClientProfiles"
}, function (response) {
$scope.profiles = [];
$scope.throbber = false;
for (var i = 0; i < response.length; i++) {
$scope.profiles.unshift({id: response[i].id, mac: response[i].mac, ip: response[i].ip, hostname: response[i].hostname, date: response[i].date, comments: response[i].comments});
//console.log( {id: response[i].id, mac: response[i].mac, ip: response[i].ip, hostname: response[i].hostname, date: response[i].date, comments: response[i].comments} );
}
});
}
function updateControls(response) {
var hidden;
var enabled;
var dbonsd;
if (response.hidden == false) {
hidden = "Install";
//$scope.sendMessage("iFrame not installed", "The get module requires the hidden frame to be installed");
$scope.hidden = false;
} else {
hidden = "Uninstall";
$scope.hidden = true;
}
if (response.enabled == false) {
enabled = "Enable";
$scope.enabled = false;
} else {
enabled = "Disable";
$scope.enabled = true;
}
if (response.dbonsd == false) {
dbonsd = "Enable";
//$scope.sendMessage("Database location", "The database will be stored on the SD card");
$scope.dbonsd = false;
} else {
dbonsd = "Disable";
$scope.dbonsd = true;
}
// set parameters that are passed to the html
$scope.controls = [
/*
{
title: "Hidden iFrame",
status: hidden,
visible: true,
throbber: false
},
*/
{
title: "Enable Module",
status: enabled,
visible: true,
throbber: false
},
{
title: "Database on SD",
status: dbonsd,
visible: true,
throbber: false
}];
$scope.throbber = false;
}
}]);