feat(projekt): Anheftungen per Drag & Drop zwischen Unterreitern verschieben
Pin-Zeilen in der Ordneransicht sind draggable, die Reiter sind Ablageziele.
Ein Drop schickt PATCH /api/projects/:id/pins/:pinId {tab_id}; movePin schreibt
project_pins.tab_id um. Verschoben wird nur die Referenz.
- Zielebene hat die Aufnahme schon: Quell-Pin loeschen statt an UNIQUE uniq_pin
scheitern (merged:true)
- Zielreiter serverseitig gegen den Ordner pruefen, sonst 404
- .ptab-n braucht pointer-events:none, sonst flackert die Ablagemarkierung
Verifiziert gegen die laufende App inkl. 404- und Merge-Faellen; Testdaten
zurueckgesetzt. Doku: Kapitel 10 + Changelog.
This commit is contained in:
@@ -541,6 +541,14 @@ app.post('/api/projects/:id/pins', wrap(async (req, res) => {
|
||||
await db.pinRecording(+req.params.id, +((req.body && req.body.tab_id) || 0), recId);
|
||||
res.json({ ok: true });
|
||||
}));
|
||||
// Drag&Drop in der Projektansicht: Pin auf eine andere Ebene desselben Ordners
|
||||
// ziehen. tab_id 0 = zurück auf die Ordner-Ebene.
|
||||
app.patch('/api/projects/:id/pins/:pinId', wrap(async (req, res) => {
|
||||
const tabId = +((req.body && req.body.tab_id) || 0);
|
||||
const r = await db.movePin(+req.params.pinId, +req.params.id, tabId);
|
||||
if (!r) return res.status(404).json({ error: 'Anheftung oder Zielreiter nicht gefunden' });
|
||||
res.json(r);
|
||||
}));
|
||||
app.delete('/api/projects/:id/pins/:pinId', wrap(async (req, res) => {
|
||||
await db.unpinRecording(+req.params.pinId);
|
||||
res.json({ ok: true });
|
||||
|
||||
Reference in New Issue
Block a user