diff --git a/public/index.html b/public/index.html index 555e4dc..a315813 100644 --- a/public/index.html +++ b/public/index.html @@ -1241,10 +1241,14 @@ async function loadAmppJobs() { } jobs.forEach(job => { const el=document.createElement('div'); el.className='job-item'; - const st=(job.status||job.state||job.jobStatus||'unknown').toLowerCase(); - const cls=st.includes('run')||st.includes('active')?'running':st.includes('complet')||st.includes('success')||st.includes('done')?'completed':st.includes('fail')||st.includes('error')?'failed':st.includes('queue')||st.includes('wait')||st.includes('pend')?'queued':'unknown'; - const name=job.name||job.displayName||job.id||'Job'; - const meta=[job.created?new Date(job.created).toLocaleString():'', job.type||job.jobType||''].filter(Boolean).join(' · '); + // AMPP API uses colon-namespaced keys e.g. "state:jobState", "name:text", "job:id" + const st=(job['state:jobState']||job.status||job.state||job.jobStatus||'unknown').toLowerCase(); + const cls=st.includes('run')||st.includes('active')?'running':st.includes('complet')||st.includes('success')||st.includes('done')?'completed':st.includes('fail')||st.includes('error')||st.includes('abort')?'failed':st.includes('queue')||st.includes('wait')||st.includes('pend')?'queued':'unknown'; + const name=job['name:text']||job['assetName:text']||job.name||job.displayName||job['job:id']||job.id||'Job'; + const jobType=(job['type:jobType']||job['subtype:jobSubtype']||job.type||job.jobType||'').replace(/([A-Z])/g,' $1').trim(); + const creator=job['creator:id']||''; + const created=job['created:dateTime']||job.created||''; + const meta=[created?new Date(created).toLocaleString():'', jobType, creator].filter(Boolean).join(' · '); el.innerHTML=`
${esc(name)}
${esc(meta)}
${cls.charAt(0).toUpperCase()+cls.slice(1)}`; list.appendChild(el); });