-
Notifications
You must be signed in to change notification settings - Fork 0
/
DataComponent.js
63 lines (50 loc) · 1.64 KB
/
DataComponent.js
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
// component with local storage data attached to it
class DataComponent extends Component {
static localStorageObject() {
return LocalStorageObject.create(this.dataKey);
}
// loads data, then calls onLocalStorageLoaded
static setup() {
this.getData((data) => {this.onLocalStorageLoaded(data)});
}
// setup document element and send data to popup
static onLocalStorageLoaded(data) {
if (!hasData(data)) {
return this.save(this.initialize(), () => {
this.setup();
});
}
this.setupDocumentElement(data);
}
static setupDocumentElement(data) {
this.localStorageObjectToDocumentElement(data);
}
// blender
// communication between document element and local storage
// update local storage data with document element ui
static updateDataFromPopup() {
let data = this.documentElementToLocalStorageObject();
this.localStorageObject().save(data);
}
// local storage
static getData(callback) {
return this.localStorageObject().get(callback);
}
static save(data, callback) {
return this.localStorageObject().save(data, callback);
}
static list() {
return new List(this.listId, this.listpadType, () => {
this.updateDataFromPopup();
});
}
static createListpad(uid) {
return this.list().createListpad(uid);
}
static getLocalStorageObjectByUid(uid) {
return this.listpadToObject(this.list().getListpad(uid));
}
static prependListpad(listpad) {
this.list().newListpadButton().after(listpad);
}
}