wochenbericht-manager/src/jsx/ui/print.jsx

86 lines
2.4 KiB
JavaScript

// FIX
import React from 'react';
import {Templates} from './components/templates';
import { DB } from '../static/storage';
import { Modi_Week } from './print_modi/week';
const moment = require('moment');
export class Print extends React.Component {
constructor(props) {
super(props);
this.state={
status:"",
print_modi:"week",
start:Date(),
end:Date(),
startWeek:0,
endWeek:0,
diff:0,
html:""
}
this.preview = this.preview.bind(this);
this.print = this.print.bind(this);
this.handleChangeStart = this.handleChangeStart.bind(this);
this.handleChangeEnd = this.handleChangeEnd.bind(this);
Templates.getTemplates()
}
preview(){
var name = DB.loadSettings('name').val;
var anfang = DB.loadSettings('start').val;
var start = moment(this.state.start);
var end = moment(this.state.end);
var me = this;
Modi_Week.preview(name,anfang,start,end,me)
}
print(){
var ifrm = document.getElementById('pdf');
ifrm = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;
ifrm.focus();
ifrm.print();
}
handleChangeStart(e){
var d = e.target.value;
var x = moment(d)
x = x.startOf('isoWeek')._d;
console.log(moment(x).week())
this.setState({startWeek:moment(x).weeks()})
this.setState({start:moment(x).format("YYYY-MM-DD")})
this.getWeeks(moment(x).weeks(),this.state.endWeek);
}
handleChangeEnd(e){
var d = e.target.value;
var x = moment(d)
x = x.endOf('isoWeek')._d;
this.setState({endWeek:moment(x).weeks()})
this.setState({end:moment(x).format("YYYY-MM-DD")})
this.getWeeks(this.state.startWeek,moment(x).weeks());
}
getWeeks(s,e){
var diff = e - s;
this.setState({diff:diff});
console.log(diff);
}
render(){
return (
<div id="print-frame">
<div className="header">
<div>
Wochen: {this.state.diff}
</div>
<div>Start: <input type="date" value={this.state.start} onChange={this.handleChangeStart}/></div>
<div>Ende: <input type="date" value={this.state.end} onChange={this.handleChangeEnd}/></div>
<div><button onClick={this.preview}>Vorschau</button><button onClick={this.print}>Drucken</button></div>
</div>
<iframe id="pdf" title="PDF OUTPUT">
</iframe>
{this.state.status}
</div>);
}
}