12 lines
2.0 KiB
JavaScript
12 lines
2.0 KiB
JavaScript
import {focusHref} from './purchasing-focus.mjs';
|
|
import {purchasingStatus} from './purchasing-presenter.mjs';
|
|
const root=document.querySelector('#purchasing-board'),stage=document.querySelector('#board-stage'),records=document.querySelector('#board-records'),status=document.querySelector('#board-status');let page=1,last=1,serial=0;
|
|
const definitions={requests:['request'],suppliers:['supplier'],sourcing:['request'],orders:['award'],receipts:['order'],invoices:['order'],obligations:['invoice']};
|
|
async function load(){const request=++serial,selected=stage.value;records.replaceChildren();status.textContent='A consultar os documentos autorizados…';try{
|
|
const response=await fetch('/api/purchasing-'+selected+'?page='+page,{headers:{Accept:'application/json','X-SGF-Context':root.dataset.context}}),data=await response.json();if(request!==serial)return;if(!response.ok)throw Error(data.message||'Não foi possível consultar esta etapa.');
|
|
const result=data.requests??data.suppliers??data;last=result.last_page;for(const row of result.data){const article=document.createElement('article'),link=document.createElement('a');link.href=focusHref(selected,{[definitions[selected][0]]:row.id});link.textContent=(row.number??row.name??'Adjudicação #'+row.id)+' · '+purchasingStatus(row.status);article.append(link);records.append(article);}
|
|
status.textContent=result.data.length?'Abra o documento para conferir a versão e as operações disponíveis.':'Ainda não existem documentos autorizados nesta etapa. Pode iniciar a etapa na ligação acima.';
|
|
document.querySelector('#board-page').textContent='Página '+page+' de '+last;document.querySelector('#board-previous').disabled=page<=1;document.querySelector('#board-next').disabled=page>=last;
|
|
}catch(e){if(request===serial)status.textContent=e.message;}}
|
|
stage.onchange=()=>{page=1;load();};document.querySelector('#board-refresh').onclick=load;document.querySelector('#board-previous').onclick=()=>{if(page>1){page--;load();}};document.querySelector('#board-next').onclick=()=>{if(page<last){page++;load();}};load();
|