From c979d590410e7f112fbbc342cbb760c4beeaaae4 Mon Sep 17 00:00:00 2001 From: deploy Date: Tue, 13 Oct 2026 17:27:44 +0000 Subject: [PATCH] chore(tenants): conteudo de publico/ atualizado --- moldes/consolidado/96-publico-configmap.yaml | 75 +++++++++++++++++++ tenants/acme/96-publico-configmap.yaml | 75 +++++++++++++++++++ tenants/demo/96-publico-configmap.yaml | 75 +++++++++++++++++++ .../96-publico-configmap.yaml | 75 +++++++++++++++++++ .../96-publico-configmap.yaml | 75 +++++++++++++++++++ tenants/escolinha/96-publico-configmap.yaml | 75 +++++++++++++++++++ tenants/piloto/96-publico-configmap.yaml | 75 +++++++++++++++++++ tenants/plataforma/96-publico-configmap.yaml | 75 +++++++++++++++++++ tenants/teste5/96-publico-configmap.yaml | 75 +++++++++++++++++++ tenants/zico-0/96-publico-configmap.yaml | 75 +++++++++++++++++++ 10 files changed, 750 insertions(+) diff --git a/moldes/consolidado/96-publico-configmap.yaml b/moldes/consolidado/96-publico-configmap.yaml index 2e0e01b..f716df8 100644 --- a/moldes/consolidado/96-publico-configmap.yaml +++ b/moldes/consolidado/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data: + +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/acme/96-publico-configmap.yaml b/tenants/acme/96-publico-configmap.yaml index 6be6614..e2fc13c 100644 --- a/tenants/acme/96-publico-configmap.yaml +++ b/tenants/acme/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/demo/96-publico-configmap.yaml b/tenants/demo/96-publico-configmap.yaml index 93699c6..4f0a5d1 100644 --- a/tenants/demo/96-publico-configmap.yaml +++ b/tenants/demo/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/escolinha-de-teste-2/96-publico-configmap.yaml b/tenants/escolinha-de-teste-2/96-publico-configmap.yaml index df343f8..c93e85c 100644 --- a/tenants/escolinha-de-teste-2/96-publico-configmap.yaml +++ b/tenants/escolinha-de-teste-2/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/escolinha-de-teste/96-publico-configmap.yaml b/tenants/escolinha-de-teste/96-publico-configmap.yaml index a0fc7c2..6ed9651 100644 --- a/tenants/escolinha-de-teste/96-publico-configmap.yaml +++ b/tenants/escolinha-de-teste/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/escolinha/96-publico-configmap.yaml b/tenants/escolinha/96-publico-configmap.yaml index 70e2580..646868f 100644 --- a/tenants/escolinha/96-publico-configmap.yaml +++ b/tenants/escolinha/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/piloto/96-publico-configmap.yaml b/tenants/piloto/96-publico-configmap.yaml index 4221758..6b389ac 100644 --- a/tenants/piloto/96-publico-configmap.yaml +++ b/tenants/piloto/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/plataforma/96-publico-configmap.yaml b/tenants/plataforma/96-publico-configmap.yaml index 9716b68..4ba92cf 100644 --- a/tenants/plataforma/96-publico-configmap.yaml +++ b/tenants/plataforma/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/teste5/96-publico-configmap.yaml b/tenants/teste5/96-publico-configmap.yaml index 18aeafb..dc4f44f 100644 --- a/tenants/teste5/96-publico-configmap.yaml +++ b/tenants/teste5/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); }); diff --git a/tenants/zico-0/96-publico-configmap.yaml b/tenants/zico-0/96-publico-configmap.yaml index c90b276..4fdc1eb 100644 --- a/tenants/zico-0/96-publico-configmap.yaml +++ b/tenants/zico-0/96-publico-configmap.yaml @@ -5787,6 +5787,7 @@ data: + @@ -5941,6 +5942,25 @@ data:
+ +
+
+

Pedidos de titulares de dados

+

+ Pedidos feitos na página pública /excluir-conta (excluir conta e dados, acessar, corrigir). + A escola é a controladora: encaminhe o pedido a ela, marque Encaminhado e, quando a escola + responder ao titular, Concluído. Prazo para responder: 15 dias. Cada pedido também + chega por e-mail em suporte@athleticmap.com. +

+
+ + +
RecebidoPedidoQuemEscolaMensagemSituação
Abra esta aba para carregar.
+
+

+
+
+
@@ -6058,6 +6078,7 @@ data: var API_TERMO = "/api/plataforma/painel/termo-de-dados"; var API_CATALOGO = "/api/plataforma/painel/catalogo"; var API_TERMOS_DE_USO = "/api/plataforma/painel/termos-de-uso"; + var API_TITULARES = "/api/plataforma/painel/pedidos-do-titular"; var INTERVALO_SINO_MS = 60000; var OIDC = { @@ -7108,6 +7129,59 @@ data: + ""; } + /* ── pedidos de titulares de dados (LGPD) ─────────────────────────── */ + + var ROTULO_PEDIDO = { EXCLUSAO: "Excluir conta e dados", ACESSO: "Acessar dados", CORRECAO: "Corrigir dados", OUTRO: "Outro" }; + var SITUACOES_PEDIDO = [["RECEBIDO", "Recebido"], ["ENCAMINHADO", "Encaminhado à escola"], ["CONCLUIDO", "Concluído"]]; + + function linhaDoPedido(p) { + var opcoes = SITUACOES_PEDIDO.map(function (s) { + return '"; + }).join(""); + return '' + esc(ha(p.recebidoEm)) + "" + esc(ROTULO_PEDIDO[p.tipo] || p.tipo) + "" + esc(p.nome) + + '
' + esc(p.email) + "" + esc(p.escola || "—") + "" + + esc(p.mensagem || "—") + '"; + } + + function carregarTitulares() { + if (!cred) return Promise.resolve(); + var corpo = $("titularesLinhas"), erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES) + .then(function (r) { if (!r.ok) throw new Error("HTTP " + r.status); return r.json(); }) + .then(function (lista) { + corpo.innerHTML = (lista || []).map(linhaDoPedido).join("") + || 'Nenhum pedido até agora.'; + }) + .catch(function (e) { + corpo.innerHTML = 'Não consegui carregar: ' + esc(e.message) + ""; + }); + } + + function mudarSituacaoDoPedido(sel) { + var erro = $("titularesErro"); + erro.classList.add("oculto"); + return pedir(API_TITULARES + "/" + encodeURIComponent(sel.getAttribute("data-pedido")) + "/situacao", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ situacao: sel.value }) + }).then(function (r) { + if (!r.ok) throw new Error("HTTP " + r.status); + }).catch(function (e) { + erro.textContent = "Não consegui mudar a situação: " + e.message; + erro.classList.remove("oculto"); + return carregarTitulares(); + }); + } + + /* Delegado na tabela (e nao no document): o elemento morre com a pagina, o ouvinte do document ficaria. */ + if ($("titularesLinhas")) { + $("titularesLinhas").addEventListener("change", function (ev) { + var t = ev.target; + if (t && t.tagName === "SELECT" && t.hasAttribute("data-pedido")) mudarSituacaoDoPedido(t); + }); + } + function carregarTermosDeUso() { if (!cred) return Promise.resolve(); return pedir(API_TERMOS_DE_USO) @@ -7253,6 +7327,7 @@ data: }); if (b.getAttribute("data-aba") === "termo") carregarTermo(); if (b.getAttribute("data-aba") === "termosdeuso") carregarTermosDeUso(); + if (b.getAttribute("data-aba") === "titulares") carregarTitulares(); if (b.getAttribute("data-aba") === "catalogo") carregarCatalogo(); }); });