reworking

This commit is contained in:
2020-11-17 19:17:32 +01:00
parent 4ccb9434f5
commit 5b017141d3
3 changed files with 362 additions and 272 deletions
+78 -39
View File
@@ -7,10 +7,17 @@ var TIMEZONE_NAME = "Europe/Berlin";
//requires moment.js
Array.prototype.asChipData = function () {
return this.map((e,i) => {return {tag:e,id:i}; })
return this.map((e, i) => {
return {
tag: e,
id: i
};
})
}
Array.prototype.fromChipData = function () {
return this.map(e => {return e.tag; })
return this.map(e => {
return e.tag;
})
}
function Rule() {
@@ -19,10 +26,10 @@ function Rule() {
if (arguments[0]) options = arguments[0];
var default_args = {
'arten' : [],
'dauer' : 60,
'arten': [],
'dauer': 60,
'titel': [],
'name' : "Standard"
'name': "Standard"
}
for (var index in default_args) {
if (typeof options[index] == "undefined") options[index] = default_args[index];
@@ -83,7 +90,7 @@ Rule.prototype.fits = function (art, title) {
return artMatch && nameMatch;
}
Rule.thaw = function(json) {
Rule.thaw = function (json) {
return new Rule({
dauer: json._duration,
name: json._name,
@@ -93,16 +100,48 @@ Rule.thaw = function(json) {
}
Rule.defaults = function () {
var rules = [];
var input = [
{name: "EF #01", dauer: 60, arten: ['VS'], titel: ['Kinderkonzert']},
{name: "EF #02", dauer: 120, arten: ['VS'], titel: ["Expeditionskonzert", "Sinfoniekonzert"]},
{name: "EF #03", dauer: 150, arten: ['Oa', 'GP'], titel: ['Expeditionskonzert']},
{name: "EF #04", dauer: 60, arten: ['Oa', 'GP'], titel: ['Expeditionskonzert']},
{name: "EF #05", dauer: 150, arten: ['Oa', 'OSP']},
{name: "EF #06", dauer: 180, arten: ["VS", "BO", "OHP", "HP", "GP", "Prem", "WA"]},
{name: "Standard", dauer: 60}
var input = [{
name: "EF #01",
dauer: 60,
arten: ['VS'],
titel: ['Kinderkonzert']
},
{
name: "EF #02",
dauer: 120,
arten: ['VS'],
titel: ["Expeditionskonzert", "Sinfoniekonzert"]
},
{
name: "EF #03",
dauer: 150,
arten: ['Oa', 'GP'],
titel: ['Expeditionskonzert']
},
{
name: "EF #04",
dauer: 60,
arten: ['Oa', 'GP'],
titel: ['Expeditionskonzert']
},
{
name: "EF #05",
dauer: 150,
arten: ['Oa', 'OSP']
},
{
name: "EF #06",
dauer: 180,
arten: ["VS", "BO", "OHP", "HP", "GP", "Prem", "WA"]
},
{
name: "Standard",
dauer: 60
}
];
input.forEach(e => { rules.push(new Rule(e)); });
input.forEach(e => {
rules.push(new Rule(e));
});
return rules;
}
@@ -114,11 +153,11 @@ function Shift() {
if (arguments[0]) options = arguments[0];
var default_args = {
'art' : "",
'name' : "DUMMY",
'datum' : moment(),
'beschreibung' : "",
'ort' : "",
'art': "",
'name': "DUMMY",
'datum': moment(),
'beschreibung': "",
'ort': "",
}
for (var index in default_args) {
if (typeof options[index] == "undefined") options[index] = default_args[index];
@@ -130,12 +169,12 @@ function Shift() {
this.Beschreibung = options.beschreibung;
this.Name = options.name;
this.Ort = options.ort;
if (typeof options.ende != "undefined") {
this.Ende = options.ende;
} else {
if (!options.dontSetDurationFromRules) {
Shift.setDurationFromRules(this);
Shift.setDurationFromRules(this, DURATION_RULES);
}
}
@@ -173,7 +212,8 @@ Shift.prototype = {
this._begin = dateMoment.clone();
},
get Ende() {
return this._begin.clone().add(this._duration).format(TIME_FORMAT);
var ende = this._begin.clone().add(this._duration).format(TIME_FORMAT);
return ende;
},
set Ende(value) {
var dateMoment = moment(this.Datum + " " + value, DATE_INPUT_FORMAT + " " + TIME_FORMAT);
@@ -227,7 +267,7 @@ Shift.prototype = {
}
}
Shift.setDurationFromRules = function (shift) {
Shift.setDurationFromRules = function (shift, rules) {
'use strict';
var isAllDayEvent = shift.Beginn == "00:00";
if (isAllDayEvent) {
@@ -237,8 +277,8 @@ Shift.setDurationFromRules = function (shift) {
var art = shift.Art.toLowerCase();
var titel = shift.Name.toLowerCase();
var duration = 60;
for (var rIndex in DURATION_RULES) {
var rule = DURATION_RULES[rIndex];
for (var rIndex in rules) {
var rule = rules[rIndex];
if (rule.fits(art, titel)) {
duration = rule.Dauer;
@@ -250,9 +290,9 @@ Shift.setDurationFromRules = function (shift) {
Shift.prototype.toVEvent = function () {
var end = this._begin.clone().add(this._duration);
return new VEvent({
startMoment: this._begin,
endMoment: end,
title: this.VEventTitle,
startMoment: this._begin,
endMoment: end,
title: this.VEventTitle,
description: this.Beschreibung,
location: this.Ort
});
@@ -260,16 +300,15 @@ Shift.prototype.toVEvent = function () {
Shift.thaw = function (jsonShift) {
moment.locale(MOMENT_LOCALE);
var begin = moment(jsonShift._begin);
var shift = new Shift(
{
art: jsonShift._kind,
name: jsonShift._name,
datum: begin,
beschreibung: jsonShift._description,
ort: jsonShift._ort,
});
var shift = new Shift({
art: jsonShift._kind,
name: jsonShift._name,
datum: begin,
beschreibung: jsonShift._description,
ort: jsonShift._ort,
});
shift.id = jsonShift.id;
shift.Dauer = moment.duration(jsonShift._duration);
return shift;
};
};