diff --git a/src/main/webapp/cliente/assembleias.html b/src/main/webapp/cliente/assembleias.html new file mode 100644 index 0000000..8daaa27 --- /dev/null +++ b/src/main/webapp/cliente/assembleias.html @@ -0,0 +1 @@ +Assembleia

Assembleia

Todas as assembleias

CondominioTipoDataLocalStatusNotificados
diff --git a/src/main/webapp/cliente/assembleias.js b/src/main/webapp/cliente/assembleias.js new file mode 100644 index 0000000..0844a1b --- /dev/null +++ b/src/main/webapp/cliente/assembleias.js @@ -0,0 +1,30 @@ +const rows=document.querySelector('#rows'); +let assembleias=[]; + +function esc(v){return String(v??'').replace(/[&<>'"]/g,c=>({'&':'&','<':'<','>':'>',"'":''','"':'"'}[c]))} +function termo(){return document.querySelector('#assembleia-search-input')?.value.trim().toLowerCase()||''} +function contem(q,...vals){return !q||vals.some(v=>String(v??'').toLowerCase().includes(q))} +function destinatariosLabel(a){return (a.destinatarios||[]).map(x=>x.nome+' ('+x.tipo+')').join(', ')||'-'} + +function renderAssembleias(){ + const q=termo(); + const lista=assembleias.filter(a=>contem(q,a.condominio_nome,a.tipo,a.data_hora,a.local,a.status,destinatariosLabel(a))); + rows.innerHTML=lista.map(a=>`${esc(a.condominio_nome||'-')}${esc(a.tipo)}${Util.date(a.data_hora)}${esc(a.local||'')}${Util.badge(a.status)}${esc(destinatariosLabel(a))}Abrir`).join('')||'Nenhuma assembleia encontrada.'; +} + +async function load(){ + try{ + const d=await Api.get('/api/assembleias-calendario'); + assembleias=d.assembleias||[]; + renderAssembleias(); + }catch(e){Util.toast(e.message,true)} +} + +window.alternarBuscaAssembleias=()=>{ + const strip=document.querySelector('#assembleia-search'),input=document.querySelector('#assembleia-search-input'); + strip.classList.toggle('hidden'); + if(!strip.classList.contains('hidden'))input.focus(); +}; + +document.querySelector('#assembleia-search-input')?.addEventListener('input',renderAssembleias); +load(); diff --git a/src/main/webapp/js/layout.js b/src/main/webapp/js/layout.js index f5dd7c7..ef732e8 100644 --- a/src/main/webapp/js/layout.js +++ b/src/main/webapp/js/layout.js @@ -1 +1 @@ -window.Layout={mount(scope,active){Auth.require(scope);const label=localStorage.getItem('auth_label')||(scope==='master'?'Master':'Escritório');const master=[['Clientes','/master/clientes.html','clientes'],['Planos','/master/planos.html','planos'],['Financeiro','/master/financeiro.html','financeiro'],['Configurações','/master/configuracoes.html','configuracoes'],['Backup','/master/backup.html','backup']];let cliente=[['Cadastro','/cliente/condominios.html','condominios'],['Lembretes','/cliente/lembretes.html','lembretes'],['Financeiro','/cliente/financeiro.html','financeiro'],['WhatsApp','/cliente/configuracoes.html','configuracoes']];if(scope==='empresa'&&!Auth.isAdminEmpresa())cliente=cliente.filter(x=>x[2]!=='configuracoes');const menu=(scope==='master'?master:cliente).map(([n,h,k])=>`${n}`).join('');document.body.insertAdjacentHTML('afterbegin',``);document.body.classList.add('app');document.querySelector('main')?.classList.add('content')}}; +window.Layout={mount(scope,active){Auth.require(scope);const label=localStorage.getItem('auth_label')||(scope==='master'?'Master':'Escritório');const master=[['Clientes','/master/clientes.html','clientes'],['Planos','/master/planos.html','planos'],['Financeiro','/master/financeiro.html','financeiro'],['Configurações','/master/configuracoes.html','configuracoes'],['Backup','/master/backup.html','backup']];let cliente=[['Cadastro','/cliente/condominios.html','condominios'],['Lembretes','/cliente/lembretes.html','lembretes'],['Assembleia','/cliente/assembleias.html','assembleias'],['Financeiro','/cliente/financeiro.html','financeiro'],['WhatsApp','/cliente/configuracoes.html','configuracoes']];if(scope==='empresa'&&!Auth.isAdminEmpresa())cliente=cliente.filter(x=>x[2]!=='configuracoes');const menu=(scope==='master'?master:cliente).map(([n,h,k])=>`${n}`).join('');document.body.insertAdjacentHTML('afterbegin',``);document.body.classList.add('app');document.querySelector('main')?.classList.add('content')}};