[TASK] multiple Formats
This commit is contained in:
parent
c9197fc92c
commit
2a1c514e4f
136
app.js
136
app.js
@ -82,6 +82,38 @@ var ruleStorage = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Vue.component('ask-format-modal',{
|
||||||
|
template: `
|
||||||
|
<div id="ask-format-modal" class="modal">
|
||||||
|
<div class="modal-content">
|
||||||
|
<h4>Dienstplanformat</h4>
|
||||||
|
<p>Welches Format soll eingelesen werden?</p>
|
||||||
|
<label v-for="option in options" >
|
||||||
|
<input name="dpFormat" type="radio" :value="option" v-model="picked"/>
|
||||||
|
<span>{{ option }}</span>
|
||||||
|
</label>
|
||||||
|
<p>Ausgewählt: {{ picked }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<a href="#!" class="modal-close waves-effect waves-green btn-flat" @click.stop="submitPick">Bastätigen</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
picked: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: ["options"],
|
||||||
|
methods: {
|
||||||
|
submitPick() {
|
||||||
|
this.$emit('picked-format', this.picked);
|
||||||
|
$('#ask-format-modal').modal('close');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
Vue.component('chip-input', {
|
Vue.component('chip-input', {
|
||||||
template: `
|
template: `
|
||||||
<div class="chips no-autoinit" :id="name"></div>
|
<div class="chips no-autoinit" :id="name"></div>
|
||||||
@ -152,6 +184,7 @@ var app = new Vue({
|
|||||||
selectedRuleIndex: -1,
|
selectedRuleIndex: -1,
|
||||||
saveto: 'dienstplan.ics',
|
saveto: 'dienstplan.ics',
|
||||||
uploadFileName: "",
|
uploadFileName: "",
|
||||||
|
availableFormats: ["Erfurt","Stuttgart","X"],
|
||||||
config: {
|
config: {
|
||||||
moment: {
|
moment: {
|
||||||
parse_formats: [
|
parse_formats: [
|
||||||
@ -165,6 +198,7 @@ var app = new Vue({
|
|||||||
displayLength: 3000
|
displayLength: 3000
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
workbook: null,
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
shifts: {
|
shifts: {
|
||||||
@ -228,13 +262,18 @@ var app = new Vue({
|
|||||||
if(isErfurterDienstplan){
|
if(isErfurterDienstplan){
|
||||||
vm.parseForErfurt(workbook.Sheets["Dienstplan"]);
|
vm.parseForErfurt(workbook.Sheets["Dienstplan"]);
|
||||||
} else {
|
} else {
|
||||||
var sheetName = workbook.SheetNames[0];
|
this.workbook = workbook;
|
||||||
vm.parseForStuttgart(workbook.Sheets[sheetName]);
|
this.askForDienstplanFormat();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
reader.readAsBinaryString(file);
|
reader.readAsBinaryString(file);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
askForDienstplanFormat: function() {
|
||||||
|
this.makeToast("Dienstplanformat nicht erkannt.");
|
||||||
|
$('#ask-format-modal').modal("open");
|
||||||
|
},
|
||||||
|
|
||||||
parseForErfurt: function (dp) {
|
parseForErfurt: function (dp) {
|
||||||
var arr = XLSX.utils.sheet_to_row_object_array(dp, {
|
var arr = XLSX.utils.sheet_to_row_object_array(dp, {
|
||||||
range: 1
|
range: 1
|
||||||
@ -300,6 +339,99 @@ var app = new Vue({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
parseForX: function (dp, sheetName) {
|
||||||
|
moment.locale(this.config.moment.parse_language);
|
||||||
|
var arr = XLSX.utils.sheet_to_json(dp, {
|
||||||
|
header: "A",
|
||||||
|
blankrows: false,
|
||||||
|
});
|
||||||
|
var vm = this;
|
||||||
|
var month = moment(sheetName.substr(sheetName.indexOf(" ")+1), "MMMM YYYY", "de");
|
||||||
|
var day;
|
||||||
|
|
||||||
|
arr.forEach(element => {
|
||||||
|
var art, name, beschreibung = null;
|
||||||
|
var time = moment().hour(0).minute(0);
|
||||||
|
try {
|
||||||
|
if (element.hasOwnProperty('A')) {
|
||||||
|
day = moment(element.A, "D.","de");
|
||||||
|
day = Number(element.A);
|
||||||
|
}
|
||||||
|
if ((!element.F && !element.H && !element.J) || element.I == "Spielort/ Extras" || element.J == "Spielort/Extras"){
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
|
||||||
|
if (element.hasOwnProperty("D") && element.hasOwnProperty("E")) {
|
||||||
|
// Probe
|
||||||
|
time = moment(element.D);
|
||||||
|
art = element.E.trim();
|
||||||
|
name = element.F ? element.F.trim() : "";
|
||||||
|
beschreibung = typeof(element.I) != 'undefined' ? element.I.trim()
|
||||||
|
: typeof(element.J) != 'undefined' ? element.J.trim()
|
||||||
|
: "";
|
||||||
|
}
|
||||||
|
else if (element.hasOwnProperty("G") && element.hasOwnProperty("H"))
|
||||||
|
{
|
||||||
|
// Vorstellung
|
||||||
|
time = moment(element.G);
|
||||||
|
art = "VS";
|
||||||
|
name = element.H.trim();
|
||||||
|
beschreibung = typeof(element.I) != 'undefined' ? element.I.trim()
|
||||||
|
: typeof(element.J) != 'undefined' ? element.J.trim()
|
||||||
|
: "";
|
||||||
|
}
|
||||||
|
else if (element.hasOwnProperty("I"))
|
||||||
|
{
|
||||||
|
// Spielort/Extras
|
||||||
|
beschreibung = element.I.trim();
|
||||||
|
name = name ? name : "Spielort/Extras";
|
||||||
|
}
|
||||||
|
else if (element.hasOwnProperty("J"))
|
||||||
|
{
|
||||||
|
// Spielort/Extras Fallback
|
||||||
|
beschreibung = element.J.trim();
|
||||||
|
name = name ? name : "Spielort/Extras";
|
||||||
|
}
|
||||||
|
|
||||||
|
var datumStr = day + '.' + month.clone().format("MM.YY") + time.format(" HH:mm");
|
||||||
|
var termin = {
|
||||||
|
ort: "",
|
||||||
|
art: art,
|
||||||
|
beschreibung: beschreibung,
|
||||||
|
name: name,
|
||||||
|
datum: moment(datumStr, "D.MM.YY HH:mm")
|
||||||
|
}
|
||||||
|
vm.addShift(new Shift(termin));
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Fehler beim Parsen", element, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
parsePickedFormat: function (format) {
|
||||||
|
this.makeToast(`Versuche ${format} zu lesen.`);
|
||||||
|
switch (format) {
|
||||||
|
case "Erfurt":
|
||||||
|
this.parseForErfurt(this.workbook.Sheets["Dienstplan"]);
|
||||||
|
break;
|
||||||
|
case "Stuttgart":
|
||||||
|
var sheetName = this.workbook.SheetNames[0];
|
||||||
|
this.parseForStuttgart(this.workbook.Sheets[sheetName]);
|
||||||
|
break;
|
||||||
|
case "X":
|
||||||
|
var sheetName = this.workbook.SheetNames[0];
|
||||||
|
this.parseForX(this.workbook.Sheets[sheetName], sheetName);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.workbook = null;
|
||||||
|
},
|
||||||
|
|
||||||
addShift: function (shift) {
|
addShift: function (shift) {
|
||||||
this.shifts.push(shift);
|
this.shifts.push(shift);
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user