Project

General

Profile

Download (13.7 KB) Statistics
| Branch: | Revision:

git_sitools_idoc / Asynchronous_Download_userInterface_sitools2 / goToTaskPanel.js @ 20ff13ec

1 20ff13ec shye0000
/*******************************************************************************
2
 * Copyright 2010-2014 CNES - CENTRE NATIONAL d'ETUDES SPATIALES
3
 * 
4
 * This file is part of SITools2.
5
 * 
6
 * SITools2 is free software: you can redistribute it and/or modify it under the
7
 * terms of the GNU General Public License as published by the Free Software
8
 * Foundation, either version 3 of the License, or (at your option) any later
9
 * version.
10
 * 
11
 * SITools2 is distributed in the hope that it will be useful, but WITHOUT ANY
12
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
 * 
15
 * You should have received a copy of the GNU General Public License along with
16
 * SITools2. If not, see <http://www.gnu.org/licenses/>.
17
 ******************************************************************************/
18
/*global Ext, sitools, i18n, SitoolsDesk, alertFailure, window, loadUrl */
19
20
Ext.namespace('sitools.user.component.dataviews');
21
22
/**
23
 * A simple window that displays result of Resource Tasks.
24
 * @class sitools.user.component.dataviews.goToTaskPanel
25
 * @extends Ext.Panel
26
 */
27
sitools.user.component.dataviews.goToTaskPanel = Ext.extend(Ext.Panel, {
28
//sitools.user.component.livegrid.goToTaskPanel = Ext.extend(Ext.Window, {
29
//    modal : true,
30
    width : "500", 
31
    buttonAlign : 'left',
32
    layout : 'fit',
33
    initComponent : function () {
34
        
35
        
36
        
37
        this.mainPanel = this.createNewFormComponent(this.task);
38
 
39
        this.buttons = ["->",/* {
40
            text : i18n.get('label.goToTask'),
41
            scope : this,
42
            handler : this.goToTask
43
        },*/ {
44
            text : i18n.get('label.close'),
45
            scope : this,
46
            handler : function () {
47
                this.ownerCt.close();
48
            }
49
        } ];
50
        
51
        
52
        this.items = [this.mainPanel];
53
        
54
        sitools.user.component.dataviews.goToTaskPanel.superclass.initComponent.call(this);
55
56
    },
57
    
58
    refreshTask : function () {
59
//        var form = this.mainPanel;
60
        var url = this.task.statusUrl;
61
        Ext.Ajax.request({
62
            url : url,
63
            method : "GET",
64
            scope : this,
65
            success : function (ret) {
66
                var data = Ext.decode(ret.responseText);
67
                if (!data.success) {
68
                    Ext.Msg.alert(i18n.get('label.warning'), data.message);
69
                    return false;
70
                }
71
                this.task = data.TaskModel;
72
                this.mainPanel = this.createNewFormComponent(this.task);
73
                this.removeAll();
74
                this.add(this.mainPanel);
75
                this.doLayout();
76
            },
77
            failure : alertFailure
78
        });
79
    },
80
    
81
    createNewFormComponent : function (task) {
82
        var html = String.format("<p>Hi, your download task is being processed, we will inform you by email when it is done.</p>");
83
        html += String.format("<p>For public users, we will send you a link for download in the email.</p>");
84
        //html += String.format("<p>You can check the progress by clicking the button <b>Go to the task</b> below.</p>");
85
        html += String.format("<p>For registered users, you can find and manage(delete or download) all your historical download tasks by clicking the <b>Tasks</b> button which located in your user menu.</p>");
86
       
87
        /* var html = String.format(i18n.get("label.taskLaunched"), task.status);
88
        html += String.format("<a href='#'>{0}</a><br>", i18n.get("label.detail"));
89
        
90
        if (!Ext.isEmpty(task.urlResult)) {
91
                        html += "<br>" + String.format(i18n.get("label.taskResult"), task.urlResult);        
92
                        html += String.format("<a href='#'>{0}</a><br>", i18n.get("label.result"));
93
        }
94
        else {
95
                        html += "<br>" + i18n.get("label.refreshTaskWindow");        
96
                        html += String.format("<a href='#'>{0}</a><br>", i18n.get("label.refresh"));
97
        }*/
98
        
99
        var panel = new Ext.Panel({
100
                        padding: 5,
101
                        layout : "fit", 
102
                        html : html, 
103
                        listeners : {
104
                                scope : this, 
105
                                afterrender : function (panel) {
106
                                        /*panel.getEl().child('a').on("click", function () {
107
                                                this.showTaskDetail(task);
108
                                        }, this);
109
                                        var resultOrRefreshLink = panel.getEl().child('a').next('a');
110
                                        if (!Ext.isEmpty(task.urlResult)) {
111
                                                resultOrRefreshLink.on("click", function () {
112
                                                        this.showTaskResults(task);
113
                                                }, this);
114
                                        }
115
                                        else {
116
                                                resultOrRefreshLink.on("click", function () {
117
                                                        this.refreshTask();
118
                                                }, this);
119
                                        }*/
120
                                }
121
                        }
122
        });
123
        return panel;
124
        
125
//        var formPanel = new Ext.form.FormPanel({
126
//            title : i18n.get("label.taskDetails"),
127
//            padding: 5,
128
//            items : [ {
129
//                name : 'statusUrl',
130
//                xtype : 'textfield',
131
//                value : task.statusUrl,
132
//                hidden : true
133
//            }, {
134
//                name : 'status',
135
//                fieldLabel : i18n.get('label.status'),
136
//                anchor : "100%",
137
//                xtype : 'textfield',
138
//                value : task.status
139
//            }, {
140
//                name : 'id',
141
//                fieldLabel : i18n.get('label.id'),
142
//                anchor : "100%",
143
//                xtype : 'textfield',
144
//                value : task.id
145
//            }, {
146
//                itemValue : task.statusUrl,
147
//                fieldLabel : i18n.get('label.url'),
148
//                xtype : 'box',
149
//                html : "<a href='#'> " + task.statusUrl + "</a>"
150
//                ,
151
//                listeners : {
152
//                    scope : this,
153
//                    render : function (cmp) {
154
//                        cmp.getEl().on('click', function () {
155
//                            var jsObj = sitools.user.modules.userSpaceDependencies.svaTasksDetails;
156
//                            var componentCfg = {
157
//                                sva : task    
158
//                            };
159
//                            var windowConfig = {
160
//                                id : "taskStatusDetails", 
161
//                                title : i18n.get("label.taskDetails") + ":" + task.id
162
//                            };
163
//                            SitoolsDesk.addDesktopWindow(windowConfig, componentCfg, jsObj);
164
//                        });
165
//                    }
166
//                }
167
//            }
168
//            ]
169
//        });
170
//        
171
//        if (!Ext.isEmpty(task.urlResult)) {
172
//            var item = new Ext.BoxComponent({
173
//                itemValue : task.urlResult,
174
//                fieldLabel : i18n.get('label.result'),
175
//                html : "<a href='#'> " + task.urlResult + "</a>",
176
//                listeners : {
177
//                    scope : this,
178
//                    render : function (cmp) {
179
//                        cmp.getEl().on('click', function () {
180
//                            var orderUrl = loadUrl.get('APP_URL') + loadUrl.get('APP_ORDERS_USER_URL');
181
//                            if (cmp.itemValue.indexOf(orderUrl) != -1) {
182
//                                this._showOrderDetails(cmp.itemValue);
183
//                            } else if (cmp.itemValue.indexOf("/records") != -1) {
184
//                                this._showDatasetDetails(cmp.itemValue);
185
//                            } 
186
//                            else {
187
//                                window.open(cmp.itemValue);
188
//                            }
189
//                        }, this);
190
//                    }
191
//                }
192
//            });
193
//            formPanel.add(item);
194
//        }
195
//        
196
//        return formPanel;
197
        
198
    },
199
    
200
    /**
201
     * Handler of the button goToTask. 
202
     * Open the home Module Window with the taskPanel opened.
203
     */
204
    goToTask : function () {
205
        this.ownerCt.close();
206
                var jsObj = sitools.user.component.entete.userProfile.tasks;
207
        var windowConfig = {
208
            title : i18n.get('label.Tasks'),
209
            saveToolbar : false, 
210
            iconCls : "tasks"
211
        };
212
        SitoolsDesk.addDesktopWindow(windowConfig, {}, jsObj, true);
213
214
    },
215
    /**
216
     * Open a sitools.user.component.entete.userProfile.orderProp window. 
217
     * @param {String} url the Url to request the task. 
218
     */
219
    _showOrderDetails : function (url) {
220
        Ext.Ajax.request({
221
            url : url,
222
            method : 'GET',
223
            scope : this,
224
            success : function (ret) {
225
                var data = Ext.decode(ret.responseText);
226
                if (!data.success) {
227
                    Ext.Msg.alert(i18n.get('label.warning'), data.message);
228
                    return false;
229
                }
230
                var rec = new Ext.data.Record(data.order);
231
                var jsObj = sitools.user.component.entete.userProfile.orderProp;
232
                var componentCfg = {
233
                    action : 'detail',
234
                    orderRec : rec
235
                };
236
                var title = i18n.get('label.details') + " : ";
237
                title += rec.data.userId;
238
                title += " " + i18n.get('label.the');
239
                title += " " + rec.data.dateOrder;
240
241
                var windowConfig = {
242
                    id : "showDataDetailId", 
243
                    title : title,  
244
                    specificType : "dataDetail", 
245
                    iconCls : "dataDetail"
246
                };
247
                SitoolsDesk.addDesktopWindow(windowConfig, componentCfg, jsObj);
248
            },
249
            failure : alertFailure
250
        });
251
        
252
    },
253
    /**
254
     * Only in NoSql, open a dataset view 
255
     * @param {} url
256
     */
257
    _showDatasetDetails : function (url) {
258
        var urlDataset = url.substring(0, url.indexOf("/records"));
259
        Ext.Ajax.request({
260
            url : urlDataset,
261
            method : 'GET',
262
            scope : this,
263
            success : function (ret) {
264
                var data = Ext.decode(ret.responseText);
265
                if (!data.success) {
266
                    Ext.Msg.alert(i18n.get('label.warning'), data.message);
267
                    return false;
268
                }
269
                var dataset = new Ext.data.Record(data.dataset).data;
270
                
271
                var windowConfig = {
272
                        title : i18n.get('label.dataTitle') + " : " + dataset.name,
273
                        datasetName : dataset.name, 
274
                        datasetDescription : dataset.description,
275
                        type : "data", 
276
                        saveToolbar : true, 
277
                        toolbarItems : [], 
278
                        iconCls : "dataDetail"
279
                    };
280
                
281
                //open the dataView according to the dataset Configuration.
282
                var javascriptObject = eval(dataset.datasetView.jsObject);
283
                //add the toolbarItems configuration
284
                Ext.apply(windowConfig, {
285
                    id : "data" + dataset.datasetId
286
                });
287
                var componentCfg = {
288
                    dataUrl : dataset.sitoolsAttachementForUsers,
289
                    datasetId : dataset.id,
290
                    datasetCm : dataset.columnModel, 
291
                    datasetName : dataset.name,
292
                    dictionaryMappings : dataset.dictionaryMappings, 
293
                        datasetViewConfig : dataset.datasetViewConfig, 
294
                    preferencesPath : "/" + dataset.name, 
295
                    preferencesFileName : "datasetView"
296
                };
297
                
298
                SitoolsDesk.addDesktopWindow(windowConfig, componentCfg, javascriptObject);
299
                
300
            },
301
            failure : alertFailure
302
        });
303
        
304
    }, 
305
    /**
306
     * Opens a sitools.user.modules.userSpaceDependencies.svaTasksDetails window to see the task Details. 
307
     * @param {} task
308
     */
309
    showTaskDetail : function (task) {
310
            var jsObj = sitools.user.component.entete.userProfile.tasksDetails;
311
            var componentCfg = {
312
                sva : task    
313
            };
314
            var windowConfig = {
315
                id : "taskStatusDetails", 
316
                title : i18n.get("label.taskDetails") + ":" + task.id, 
317
                iconCls : "dataDetail"
318
            };
319
            SitoolsDesk.addDesktopWindow(windowConfig, componentCfg, jsObj);
320
        }, 
321
        /**
322
         * parse the task.urlResult to see if this is an Specialized resource (noSQl or Order). 
323
         * If not, open a new Window to get the result of the resource. 
324
         * @param {} task
325
         */
326
        showTaskResults : function (task) {
327
                var orderUrl = loadUrl.get('APP_URL') + loadUrl.get('APP_ORDERS_USER_URL');
328
        if (task.urlResult.indexOf(orderUrl) != -1) {
329
            this._showOrderDetails(task.urlResult);
330
        } else if (task.urlResult.indexOf("/records") != -1) {
331
            this._showDatasetDetails(task.urlResult);
332
        } 
333
        else {
334
            window.open(task.urlResult);
335
        }
336
        }, 
337
    /**
338
     * Method called when trying to show this component with fixed navigation
339
     * 
340
     * @param {sitools.user.component.viewDataDetail} me the dataDetail view
341
     * @param {} config config options
342
     * @returns
343
     */
344
    showMeInFixedNav : function (me, config) {
345
        Ext.apply(config.windowSettings, {
346
            width : config.windowSettings.winWidth || DEFAULT_WIN_WIDTH,
347
            height : config.windowSettings.winHeight || DEFAULT_WIN_HEIGHT
348
        });
349
        SitoolsDesk.openModalWindow(me, config);
350
    }, 
351
    /**
352
     * Method called when trying to show this component with Desktop navigation
353
     * 
354
     * @param {sitools.user.component.viewDataDetail} me the dataDetail view
355
     * @param {} config config options
356
     * @returns
357
     */
358
    showMeInDesktopNav : function (me, config) {
359
        Ext.apply(config.windowSettings, {
360
            width : config.windowSettings.winWidth || DEFAULT_WIN_WIDTH,
361
            height : config.windowSettings.winHeight || DEFAULT_WIN_HEIGHT
362
        });
363
        SitoolsDesk.openModalWindow(me, config);
364
    }
365
    
366
367
});