Mercurial > hg > orthanc
comparison OrthancExplorer/explorer.js @ 2573:3372c5255333 jobs
StoreScuJob, Orthanc Explorer for jobs
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 09 May 2018 17:56:14 +0200 |
parents | a95beca72e99 |
children | b3da733d984c |
comparison
equal
deleted
inserted
replaced
2570:2e879c796ec7 | 2573:3372c5255333 |
---|---|
1102 | 1102 |
1103 target.listview('refresh'); | 1103 target.listview('refresh'); |
1104 } | 1104 } |
1105 }); | 1105 }); |
1106 }); | 1106 }); |
1107 | |
1108 | |
1109 | |
1110 function ParseJobTime(s) | |
1111 { | |
1112 var t = (s.substr(0, 4) + '-' + | |
1113 s.substr(4, 2) + '-' + | |
1114 s.substr(6, 5) + ':' + | |
1115 s.substr(11, 2) + ':' + | |
1116 s.substr(13)); | |
1117 var utc = new Date(t); | |
1118 | |
1119 // Convert from UTC to local time | |
1120 return new Date(utc.getTime() - utc.getTimezoneOffset() * 60000); | |
1121 } | |
1122 | |
1123 | |
1124 function AddJobField(target, description, field) | |
1125 { | |
1126 if (!(typeof field === 'undefined')) { | |
1127 target.append($('<p>') | |
1128 .text(description) | |
1129 .append($('<strong>').text(field))); | |
1130 } | |
1131 } | |
1132 | |
1133 | |
1134 function AddJobDateField(target, description, field) | |
1135 { | |
1136 if (!(typeof field === 'undefined')) { | |
1137 target.append($('<p>') | |
1138 .text(description) | |
1139 .append($('<strong>').text(ParseJobTime(field)))); | |
1140 } | |
1141 } | |
1142 | |
1143 | |
1144 $('#jobs').live('pagebeforeshow', function() { | |
1145 $.ajax({ | |
1146 url: '../jobs?expand', | |
1147 dataType: 'json', | |
1148 async: false, | |
1149 cache: false, | |
1150 success: function(jobs) { | |
1151 var target = $('#all-jobs'); | |
1152 $('li', target).remove(); | |
1153 | |
1154 jobs.map(function(job) { | |
1155 var li = $('<li>'); | |
1156 var item = $('<a>'); | |
1157 li.append(item); | |
1158 item.attr('href', '#job?uuid=' + job.ID); | |
1159 item.append($('<h1>').text(job.Type)); | |
1160 item.append($('<span>').addClass('ui-li-count').text(job.State)); | |
1161 AddJobField(item, 'ID: ', job.ID); | |
1162 AddJobField(item, 'Local AET: ', job.PublicContent.LocalAet); | |
1163 AddJobField(item, 'Remote AET: ', job.PublicContent.RemoteAet); | |
1164 AddJobDateField(item, 'Creation time: ', job.CreationTime); | |
1165 AddJobDateField(item, 'Completion time: ', job.CompletionTime); | |
1166 AddJobDateField(item, 'ETA: ', job.EstimatedTimeOfArrival); | |
1167 target.append(li); | |
1168 }); | |
1169 | |
1170 target.listview('refresh'); | |
1171 } | |
1172 }); | |
1173 }); | |
1174 | |
1175 | |
1176 $('#job').live('pagebeforeshow', function() { | |
1177 if ($.mobile.pageData) { | |
1178 var pageData = DeepCopy($.mobile.pageData); | |
1179 | |
1180 $.ajax({ | |
1181 url: '../jobs/' + pageData.uuid, | |
1182 dataType: 'json', | |
1183 async: false, | |
1184 cache: false, | |
1185 success: function(job) { | |
1186 var target = $('#job-info'); | |
1187 $('li', target).remove(); | |
1188 | |
1189 target.append($('<li>') | |
1190 .attr('data-role', 'list-divider') | |
1191 .text('General information about the job')); | |
1192 | |
1193 var block = $('<li>'); | |
1194 for (var i in job) { | |
1195 if (i == 'CreationTime' || | |
1196 i == 'CompletionTime' || | |
1197 i == 'EstimatedTimeOfArrival') { | |
1198 AddJobDateField(block, i + ': ', job[i]); | |
1199 } else if (i != 'InternalContent' && | |
1200 i != 'PublicContent' && | |
1201 i != 'Timestamp') { | |
1202 AddJobField(block, i + ': ', job[i]); | |
1203 } | |
1204 } | |
1205 | |
1206 target.append(block); | |
1207 | |
1208 target.append($('<li>') | |
1209 .attr('data-role', 'list-divider') | |
1210 .text('Detailed information')); | |
1211 | |
1212 var block = $('<li>'); | |
1213 for (var i in job.PublicContent) { | |
1214 AddJobField(block, i + ': ', JSON.stringify(job.PublicContent[i])); | |
1215 } | |
1216 | |
1217 target.append(block); | |
1218 | |
1219 target.listview('refresh'); | |
1220 | |
1221 $('#job-delete').closest('.ui-btn').show(); | |
1222 $('#job-retry').closest('.ui-btn').hide(); | |
1223 $('#job-resubmit').closest('.ui-btn').hide(); | |
1224 $('#job-pause').closest('.ui-btn').hide(); | |
1225 $('#job-resume').closest('.ui-btn').hide(); | |
1226 | |
1227 if (job.State == 'Running' || | |
1228 job.State == 'Pending' || | |
1229 job.State == 'Retry') { | |
1230 $('#job-pause').closest('.ui-btn').show(); | |
1231 } | |
1232 else if (job.State == 'Success') { | |
1233 } | |
1234 else if (job.State == 'Failure') { | |
1235 $('#job-resubmit').closest('.ui-btn').show(); | |
1236 } | |
1237 else if (job.State == 'Paused') { | |
1238 $('#job-resume').closest('.ui-btn').show(); | |
1239 } | |
1240 } | |
1241 }); | |
1242 } | |
1243 }); |