{% extends "base.html" %} {% block title %}IceProd{% end %} {% block page_title %}Tasks by Status{% end %} {% block body %} {% if (current_user) %} {% end %} {% for t in tasks %} {% if (current_user) %} {% end %} {% end %}
Job / Task Index Name Failures
{{ tasks[t]['job_index'] }} / {{ tasks[t]['task_index'] }} {{ tasks[t]['name'] }} {{ tasks[t]['failures'] }}{% if tasks[t]['status'] in states.task_prev_statuses(states.TASK_STATUS_START) %} {% end %} {% if tasks[t]['status'] in states.task_prev_statuses('suspended') %} {% end %}
{% end %} {% block body_scripts %} {% if (current_user) %} {% module SecureScript(content=f""" var rest_api = '{ rest_api }'; const passkey = "{ passkey }"; const dataset_id = "{ list(tasks.values())[0]['dataset_id'] if tasks else '' }"; const task_ids_on_page = [{ ','.join('"' + tasks[t]['task_id'] + '"' for t in tasks) }]; """) %} {% module SecureScript(content=""" function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function service_worker(action, task_ids) { try { const url = '/actions/task_status'; const args = { dataset_id: dataset_id, action: action, task_ids: task_ids, }; const ret = await fetch_json('POST', url, args, passkey); if ('error' in ret) { message_alert('error - '+ret['error']); return false; } const id = ret['result']; while (true) { await sleep(1000); const url = '/actions/task_status/'+id; const ret = await fetch_json('GET', url, null, passkey); if (ret['status'] == 'error') { if ('error_message' in ret) { message_alert('error - '+ret['error_message']); } else { message_alert('error - '+action+' failed'); } return false; } else if (ret['status'] == 'complete') { message('complete'); break; } else if ('payload' in ret && 'progress' in ret['payload']) { message('progress - '+ret['payload']['progress']+'%') } } } catch(err) { message_alert('error - '+err); return false; } reload(); return true; } async function task_reset(task_ids) { return await service_worker('reset', task_ids) } async function task_hard_reset(task_ids) { return await service_worker('hard_reset', task_ids) } async function task_suspend(task_ids) { return await service_worker('suspend', task_ids) } """) %} {% end %} {% end %}