+
-
-
-
-
-
-
{{ cellJobsMenu.tech && cellJobsMenu.tech.name }} — {{ cellJobsMenu.day && cellJobsMenu.day.dnum }}
-
{{ cellJobsMenu.list.length }} job(s)
-
-
Aucun job assigné ce jour.
-
-
-
-
-
-
{{ i + 1 }}
-
-
-
{{ j.subject }}
-
{{ j.start || '—' }} · {{ j.dur }}h · {{ j.customer }} · {{ j.skill }}
-
-
-
-
- Flèches = ordre du tech · menu = priorité
-
-
-
-
@@ -986,25 +956,13 @@ function panelUp () { _panelDrag = null; document.removeEventListener('mousemove
// Réutilise les helpers de cellule (cellBands/cellBlocks/cellJobs/cellPct) → 0 nouvel appel réseau.
const timelineDlg = reactive({ open: false, tech: null })
function openTimeline (t) { timelineDlg.tech = t; timelineDlg.open = true }
-// ── Menu « jobs de la cellule » : détail + réordonner / re-prioriser (clic sur le progressbar) ──
-const cellJobsMenu = reactive({ show: false, target: null, tech: null, day: null, list: [], saving: false })
-function openCellJobs (t, d, ev) {
- cellJobsMenu.tech = t; cellJobsMenu.day = d
- cellJobsMenu.list = cellJobs(t.id, d.iso).map(j => ({ ...j })) // copie ordonnée (route_order → priorité → heure)
- cellJobsMenu.target = (ev && ev.currentTarget) || null
- cellJobsMenu.show = true
-}
-function moveCellJob (i, dir) { const l = cellJobsMenu.list; const j = i + dir; if (j < 0 || j >= l.length) return; const [x] = l.splice(i, 1); l.splice(j, 0, x) }
-async function saveCellOrder () {
- const updates = cellJobsMenu.list.map((j, i) => ({ job: j.name, route_order: i + 1, priority: j.priority }))
- cellJobsMenu.saving = true
- try { const r = await roster.reorderJobs(updates); cellJobsMenu.show = false; await loadWeek(); $q.notify({ type: 'positive', message: (r.updated || 0) + ' job(s) réordonné(s)', timeout: 2000 }) } catch (e) { err(e) } finally { cellJobsMenu.saving = false }
-}
-// Deep-link vers le tableau Dispatch focalisé sur la ressource + son 1er jour avec jobs (sinon début de semaine).
-function gotoDispatch (t) {
+// (Clic sur le progressbar → gotoDispatch : on ouvre le timeline ÉDITABLE du tableau Dispatch, drag-drop + suppression,
+// plutôt qu'un popup maison — réutilisation max + cohérence. Le réordonnancement/priorité se fait là-bas.)
+// Deep-link vers le tableau Dispatch focalisé sur la ressource + le jour cliqué (sinon 1er jour de la semaine).
+function gotoDispatch (t, dateIso) {
const q = {}
if (t) q.tech = t.id
- q.date = (timelineDays.value[0] && timelineDays.value[0].iso) || start.value
+ q.date = dateIso || (timelineDays.value[0] && timelineDays.value[0].iso) || start.value
router.push({ path: '/dispatch', query: q })
}
const timelineDays = computed(() => {