wochenbericht-manager/src/jsx/ui/print_modi/week.jsx

105 lines
3.5 KiB
JavaScript

import {Templates} from '../components/templates';
import { DB } from '../../static/storage';
//import 'react-infinite-calendar/styles.css'; // only needs to be imported once
const moment = require('moment');
const nunjucks = require('nunjucks');
export class Modi_Week{
static preview(name,anfang,start,end,me){
var sql = 'SELECT * FROM days WHERE date BETWEEN '+(moment(me.state.start).unix()*1000)+' AND '+(moment(me.state.end).unix()*1000);
var days = DB.cdb.exec(sql);
//for(var result = []; days.step();) result.push(days.getAsObject({':start':me.state.start,':end':me.state.end}));
var d = days[0].values;
var weeks = {};
for(var i in d){
var md = d[i];
var week =moment(md[4]).diff(start,'weeks');
if(typeof weeks[week] === 'undefined'){
weeks[week] = {};
weeks[week].data = [];
weeks[week].start = md[1];
weeks[week].num = moment(md[1]).diff(moment(anfang),'weeks')+1;
weeks[week].end = "";
}
var tasks = md[5].split(',');
for(var t in tasks){
sql = 'SELECT * FROM tasks WHERE id=:id';
var stmt = DB.cdb.prepare(sql);
var res = stmt.getAsObject({':id':tasks[t]});
stmt.free();
tasks[t] = res.taskName;
}
md[5] = tasks;
md[1] = moment(md[1]).format('dddd');
md[2] = moment(md[2]).format('HH:mm');
md[4] = moment(md[4]).format('HH:mm');
var wnum = 0;
switch(md[1]){
case 'Monday':
md[1] = 'Montag';
break;
case 'Tuesday':
md[1] = 'Dienstag';
wnum = 1;
break;
case 'Wednesday':
md[1] = 'Mittwoch';
wnum = 2;
break;
case 'Thursday':
md[1] = 'Donnerstag';
wnum = 3;
break;
case 'Friday':
md[1] = 'Freitag';
wnum = 4
break;
case 'Saturday':
md[1] = 'Samstag';
wnum = 5;
break;
case 'Sunday' :
md[1] = 'Sonntag';
wnum = 6;
default:
break;
}
weeks[week].data[wnum] = md;
}
for(var w in weeks){
weeks[w].start = moment(weeks[w].start).format('YYYY-MM-DD');
weeks[w].end = moment(moment(weeks[w].start).day(7)).format('YYYY-MM-DD');
for(d in weeks[w].data){
for(t in weeks[w].data[d][5]){
if(weeks[w].data[d][5][t].trim()===""){
weeks[w].data[d][5].splice(t,1);
}
}
if(weeks[w].data[d][5].length <=0){
weeks[w].data.splice(d,1);
}
}
}
var build = Templates.template.header+Templates.template.wochenbericht+Templates.template.footer;
var html = nunjucks.renderString(build, {name:name,weeks:weeks});
//console.log(html);
//var printWindow = window.open('', '', 'height=400,width=800');
//printWindow.document.write(html);
//printWindow.document.close();
//printWindow.print()
var ifrm = document.getElementById('pdf');
ifrm = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;
ifrm.document.open();
ifrm.document.write(html);
ifrm.document.close();
ifrm.focus();
}
}