forked from FroSteel/Planification
Version 2026.5.28 — Ajustements visuels absences
- Retrait pastille .tech-name-dot, 'Maladie/Accident', popups 520px fixe [code interpolé]
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "Planification",
|
||||
"version": "2026.5.27",
|
||||
"version": "2026.5.28",
|
||||
"description": "Vue claire et rapide du planning des techniciens EasyVista. Regroupe interventions et réservations par tech, affiche horaires, contact, lieu, catégorie et statut en un coup d'œil.",
|
||||
"browser_specific_settings": {
|
||||
"gecko": {
|
||||
|
||||
+4
-3
@@ -2512,11 +2512,12 @@ header.topbar::before {
|
||||
|
||||
/* Breakpoint medium : entre 1000 et 1300px, on compacte un peu */
|
||||
@media (max-width: 1300px) {
|
||||
.app-clock-date { font-size: 11px; }
|
||||
.app-clock-time { font-size: 20px; }
|
||||
.app-clock-date { font-size: 18px; }
|
||||
.app-clock-time { font-size: 18px; }
|
||||
.app-clock-date::after { font-size: 20px; }
|
||||
.topbar-right .btn-action .btn-action-label,
|
||||
.topbar-right .btn-refresh .btn-refresh-label {
|
||||
font-size: 12px;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4855,8 +4855,22 @@ function buildCard(tech, isoDate) {
|
||||
showTooltip(e, ivCopy, card);
|
||||
});
|
||||
card.addEventListener("mouseleave", () => {
|
||||
if (_isHorizontalView()) return;
|
||||
hideTooltip();
|
||||
});
|
||||
// Hover sur le badge (Congé / Maladie/Accident / Absent) : actif
|
||||
// SEULEMENT en vue horizontale.
|
||||
const badgeEl = card.querySelector(".card-tech-badge");
|
||||
if (badgeEl) {
|
||||
badgeEl.addEventListener("mouseenter", (e) => {
|
||||
if (!_isHorizontalView()) return; // bloqué en classique
|
||||
showTooltip(e, ivCopy, badgeEl);
|
||||
});
|
||||
badgeEl.addEventListener("mouseleave", () => {
|
||||
if (!_isHorizontalView()) return;
|
||||
hideTooltip();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5102,19 +5116,42 @@ function getStatusClass(iv) {
|
||||
}
|
||||
|
||||
function bindTimelinePopover(el) {
|
||||
el.addEventListener("mouseenter", (e) => showTimelinePopover(e, el));
|
||||
// v2026.5.33 : en vue horizontale, les interactions sont différentes :
|
||||
// - hover : ouvre directement la GRANDE popup (pas la petite)
|
||||
// - clic : ouvre la fiche EasyVista dans un nouvel onglet
|
||||
// En vue classique, le comportement existant est conservé :
|
||||
// - hover : petite popup qui suit la souris
|
||||
// - clic simple : grande popup persistante
|
||||
// - double-clic : fiche EasyVista nouvel onglet
|
||||
// - Ctrl+clic : fiche EasyVista en arrière-plan
|
||||
const _isHorizontalView = () => document.documentElement.classList.contains("view-horizontal");
|
||||
|
||||
el.addEventListener("mouseenter", (e) => {
|
||||
if (_isHorizontalView()) {
|
||||
// Grande popup directement en vue horizontale
|
||||
if (el.dataset.ivIdx !== undefined) {
|
||||
openPersistentTimelinePopup(el);
|
||||
}
|
||||
} else {
|
||||
showTimelinePopover(e, el);
|
||||
}
|
||||
});
|
||||
// v4.2.3 : la petite popup timeline SUIT la souris (différent de la grande
|
||||
// popup des lignes d'intervention qui est ancrée). On n'utilise pas
|
||||
// moveTooltip() (no-op depuis v4.1.12) mais une fonction dédiée.
|
||||
el.addEventListener("mousemove", (e) => moveTimelineTooltip(e));
|
||||
el.addEventListener("mouseleave", hideTooltip);
|
||||
el.addEventListener("mousemove", (e) => {
|
||||
if (!_isHorizontalView()) {
|
||||
moveTimelineTooltip(e);
|
||||
}
|
||||
});
|
||||
el.addEventListener("mouseleave", () => {
|
||||
if (!_isHorizontalView()) {
|
||||
hideTooltip();
|
||||
}
|
||||
// En vue horizontale, la grande popup est persistante donc on ne ferme
|
||||
// pas au mouseleave (l'user peut interagir avec).
|
||||
});
|
||||
|
||||
// v4.2.3 : clic / double-clic / Ctrl+clic sur un segment timeline
|
||||
// - clic simple : ferme la petite popup et ouvre la GRANDE popup
|
||||
// (ancrée juste en dessous de la timeline, persistante pour permettre
|
||||
// de sélectionner du texte / copier)
|
||||
// - double-clic : ouvre la fiche EasyVista dans un nouvel onglet actif
|
||||
// - Ctrl+clic (Cmd+clic sur Mac) : ouvre dans un onglet en arrière-plan
|
||||
const kind = el.dataset.kind;
|
||||
const ivIdxStr = el.dataset.ivIdx;
|
||||
// Seulement sur les segments avec une interventoin (pas les "hole" libres
|
||||
@@ -5123,6 +5160,17 @@ function bindTimelinePopover(el) {
|
||||
|
||||
let singleClickTimer = null;
|
||||
el.addEventListener("click", (e) => {
|
||||
// v2026.5.33 : en vue horizontale, tout clic simple = ouvrir la fiche EV
|
||||
if (_isHorizontalView()) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
// Ctrl/Cmd/middle → arrière-plan, sinon nouvel onglet actif
|
||||
const background = !!(e.ctrlKey || e.metaKey || e.button === 1);
|
||||
openInterventionFromTimeline(el, { background });
|
||||
return;
|
||||
}
|
||||
|
||||
// Vue classique (inchangé) :
|
||||
// Ctrl / Cmd / molette → ouvrir fiche en arrière-plan
|
||||
if (e.ctrlKey || e.metaKey || e.button === 1) {
|
||||
e.preventDefault();
|
||||
@@ -5140,8 +5188,10 @@ function bindTimelinePopover(el) {
|
||||
}, 250);
|
||||
});
|
||||
el.addEventListener("dblclick", (e) => {
|
||||
// Annuler le clic simple en attente
|
||||
// En vue horizontale le clic simple fait déjà l'ouverture, le dblclick
|
||||
// devient inutile — on le laisse par sécurité (comportement idem).
|
||||
if (singleClickTimer) { clearTimeout(singleClickTimer); singleClickTimer = null; }
|
||||
if (_isHorizontalView()) return;
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
openInterventionFromTimeline(el, { background: false });
|
||||
|
||||
Reference in New Issue
Block a user