153 lines
6.7 KiB
JavaScript
153 lines
6.7 KiB
JavaScript
$(document).ready(async function () {
|
|
await EventBillingList.setup();
|
|
});
|
|
|
|
EventBillingList = (function () {
|
|
let templates = {};
|
|
let pag;
|
|
let limit = 10;
|
|
|
|
let setup = async function () {
|
|
await load_templates();
|
|
setup_pagination();
|
|
await load_events(0);
|
|
$(".event_billing_list_load").off("click").on("click", load_events);
|
|
$("#event_billing_list_num_of_res").on("change", function(){
|
|
limit = $("#event_billing_list_num_of_res option:selected").data("num");
|
|
pag.set_limit(limit);
|
|
load_events();
|
|
});
|
|
};
|
|
let load_templates = async function () {
|
|
const eb_list_card = $.get("/templates/eb_list_card.hbs");
|
|
const pagination = $.get("/templates/pagination.hbs");
|
|
await Promise.all([eb_list_card, pagination]).then(function (res) {
|
|
templates.eb_list_card = Handlebars.compile(res[0]);
|
|
templates.pagination = Handlebars.compile(res[1]);
|
|
});
|
|
};
|
|
let setup_pagination = function(){
|
|
pag = new Pagination("eb_list_pagination", templates.pagination, ".billingpag", limit, load_events);
|
|
};
|
|
let load_events = function(offset){
|
|
if(offset === undefined || !Number.isInteger(offset)){
|
|
offset = 0;
|
|
}
|
|
|
|
let args = "";
|
|
if($("#event_billing_list_start_datetime").val()){
|
|
args += "&start="+$("#event_billing_list_start_datetime").val();
|
|
}
|
|
if($("#event_billing_list_end_datetime").val()){
|
|
args += "&end="+$("#event_billing_list_end_datetime").val();
|
|
}
|
|
if($("#event_billing_list_groups_select").val()){
|
|
args += "&groups="+$("#event_billing_list_groups_select").val();
|
|
}
|
|
|
|
//Add filter for event status to args
|
|
let event_states = "";
|
|
if ($("#event_billing_list_status_unknown").prop("checked")){
|
|
event_states += "0,"
|
|
}
|
|
if ($("#event_billing_list_status_event_opened").prop("checked")){
|
|
event_states += "2,"
|
|
}
|
|
if ($("#event_billing_list_status_event_closed").prop("checked")){
|
|
event_states += "4,"
|
|
}
|
|
if ($("#event_billing_list_status_event_times_approved").prop("checked")){
|
|
event_states += "6,"
|
|
}
|
|
if ($("#event_billing_list_status_personnal_billing_done").prop("checked")){
|
|
event_states += "7,"
|
|
}
|
|
if ($("#event_billing_list_status_billing_approved").prop("checked")){
|
|
event_states += "8,"
|
|
}
|
|
if(event_states){
|
|
args += "&states="+event_states.slice(0, event_states.length - 1); //Remove last comma
|
|
}
|
|
|
|
//Load results
|
|
$.ajax({
|
|
type: "GET",
|
|
url: "/api/events/?limit="+limit+"&offset="+offset+args,
|
|
contentType: 'application/json',
|
|
timeout: 3000,
|
|
error: function () {
|
|
alert("Verbindung zum Server unterbrochen!");
|
|
},
|
|
success: async function (data) {
|
|
if (is_ok(data)) {
|
|
$("#event_billing_list_accordion").html("").hide();
|
|
|
|
let event_loading_queue = [];
|
|
|
|
$(data.events).each(function () {
|
|
event_loading_queue.push(load_event(this))
|
|
});
|
|
|
|
async function load_event(event) {
|
|
if (event.member_responsible) {
|
|
let member = await get_member(event.member_responsible);
|
|
event.member_responsible = member.firstname + " " + member.lastname;
|
|
}
|
|
if (event.related_group) {
|
|
event.related_group = await get_related_group(event.related_group);
|
|
}
|
|
if (event.etype) {
|
|
event.etype = await get_event_type(event.etype);
|
|
}
|
|
if (event.organiser_id) {
|
|
event.organiser = await get_organiser(event.organiser_id);
|
|
}
|
|
|
|
let date = new Date(event.start);
|
|
event.timeframe = ('0' + date.getDate()).slice(-2) + '.' + ('0' + (date.getMonth() + 1)).slice(-2) + '.' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ' - ';
|
|
let date2 = new Date(event.end);
|
|
if (date.getDate() === date2.getDate()) {
|
|
event.timeframe += ('0' + date2.getHours()).slice(-2) + ':' + ('0' + date2.getMinutes()).slice(-2)
|
|
} else {
|
|
event.timeframe += event.timeframe = ('0' + date2.getDate()).slice(-2) + '.' + ('0' + (date2.getMonth() + 1)).slice(-2) + '.' + date2.getFullYear() + ' ' + ('0' + date2.getHours()).slice(-2) + ':' + ('0' + date2.getMinutes()).slice(-2);
|
|
}
|
|
|
|
event.cast_status = await load_event_cast_status(event.entity_id);
|
|
|
|
if (event.state === 2) {
|
|
event.state_name = "Einsatz geöffnet";
|
|
event.event_status_yellow = true;
|
|
} else if (event.state === 4) {
|
|
event.state_name = "Einsatz geschlossen";
|
|
event.event_status_red = true;
|
|
} else if (event.state === 6) {
|
|
event.state_name = "Einsatzzeiten bestätigt";
|
|
event.event_status_red = true;
|
|
} else if (event.state === 7) {
|
|
event.state_name = "Personalabrechnung abgeschlossen";
|
|
event.event_status_red = true;
|
|
} else if (event.state === 8) {
|
|
event.state_name = "Abrechnung abgeschlossen";
|
|
event.event_status_green = true;
|
|
}else{
|
|
event.state_name = "unbekannt";
|
|
}
|
|
return event;
|
|
}
|
|
|
|
await Promise.all(event_loading_queue).then((values) => {
|
|
$("#event_billing_list_accordion").empty();
|
|
for(val of values){
|
|
$("#event_billing_list_accordion").append(templates.eb_list_card(val))
|
|
}
|
|
$("#event_billing_list_accordion").show();
|
|
pag.render(data.total_event_count, offset);
|
|
})
|
|
}
|
|
}
|
|
});
|
|
}
|
|
return{
|
|
setup
|
|
}
|
|
}()); |