+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '
";
+ });
+ }
+
+ 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.
+
+
+
Recebido
Pedido
Quem
Escola
Mensagem
Situaçã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("")
+ || '