84 lines
2.4 KiB
HTML
84 lines
2.4 KiB
HTML
<div id="admin">
|
|
<div id="projects">
|
|
<table>
|
|
<tr>
|
|
<th>[#]lang:project[#]</th>
|
|
<th>[#]lang:mode[#]</th>
|
|
<th>[#]lang:code_name[#]</th>
|
|
<th>[#]lang:start[#]</th>
|
|
<th>[#]lang:end[#]</th>
|
|
<th>[#]lang:time_zone[#]</th>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="feedback"></div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
oSpot.pageInit = function(asHash) {
|
|
self.get(
|
|
'get_admin',
|
|
function(asData){
|
|
setProjects(asData.projects);
|
|
}
|
|
);
|
|
};
|
|
|
|
oSpot.onFeedback = function(sType, sMsg, asContext) {
|
|
delete asContext.a;
|
|
sMsg += ' (';
|
|
$.each(asContext, function(sKey, sElem) {
|
|
sMsg += sKey+'='+sElem+' / ' ;
|
|
});
|
|
sMsg = sMsg.slice(0, -3)+')';
|
|
$('#feedback').append($('<p>', {'class': sType}).text(sMsg));
|
|
};
|
|
|
|
function setProjects(asProjects) {
|
|
$.each(asProjects, function(iKey, oProject) {
|
|
var sElemId = 'proj_'+oProject.id;
|
|
var $Project = ($('#'+sElemId).length==0)?$('<tr>', {'id': sElemId}):$('#'+sElemId).empty();
|
|
|
|
$Project
|
|
.data('project_id', oProject.id)
|
|
.append($('<td>', {'class': 'name'}).text(oProject.name))
|
|
.append($('<td>', {'class': 'mode'}).text(oProject.mode))
|
|
.append($('<td>').addInput('text', 'codename', oProject.codename))
|
|
.append($('<td>').addInput('date', 'active_from', oProject.active_from.substr(0, 10)))
|
|
.append($('<td>').addInput('date', 'active_to', oProject.active_to.substr(0, 10)))
|
|
.append($('<td>').addInput('text', 'timezone', oProject.timezone))
|
|
.appendTo($('#projects').find('table'));
|
|
});
|
|
|
|
$('input')
|
|
.change(commit)
|
|
.keyup(waitAndCommit);
|
|
}
|
|
|
|
function commit(event, $This) {
|
|
$This = $This || $(this);
|
|
var sOldVal = $This.data('old_value');
|
|
var sNewVal = $This.val();
|
|
if(sOldVal!=sNewVal) {
|
|
$This.data('old_value', sNewVal);
|
|
|
|
var asInputs = {project_id: $This.closest('tr').data('project_id'), field: $This.attr('name'), value: sNewVal};
|
|
self.get(
|
|
'set_admin',
|
|
function(asData){
|
|
oSpot.onFeedback('success', self.lang('admin_save_success'), asInputs);
|
|
setProjects([asData.values]);
|
|
},
|
|
asInputs,
|
|
function(sError){
|
|
$This.data('old_value', sOldVal);
|
|
oSpot.onFeedback('error', sError, asInputs);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|
|
function waitAndCommit(event) {
|
|
if(typeof self.tmp('wait') != 'undefined') clearTimeout(self.tmp('wait'));
|
|
self.tmp('wait', setTimeout(()=>{commit(event,$(this));}, 2000));
|
|
}
|
|
</script> |