';
html += '';
var i = 0;
for(id in triggers) {
if(id != 'trigger') {
var value = (undefined != config[id] ? config[id] : '');
html += getHtml(appcode, id, triggers[id], value);
i++;
}
}
html += '
';
html += '';
html += '
';
html += '
';
if(i > 0) {
return html;
} else {
return '';
}
}
function getTriggerHtml(appcode, triggers) {
for(id in triggers) {
if(id == 'trigger') {
return '' + $('#trigger').html().split('__ID__').join(appcode);
}
}
return '';
}
function getHtml(appcode, id, data, value) {
if(id == 'trigger') {
return '' + $('#events').html().split('__ID__').join(appcode);
}
if(data.type == 'text') {
return '' + data.description + '';
}
}
function crontabAction(id, key, value) {
if(key == 'day') {
if(value == 'all') {
$('.' + id + '-day').each(function() {
this.checked = true;
});
}
if(value == 'none') {
$('.' + id + '-day').each(function() {
this.checked = false;
});
}
if(value == 'mo-fr') {
crontabAction(id, key, 'none');
$('#' + id + '-day-mon').attr('checked', true);
$('#' + id + '-day-die').attr('checked', true);
$('#' + id + '-day-mit').attr('checked', true);
$('#' + id + '-day-don').attr('checked', true);
$('#' + id + '-day-fre').attr('checked', true);
}
if(value == 'sa-so') {
crontabAction(id, key, 'none');
$('#' + id + '-day-sam').attr('checked', true);
$('#' + id + '-day-son').attr('checked', true);
}
}
if(key == 'time') {
$('.' + id + '-time-period-div').css('display', 'none');
if(value == 'random') {
$('#' + id + '-time-period-random-div').css('display', '');
}
if(value == 'exact') {
$('#' + id + '-time-period-exact-div').css('display', '');
}
}
}
function addCrontab(id) {
var current = getTempCrontab();
var crontab = {
id : id,
period : $('#' + id + '-time-period').val(),
random : null,
exact : null,
days : {
mon : false,
die : false,
mit : false,
don : false,
fre : false,
sam : false,
son : false
},
parse : function() {
if(this.period == 'random') this.random = $('#' + this.id + '-time-period-random').val();
if(this.period == 'exact') this.exact = $('#' + this.id + '-time-period-exact-hours').val() + '-' + $('#' + this.id + '-time-period-exact-minutes').val();
if($('#' + id + '-day-mon').attr('checked')) this.days.mon = true;
if($('#' + id + '-day-die').attr('checked')) this.days.die = true;
if($('#' + id + '-day-mit').attr('checked')) this.days.mit = true;
if($('#' + id + '-day-don').attr('checked')) this.days.don = true;
if($('#' + id + '-day-fre').attr('checked')) this.days.fre = true;
if($('#' + id + '-day-sam').attr('checked')) this.days.sam = true;
if($('#' + id + '-day-son').attr('checked')) this.days.son = true;
}
};
crontab.parse();
var result = false;
for(i in crontab.days) {
if(crontab.days[i]) result = true;
}
if(!result) {
$('
' + translate('trigger.error.noday') + '
').dialog({
buttons: {
'Ok' : function() {
$(this).dialog('hide').dialog('destroy');
}
}
});
return;
}
if(undefined == current[id]) {
current[id] = new Array();
}
current[id].push(crontab);
setTempCrontab(current);
updateNabaztagCrontab(id);
loadCrontabs(id);
}
function getTempActions() {
var content = $('#actions').html().split('\\"').join('"');
if(content.substr(0, 1) == '"') content = content.substr(1);
if(content.substr(content.length - 1, 1) == '"') content = content.substr(0, content.length - 1);
return eval('(' + content + ')');
}
function getTempCrontab() {
var content = $('#crontabs').html().split('\\"').join('"');
if(content.substr(0, 1) == '"') content = content.substr(1);
if(content.substr(content.length - 1, 1) == '"') content = content.substr(0, content.length - 1);
var url = BASE_URL + "/vl/app.php?sn=" + $('#serial').val() + "&token=" + $('#token').val() + "&d=gethomepageobj," + content;
var result = null;
$.ajax({
url: url,
async: false,
success: function(res) {
result = res;
}
});
var current = eval('(' + result + ')');
if(null == current) {
current = new Array();
}
return current;
}
function setTempCrontab(current) {
var url = BASE_URL + "/vl/app.php?sn=" + $('#serial').val() + "&token=" + $('#token').val() + "&d=getcrontab," + JSON.stringify(current);
var result = null;
$.ajax({
url: url,
async: false,
success: function(res) {
result = res;
}
});
$('#crontabs').html(JSON.stringify(result));
}
function loadCrontabs(id) {
var stringMapping = new Array();
stringMapping['15'] = translate('crontab.15');
stringMapping['30'] = translate('crontab.30');
stringMapping['60'] = translate('crontab.60');
stringMapping['random'] = translate('crontab.random');
stringMapping['exact'] = translate('crontab.exact');
$('#' + id + '-crontabs-table').empty();
var all = getTempCrontab();
if(undefined == all[id]) {
all[id] = new Array();
}
if(all != null && all[id] != undefined) {
if(all[id].length > 0) {
for(i in all[id]) {
var crontab = all[id][i];
var days = '';
for(j in crontab.days) {
if(crontab.days[j]) {
days += j.charAt(0).toUpperCase() + j.substr(1) + ', ';
}
}
if(days.length > 0) {
days = days.substring(0, days.length - 2);
}
var tr = $('');
var td1 = $('' + translate('label.days') + ':');
var td2 = $('' + days + '');
var td3 = $('' + crontab.crontab + '');
var td4 = $('');
$(tr).append(td1);
$(tr).append(td2);
$(tr).append(td3);
$(tr).append(td4);
$('#' + id + '-crontabs-table').append(tr);
var str = stringMapping[crontab.period];
if(crontab.period == 'random') {
str += ', ' + translate('crontab.random.long').split('%count').join(crontab.random);
}
if(crontab.period == 'exact') {
str += ' ' + translate('crontab.exact.long').split('%h').join(crontab.exact.split('-')[0]).split('%m').join(crontab.exact.split('-')[1]);
}
var tr = $('');
var td1 = $('' + translate('label.time') + ':');
var td2 = $('' + str + '');
$(tr).append(td1);
$(tr).append(td2);
$(td1).css('border-bottom', '1px solid #666');
$(td2).css('border-bottom', '1px solid #666');
$(td3).css('border-bottom', '1px solid #666');
$(td4).css('border-bottom', '1px solid #666');
$('#' + id + '-crontabs-table').css('border-collapse', 'collapse');
$('#' + id + '-crontabs-table').append(tr);
$('.uibutton').button();
$('#' + id + '-crontabs-div').css('display', 'block');
}
} else {
$('#' + id + '-crontabs-div').css('display', 'none');
}
}
}
function loadActions(id) {
var stringMapping = new Array();
stringMapping['head-1'] = translate('trigger.head-1');
stringMapping['head-2'] = translate('trigger.head-2');
stringMapping['ear-left'] = translate('trigger.ear-left');
stringMapping['ear-right'] = translate('trigger.ear-right');
$('#' + id + '-actions-table').empty();
var all = getTempActions();
if(undefined == all[id]) {
all[id] = new Array();
}
if(all != null && all[id] != undefined) {
if(all[id].length > 0) {
for(i in all[id]) {
var action = all[id][i];
var str = stringMapping[action];
if(undefined == str) {
if(action.substr(0, 5) == 'rfid-') {
var thingid = action.split('-')[1];
var things = getThings();
for(j in things) {
if(things[j].id == thingid) {
str = things[j].name;
}
}
}
}
var tr = $('');
var td1 = $('' + str + '');
var td2 = $('');
$(tr).append(td1);
$(tr).append(td2);
$(td1).css('border-bottom', '1px solid #666');
$(td2).css('border-bottom', '1px solid #666');
$('#' + id + '-actions-table').css('border-collapse', 'collapse');
$('#' + id + '-actions-table').append(tr);
$('.uibutton').button();
$('#' + id + '-actions-div').css('display', 'block');
}
} else {
$('#' + id + '-actions-div').css('display', 'none');
}
}
}
function removeCrontab(app, id) {
// TODO
if(!confirm(translate('crontab.confirm.remove'))) {
return false;
}
var current = getTempCrontab();
if(undefined != current[app]) {
var removed = current[app].splice(id, 1);
}
setTempCrontab(current);
updateNabaztagCrontab(app);
$(lastappdialog).dialog('close');
configapp(app);
}
function removeAction(app, id) {
if(!confirm(translate('trigger.confirm.remove'))) {
return false;
}
var current = getTempActions();
if(undefined != current[app]) {
var removed = current[app].splice(id, 1);
}
setTempActions(current);
updateNabaztagActions(app);
loadActions(app);
}
function updateNabaztagCrontab(id) {
var content = $('#crontabs').html().split('\\"').join('"');
if(content.substr(0, 1) == '"') content = content.substr(1);
if(content.substr(content.length - 1, 1) == '"') content = content.substr(0, content.length - 1);
var alldata = eval('(' + content + ')');
var appdata = alldata[id];
if(appdata == undefined) {
appdata = new Array();
}
var url = BASE_URL + '/vl/app.php?sn=' + $('#serial').val() + '&token=' + $('#token').val() + '&d=config,' + id + ',event=crontab,crontab=' + JSON.stringify(appdata).split(',').join('__');
$.ajax({ async: false, url: url });
setFlash(translate('trigger.flash.saved'));
updateImage(id);
}
function updateImage(id) {
// get image urls
var url = BASE_URL + '/vl/app.php?sn=' + $('#serial').val() + '&token=' + $('#token').val() + '&d=getall';
$.ajax({
url: url,
success: function(res) {
var data = eval('(' + res + ')');
var image = null;
for(i in data.inuse) {
if(data.inuse[i].code == id) {
image = 'url("' + data.inuse[i].image + ',100")';
}
}
var currentImage = $('#image_' + id).css('background-image');
if(image != currentImage) {
$('#image_' + id).css('background-image', image);
}
}
});
}
function updateNabaztagActions(id) {
var alldata = getTempActions();
var appdata = alldata[id];
if(appdata == undefined) {
appdata = new Array();
}
var url = BASE_URL + '/vl/app.php?sn=' + $('#serial').val() + '&token=' + $('#token').val() + '&d=config,' + id + ',event=action,action=' + JSON.stringify(appdata).split(',').join('__');
$.ajax({ async: false, url: url });
setFlash(translate('trigger.flash.saved'));
updateImage(id);
}
function addAction(id) {
var current = getTempActions();
var newAction = null;
if(undefined == current[id]) {
current[id] = new Array();
}
var map = new Array();
map[-1] = null;
map[0] = 'head';
map[1] = 'ear';
map[2] = 'thing';
var active = map[$("#" + id + "_trigger-2-action-accordion h3").index($("#" + id + "_trigger-2-action-accordion h3.ui-state-active"))];
if(active != null) {
if(active == 'head') {
var howoften = 0;
if($('#' + id + '-action-head-0').attr('checked')) {
howoften = 1;
}
if($('#' + id + '-action-head-1').attr('checked')) {
howoften = 2;
}
if(howoften == 0) {
nabAlert(translate('trigger.error.head.nocnt'));
} else {
newAction = 'head-' + howoften;
}
}
if(active == 'ear') {
var site = null;
if($('#' + id + '-action-ear-0').attr('checked')) {
site = 'left';
}
if($('#' + id + '-action-ear-1').attr('checked')) {
site = 'right';
}
if(site == null) {
nabAlert(translate('trigger.error.ear.which'));
} else {
newAction = 'ear-' + site;
}
}
if(active == 'thing') {
$('.' + id + '-action-thing').each(function() {
if($(this).attr('checked')) {
newAction = 'rfid-' + $(this).attr('rel');
}
});
if(newAction == null) {
nabAlert(translate('thing.error.none_choosen'));
}
}
} else {
nabAlert(translate('trigger.error.none'));
}
if(null != newAction) {
var ok = true;
for(checkid in current) {
for(i in current[checkid]) {
if(current[checkid][i] == newAction) {
nabAlert(translate('trigger.error.reserved'));
ok = false;
}
}
}
if(ok) {
current[id].push(newAction);
}
}
setTempActions(current);
updateNabaztagActions(id);
loadActions(id);
}
function setTempActions(data) {
$('#actions').html(JSON.stringify(data));
}
function nabAlert(msg) {
$('