]> git.proxmox.com Git - sencha-touch.git/blob - src/examples/oreilly/app/util/Proxy.js
import Sencha Touch 2.4.2 source
[sencha-touch.git] / src / examples / oreilly / app / util / Proxy.js
1 Ext.define('Oreilly.util.Proxy', {
2
3 singleton: true,
4
5 requires: ['Ext.data.proxy.JsonP'],
6
7 process: function(url, callback) {
8
9 var sessionStore = Ext.getStore('Sessions'),
10 speakerStore = Ext.getStore('Speakers'),
11 sessionSpeakerStore = Ext.getStore('SessionSpeakers'),
12 speakerSessionStore = Ext.getStore('SpeakerSessions'),
13 sessionIds, proposalModel, speakerModel, speakerSessions = {}, sessionId, speaker, sessionDays = {};
14
15 Ext.data.JsonP.request({
16 url: url,
17 callbackName: 'feedCb',
18
19 success: function(data) {
20
21 Ext.Array.each(data.proposals, function(proposal) {
22
23 proposal.speakerIds = [];
24 proposalModel = Ext.create('Oreilly.model.Session', proposal);
25
26 Ext.Array.each(proposal.speakers, function(speaker) {
27 proposal.speakerIds.push(speaker.id);
28
29 speakerModel = Ext.create('Oreilly.model.Speaker', speaker);
30 speakerStore.add(speakerModel);
31 sessionSpeakerStore.add(speakerModel);
32
33 speakerSessions[speaker.id] = speakerSessions[speaker.id] || [];
34 speakerSessions[speaker.id].push(proposal.id);
35 });
36
37 if (proposal.date) {
38 sessionDays[proposal.date] = {
39 day: proposalModel.get('time').getDate(),
40 text: Ext.Date.format(proposalModel.get('time'), 'm/d'),
41 time: proposalModel.get('time')
42 };
43 }
44
45 sessionStore.add(proposalModel);
46 speakerSessionStore.add(proposalModel);
47 });
48
49 for (var speakerId in speakerSessions) {
50 speaker = speakerStore.findRecord('id', speakerId);
51 if (speaker) {
52 speaker.set('sessionIds', speakerSessions[speakerId]);
53 }
54 }
55
56 Oreilly.sessionDays = Ext.Array.sort(Ext.Object.getValues(sessionDays), function(a, b) {
57 return a.time < b.time ? -1 : 1;
58 });
59
60 callback();
61 }
62 });
63
64 }
65 });