1 | function 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 | |
---|
12 | function 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 | |
---|
33 | function 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 | |
---|
70 | function loadJobInfoAbsoluteDate(jobObject) |
---|
71 | { |
---|
72 | $('absoluteDateIntervalValue').value = jobObject['interval_value']; |
---|
73 | $('absoluteDateIntervalUnity').value = jobObject['interval_unity']; |
---|
74 | } |
---|
75 | |
---|
76 | function 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 | |
---|
85 | function loadJobInfoRelativeDate(jobObject) |
---|
86 | { |
---|
87 | $('relativeDateIntervalValue').value = jobObject['interval_value']; |
---|
88 | $('relativeDateMonthOffset').value = jobObject['month_offset']; |
---|
89 | } |
---|
90 | |
---|
91 | function 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 | |
---|
166 | function 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 | |
---|
178 | function newJob() |
---|
179 | { |
---|
180 | clearForm(); |
---|
181 | clickRepeatJob(); |
---|
182 | $('saving').hide(); |
---|
183 | $('actions').show(); |
---|
184 | Effect.BlindUp('jobList'); |
---|
185 | Effect.BlindDown('jobForm'); |
---|
186 | } |
---|
187 | |
---|
188 | function 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> '; |
---|
207 | else |
---|
208 | pagingLinks += '<strong>' + data['pagingLinks'][i]['name'] + '</strong> '; |
---|
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"> </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 | |
---|
265 | function 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 | |
---|
284 | function 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 | } |
---|