source: branches/1.2/workflow/js/adminjobs/actions.js @ 1349

Revision 1349, 9.1 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

Line 
1function editJob(jobObjectJason)
2{
3        clearForm();
4        $('saving').hide();
5        $('actions').show();
6        Effect.BlindUp('jobList');
7        var jobObject = $H(jobObjectJason);
8        loadJobInfo(jobObject);
9        Effect.BlindDown('jobForm');
10}
11
12function clearForm()
13{
14        var dateObject = new Date();
15        $('jobID').value = '';
16        $('name').value = '';
17        $('_description').value = '';
18        $('active').checked = true;
19        $('startDate').value = ((dateObject.getDate() < 10) ? '0' + dateObject.getDate() : dateObject.getDate()) + '/' + ((dateObject.getMonth() < 10) ? '0' + (dateObject.getMonth()+1) : (dateObject.getMonth() + 1)) + '/' + dateObject.getFullYear();
20        $('executionTime_Hour').value = ((dateObject.getHours() < 10) ? '0' + dateObject.getHours() : dateObject.getHours());
21        $('executionTime_Minute').value = ((dateObject.getMinutes() < 10) ? '0' + dateObject.getMinutes() : dateObject.getMinutes());
22        $('repeatJob').checked = false;
23        $('dateType_0').checked = true;
24        $('absoluteDateIntervalValue').value = 1;
25        $('absoluteDateIntervalUnity').value = DateUnity.DAY;
26        $('weekDateIntervalValue').value = 1;
27        for (var i = 0; i < 7; i++)
28                $('weekDateDay_' + i).checked = false;
29        $('relativeDateIntervalValue').value = 1;
30        $('relativeDateMonthOffset').value = 1;
31}
32
33function loadJobInfo(jobObject)
34{
35        $('jobID').value = jobObject['job_id'];
36        $('name').value = jobObject['name'];
37        $('_description').value = jobObject['description'];
38        $('active').checked = (jobObject['active'] == 't')
39        var dateTime = jobObject['time_start'].split(' ');
40        var datePart = dateTime[0].split('-');
41        var timePart = dateTime[1].split(':');
42        $('startDate').value = datePart[2] + '/' + datePart[1] + '/' + datePart[0];
43        $('executionTime_Hour').value = timePart[0];
44        $('executionTime_Minute').value = timePart[1];
45        $('repeatJob').checked = (parseInt(jobObject['interval_unity']) != DateUnity.NONE);
46
47        $('dateType_' + jobObject['date_type']).checked = true;
48        if (jobObject['interval_value'] == 0)
49                jobObject['interval_value'] = 1;
50        if (parseInt(jobObject['interval_unity']) == DateUnity.NONE)
51                jobObject['interval_unity'] = DateUnity.DAY;
52
53        switch (parseInt(jobObject['date_type']))
54        {
55                case DateType.ABSOLUTE_DATE:
56                        loadJobInfoAbsoluteDate(jobObject);
57                        break;
58
59                case DateType.WEEK_DATE:
60                        loadJobInfoWeekDate(jobObject);
61                        break;
62
63                case DateType.RELATIVE_DATE:
64                        loadJobInfoRelativeDate(jobObject);
65                        break;
66        }
67        clickRepeatJob();
68}
69
70function loadJobInfoAbsoluteDate(jobObject)
71{
72        $('absoluteDateIntervalValue').value = jobObject['interval_value'];
73        $('absoluteDateIntervalUnity').value = jobObject['interval_unity'];
74}
75
76function loadJobInfoWeekDate(jobObject)
77{
78        $('weekDateIntervalValue').value = jobObject['interval_value'];
79        var weekDays = parseInt(jobObject['week_days']);
80        for (var i = 0; i < 7; i++)
81                if (weekDays & Math.pow(2, i))
82                        $('weekDateDay_' + i).checked = true;
83}
84
85function loadJobInfoRelativeDate(jobObject)
86{
87        $('relativeDateIntervalValue').value = jobObject['interval_value'];
88        $('relativeDateMonthOffset').value = jobObject['month_offset'];
89}
90
91function saveJob()
92{
93        function resultSaveJob(data)
94        {
95                if (!checkError(data))
96                {
97                        resultLoadJobList(data);
98                        Effect.BlindUp('jobForm');
99                        Effect.BlindDown('jobList');
100                }
101                else
102                {
103                        $('saving').hide();
104                        $('actions').show();
105                }
106        }
107
108        var startDate = $F('startDate').split('/');
109        var intervalValue;
110        var intervalUnity;
111        if ($F('repeatJob') != 'on')
112        {
113                intervalValue = 0;
114                intervalUnity = DateUnity.NONE;
115        }
116        else
117        {
118                switch (getSelectedDateType())
119                {
120                        case DateType.ABSOLUTE_DATE:
121                                intervalValue = $F('absoluteDateIntervalValue');
122                                intervalUnity = $F('absoluteDateIntervalUnity');
123                                break;
124
125                        case DateType.WEEK_DATE:
126                                intervalValue = $F('weekDateIntervalValue');
127                                intervalUnity = DateUnity.WEEK;
128                                break;
129
130                        case DateType.RELATIVE_DATE:
131                                intervalValue = $F('relativeDateIntervalValue');
132                                intervalUnity = DateUnity.MONTH;
133                                break;
134                }
135        }
136        var weekDays = 0;
137        var currentWeekDay;
138        for (var i = 0; i < 7; i++)
139        {
140                currentWeekDay = $F('weekDateDay_' + i);
141                if (currentWeekDay != null)
142                        weekDays = weekDays | currentWeekDay;
143        }
144
145        var params =
146        {
147                jobID: $F('jobID'),
148                processID: $F('processID'),
149                name: escape($F('name')),
150                description : escape($F('_description')),
151                timeStart: escape(startDate[2] + '-' + startDate[1] + '-' + startDate[0] + ' ' + $F('executionTime_Hour') + ':' + $F('executionTime_Minute') + ':00'),
152                intervalValue: intervalValue,
153                intervalUnity: intervalUnity,
154                dateType: getSelectedDateType(),
155                weekDays: weekDays,
156                monthOffset: $F('relativeDateMonthOffset'),
157                active: ($F('active') == 'on')
158        };
159
160        $('actions').hide();
161        $('saving').show();
162
163        cExecute('$this.bo_adminjobs.saveJob', resultSaveJob, $H(params).toQueryString());
164}
165
166function removeJob(jobID)
167{
168        function resultRemoveJob(data)
169        {
170                if (checkError(data))
171                        return;
172                Effect.Fade('job_' + jobID);
173        }
174
175        cExecute('$this.bo_adminjobs.removeJob', resultRemoveJob, 'jobID=' + jobID);
176}
177
178function newJob()
179{
180        clearForm();
181        clickRepeatJob();
182        $('saving').hide();
183        $('actions').show();
184        Effect.BlindUp('jobList');
185        Effect.BlindDown('jobForm');
186}
187
188function loadLogs(jobID, p_page)
189{
190        function resultLoadLogs(data)
191        {
192                if (checkError(data))
193                        return;
194                var content = '<h2>Job: ' + $('job_' + jobID).childNodes[1].firstChild.innerHTML + '</h2>';
195                content += '<button onclick="Effect.BlindUp(\'logList\'); Effect.BlindDown(\'jobList\'); return false;">Voltar</button><br/><br/>';
196
197                if (data['logs'].length > 0)
198                {
199                        var pagingLinks = '';
200                        if (data['pagingLinks'])
201                        {
202                                var pagingSize = data['pagingLinks'].length;
203                                for (var i = 0; i < pagingSize; i++)
204                                {
205                                        if (data['pagingLinks'][i]['do_link'] == true)
206                                                pagingLinks += '<a href="javascript:loadLogs(' + jobID + ', ' + data['pagingLinks'][i]['p_page'] + ');">' + data['pagingLinks'][i]['name'] + '</a>&nbsp;';
207                                        else
208                                                pagingLinks += '<strong>' + data['pagingLinks'][i]['name'] + '</strong>&nbsp;';
209                                }
210                        }
211                        content += pagingLinks;
212
213                        var trClasses = new Array();
214                        trClasses[JobStatus.JOB_SUCCESS] = 'success';
215                        trClasses[JobStatus.JOB_FAIL] = 'fail';
216                        trClasses[JobStatus.FAIL] = 'fail';
217                        trClasses[JobStatus.ERROR] = 'error';
218                        trClasses[JobStatus.UNKNOWN] = 'unknown';
219
220                        content += '<table class="logList" id="logListTable">';
221                        var currentDate;
222                        var currentLog;
223                        for (var i = 0; i < data['logs'].length; i++)
224                        {
225                                currentLog = data['logs'][i];
226                                currentDate = currentLog['human_date_time'] ? currentLog['human_date_time'] : currentLog['date_time'];
227                                content += '<tr class="' + trClasses[parseInt(currentLog['status'])] + '">';
228                                content += '<td class="logListIcon">&nbsp;</td>'
229                                content += '<td class="logDate" title="' + currentLog['date_time'] + '"><center>' + currentDate.replace(/ /, '<br/>') + '</center></td>';
230                                content += '<td class="logResult">' + currentLog['result'] + '</td>';
231                                content += '</tr>';
232                        }
233                        content += '</table>';
234                }
235                else
236                {
237                        content += '<center>Este Job ainda não foi executado e, portanto, não possui entradas de log.</center><br/>';
238                }
239
240                content += '<br/><button onclick="Effect.BlindUp(\'logList\'); Effect.BlindDown(\'jobList\'); return false;">Voltar</button>';
241
242                $('logList').innerHTML = content;
243                if ($('jobList').visible())
244                        Effect.BlindUp('jobList');
245                Effect.BlindDown('logList');
246        }
247
248        if (!p_page)
249                p_page = 0;
250
251        if ($('logList').visible())
252        {
253                function recall()
254                {
255                        loadLogs(jobID, p_page);
256                }
257
258                new Effect.BlindUp($('logList'), {afterFinish: recall});
259                return;
260        }
261
262        cExecute('$this.bo_adminjobs.loadLogs', resultLoadLogs, 'jobID=' + jobID + '&p_page=' + p_page);
263}
264
265function toggleActive(jobID)
266{
267        function resultToggleActive(data)
268        {
269                if (!checkError(data))
270                {
271                        Effect.BlindUp('jobList', {
272                                        afterFinish: function()
273                                        {
274                                                resultLoadJobList(data);
275                                                Effect.BlindDown('jobList');
276                                        }
277                                });
278                }
279        }
280
281        cExecute('$this.bo_adminjobs.toggleActive', resultToggleActive, 'jobID=' + jobID + '&processID=' + $F('processID'));
282}
283
284function runJob(jobID)
285{
286        function resultRunJob(data)
287        {
288                if (checkError(data))
289                        return;
290                var content = '<h2>Job: ' + $('job_' + jobID).childNodes[1].firstChild.innerHTML + '</h2>';
291                if (data['output']['messages'])
292                {
293                        content += '<table class="jobResult">';
294                        content += '<tr><th>Mensagens</th></tr>';
295                        content += '<tr><td><pre>' + data['output']['messages'].join("\n\n") + '</pre></td></tr>';
296                        content += '</table><br/><br/>';
297                }
298
299                if (data['output']['default'])
300                {
301                        content += '<table class="jobResult">';
302                        content += '<tr><th>Saída Default</th></tr>';
303                        content += '<tr><td><pre>' + data['output']['default'] + '</pre></td></tr>';
304                        content += '</table><br/><br/>';
305                }
306
307                if (data['output']['error'])
308                {
309                        content += '<table class="jobResult">';
310                        content += '<tr><th>Saída de Erro</th></tr>';
311                        content += '<tr><td><pre>' + data['output']['error'] + '</pre></td></tr>';
312                        content += '</table><br/><br/>';
313                }
314
315                if (!data['output']['default'] && !data['output']['error'])
316                        content += '<i>Nenhuma saída foi produzida pelo job</i><br/><br/>';
317                content += '<button onclick="Effect.BlindUp(\'jobResult\'); Effect.BlindDown(\'jobList\'); return false;">Voltar</button>';
318
319                $('jobResult').innerHTML = content;
320                Effect.BlindUp('jobList');
321                Effect.BlindDown('jobResult');
322        }
323
324        cExecute('$this.bo_adminjobs.runJob', resultRunJob, 'jobID=' + jobID);
325}
Note: See TracBrowser for help on using the repository browser.