OpenXE/classes/Modules/Project/www/js/project.js
2021-05-21 08:49:41 +02:00

205 lines
6.2 KiB
JavaScript

/**
* Projektplan über alle Projekte
*/
var ProjectScheduleOverview = (function ($) {
'use strict';
var me = {
storage: {
$jsonElement: null,
$container: null
},
init: function () {
me.storage.$jsonElement = $('#project-schedule-jsondata');
if (me.storage.$jsonElement.length === 0) {
return;
}
me.storage.$container = $('#project-schedule-overview');
if (me.storage.$container.length === 0) {
return;
}
me.registerEvents();
// Json einlesen und Gantt-Diagramm initialisieren
var scheduleJson = me.storage.$jsonElement.html();
var scheduleData = JSON.parse(scheduleJson);
me.initGantt(scheduleData);
},
registerEvents: function () {
$('.print-button').on('click', function (e) {
e.preventDefault();
window.print();
});
},
/**
* Gantt-Diagramm initialisieren
*
* @see http://taitems.github.io/jQuery.Gantt/
*
* @param {object} scheduleData
*/
initGantt: function (scheduleData) {
var $ganttItem = $('<div class="project-gantt">').appendTo(me.storage.$container);
$ganttItem.gantt({
source: scheduleData,
navigate: 'scroll',
scale: 'days',
maxScale: 'months',
minScale: 'hours',
itemsPerPage: 20,
useCookie: false
});
}
};
return {
init: me.init
};
})(jQuery);
/**
* Projektplan für ein Projekt
*/
var ProjectScheduleDetail = (function ($) {
'use strict';
var me = {
storage: {
$jsonData: null,
$container: null
},
init: function () {
me.storage.$jsonData = $('#project-schedule-jsondata');
if (me.storage.$jsonData.length === 0) {
return;
}
me.storage.$container = $('#project-schedule-detail');
if (me.storage.$container.length === 0) {
return;
}
me.registerEvents();
// Json einlesen und Gantt-Diagramm initialisieren
var scheduleJson = me.storage.$jsonData.html();
var scheduleData = JSON.parse(scheduleJson);
me.initGantt(scheduleData);
},
registerEvents: function () {
$('.print-button').on('click', function (e) {
e.preventDefault();
window.print();
});
},
/**
* Gantt-Diagramm initialisieren
*
* @see http://taitems.github.io/jQuery.Gantt/
*
* @param {object} scheduleData
*/
initGantt: function (scheduleData) {
var $ganttItem = $('<div class="project-gantt">').appendTo(me.storage.$container);
$ganttItem.gantt({
source: scheduleData,
navigate: 'scroll',
scale: 'days',
maxScale: 'months',
minScale: 'hours',
itemsPerPage: 100,
useCookie: false,
onItemClick: function (dataObj) {
me.handleClick(dataObj);
}
});
},
/**
*
* @param {Object} dataObj
*/
handleClick: function (dataObj) {
if (!dataObj.hasOwnProperty('type')) {
throw 'Kann Klick nicht verarbeiten. Typ fehlt.';
}
if (!dataObj.hasOwnProperty('projectId')) {
throw 'Kann Klick nicht verarbeiten. Projekt-ID fehlt.';
}
var objectType = dataObj.type;
var projectId = dataObj.projectId;
// Meilenstein wurde angeklickt
if (objectType === 'milestone') {
var taskId = dataObj.milestoneId;
$.ajax({
url: 'index.php?module=projekt&action=gant&cmd=getkalender&id=' + projectId,
type: 'POST',
dataType: 'json',
data: {uid: taskId},
success: function (data) {
$('#kalenderbeschreibung').html(data.beschreibung);
$('#kalenderid').val(taskId);
$('#kalenderbezeichnung').html(data.bezeichnung);
$('#kalendervon').html(data.von);
$('#kalenderbis').html(data.bis);
$('#dialogkalender').dialog('open');
}
});
}
// Arbeitspaket wurde angeklickt
if (objectType === 'package') {
var packageId = dataObj.packageId;
$.ajax({
url: 'index.php?module=projekt&action=gant&cmd=getteilprojekt&id=' + projectId,
type: 'POST',
dataType: 'json',
data: {uid: packageId},
success: function (data) {
$('#beschreibung').val(data.beschreibung);
$('#cke_beschreibung').find('iframe').contents().find('body').html(data.beschreibung);
$('#teilprojekt').val(packageId);
$('#aufgabe').val(data.aufgabe);
$('#adresse').val(data.verantwortlicher);
$('#farbe').val(data.farbe).change();
$('#status').val(data.status).change();
$('#startdatum').val(data.startdatum);
$('#abgabedatum').val(data.abgabedatum);
$('#dialoggantt').dialog('open');
}
});
}
}
};
return {
init: me.init
};
})(jQuery);
$(document).ready(function () {
// Projektplan über alle Projekte
if ($('#project-schedule-overview').length > 0) {
ProjectScheduleOverview.init();
}
// Projektplan für ein Projekt
if ($('#project-schedule-detail').length > 0) {
ProjectScheduleDetail.init();
}
});