fix: 6 getters → propriétés plain + _recompute() (étape 1)
Alpine 3.14.9 ne supporte pas les getters dans le Proxy x-data. Converti en propriétés mises à jour via _recompute() dans: - init() après chargement tree - _loadFolder() après chaque navigation - doSort() / doFilter() après modifs Getters remplacés: - pathValue, canGoBack, canGoForward, flatTree, filteredTableItems, contentSnippetMap - _computeFilteredTableItems() extrait de get filteredTableItems Zéro getter restant, braces/parens équilibrés, 73 tests OK
This commit is contained in:
@@ -944,9 +944,7 @@ window._wsInitData = (function() {
|
|||||||
uploadStartTime: 0,
|
uploadStartTime: 0,
|
||||||
|
|
||||||
// Path bar
|
// Path bar
|
||||||
get pathValue() {
|
pathValue: '/workspace/',
|
||||||
return '/workspace/' + this.folderStack.filter(function(b){return b.id > 0}).map(function(b){return b.name}).join('/');
|
|
||||||
},
|
|
||||||
|
|
||||||
async navigateToRoot() {
|
async navigateToRoot() {
|
||||||
this.folderStack = [];
|
this.folderStack = [];
|
||||||
@@ -986,8 +984,8 @@ window._wsInitData = (function() {
|
|||||||
// Navigation history
|
// Navigation history
|
||||||
navHistory: [],
|
navHistory: [],
|
||||||
navIndex: -1,
|
navIndex: -1,
|
||||||
get canGoBack() { return this.navIndex > 0; },
|
canGoBack: false,
|
||||||
get canGoForward() { return this.navIndex < this.folderStack.length - 1; },
|
canGoForward: false,
|
||||||
|
|
||||||
// Preview popup
|
// Preview popup
|
||||||
previewVisible: false,
|
previewVisible: false,
|
||||||
@@ -1034,6 +1032,20 @@ window._wsInitData = (function() {
|
|||||||
// Load workspace tags
|
// Load workspace tags
|
||||||
this.loadWorkspaceTags();
|
this.loadWorkspaceTags();
|
||||||
} catch(e) { console.error('Tree load error:', e); this.loaded = true; }
|
} catch(e) { console.error('Tree load error:', e); this.loaded = true; }
|
||||||
|
this._recompute();
|
||||||
|
},
|
||||||
|
|
||||||
|
_recompute() {
|
||||||
|
// Recompute all former getters as plain properties
|
||||||
|
this.canGoBack = this.navIndex > 0;
|
||||||
|
this.canGoForward = this.navIndex < this.folderStack.length - 1;
|
||||||
|
this.pathValue = '/workspace/' + this.folderStack.filter(function(b){return b.id > 0}).map(function(b){return b.name}).join('/');
|
||||||
|
// flatTree
|
||||||
|
var ft = [];
|
||||||
|
this._flattenTree(this.tree, ft);
|
||||||
|
this.flatTree = ft;
|
||||||
|
// filteredTableItems
|
||||||
|
this._computeFilteredTableItems();
|
||||||
},
|
},
|
||||||
|
|
||||||
// ── Pin/Favorite items ──
|
// ── Pin/Favorite items ──
|
||||||
@@ -1108,11 +1120,7 @@ window._wsInitData = (function() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// ── Table view data ──
|
// ── Table view data ──
|
||||||
get flatTree() {
|
flatTree: [],
|
||||||
var result = [];
|
|
||||||
this._flattenTree(this.tree, result);
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
_flattenTree(nodes, out) {
|
_flattenTree(nodes, out) {
|
||||||
for (var i=0; i<nodes.length; i++) {
|
for (var i=0; i<nodes.length; i++) {
|
||||||
out.push(nodes[i]);
|
out.push(nodes[i]);
|
||||||
@@ -1121,13 +1129,14 @@ window._wsInitData = (function() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// ── Filtered table items (for enhanced filter/search table) ──
|
// ── Filtered table items (for enhanced filter/search table) ──
|
||||||
get filteredTableItems() {
|
filteredTableItems: [],
|
||||||
|
_computeFilteredTableItems() {
|
||||||
var self = this;
|
var self = this;
|
||||||
var q = (this.searchQuery || '').toLowerCase().trim();
|
var q = (this.searchQuery || '').toLowerCase().trim();
|
||||||
var ft = this.filterType || '';
|
var ft = this.filterType || '';
|
||||||
var tf = this.tagFilter || '';
|
var tf = this.tagFilter || '';
|
||||||
// If no filter active, return empty (show regular views)
|
// If no filter active, return empty (show regular views)
|
||||||
if (!q && !ft && !tf) return [];
|
if (!q && !ft && !tf) { this.filteredTableItems = []; return; }
|
||||||
// Flatten entire tree
|
// Flatten entire tree
|
||||||
var all = [];
|
var all = [];
|
||||||
this._flattenTree(this.tree, all);
|
this._flattenTree(this.tree, all);
|
||||||
@@ -1136,7 +1145,7 @@ window._wsInitData = (function() {
|
|||||||
all[i]._path = self._getItemPath(all[i].id);
|
all[i]._path = self._getItemPath(all[i].id);
|
||||||
}
|
}
|
||||||
// Filter
|
// Filter
|
||||||
return all.filter(function(n) {
|
this.filteredTableItems = all.filter(function(n) {
|
||||||
var nameMatch = !q || (n.name || '').toLowerCase().indexOf(q) !== -1;
|
var nameMatch = !q || (n.name || '').toLowerCase().indexOf(q) !== -1;
|
||||||
var typeMatch = true;
|
var typeMatch = true;
|
||||||
if (ft) {
|
if (ft) {
|
||||||
@@ -1258,10 +1267,7 @@ window._wsInitData = (function() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// ── Content snippet for content view ──
|
// ── Content snippet for content view ──
|
||||||
get contentSnippetMap() {
|
contentSnippetMap: {},
|
||||||
// Preload snippets? Too expensive. Return empty, load on hover.
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
|
|
||||||
// ── Context menu ──
|
// ── Context menu ──
|
||||||
onContextMenu(ev) {
|
onContextMenu(ev) {
|
||||||
@@ -1522,6 +1528,7 @@ window._wsInitData = (function() {
|
|||||||
this.currentFolder = folderId || 0;
|
this.currentFolder = folderId || 0;
|
||||||
this._saveExpandedState();
|
this._saveExpandedState();
|
||||||
this.previewItem = null;
|
this.previewItem = null;
|
||||||
|
this._recompute();
|
||||||
} catch(e) { console.error('Load folder error:', e); }
|
} catch(e) { console.error('Load folder error:', e); }
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1643,6 +1650,7 @@ window._wsInitData = (function() {
|
|||||||
else if (s === 'date-desc') sorted.sort(function(a,b) { return (b.updated_at||'').localeCompare(a.updated_at||''); });
|
else if (s === 'date-desc') sorted.sort(function(a,b) { return (b.updated_at||'').localeCompare(a.updated_at||''); });
|
||||||
else if (s === 'type') sorted.sort(function(a,b) { return (a.is_folder===b.is_folder) ? 0 : a.is_folder ? -1 : 1; });
|
else if (s === 'type') sorted.sort(function(a,b) { return (a.is_folder===b.is_folder) ? 0 : a.is_folder ? -1 : 1; });
|
||||||
this.displayTree = sorted;
|
this.displayTree = sorted;
|
||||||
|
this._recompute();
|
||||||
},
|
},
|
||||||
|
|
||||||
// ── Undo delete ──
|
// ── Undo delete ──
|
||||||
@@ -1862,9 +1870,9 @@ window._wsInitData = (function() {
|
|||||||
doFilter() {
|
doFilter() {
|
||||||
var q = (this.searchQuery || '').toLowerCase().trim();
|
var q = (this.searchQuery || '').toLowerCase().trim();
|
||||||
var ft = this.filterType || '';
|
var ft = this.filterType || '';
|
||||||
if (!q && !ft && !this.tagFilter) { this.displayTree = [...this.tree]; return; }
|
if (!q && !ft && !this.tagFilter) { this.displayTree = [...this.tree]; this._computeFilteredTableItems(); return; }
|
||||||
// filteredTableItems is a computed getter — just trigger reactivity
|
|
||||||
this.displayTree = [...this.tree];
|
this.displayTree = [...this.tree];
|
||||||
|
this._computeFilteredTableItems();
|
||||||
},
|
},
|
||||||
filterByType(type) {
|
filterByType(type) {
|
||||||
this.filterType = (this.filterType === type) ? '' : type;
|
this.filterType = (this.filterType === type) ? '' : type;
|
||||||
|
|||||||
Reference in New Issue
Block a user