This repository was archived by the owner on Apr 2, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathtasks.ts
More file actions
106 lines (93 loc) · 2.74 KB
/
tasks.ts
File metadata and controls
106 lines (93 loc) · 2.74 KB
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
97
98
99
100
101
102
103
104
105
106
import { Component } from '@angular/core';
import { IonicPage, NavController, ModalController } from 'ionic-angular';
import { TasksCreatePage } from '../tasks-create/tasks-create';
import { DynamoDB, User } from '../../providers/providers';
declare var AWS: any;
@IonicPage()
@Component({
selector: 'page-tasks',
templateUrl: 'tasks.html'
})
export class TasksPage {
public items: any;
public refresher: any;
private taskTable: string = 'ionic-mobile-hub-tasks';
constructor(public navCtrl: NavController,
public modalCtrl: ModalController,
public user: User,
public db: DynamoDB) {
this.refreshTasks();
}
refreshData(refresher) {
this.refresher = refresher;
this.refreshTasks()
}
refreshTasks() {
var self = this;
this.db.getDocumentClient().query({
'TableName': self.taskTable,
'IndexName': 'DateSorted',
'KeyConditionExpression': "#userId = :userId",
'ExpressionAttributeNames': {
'#userId': 'userId',
},
'ExpressionAttributeValues': {
//':userId': self.user.getUser().getUsername(),
':userId': AWS.config.credentials.identityId
},
'ScanIndexForward': false
}).promise().then((data) => {
this.items = data.Items;
if (this.refresher) {
this.refresher.complete();
}
}).catch((err) => {
console.log(err);
});
}
generateId() {
var len = 16;
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var charLength = chars.length;
var result = "";
let randoms = window.crypto.getRandomValues(new Uint32Array(len));
for(var i = 0; i < len; i++) {
result += chars[randoms[i] % charLength];
}
return result.toLowerCase();
}
addTask() {
let id = this.generateId();
let addModal = this.modalCtrl.create(TasksCreatePage, { 'id': id });
let self = this;
addModal.onDidDismiss(item => {
if (item) {
item.userId = AWS.config.credentials.identityId;
item.created = (new Date().getTime() / 1000);
self.db.getDocumentClient().put({
'TableName': self.taskTable,
'Item': item,
'ConditionExpression': 'attribute_not_exists(id)'
}, function(err, data) {
if (err) { console.log(err); }
self.refreshTasks();
});
}
})
addModal.present();
}
deleteTask(task, index) {
let self = this;
this.db.getDocumentClient().delete({
'TableName': self.taskTable,
'Key': {
'userId': AWS.config.credentials.identityId,
'taskId': task.taskId
}
}).promise().then((data) => {
this.items.splice(index, 1);
}).catch((err) => {
console.log('there was an error', err);
});
}
}