Fix Perspective viewer: pass table name in restore, simplify listener
- restore() must include table: tableName so viewer knows which table - Replace cloneNode listener reset with named _pspClickHandler pattern - Always inject table name into saved layouts on restore Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
5171b9770c
commit
4c71049bf0
@ -757,7 +757,7 @@ function buildDefaultLayout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function initPerspectiveViewer(data) {
|
async function initPerspectiveViewer(data) {
|
||||||
const viewer = document.getElementById('pivot-viewer');
|
const tableName = `pf_${state.version.id}`;
|
||||||
|
|
||||||
// terminate old worker if reloading
|
// terminate old worker if reloading
|
||||||
if (state.pspWorker) {
|
if (state.pspWorker) {
|
||||||
@ -770,28 +770,28 @@ async function initPerspectiveViewer(data) {
|
|||||||
const worker = await perspective.worker();
|
const worker = await perspective.worker();
|
||||||
state.pspWorker = worker;
|
state.pspWorker = worker;
|
||||||
|
|
||||||
const table = await worker.table(data, { name: `pf_${state.version.id}` });
|
const table = await worker.table(data, { name: tableName });
|
||||||
state.pspTable = table;
|
state.pspTable = table;
|
||||||
|
|
||||||
// remove old listener to avoid stacking on refresh
|
|
||||||
const fresh = viewer.cloneNode(false);
|
|
||||||
viewer.parentNode.replaceChild(fresh, viewer);
|
|
||||||
const v = document.getElementById('pivot-viewer');
|
const v = document.getElementById('pivot-viewer');
|
||||||
|
|
||||||
v.addEventListener('perspective-click', async (e) => {
|
// re-attach click listener (use named handler so it can be replaced on refresh)
|
||||||
|
v._pspClickHandler = async (e) => {
|
||||||
const detail = e.detail || {};
|
const detail = e.detail || {};
|
||||||
const eventFilters = (detail.config || {}).filter || [];
|
const eventFilters = (detail.config || {}).filter || [];
|
||||||
const config = await v.save();
|
extractSliceFromPerspective(eventFilters);
|
||||||
extractSliceFromPerspective(eventFilters, config);
|
};
|
||||||
});
|
v.removeEventListener('perspective-click', v._pspClickHandler);
|
||||||
|
v.addEventListener('perspective-click', v._pspClickHandler);
|
||||||
|
|
||||||
await v.load(worker);
|
await v.load(worker);
|
||||||
|
|
||||||
const saved = localStorage.getItem(pspLayoutKey());
|
const saved = localStorage.getItem(pspLayoutKey());
|
||||||
if (saved) {
|
if (saved) {
|
||||||
await v.restore(JSON.parse(saved));
|
const layout = JSON.parse(saved);
|
||||||
|
await v.restore({ ...layout, table: tableName });
|
||||||
} else {
|
} else {
|
||||||
await v.restore(buildDefaultLayout());
|
await v.restore({ ...buildDefaultLayout(), table: tableName });
|
||||||
}
|
}
|
||||||
|
|
||||||
// update reset button visibility
|
// update reset button visibility
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user