Initial commit
Benjamin Renard authored 8 years ago
|
1) exampleData={
2) 'lastChange': 0,
3) 'scases': {
4) 0: {
5) 'name': 'Vacances',
6) 'cats': {
7) 'lastChange': 0,
8) 'cats': {
9) 0: {
10) 'name': 'Papier',
11) 'color': '#f00',
12) 'things': [
13) {
14) 'label': 'Papier blanc',
15) 'checked': false
16) },
17) {
18) 'label': 'Stylo',
19) 'checked': true
20) },
21) {
22) 'label': "Carte d'identité",
23) 'checked': false
24) }
25) ]
26) },
27) 1: {
28) 'name': 'Multimédia',
29) 'color': '#0f0',
30) 'things': [
31) {
32) 'label': 'Montre',
33) 'checked': false
34) },
35) {
36) 'label': 'Chargeur montre',
37) 'checked': true
38) },
39) {
40) 'label': "PC",
41) 'checked': false
42) }
43) ]
44) }
45) }
46) }
47) }
48) }
49) };
50) function SCaseList() {
51) lastChange=0;
52)
53) this.loadFromLocalStorage=function() {
54) if (jQuery.type(localStorage.scases)!='undefined') {
55) try {
56) var data=JSON.parse(localStorage.scases);
57) this.lastChange=data.lastChange;
58) for (el in data.scases) {
59) this[el]=new SCase(false,data.scases[el]);
60) }
61) }
62) catch(e) {
63) for (el in this) {
64) if (this.isSCase(this[el])) {
65) delete this[el];
66) }
67) }
68) myconfirm('Erreur en chargeant les données locales. On les purges ?',
69) function(data) {
70) delete localStorage.scases;
71) location.reload();
72) }
73) );
74) }
75) }
76) else {
77) myconfirm("<h2>Bienvenu !</h2><p>Souhaitez-vous charger les données d'exemple ?</p>",
78) function(data) {
79) localStorage.scases=JSON.stringify(exampleData);
80) location.reload();
81) }
82) );
83) }
84) }
85)
86) this.export=function() {
87) return {
88) 'lastChange': this.lastChange,
89) 'scases': this.each(function(idx,scase) {
90) return scase.export();
91) })
92) };
93) }
94)
95) this.import=function(data) {
96) ret={};
97) for (el in this) {
98) if (this.isSCase(this[el])) {
99) delete ret[el];
100) }
101) }
102) this.lastChange=data.lastChange;
103) for (el in data.scases) {
104) this[el]=new SCase(false,data.scases[el]);
105) }
106) return true;
107) }
108)
109) this.save=function() {
110) localStorage.scases=JSON.stringify(this.export());
111) }
112)
113) this.each=function(fct) {
114) var idx=0;
115) var ret={};
116) for (el in this) {
117) if(this.isSCase(this[el])) {
118) ret[el]=fct(idx++,this[el]);
119) }
120) }
121) return ret;
122) }
123)
124) this.count=function() {
125) len=0;
126) this.each(function(idx,scase) {
127) len=len+1;
128) });
129) return len;
130) }
131)
132) this.isSCase=function(el) {
133) return (jQuery.type(el)=='object' && jQuery.type(el.isSCase)=='function' && el.isSCase());
134) }
135)
136) this.byName=function(name) {
137) for (el in this) {
138) if(this.isSCase(this[el])) {
139) if (this[el].name==name) {
140) return this[el];
141) }
142) }
143) }
144) return false;
145) }
146)
147) this.removeSCase=function(name) {
148) for (el in this) {
149) if (this.isSCase(this[el]) && this[el].name==name) {
150) delete this[el];
151) return true;
152) }
153) }
154) return false;
155) }
156)
157) this.newSCase=function(name) {
158) if (!this.isSCase(this[name])) {
159) this[name]=new SCase(name);
160) return this[name];
161) }
162) return false;
163) }
164)
165) this.renameSCase=function(name,newname) {
166) var scase=this.byName(name);
167) if (scase && !this.byName(newname)) {
168) scase.name=newname;
169) return scase;
170) }
171) return false;
172) }
173)
174) this.copySCase=function(name,newname) {
175) var orig_scase=this.byName(name);
176) if (this.isSCase(orig_scase) && !this.byName(newname)) {
177) this[newname]=new SCase(false,orig_scase.export());
178) this[newname].name=newname;
179) return this[newname];
180) }
181) return false;
182) }
183)
|
Initial commit
Benjamin Renard authored 8 years ago
|
192) }
193)
194) function SCase(name,data) {
195) this.name=name;
196) this.cats=new CatList();
197)
198) this.isSCase=function() {
199) return true;
200) }
201)
202) this.export=function() {
203) return {
204) 'name': encodeURIComponent(this.name),
205) 'cats': this.cats.export()
206) };
207) }
208)
209) this.byName=function(name) {
210) for (idx in this.cats) {
211) if (name==this.cats[idx].name) {
212) return this.cats[idx];
213) }
214) }
215) return false;
216) }
217)
|
Rework on home page
Benjamin Renard authored 8 years ago
|
218) this.stats=function() {
219) var cats=0;
220) var things=0;
221) var things_done=0;
222) this.cats.each(function(cidx,cat) {
223) cats++;
224) for (idx in cat.things) {
225) things++;
226) if (cat.things[idx].checked) {
227) things_done++;
228) }
229) }
230) });
231) return {
232) 'cats': cats,
233) 'things': things,
234) 'done': things_done
235) }
|