99 lines
6.5 KiB
HTML
99 lines
6.5 KiB
HTML
{# Barre d'apps commune dracodev — Fusion ACC-1 (issue kanbante#28).
|
|
Snippet FIGÉ vendangé depuis Projets/dracodev-commons v0.1.4
|
|
(ui/barre-apps/) : ne pas modifier la structure ici ; toute évolution
|
|
passe par une nouvelle version de commons.
|
|
CSS/JS : /static/css/draco-barre.css, /static/js/draco-barre.js.
|
|
Inclus par _header.html (toutes les pages applicatives ; ni le
|
|
wallboard ni l'écran de connexion, volontaires). #}
|
|
<link rel="stylesheet" href="/static/css/draco-barre.css?v={{ version }}">
|
|
<script>document.body.classList.add('has-draco-bar');</script>
|
|
<header class="draco-bar" data-current="kanbante">
|
|
<div class="draco-bar-zone draco-bar-gauche">
|
|
<button type="button" class="draco-icon-btn" data-act="rail" aria-label="Barre latérale">☰</button>
|
|
<a class="draco-brand" href="/" data-act="apps" aria-haspopup="true" aria-expanded="false" aria-label="dracodev — changer d'application" title="Changer d'application">
|
|
<span class="draco-brand-mark">✦</span><span class="draco-brand-name">dracodev</span>
|
|
</a>
|
|
<nav class="draco-apptabs" aria-label="Applications">
|
|
<a class="draco-apptab" data-app="obsigate" href="https://og.dracodev.net/">
|
|
<span class="draco-apptab-ico" style="--app:#7a5af5">▤</span>
|
|
<span class="draco-apptab-txt"><strong>ObsiGate</strong><small>Notes</small></span>
|
|
</a>
|
|
<a class="draco-apptab" data-app="flowdeck" href="https://flowdeck.dracodev.net/">
|
|
<span class="draco-apptab-ico" style="--app:#2f6fed">▦</span>
|
|
<span class="draco-apptab-txt"><strong>Flowdeck</strong><small>Projets</small></span>
|
|
</a>
|
|
<a class="draco-apptab" data-app="tiktak" href="https://tiktak.dracodev.net/">
|
|
<span class="draco-apptab-ico" style="--app:#e8762c">✓</span>
|
|
<span class="draco-apptab-txt"><strong>TikTak</strong><small>Tâches</small></span>
|
|
<span class="draco-badge" data-badge="tiktak" hidden>0</span>
|
|
</a>
|
|
<a class="draco-apptab" data-app="kanbante" href="https://kanbante.dracodev.net/">
|
|
<span class="draco-apptab-ico" style="--app:#0d9488">▥</span>
|
|
<span class="draco-apptab-txt"><strong>Kanbante</strong><small>Kanban</small></span>
|
|
<span class="draco-badge" data-badge="kanbante" hidden>0</span>
|
|
</a>
|
|
</nav>
|
|
</div>
|
|
<div class="draco-bar-zone draco-bar-centre">
|
|
<button type="button" class="draco-search" data-act="palette" aria-label="Rechercher partout (Ctrl+K)">
|
|
<span class="draco-search-ico">⌕</span>
|
|
<span class="draco-search-txt">Rechercher partout…</span>
|
|
<kbd>⌘K</kbd>
|
|
</button>
|
|
</div>
|
|
<div class="draco-bar-zone draco-bar-droite">
|
|
<div class="draco-domaines" role="group" aria-label="Domaine">
|
|
<span class="draco-domaines-lbl">Domaine</span>
|
|
<button type="button" data-act="domaine" data-dom="pro">Pro</button>
|
|
<button type="button" data-act="domaine" data-dom="famille">Famille</button>
|
|
<button type="button" data-act="domaine" data-dom="perso">Perso</button>
|
|
</div>
|
|
<button type="button" class="draco-alertes" data-act="alertes" aria-label="Alertes unifiées">
|
|
<svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
|
|
<span class="draco-alertes-txt">Alertes</span>
|
|
<span class="draco-badge" data-badge="alertes" hidden>0</span>
|
|
</button>
|
|
<button type="button" class="draco-spark" data-act="spark" aria-label="Ouvrir Spark, l'agent commun">
|
|
<span class="draco-spark-ico">✦</span><span class="draco-spark-txt">Spark</span>
|
|
<span class="draco-badge" data-badge="spark" hidden>0</span>
|
|
</button>
|
|
<button type="button" class="draco-icon-btn" data-act="menu" aria-label="Plus d'actions" aria-haspopup="menu">•••</button>
|
|
<span class="draco-avatar" title="Opérateur Kanbante">{{ draco_avatar }}</span>
|
|
</div>
|
|
</header>
|
|
<div class="draco-bar-rappel" data-act="rappel-entete" hidden>✦ dracodev — afficher l'en-tête</div>
|
|
<script>
|
|
/* Configuration Kanbante de la barre commune (Fusion ACC-1).
|
|
Phase 1 : navigation entre apps et domaine mémorisé localement ;
|
|
le rail pilote le repli natif de la barre latérale, la palette
|
|
ouvre la recherche & commandes native (Ctrl+K) ; les alertes
|
|
unifiées, la recherche fédérée et Spark arrivent avec les
|
|
phases suivantes du programme Fusion. */
|
|
window.DRACO_BAR_CONFIG = {
|
|
current: "kanbante",
|
|
domain: (function () { try { return localStorage.getItem("draco_domain") || "pro"; } catch (e) { return "pro"; } })(),
|
|
counts: {},
|
|
onAction: function (act, el) {
|
|
var dire = function (m) {
|
|
var d = document.createElement("div");
|
|
d.textContent = m;
|
|
d.style.cssText = "position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:3000;background:#1f1f1f;color:#eee;padding:10px 16px;border-radius:10px;font:500 13.5px system-ui;box-shadow:0 6px 24px rgb(0 0 0/.35)";
|
|
document.body.appendChild(d);
|
|
setTimeout(function () { d.remove(); }, 3400);
|
|
};
|
|
if (act === "domaine") { try { localStorage.setItem("draco_domain", el.dataset.dom); } catch (e) { } return; }
|
|
if (act === "rail") { var b = document.getElementById("side-collapse"); if (b) b.click(); return; }
|
|
if (act === "palette") { var p = document.querySelector(".palette-trigger"); if (p) { p.click(); } else { dire("Recherche & commandes : Ctrl+K."); } return; }
|
|
if (act === "alertes") { dire("Alertes unifiées : arrive avec la fédération (programme Fusion)."); return; }
|
|
if (act === "menu") { dire("Menu commun : arrive avec la fédération (programme Fusion)."); return; }
|
|
if (act === "spark") { dire("Spark, l'agent commun : arrive en phase 4 du programme Fusion."); return; }
|
|
if (act === "rappel-entete") {
|
|
var bar = document.querySelector(".draco-bar");
|
|
if (bar) bar.style.display = "";
|
|
el.hidden = true;
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
<script defer src="/static/js/draco-barre.js?v={{ version }}"></script>
|