]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | Ext.require([\r |
2 | 'Ext.data.*',\r | |
3 | 'Ext.util.*',\r | |
4 | 'Ext.view.View',\r | |
5 | 'Ext.ux.DataView.Animated',\r | |
6 | 'Ext.XTemplate',\r | |
7 | 'Ext.panel.Panel',\r | |
8 | 'Ext.layout.container.Fit',\r | |
9 | 'Ext.toolbar.*',\r | |
10 | 'Ext.slider.Multi'\r | |
11 | ]);\r | |
12 | \r | |
13 | Ext.onReady(function() {\r | |
14 | //data to be loaded into the ArrayStore\r | |
15 | var data = [\r | |
16 | [true, false, 1, "LG KS360", 54, "240 x 320 pixels", "2 Megapixel", "Pink", "Slider", 359, 2.400000],\r | |
17 | [true, true, 2, "Sony Ericsson C510a Cyber-shot", 180, "320 x 240 pixels", "3.2 Megapixel", "Future black", "Candy bar", 11, 0.000000],\r | |
18 | [true, true, 3, "LG PRADA KE850", 155, "240 x 400 pixels", "2 Megapixel", "Black", "Candy bar", 113, 0.000000],\r | |
19 | [true, true, 4, "Nokia N900 Smartphone 32 GB", 499, "800 x 480 pixels", "5 Megapixel", "( the image of the product displayed may be of a different color )", "Slider", 320, 3.500000],\r | |
20 | [true, false, 5, "Motorola RAZR V3", 65, "96 x 80 pixels", "0.3 Megapixel", "Silver", "Folder type phone", 5, 2.200000],\r | |
21 | [true, true, 6, "LG KC910 Renoir", 242, "240 x 400 pixels", "8 Megapixel", "Black", "Candy bar", 79, 0.000000],\r | |
22 | [true, true, 7, "BlackBerry Curve 8520 BlackBerry", 299, "320 x 240 pixels", "2 Megapixel", "Frost", "Candy bar", 320, 2.640000],\r | |
23 | [true, true, 8, "Sony Ericsson W580i Walkman", 120, "240 x 320 pixels", "2 Megapixel", "Urban gray", "Slider", 1, 0.000000],\r | |
24 | [true, true, 9, "Nokia E63 Smartphone 110 MB", 170, "320 x 240 pixels", "2 Megapixel", "Ultramarine blue", "Candy bar", 319, 2.360000],\r | |
25 | [true, true, 10, "Sony Ericsson W705a Walkman", 274, "320 x 240 pixels", "3.2 Megapixel", "Luxury silver", "Slider", 5, 0.000000],\r | |
26 | [false, false, 11, "Nokia 5310 XpressMusic", 140, "320 x 240 pixels", "2 Megapixel", "Blue", "Candy bar", 344, 2.000000],\r | |
27 | [false, true, 12, "Motorola SLVR L6i", 50, "128 x 160 pixels", "", "Black", "Candy bar", 38, 0.000000],\r | |
28 | [false, true, 13, "T-Mobile Sidekick 3 Smartphone 64 MB", 75, "240 x 160 pixels", "1.3 Megapixel", "", "Sidekick", 115, 0.000000],\r | |
29 | [false, true, 14, "Audiovox CDM8600", 5, "", "", "", "Folder type phone", 1, 0.000000],\r | |
30 | [false, true, 15, "Nokia N85", 315, "320 x 240 pixels", "5 Megapixel", "Copper", "Dual slider", 143, 2.600000],\r | |
31 | [false, true, 16, "Sony Ericsson XPERIA X1", 399, "800 x 480 pixels", "3.2 Megapixel", "Solid black", "Slider", 14, 0.000000],\r | |
32 | [false, true, 17, "Motorola W377", 77, "128 x 160 pixels", "0.3 Megapixel", "", "Folder type phone", 35, 0.000000],\r | |
33 | [true, true, 18, "LG Xenon GR500", 1, "240 x 400 pixels", "2 Megapixel", "Red", "Slider", 658, 2.800000],\r | |
34 | [true, false, 19, "BlackBerry Curve 8900 BlackBerry", 349, "480 x 360 pixels", "3.2 Megapixel", "", "Candy bar", 21, 2.440000],\r | |
35 | [true, false, 20, "Samsung SGH U600 Ultra Edition 10.9", 135, "240 x 320 pixels", "3.2 Megapixel", "", "Slider", 169, 2.200000]\r | |
36 | ];\r | |
37 | \r | |
38 | Ext.define('Mobile', {\r | |
39 | extend: 'Ext.data.Model',\r | |
40 | fields: [\r | |
41 | {name: 'hasEmail', type: 'bool'},\r | |
42 | {name: 'hasCamera', type: 'bool'},\r | |
43 | {name: 'id', type: 'int'},\r | |
44 | 'name',\r | |
45 | {name: 'price', type: 'int'},\r | |
46 | 'screen',\r | |
47 | 'camera',\r | |
48 | 'color',\r | |
49 | 'type',\r | |
50 | {name: 'reviews', type: 'int'},\r | |
51 | {name: 'screen-size', type: 'int'}\r | |
52 | ]\r | |
53 | });\r | |
54 | \r | |
55 | var store = Ext.create('Ext.data.ArrayStore', {\r | |
56 | model: 'Mobile',\r | |
57 | sortInfo: {\r | |
58 | field : 'name',\r | |
59 | direction: 'ASC'\r | |
60 | },\r | |
61 | data: data\r | |
62 | });\r | |
63 | \r | |
64 | //filters the store based on the current slider values\r | |
65 | function filterData(slider) {\r | |
66 | var values = slider.getValues();\r | |
67 | \r | |
68 | store.getFilters().replaceAll({\r | |
69 | fn: function(record) {\r | |
70 | return record.get('price') >= values[0] && record.get('price') <= values[1];\r | |
71 | }\r | |
72 | });\r | |
73 | \r | |
74 | store.sort('name', 'ASC');\r | |
75 | }\r | |
76 | \r | |
77 | var dataview = Ext.create('Ext.view.View', {\r | |
78 | store: store,\r | |
79 | tpl : Ext.create('Ext.XTemplate',\r | |
80 | '<tpl for=".">',\r | |
81 | '<div class="phone">',\r | |
82 | '<img width="64" height="64" src="images/phones/{[values.name.replace(/ /g, "-")]}.png" />',\r | |
83 | '<strong>{name}</strong>',\r | |
84 | '<span>{price:usMoney} ({reviews} Review{[values.reviews == 1 ? "" : "s"]})</span>',\r | |
85 | '</div>',\r | |
86 | '</tpl>'\r | |
87 | ),\r | |
88 | \r | |
89 | plugins : [\r | |
90 | Ext.create('Ext.ux.DataView.Animated', {\r | |
91 | duration : 550,\r | |
92 | idProperty: 'id'\r | |
93 | })\r | |
94 | ],\r | |
95 | id: 'phones',\r | |
96 | \r | |
97 | itemSelector: 'div.phone',\r | |
98 | overItemCls : 'phone-hover',\r | |
99 | multiSelect : true,\r | |
100 | scrollable : true\r | |
101 | });\r | |
102 | \r | |
103 | var phoneSlider = Ext.create('Ext.slider.Multi', {\r | |
104 | hideLabel: true,\r | |
105 | width : 300,\r | |
106 | minValue : 0,\r | |
107 | maxValue : 500,\r | |
108 | values : [80, 320],\r | |
109 | \r | |
110 | listeners: {\r | |
111 | changecomplete: filterData\r | |
112 | }\r | |
113 | });\r | |
114 | \r | |
115 | Ext.create('Ext.panel.Panel', {\r | |
116 | title: 'Animated DataView',\r | |
117 | layout: 'fit',\r | |
118 | items : dataview,\r | |
119 | height: 555,\r | |
120 | width : 650,\r | |
121 | tbar : [\r | |
122 | 'Filter phone price:',\r | |
123 | ' ',\r | |
124 | phoneSlider\r | |
125 | ],\r | |
126 | renderTo: 'docbody'\r | |
127 | });\r | |
128 | \r | |
129 | //perform initial filter\r | |
130 | filterData(phoneSlider);\r | |
131 | });\r |