reworking
This commit is contained in:
+78
-39
@@ -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;
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user