Initial commit
Benjamin Renard authored 10 years ago
|
1) function GroupList() {
2)
3) this.loadFromLocalStorage=function() {
4) if (localStorage.groups!==undefined) {
5) var groups=JSON.parse(localStorage.groups);
6) for (el in groups) {
7) this[el]=new Group(el,groups[el]);
8) }
9) }
10) }
11)
12) this.export=function() {
13) ret={};
14) for (el in this) {
15) if (this.isGroup(this[el])) {
16) ret[el]=this[el].export();
17) }
18) }
19) return ret;
20) }
21)
22) this.save=function() {
23) localStorage.groups=JSON.stringify(this.export());
24) }
25)
26) this.each=function(fct) {
27) var idx=0;
28) for (el in this) {
29) if(this.isGroup(this[el])) {
30) fct(idx++,this[el]);
31) }
32) }
33) }
34)
35) this.count=function() {
36) len=0;
37) for (el in this) {
38) if (this.isGroup(this[el])) len=len+1;
39) }
40) return len;
41) }
42)
43) this.isGroup=function(el) {
44) return (el.isGroup!==undefined);
45) }
46)
47) this.removeGroup=function(name) {
48) if (this.isGroup(this[name])) {
49) delete this[name];
50) return true;
51) }
52) return false;
53) }
54) }
55)
56) function Group(name,data) {
57) this.name=name;
58) this.contributors=[];
59) this.contributions=[];
60)
61)
62) this.isGroup=function() {
63) return true;
64) }
65)
66) this.export=function() {
67) var contributors=[];
68) for (idx in this.contributors) {
69) contributors.push(this.contributors[idx].export());
70) }
71) var contributions=[];
72) for (idx in this.contributions) {
73) contributions.push(this.contributions[idx].export());
74) }
75) return {
76) 'name': this.name,
77) 'contributors': contributors,
78) 'contributions': contributions
79) };
80) }
81)
82) this.removeContributor=function(c) {
83) this.contributors=this.contributors.filter(function(v){
84) return (v.name!=c);
85) });
86) }
87)
88) this.contributorByName=function(name) {
89) for (c in this.contributors) {
90) if (this.contributors[c].name == name) return this.contributors[c];
91) }
92) return undefined;
93) }
94)
95) this.contributorByEmail=function(email) {
96) for (c in this.contributors) {
97) if (this.contributors[c].email == email) return this.contributors[c];
98) }
99) return undefined;
100) }
101)
102) this.contributionsByContributorName=function(name) {
103) var ret=[];
104) for (idx in this.contributions) {
105) if (this.contributions[idx].contributor.name==name) {
106) ret.push(this.contributions[idx]);
107) }
108) }
109) return ret;
110) }
111)
112) this.addContribution=function(c) {
113) c.id=this.contributions.length;
114) this.contributions.push(c);
115) }
116)
117) this.replaceContribution=function(idx,c) {
118) c.id=idx;
119) this.contributions[idx]=c;
120) }
121)
|
Add edit contributor feature
Benjamin Renard authored 10 years ago
|
122) this.addContributor=function(c) {
123) c.id=this.contributors.length;
124) this.contributors.push(c);
125) }
126)
127) this.replaceContributor=function(idx,c) {
128) c.id=idx;
129) this.contributors[idx]=c;
130) }
|
Initial commit
Benjamin Renard authored 10 years ago
|
131)
132) this.balance=function() {
133) ret={}
134) for (idx in this.contributors) {
135) sum=0;
136) c=this.contributors[idx].name;
137) cl=this.contributionsByContributorName(c);
138) for (idc in cl) {
139) sum+=cl[idc].cost;
140) }
141) ret[c]=sum;
142) }
143) return ret;
144) }
145)
146) if (jQuery.type(data)=='object') {
147) try {
148) this.name=data.name;
149) if (jQuery.type(data.contributors) == 'array') {
150) for (idx in data.contributors) {
151) this.contributors.push(new Contributor(
152) data.contributors[idx].name,
|
Add edit contributor feature
Benjamin Renard authored 10 years ago
|
153) data.contributors[idx].email,
154) idx
|
Initial commit
Benjamin Renard authored 10 years ago
|
155) ));
156) }
157) }
158) if (jQuery.type(data.contributions) == 'array') {
159) for (idx in data.contributions) {
160) this.contributions.push(new Contribution(
161) this.contributorByName(data.contributions[idx].contributor),
162) data.contributions[idx].cost,
163) data.contributions[idx].title,
164) data.contributions[idx].date,
165) idx
166) ));
167) }
168) }
169) }
170) catch (e) {
171) alert('Une erreur est survenue en chargeant le groupe '+this.name+' depuis le cache');
172) }
173) }
174) }
175)
|
Add edit contributor feature
Benjamin Renard authored 10 years ago
|
176) function Contributor(name,email,id) {
|
Initial commit
Benjamin Renard authored 10 years ago
|
177) this.name=name;
178) this.email=email;
|
Add edit contributor feature
Benjamin Renard authored 10 years ago
|
179) this.id=id;
|