]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | Ext.define('KitchenSink.model.Person', {\r |
2 | extend: 'KitchenSink.model.Base',\r | |
3 | fields: ['firstName', 'lastName', 'age', 'favoriteColor'],\r | |
4 | statics: {\r | |
5 | generateData: (function() {\r | |
6 | var lasts = ['Jones', 'Smith', 'Lee', 'Wilson', 'Black', 'Williams', 'Lewis', 'Johnson', 'Foot', 'Little', 'Vee', 'Train', 'Hot', 'Mutt'],\r | |
7 | firsts = ['Fred', 'Julie', 'Bill', 'Ted', 'Jack', 'John', 'Mark', 'Mike', 'Chris', 'Bob', 'Travis', 'Kelly', 'Sara'],\r | |
8 | colors = ['Red', 'Green', 'Blue'],\r | |
9 | currentYear = (new Date()).getFullYear();\r | |
10 | \r | |
11 | function getRandom(array) {\r | |
12 | var index = Ext.Number.randomInt(0, array.length - 1);\r | |
13 | return array[index];\r | |
14 | }\r | |
15 | \r | |
16 | function getName(seen) {\r | |
17 | var name = {\r | |
18 | first: getRandom(firsts),\r | |
19 | last: getRandom(lasts)\r | |
20 | };\r | |
21 | \r | |
22 | if (seen[name.first + name.last]) {\r | |
23 | return getName(seen);\r | |
24 | } else {\r | |
25 | return name;\r | |
26 | }\r | |
27 | }\r | |
28 | \r | |
29 | function getDate() {\r | |
30 | var y = Ext.Number.randomInt(currentYear - 5, currentYear),\r | |
31 | m = Ext.Number.randomInt(0, 11),\r | |
32 | maxDays = Ext.Date.getDaysInMonth(new Date(y, m, 1));\r | |
33 | d = Ext.Number.randomInt(1, maxDays);\r | |
34 | \r | |
35 | return new Date(y, m, d);\r | |
36 | }\r | |
37 | \r | |
38 | function getKey() {\r | |
39 | var chars = '',\r | |
40 | i;\r | |
41 | \r | |
42 | for (i = 0; i < 5; ++i) {\r | |
43 | chars += String.fromCharCode(Ext.Number.randomInt(97, 122));\r | |
44 | }\r | |
45 | \r | |
46 | return chars;\r | |
47 | }\r | |
48 | \r | |
49 | return function(options) {\r | |
50 | options = options || {};\r | |
51 | var out = [],\r | |
52 | \r | |
53 | adults = options.adults,\r | |
54 | children = options.children,\r | |
55 | total = options.total,\r | |
56 | includeAccounts = options.includeAccounts,\r | |
57 | seenNames = {},\r | |
58 | adultsUndef = adults === undefined,\r | |
59 | childrenUndef = children === undefined,\r | |
60 | accountIdCounter = 0,\r | |
61 | name, o, accounts, j, len;\r | |
62 | \r | |
63 | if (!adultsUndef && !childrenUndef) {\r | |
64 | total = adults + children;\r | |
65 | } else {\r | |
66 | // We rely on total now\r | |
67 | total = total || 15;\r | |
68 | if (adultsUndef && childrenUndef) {\r | |
69 | adults = Ext.Number.randomInt(Math.floor(total * 0.25), Math.floor(total * 0.75));\r | |
70 | children = total - adults;\r | |
71 | } else if (adultsUndef) {\r | |
72 | adults = total - children;\r | |
73 | } else {\r | |
74 | children = total - adults;\r | |
75 | }\r | |
76 | }\r | |
77 | \r | |
78 | for (i = 0; i < total; ++i) {\r | |
79 | name = getName(seenNames);\r | |
80 | o = {\r | |
81 | id: i + 1,\r | |
82 | firstName: name.first,\r | |
83 | lastName: name.last,\r | |
84 | age: i >= adults ? Ext.Number.randomInt(0, 17) : Ext.Number.randomInt(18, 100),\r | |
85 | favoriteColor: getRandom(colors)\r | |
86 | };\r | |
87 | \r | |
88 | if (includeAccounts) {\r | |
89 | accounts = [];\r | |
90 | len = Ext.Number.randomInt(1, 5);\r | |
91 | for (j = 0; j < len; ++j) {\r | |
92 | accounts.push({\r | |
93 | id: ++accountIdCounter,\r | |
94 | created: getDate(),\r | |
95 | accountKey: getKey(),\r | |
96 | personId: o.id\r | |
97 | });\r | |
98 | }\r | |
99 | o.accounts = accounts;\r | |
100 | }\r | |
101 | \r | |
102 | out.push(o);\r | |
103 | }\r | |
104 | \r | |
105 | return out;\r | |
106 | };\r | |
107 | })()\r | |
108 | }\r | |
109 | }); |