primeira versão do e-li-nps construido com IA
This commit is contained in:
commit
06950d6e2c
34 changed files with 2524 additions and 0 deletions
59
web/templates/justificativa_block.html
Normal file
59
web/templates/justificativa_block.html
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
{{define "justificativa_block.html"}}
|
||||
<p class="eli-nps-sub" style="margin-top:16px;">Quer nos contar o motivo?</p>
|
||||
|
||||
<form
|
||||
hx-patch="/api/e-li.nps/{{.Produto}}/{{.ID}}"
|
||||
hx-target="#eli-nps-modal-body"
|
||||
hx-swap="innerHTML"
|
||||
hx-ext="json-enc"
|
||||
>
|
||||
<textarea
|
||||
class="eli-nps-textarea"
|
||||
name="justificativa"
|
||||
id="eli-nps-justificativa"
|
||||
>{{if .Reg.Justificativa}}{{.Reg.Justificativa}}{{end}}</textarea>
|
||||
|
||||
<div class="eli-nps-actions">
|
||||
<button class="eli-nps-primary" type="button" onclick="window.__eliNpsSubmitJust('{{.Produto}}','{{.ID}}')">Enviar</button>
|
||||
<button class="eli-nps-secondary" type="button" onclick="window.__eliNpsFinalizar('{{.Produto}}','{{.ID}}')">Finalizar</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
// Funções auxiliares usadas pelo iframe.
|
||||
// Elas notificarão o widget pai (janela que contém o iframe) para fechar o modal.
|
||||
window.__eliNpsSubmitJust = async function(produto, id){
|
||||
const v = document.getElementById('eli-nps-justificativa')?.value || '';
|
||||
|
||||
// Regra do produto: ao clicar em "Enviar" após escolher a nota,
|
||||
// consideramos a resposta como finalizada e fechamos o modal.
|
||||
const res = await fetch(`/api/e-li.nps/${produto}/${id}`, {
|
||||
method: 'PATCH',
|
||||
headers: {'Content-Type':'application/json','HX-Request':'true'},
|
||||
body: JSON.stringify({justificativa: v, finalizar:true})
|
||||
});
|
||||
if(!res.ok){ return; }
|
||||
|
||||
// Close parent widget modal (iframe).
|
||||
try{ parent.postMessage({type:'eli-nps:done', id:id, produto:produto}, '*'); }catch(e){}
|
||||
}
|
||||
|
||||
window.__eliNpsFinalizar = async function(produto, id){
|
||||
const v = document.getElementById('eli-nps-justificativa')?.value || '';
|
||||
|
||||
const res = await fetch(`/api/e-li.nps/${produto}/${id}`, {
|
||||
method: 'PATCH',
|
||||
headers: {'Content-Type':'application/json','HX-Request':'true'},
|
||||
body: JSON.stringify({justificativa: v, finalizar:true})
|
||||
});
|
||||
if(!res.ok){ return; }
|
||||
|
||||
const html = await res.text();
|
||||
document.getElementById('eli-nps-modal-body').innerHTML = html;
|
||||
|
||||
// notify parent widget to close
|
||||
try{ parent.postMessage({type:'eli-nps:done', id:id, produto:produto}, '*'); }catch(e){}
|
||||
}
|
||||
</script>
|
||||
{{end}}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue