ordersprinter/webapp/tasks.html

455 lines
15 KiB
HTML
Raw Normal View History

2020-11-19 23:11:33 +01:00
<html>
<head>
<title>Ansicht Aufgaben</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
2020-11-19 23:14:13 +01:00
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.7">
2020-11-19 23:11:33 +01:00
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
2020-11-19 23:14:13 +01:00
<script src="utilities.js?v=1.6.7"></script>
2020-11-19 23:11:33 +01:00
<link rel="stylesheet" href="php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" />
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui.min.js"></script>
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui-i18n.min.js"></script>
<link rel="stylesheet" href="php/3rdparty/jquerymobiledatepicker/jquery.mobile.datepicker.css" />
<script src="php/3rdparty/jquerymobiledatepicker/jquery.mobile.datepicker.js"></script>
</head>
<body>
<script>
var TASKS_UPDATE = ["Aktualisieren","Update","Actualizar"];
var TASK_OVERVIEW_TXT = ["Übersicht","Overview","Resumen"];
var TASKS_NEW_TASK = ["Neue Aufgabe","New task","Tarea nueva"];
var TASK_CHANGE = ["Ändern","Change","Modificar"];
var TASK_DELETE = ["Löschen","Delete","Removar"];
var TASKS_CREATE = ["Erstellen","Create","Crear"];
var TASKS_SUMMARY = ["Thema","Topic","Tema"];
var TASKS_DESCRIPTION = ["Beschreibung","Description","Descripcion"];
var TASK_PRIO = ["Priorität","Priroty","Prio"];
var TASK_PRIO_LEVELS = [
["1 - sehr wichtig","2 - wichtig", "3 - normal","4 - unwichtig","5 - sehr unwichtig"],
["1 - very important","2 - important","3 - normal","4 - unimportant","5 - irrelevant"],
["1 - muy importante","2 - importante","3 - normal", "4 - sin importancia","5 - irrelevante"]
];
var TASK_OWNER = ["Verantwortlich","Owner","Responsible"];
var TASK_SUBMITDATE = ["Erstellung","Creation","Creado"];
var TASK_LASTDATE = ["Letzte Änderung","Last change","Modificado"];
var TASK_SUBMITTER = ["Ersteller","Creator","Creador"];
var TASK_STATUS = ["Status","Status","Status"];
var TASK_STATUS_LEVELS = [
["Neu","In Arbeit","Erledigt"],
["New","Open","Closed"],
["Nuevo","Abuerto","Completado"]
];
var TASKS_HISTORY = ["Historie","History","Historia"];
var TASKS_DATE = ["Datum","Date","Fecha"];
var TASKS_USER = ["Benutzer","User","Usario"];
var TASKS_ACTION = ["Aktion","Action","Evento"];
var TASKS_FIELDS = ["Felder","Fields","Propriedades"];
var TASKS_FILTER = ["Filter","Filter","Filtro"];
var TASK_FILTER_ALL = ["Zeige alle","Show all","Mostrar toto"];
var TASK_FILTER_OWN = ["Nur eigene","Only own items","Solo para mi"];
var TASK_FILTER_ALL_NON_COMPLETED = ["Alle nicht erledigten","All non completed","Todo las tareas que no son completadas"];
var TASK_FILTER_OWN_NON_COMPLETED = ["Nur eigene nicht erledigte","Only own incomplete tasks","Tareas no complatedas para mi"];
var TASK_FILTER_SYSTEM_AND_OPEN = ["Nicht erledigt mit Verantwortung: System","Not completed with responsibility: System","No completada, para System"];
var lang = 0;
var activeusers = [];
var taskallassign = 0;
var curuser = null;
var selectedfilter = 1;
function setLanguage(language) {
lang = language;
$("#overviewtxt").html(TASK_OVERVIEW_TXT[lang]);
initNewTaskArea();
initFilter();
gettasks();
}
function initFilter() {
var txt = "";
var values = [
{id:0, text:TASK_FILTER_ALL[lang]},
{id:1, text:TASK_FILTER_OWN[lang]},
{id:2, text:TASK_FILTER_ALL_NON_COMPLETED[lang]},
{id:3, text:TASK_FILTER_OWN_NON_COMPLETED[lang]},
{id:4, text:TASK_FILTER_SYSTEM_AND_OPEN[lang]}
];
txt += createLabelWithOption("","taskoverviewfilter","",TASKS_FILTER[lang],values,selectedfilter);
$("#filterarea").html(txt);
$("#filterarea").trigger("create");
bindFilterChange();
}
function bindFilterChange() {
$("#taskoverviewfilter").off("change").on("change", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
selectedfilter = $("#taskoverviewfilter").find(":selected").val();
gettasks();
initFilter();
});
}
function getGeneralConfigItems() {
doAjax("GET", "php/contenthandler.php?module=admin&command=getGeneralConfigItemsAndUsers", null, insertGenConfigStartRest, "Fehler Konfigurationsdaten");
}
function insertGenConfigStartRest(configResult) {
if (configResult.status == "OK") {
var values = configResult.msg;
activeusers = values.activeusers;
setLanguage(values.userlanguage);
} else {
setTimeout(function(){document.location.href = "index.html";},250); // not logged in
}
}
function createNewTaskArea(id,name) {
var collapsiblePart = '<div data-role="collapsible" id="' + id + '"';
collapsiblePart += ' data-theme="c" data-content-theme="c">';
collapsiblePart += '<h3>'+ toHtml(name) + '</h3>';
collapsiblePart += '<form>';
collapsiblePart += createLabelWithTextField("userlabel_summary_new",TASKS_SUMMARY[lang],TASKS_SUMMARY[lang]);
collapsiblePart += createLabelWithTextArea("userlabel_description_new",TASKS_DESCRIPTION[lang]);
collapsiblePart += createLabelWithOption("","userlabel_prio_new","",TASK_PRIO[lang],getPrioArray(),3);
collapsiblePart += createLabelWithOption("","userlabel_owner_new","",TASK_OWNER[lang],createTaskOwnerList(),curuser.id);
collapsiblePart += '<button data-theme="f" data-icon="plus" id="CreateNewTask">' + TASKS_CREATE[lang] + '</button>';
collapsiblePart += '</form>';
collapsiblePart += '</div>';
return collapsiblePart;
}
function getPrioArray() {
var rets = [];
for (var i=0;i<5;i++) {
rets[rets.length] = {id: (i+1), text: TASK_PRIO_LEVELS[lang][i] };
}
return rets;
}
function getStatusArray() {
var rets = [];
for (var i=0;i<3;i++) {
rets[rets.length] = {id: (i+1), text: TASK_STATUS_LEVELS[lang][i] };
}
return rets;
}
function createTaskOwnerList() {
var allValues = [];
if (taskallassign == 0) {
allValues[0] = {
id:curuser.id,
text: curuser.username
};
} else {
allValues[0] = {
id:0,
text: "System"
};
for (var i=0;i<activeusers.length;i++) {
var anActiveUser = activeusers[i];
allValues[allValues.length] = {
id:anActiveUser.id,
text:anActiveUser.username
};
}
}
return allValues;
}
function initNewTaskArea() {
doAjax("GET", "php/contenthandler.php?module=tasks&command=gettaskinfoforuser", null, continueNewTaskArea, null);
}
function continueNewTaskArea(answer) {
if (answer.status == "OK") {
taskallassign = answer.msg.taskallassign;
curuser = answer.msg.curuser;
var txt = createNewTaskArea("newtask",TASKS_NEW_TASK[lang]);
$("#newtaskarea").html(txt);
$("#newtaskarea").trigger("create");
bindNewTaskBtn();
}
}
function bindNewTaskBtn() {
$("#CreateNewTask").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var summary = $("#userlabel_summary_new").val();
var description = $("#userlabel_description_new").val();
var prio = $("#userlabel_prio_new").find(":selected").val();
var owner = $("#userlabel_owner_new").find(":selected").val();
var data = {
summary: summary,
description: description,
prio: prio,
owner: owner
};
doAjax("POST", "php/contenthandler.php?module=tasks&command=createtask", data, handleNewTask, null);
});
}
function handleNewTask(answer) {
if (answer.status != "OK") {
alert("Fehler: " + answer.msg);
} else {
initNewTaskArea();
gettasks();
}
}
function gettasks() {
doAjax("GET", "php/contenthandler.php?module=tasks&command=gettasks", {filter: selectedfilter}, handleGetTasks, null);
}
function handleGetTasks(answer) {
if (answer.status != "OK") {
alert("Fehler: " + answer.msg);
return;
}
var usermaydelete = answer.usermaydelete;
var txt = "";
var tasks = answer.msg;
tasks.forEach(function (task,index) {
txt += '<div id="taskitemcollapsible_' + task.id + '" class="taskitemcollapsible" data-role="collapsible" ';
txt += ' data-theme="e" data-content-theme="e">';
txt += '<h3>'+ toHtml(task.summary) + ' (' + TASK_STATUS_LEVELS[lang][parseInt(task.status)-1] + ')</h3>';
txt += '<form>';
txt += '<p><b>' + TASK_SUBMITDATE[lang] + ":</b> " + task.submitdate;
txt += '<p><b>' + TASK_LASTDATE[lang] + ":</b> <span id='lastdate_" + task.id + "'>" + task.lastdate + "</span>";
txt += '<p><b>' + TASK_SUBMITTER[lang] + ":</b> " + task.submittername;
txt += createLabelWithOption("",task.id,"taskitemstatus",TASK_STATUS[lang],getStatusArray(),task.status);
txt += createLabelWithOption("",task.id,"taskitemowner",TASK_OWNER[lang],createTaskOwnerList(),task.owner);
txt += createLabelWithOption("",task.id,"taskitemprio",TASK_PRIO[lang],getPrioArray(),task.prio);
txt += createLabelWithTextFieldWithValue("taskitemsummary_" + task.id,TASKS_SUMMARY[lang],toHtml(task.summary));
txt += createLabelWithTextAreaWithValue("taskitemdescription_" + task.id,TASKS_DESCRIPTION[lang],toHtml(task.description));
txt += '<p><h4>' + TASKS_HISTORY[lang] + '</h4>';
txt += '<div id="taskhist_' + task.id + '">';
txt += ' <img src="php/3rdparty/images/ajax-loader.gif" />';
txt += '</div>';
txt += '<button data-theme="f" data-icon="check" class="changetask" id="Changeask_' + task.id + '">' + TASK_CHANGE[lang] + '</button>';
if (usermaydelete == 1) {
txt += '<button data-theme="d" data-icon="delete" class="deletetask" id="deletetask_' + task.id + '">' + TASK_DELETE[lang] + '</button>';
}
txt += '</form>';
txt += "</div>";
});
txt += '<button data-theme="f" data-icon="check" id="update">' + TASKS_UPDATE[lang] + '</button>';
$("#result").html(txt);
$("#result").trigger("create");
bindChangeBtn();
}
function bindChangeBtn() {
$(".changetask").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var id = this.id.split("_")[1];
var status = $("#taskitemstatus_" + id).find(":selected").val();
var owner = $("#taskitemowner_" + id).find(":selected").val();
var summary = $("#taskitemsummary_" + id).val();
var description = $("#taskitemdescription_" + id).val();
var prio = $("#taskitemprio_" + id).val();
var data = {
id: id,
status: status,
owner: owner,
prio: prio,
summary: summary,
description: description
};
doAjax("POST", "php/contenthandler.php?module=tasks&command=changetask", data, handleChangeTask, null);
});
$(".taskitemcollapsible").off("collapsibleexpand").on("collapsibleexpand", function (e) {
var id = this.id.split("_")[1];
requestHistForTask(id);
});
$(".deletetask").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var id = this.id.split("_")[1];
doAjax("POST", "php/contenthandler.php?module=tasks&command=delete", {id:id}, handleDeleteTask, null);
});
$("#update").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
gettasks();
});
}
function requestHistForTask(taskid) {
doAjax("GET", "php/contenthandler.php?module=tasks&command=gethistory", {id:taskid}, handleGetHistory, null);
}
function handleDeleteTask(answer) {
if (answer.status == "OK") {
gettasks();
} else {
alert("Fehler: " + answer.msg);
}
}
function handleChangeTask(answer) {
if (answer.status != "OK") {
alert("Fehler: " + answer.msg);
} else {
var lastChange = answer.lastchange;
$("#lastdate_" + answer.taskid).html(lastChange);
requestHistForTask(answer.taskid);
}
}
function translateAction(action) {
if (action == 0) {
return TASKS_CREATE[lang];
} else if (action == 1) {
return TASK_CHANGE[lang];
} else if (action == 2) {
return TASK_DELETE[lang];
} else {
return "?";
}
}
function translateFields(fields) {
if (fields == "") {
return "";
}
var farr = fields.split(",");
var txt = [];
farr.forEach(function(f,i) {
var fparts = f.split(":",2);
switch(fparts[0]) {
case 'o':
txt[txt.length] = TASK_OWNER[lang] + "->" + toHtml(fparts[1]);
break;
case 's':
txt[txt.length] = TASK_STATUS[lang] + "->" + TASK_STATUS_LEVELS[lang][parseInt(fparts[1])-1];
break;
case 'p':
txt[txt.length] = TASK_PRIO[lang] + "->" + TASK_PRIO_LEVELS[lang][parseInt(fparts[1])-1];
break;
case 't':
txt[txt.length] = TASKS_SUMMARY[lang];
break;
case 'd':
txt[txt.length] = TASKS_DESCRIPTION[lang];
break;
default:
}
});
return txt.join(", ");
}
function handleGetHistory(answer) {
if (answer.status == "OK") {
var entries = answer.msg;
if (entries.length > 0) {
var taskid = entries[0]["taskid"];
var txt = "<table class='viewtable' >";
txt += "<tr><th>" + TASKS_DATE[lang] + "<th>" + TASKS_USER[lang] + "<th>" + TASKS_ACTION[lang] + "<th>" + TASKS_FIELDS[lang] + "</tr>";
entries.forEach(function(entry,i) {
txt += "<tr>";
txt += "<td>" + entry.date;
txt += "<td>" + entry.username;
txt += "<td>" + translateAction(entry.action);
txt += "<td>" + translateFields(entry.fields);
txt += "</tr>";
});
txt += "</table>";
$("#taskhist_" + taskid).html(txt);
}
}
}
$(document).on("pageinit", "#time-page", function () {
initializeMainMenu("#modulemenu");
hideMenu();
$.ajaxSetup({ cache: false });
getGeneralConfigItems();
});
</script>
<div data-role="page" id="time-page" data-theme="c">
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
<ul data-role="listview" id="modulemenu" data-divider-theme="a" data-inset="true">
<li data-theme="b" data-role="heading">Hauptmenü</li>
</ul>
</div><!-- /panel -->
<div data-role="header" data-theme="b" data-position="fixed" id="theheader" style="background-color:black;">
<h1><span id="timetitletxt">Aufgaben</span> <img src="img/connection.png" class="connectionstatus" style="display:none;" /> <img src="img/printerstatus.png" class="printerstatus" style="display:none;" /> <img src="img/tasksstatus.png" class="tasksstatus" style="display:none;" /></h1>
<div data-type="horizontal" style="top:0px;position:absolute;float:right;z-index:10;display:inline;" align="right" class="ui-btn-right">
<a href="#" data-role="button" data-icon="arrow-d" data-ajax="false" id="menuswitch"><span id="modulstxt2">Hauptmenü</span></a>
</div>
</div>
<div data-role="content" id="fullcontent">
<div id="overviewarea">
<div data-role="collapsible" id="overviewcollapsibke" data-theme="c" data-content-theme="c">
<h3><span id='overviewtxt'>Übersicht</span></h3>
<div id="filterarea"></div>
<div id="result"></div>
</div>
</div>
<div id="newtaskarea">
<img src="php/3rdparty/images/ajax-loader.gif" />
</div>
</div>
<div data-role="footer" data-theme="b" id="thefooterr" style="background-color:black;">
<div class="ui-grid-a">
<div class="ui-block-a userinfo" id="loggedinuser"></div>
<div class="ui-block-b grid_right" id="versioninfo"></div>
</div><!-- /grid-a -->
</div> <!-- footer -->
</div> <!-- first page -->
</body>
</html>