[795] | 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 | } |
---|