fix(workspace): compteurs de tags dynamiques + counts scoped par workspace
This commit is contained in:
@@ -1207,6 +1207,7 @@ window._wsInitData = (function() {
|
||||
this._updateNodeTags(this.tree, node.id, d.tag, 'add');
|
||||
this.displayTree = [...this.tree];
|
||||
this.tagsVersion++;
|
||||
this._bumpTagCount(d.tag, 1);
|
||||
await this.loadWorkspaceTags();
|
||||
this._computeFilteredTableItems();
|
||||
this._ctxRefreshAvail();
|
||||
@@ -2269,12 +2270,31 @@ window._wsInitData = (function() {
|
||||
// ── Tag management ──
|
||||
async loadWorkspaceTags() {
|
||||
try {
|
||||
var r = await fetch('/api/local-workspace/tags');
|
||||
var r = await fetch('/api/local-workspace/tags', { cache: 'no-store' });
|
||||
var d = await r.json();
|
||||
this.workspaceTags = d.tags || [];
|
||||
} catch(e) { this.workspaceTags = []; }
|
||||
},
|
||||
|
||||
// Mise à jour OPTIMISTE du compteur d'un tag dans la barre de tags :
|
||||
// rafraîchit immédiatement la pastille (delta +1/-1) sans attendre le
|
||||
// re-fetch (qui viendra ensuite confirmer/surécrire avec les valeurs serveur).
|
||||
_bumpTagCount(tag, delta) {
|
||||
if (!tag) return;
|
||||
var tags = (this.workspaceTags || []).slice();
|
||||
var i = -1;
|
||||
for (var k = 0; k < tags.length; k++) {
|
||||
if (String(tags[k].id) === String(tag.id)) { i = k; break; }
|
||||
}
|
||||
if (i >= 0) {
|
||||
tags[i] = Object.assign({}, tags[i], { count: Math.max(0, (tags[i].count || 0) + delta) });
|
||||
} else if (delta > 0) {
|
||||
tags.push({ id: tag.id, name: tag.name || '', color: tag.color || '#787774', count: delta });
|
||||
}
|
||||
// Réassigne un nouveau tableau → réactivité Alpine
|
||||
this.workspaceTags = tags;
|
||||
},
|
||||
|
||||
toggleTagFilter(tagName) {
|
||||
this.tagFilter = (this.tagFilter === tagName) ? '' : tagName;
|
||||
this.filterType = '';
|
||||
@@ -2306,6 +2326,7 @@ window._wsInitData = (function() {
|
||||
this._updateNodeTags(this.tree, itemId, d.tag, 'add');
|
||||
this.displayTree = [...this.tree];
|
||||
this.tagsVersion++;
|
||||
this._bumpTagCount(d.tag, 1);
|
||||
await this.loadWorkspaceTags();
|
||||
this._computeFilteredTableItems();
|
||||
}
|
||||
@@ -2322,6 +2343,7 @@ window._wsInitData = (function() {
|
||||
this._updateNodeTags(this.tree, itemId, null, 'remove', tagId);
|
||||
this.displayTree = [...this.tree];
|
||||
this.tagsVersion++;
|
||||
this._bumpTagCount({ id: tagId }, -1);
|
||||
await this.loadWorkspaceTags();
|
||||
this._computeFilteredTableItems();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user