This repository has been archived by the owner on Sep 28, 2023. It is now read-only.
/
homework.ts
96 lines (88 loc) · 2.28 KB
/
homework.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import { Component } from '@angular/core';
import {
IonicPage,
NavController,
NavParams,
AlertController,
Loading,
LoadingController,
Refresher,
} from 'ionic-angular';
import { TranslateService } from '@ngx-translate/core';
import store, { connect } from '../../store';
import { log } from '../../providers/log';
import {
getHomework,
getHomeworkFilter,
getHomeworkClasses,
} from '../../selectors';
import { expand } from '../../components/animations';
@IonicPage()
@Component({
selector: 'page-homework',
templateUrl: 'homework.html',
animations: [ expand ]
})
export class Homework {
classes: any[] = [];
filter: string;
hideChecked: boolean = true;
loading: Loading = this.loadingCtrl.create();
constructor(
private translate: TranslateService,
private alert: AlertController,
private loadingCtrl: LoadingController,
){}
public async ionViewDidEnter(){
try {
await this.loading.present();
connect( ( state: any ) => ({
homework: getHomework(state),
filter: getHomeworkFilter(state),
classes: getHomeworkClasses(state),
today: state.today,
}) )( this );
store.dispatch({ type: 'LOAD', key: 'homework' });
this.loading.dismiss();
} catch(err){
log.warn(err);
}
}
popover(e){
const buttons = this.classes
.map( className => ({
type: 'radio',
label: className,
value: className
}) );
buttons.push({
type: 'radio',
label: this.translate.instant('HOMEWORK.ALL_CLASSES'),
value: 'ALL_CLASSES',
});
const inputs = buttons.map( button => ({
...button,
checked: button.value === this.filter,
}) );
this.alert.create({
title: this.translate.instant('HOMEWORK.TITLE'),
buttons: [
this.translate.instant('GLOBAL.CANCEL'),
{
text: this.translate.instant('GLOBAL.OK'),
handler: filter => {
store.dispatch({ type: 'HOMEWORK_SET_FILTER', filter });
}
}
],
inputs,
}).present();
}
check( item ){
store.dispatch({ type: 'HOMEWORK_TOGGLE_CHECKED', id: item.lsn_id });
}
refresh( refresher: Refresher ){
store.dispatch({ type: 'LOAD', key: 'homework', refresh: true });
refresher.complete();
}
}