Fix logo refresh after upload
This commit is contained in:
parent
47ccfada04
commit
c8d808b26f
1 changed files with 19 additions and 4 deletions
|
|
@ -3361,8 +3361,15 @@ export function PeriodeRoosterPage() {
|
||||||
/* -------------------------------- Huisstijl / logo ------------------------ */
|
/* -------------------------------- Huisstijl / logo ------------------------ */
|
||||||
// Klein logo dat in elke roosterweergave en op afdrukken verschijnt.
|
// Klein logo dat in elke roosterweergave en op afdrukken verschijnt.
|
||||||
export function RoosterLogo({ print = false }) {
|
export function RoosterLogo({ print = false }) {
|
||||||
const [logo, setLogo] = useState(null);
|
const [huis, setHuis] = useState(null);
|
||||||
useEffect(() => { getHuisstijl().then((h) => setLogo(h && h.logo ? h.logo : null)).catch(() => {}); }, []);
|
useEffect(() => {
|
||||||
|
let actief = true;
|
||||||
|
getHuisstijl().then((h) => { if (actief) setHuis(h); }).catch(() => {});
|
||||||
|
const update = (e) => setHuis(e.detail || null);
|
||||||
|
window.addEventListener("roosterwijs:huisstijl", update);
|
||||||
|
return () => { actief = false; window.removeEventListener("roosterwijs:huisstijl", update); };
|
||||||
|
}, []);
|
||||||
|
const logo = logoUrl(huis);
|
||||||
if (!logo) return null;
|
if (!logo) return null;
|
||||||
return <img src={logo} alt="" className={print ? "rooster-logo print-logo" : "rooster-logo no-print"} />;
|
return <img src={logo} alt="" className={print ? "rooster-logo print-logo" : "rooster-logo no-print"} />;
|
||||||
}
|
}
|
||||||
|
|
@ -3382,6 +3389,13 @@ function _themaDirect(h) {
|
||||||
if (h && h.accent_kleur) root.style.setProperty("--accent", h.accent_kleur);
|
if (h && h.accent_kleur) root.style.setProperty("--accent", h.accent_kleur);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function logoUrl(huis) {
|
||||||
|
if (!huis || !huis.logo) return "";
|
||||||
|
const versie = huis.aangepast_op || "";
|
||||||
|
if (!versie) return huis.logo;
|
||||||
|
return `${huis.logo}${huis.logo.includes("?") ? "&" : "?"}v=${encodeURIComponent(versie)}`;
|
||||||
|
}
|
||||||
|
|
||||||
export function HuisstijlPage() {
|
export function HuisstijlPage() {
|
||||||
const [huis, setHuis] = useState(null);
|
const [huis, setHuis] = useState(null);
|
||||||
const [kwaliteit, setKwaliteit] = useState(null);
|
const [kwaliteit, setKwaliteit] = useState(null);
|
||||||
|
|
@ -3424,6 +3438,7 @@ export function HuisstijlPage() {
|
||||||
const r = await uploadLogo(f);
|
const r = await uploadLogo(f);
|
||||||
setHuis(r);
|
setHuis(r);
|
||||||
setKwaliteit(r.kwaliteit || null);
|
setKwaliteit(r.kwaliteit || null);
|
||||||
|
window.dispatchEvent(new CustomEvent("roosterwijs:huisstijl", { detail: r }));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err.message);
|
setError(err.message);
|
||||||
if (err.data && err.data.kwaliteit) setKwaliteit(err.data.kwaliteit);
|
if (err.data && err.data.kwaliteit) setKwaliteit(err.data.kwaliteit);
|
||||||
|
|
@ -3432,7 +3447,7 @@ export function HuisstijlPage() {
|
||||||
}
|
}
|
||||||
async function wis() {
|
async function wis() {
|
||||||
setBezig(true); setError(null);
|
setBezig(true); setError(null);
|
||||||
try { const r = await verwijderLogo(); setHuis(r); setKwaliteit(null); } catch (e) { setError(e.message); }
|
try { const r = await verwijderLogo(); setHuis(r); setKwaliteit(null); window.dispatchEvent(new CustomEvent("roosterwijs:huisstijl", { detail: r })); } catch (e) { setError(e.message); }
|
||||||
setBezig(false);
|
setBezig(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3457,7 +3472,7 @@ export function HuisstijlPage() {
|
||||||
<p className="muted small">Het logo verschijnt in elke roosterweergave en op afdrukken. Gebruik bij voorkeur een <b>transparante PNG</b> of <b>SVG</b>; een logo met een gevulde (witte) achtergrond valt op een gekleurde balk lelijk op.</p>
|
<p className="muted small">Het logo verschijnt in elke roosterweergave en op afdrukken. Gebruik bij voorkeur een <b>transparante PNG</b> of <b>SVG</b>; een logo met een gevulde (witte) achtergrond valt op een gekleurde balk lelijk op.</p>
|
||||||
<div className="logo-vak">
|
<div className="logo-vak">
|
||||||
<div className="logo-preview" title="Voorbeeld op een geruite achtergrond (zo zie je transparantie)">
|
<div className="logo-preview" title="Voorbeeld op een geruite achtergrond (zo zie je transparantie)">
|
||||||
{huis && huis.logo ? <img src={huis.logo} alt="Logo" /> : <span className="muted small">Nog geen logo</span>}
|
{huis && huis.logo ? <img src={logoUrl(huis)} alt="Logo" /> : <span className="muted small">Nog geen logo</span>}
|
||||||
</div>
|
</div>
|
||||||
<div className="logo-acties">
|
<div className="logo-acties">
|
||||||
<label className="btn primary">{bezig ? "Bezig…" : (huis && huis.logo ? "Ander logo kiezen" : "Logo kiezen")}
|
<label className="btn primary">{bezig ? "Bezig…" : (huis && huis.logo ? "Ander logo kiezen" : "Logo kiezen")}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue