From 0f3c06a300c1be0d9d2d1665c2dc7344221b3791 Mon Sep 17 00:00:00 2001 From: oltionchampari Date: Wed, 22 Apr 2020 13:22:45 +0200 Subject: [PATCH 1/3] Add LineUpCmds to an enum datavisyn/tdp_core#357 --- src/lineup/internal/cmds.ts | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/lineup/internal/cmds.ts b/src/lineup/internal/cmds.ts index 1f317e0a7..856ecb545 100644 --- a/src/lineup/internal/cmds.ts +++ b/src/lineup/internal/cmds.ts @@ -22,13 +22,16 @@ enum LineUpTrackAndUntrackActions { width = 'width', } -const CMD_SET_SORTING_CRITERIA = 'lineupSetRankingSortCriteria'; -const CMD_SET_SORTING_CRITERIAS = 'lineupSetSortCriteria'; -const CMD_SET_GROUP_CRITERIA = 'lineupSetGroupCriteria'; -const CMD_ADD_RANKING = 'lineupAddRanking'; -const CMD_SET_COLUMN = 'lineupSetColumn'; -const CMD_ADD_COLUMN = 'lineupAddColumn'; -const CMD_MOVE_COLUMN = 'lineupMoveColumn'; +// Actions that originate from LineUp +enum LineUpCmds { + CMD_SET_SORTING_CRITERIA = 'lineupSetRankingSortCriteria', + CMD_SET_SORTING_CRITERIAS = 'lineupSetSortCriteria', + CMD_SET_GROUP_CRITERIA = 'lineupSetGroupCriteria', + CMD_ADD_RANKING = 'lineupAddRanking', + CMD_SET_COLUMN = 'lineupSetColumn', + CMD_ADD_COLUMN = 'lineupAddColumn', + CMD_MOVE_COLUMN = 'lineupMoveColumn', +} //TODO better solution let ignoreNext: string = null; @@ -118,7 +121,7 @@ export async function addRankingImpl(inputs: IObjectRef[], parameter: any) } export function addRanking(provider: IObjectRef, index: number, dump?: any) { - return action(meta(dump ? i18n.t('tdp:core.lineup.cmds.addRanking') : i18n.t('tdp:core.lineup.cmds.removeRanking'), cat.layout, dump ? op.create : op.remove), CMD_ADD_RANKING, addRankingImpl, [provider], { + return action(meta(dump ? i18n.t('tdp:core.lineup.cmds.addRanking') : i18n.t('tdp:core.lineup.cmds.removeRanking'), cat.layout, dump ? op.create : op.remove), LineUpCmds.CMD_ADD_RANKING, addRankingImpl, [provider], { index, dump }); @@ -151,7 +154,7 @@ export async function setRankingSortCriteriaImpl(inputs: IObjectRef[], para export function setRankingSortCriteria(provider: IObjectRef, rid: number, value: any) { - return action(meta(i18n.t('tdp:core.lineup.cmds.changeSortCriteria'), cat.layout, op.update), CMD_SET_SORTING_CRITERIA, setRankingSortCriteriaImpl, [provider], { + return action(meta(i18n.t('tdp:core.lineup.cmds.changeSortCriteria'), cat.layout, op.update), LineUpCmds.CMD_SET_SORTING_CRITERIA, setRankingSortCriteriaImpl, [provider], { rid, value }); @@ -181,7 +184,7 @@ export async function setSortCriteriaImpl(inputs: IObjectRef[], parameter: export function setSortCriteria(provider: IObjectRef, rid: number, columns: {asc: boolean, col: string}[], isSorting = true) { - return action(meta(i18n.t('tdp:core.lineup.cmds.changeSortCriteria'), cat.layout, op.update), CMD_SET_SORTING_CRITERIAS, setSortCriteriaImpl, [provider], { + return action(meta(i18n.t('tdp:core.lineup.cmds.changeSortCriteria'), cat.layout, op.update), LineUpCmds.CMD_SET_SORTING_CRITERIAS, setSortCriteriaImpl, [provider], { rid, columns, isSorting @@ -203,7 +206,7 @@ export async function setGroupCriteriaImpl(inputs: IObjectRef[], parameter: } export function setGroupCriteria(provider: IObjectRef, rid: number, columns: string[]) { - return action(meta(i18n.t('tdp:core.lineup.cmds.changeGroupCriteria'), cat.layout, op.update), CMD_SET_GROUP_CRITERIA, setGroupCriteriaImpl, [provider], { + return action(meta(i18n.t('tdp:core.lineup.cmds.changeGroupCriteria'), cat.layout, op.update), LineUpCmds.CMD_SET_GROUP_CRITERIA, setGroupCriteriaImpl, [provider], { rid, columns }); @@ -264,7 +267,7 @@ export function setColumn(provider: IObjectRef, rid: number, path // assert ALineUpView and update the stats provider.value.getInstance().updateLineUpStats(); - return action(meta(i18n.t('tdp:core.lineup.cmds.setProperty', {prop}), cat.layout, op.update), CMD_SET_COLUMN, setColumnImpl, [provider], { + return action(meta(i18n.t('tdp:core.lineup.cmds.setProperty', {prop}), cat.layout, op.update), LineUpCmds.CMD_SET_COLUMN, setColumnImpl, [provider], { rid, path, prop, @@ -322,7 +325,7 @@ export async function moveColumnImpl(inputs: IObjectRef[], parame } export function addColumn(provider: IObjectRef, rid: number, path: string, index: number, dump: any) { - return action(meta(dump ? i18n.t('tdp:core.lineup.cmds.addColumn') : i18n.t('tdp:core.lineup.cmds.removeColumn'), cat.layout, dump ? op.create : op.remove), CMD_ADD_COLUMN, addColumnImpl, [provider], { + return action(meta(dump ? i18n.t('tdp:core.lineup.cmds.addColumn') : i18n.t('tdp:core.lineup.cmds.removeColumn'), cat.layout, dump ? op.create : op.remove), LineUpCmds.CMD_ADD_COLUMN, addColumnImpl, [provider], { rid, path, index, @@ -331,7 +334,7 @@ export function addColumn(provider: IObjectRef, rid: number, path } export function moveColumn(provider: IObjectRef, rid: number, path: string, index: number, moveTo: number) { - return action(meta(i18n.t('tdp:core.lineup.cmds.moveColumn'), cat.layout, op.update), CMD_MOVE_COLUMN, moveColumnImpl, [provider], { + return action(meta(i18n.t('tdp:core.lineup.cmds.moveColumn'), cat.layout, op.update), LineUpCmds.CMD_MOVE_COLUMN, moveColumnImpl, [provider], { rid, path, index, From d539399f8158d96d0d26aacf15fca2a369984021 Mon Sep 17 00:00:00 2001 From: oltionchampari Date: Wed, 22 Apr 2020 13:23:39 +0200 Subject: [PATCH 2/3] Close dialogs when a non LineUp action is executed datavisyn/tdp_core#357 --- src/lineup/internal/cmds.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lineup/internal/cmds.ts b/src/lineup/internal/cmds.ts index 856ecb545..47bd5b021 100644 --- a/src/lineup/internal/cmds.ts +++ b/src/lineup/internal/cmds.ts @@ -3,7 +3,7 @@ */ -import {IObjectRef, action, meta, cat, op, ProvenanceGraph, ICmdResult} from 'phovea_core/src/provenance'; +import {IObjectRef, action, meta, cat, op, ProvenanceGraph, ICmdResult, ActionNode} from 'phovea_core/src/provenance'; import {EngineRenderer, TaggleRenderer, ADialog, NumberColumn, LocalDataProvider, StackColumn, ScriptColumn, OrdinalColumn, CompositeColumn, Ranking, ISortCriteria, Column, isMapAbleColumn, mappingFunctions} from 'lineupjs'; import {resolveImmediately} from 'phovea_core/src'; import i18n from 'phovea_core/src/i18n'; @@ -622,7 +622,11 @@ function trackRanking(lineup: EngineRenderer | TaggleRenderer, provider: LocalDa lineup.ctx.dialogManager.removeAll(); }); - graph.on('execute', () => { + graph.on('execute', (_event, action: ActionNode) => { + if (Object.values(LineUpCmds).some((cmd) => action.f_id === cmd)) { // avoid closing dialogs when the action comes from LineUp + return; + } + lineup.ctx.dialogManager.removeAll(); }); From 4f410b7a0d1309d6f57bcf2672f9b97d53c75dc6 Mon Sep 17 00:00:00 2001 From: thinkh Date: Thu, 23 Apr 2020 12:20:37 +0200 Subject: [PATCH 3/3] Improve source code documentation --- src/lineup/internal/cmds.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lineup/internal/cmds.ts b/src/lineup/internal/cmds.ts index 47bd5b021..eac0b814c 100644 --- a/src/lineup/internal/cmds.ts +++ b/src/lineup/internal/cmds.ts @@ -622,11 +622,15 @@ function trackRanking(lineup: EngineRenderer | TaggleRenderer, provider: LocalDa lineup.ctx.dialogManager.removeAll(); }); + // Close dialogs also when executing new provenance actions graph.on('execute', (_event, action: ActionNode) => { - if (Object.values(LineUpCmds).some((cmd) => action.f_id === cmd)) { // avoid closing dialogs when the action comes from LineUp + // Dialogs do not need to be closed for LineUp actions, since the dialog events are handled + // separately for each ranking above (see EVENT_DIALOG_CLOSED and EVENT_DIALOG_OPENED). + if (Object.values(LineUpCmds).some((cmd) => action.f_id === cmd)) { return; } + // close open dialogs if a non-LineUp action occurs, to avoid side effects lineup.ctx.dialogManager.removeAll(); });