-
Notifications
You must be signed in to change notification settings - Fork 0
/
DashboardView.ts
72 lines (55 loc) · 2.86 KB
/
DashboardView.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
/// <reference path="View.ts" />
'use strict';
module CoffeeBreak {
// Die Einstiegsseite.
export class DashboardView extends View<IDashboard, DashboardView, DashboardController> implements IDashboard {
// Meldet den Namen der HTML Datei zur Einstiegsseite.
viewName(): string {
return `dashboard`;
}
// Die Tabelle mit den letzten Spenden.
private _table: JQuery;
// Die Tabelle mit der Spendenübersicht.
private _timeGroup: JQuery;
// Die Schaltfläche zum Anlegen einer neuen Spende.
private _newDonation: JQuery;
// Die Schaltfläche zur Aktualisierung der angezeigten Spenden.
private _refresh: JQuery;
// Die Methode zur Aktualisierung der angezeigten Spenden.
private _reload: (forMe?: boolean) => void;
// Verbindet den View mit der Oberfläche.
protected onConnect(): void {
this._table = this.connectAny(`table.coffeeBreakDonationTable > tbody`);
this._timeGroup = this.connectAny(`table.coffeeBreakDonationTimeGroupTable > tbody`);
this.connectFlag(`.coffeeBreakMeOnly > input`, newValue => this._reload && this._reload(newValue));
this._newDonation = this.connectAction(`a.coffeeBreakNewButton`, () => App.loadView(CreateDonationController, CreateDonationView));
this._refresh = this.connectAction(`a.coffeeBreakRefreshButton`, () => this._reload && this._reload());
}
// Legt die Methode zur Aktualisierung der angezeigten Spenden fest.
setRefresh(callback: (forMe?: boolean) => void) {
this._reload = callback;
}
// Aktualisiert die Tabelle mit den neuesten Spenden.
fillTable(donations: Donation[]): void {
this._table.html(``);
donations.forEach(donation =>
$(`<tr />`)
.append($(`<td />`, { text: donation.typeName }))
.append($(`<td />`, { text: donation.hasCoffein ? Constants.text.yes : Constants.text.no }))
.append($(`<td />`, { text: donation.weight.toString() }))
.append($(`<td />`, { text: donation.created.toLocaleString() }))
.append($(`<td />`, { text: donation.author }))
.appendTo(this._table));
}
// Aktualisiert die Tabelle mit der Übersicht über alle Spenden.
fillTimeGroup(donations: TimeGroupDonation[]): void {
this._timeGroup.html(``);
donations.forEach(donation =>
$(`<tr />`)
.append($(`<td />`, { text: donation.segment }))
.append($(`<td />`, { text: donation.totalCount.toString() }))
.append($(`<td />`, { text: donation.totalWeight.toString() }))
.appendTo(this._timeGroup));
}
}
}