From 25d8fcb03dfc4f9a0088e369c65ae2a3f5ca7316 Mon Sep 17 00:00:00 2001 From: MiccWan Date: Mon, 2 May 2022 17:28:51 +0800 Subject: [PATCH] temp: classify actions into three types --- dbux-code/package.json | 12 +- .../src/commands/dataFlowViewCommands.js | 8 +- .../commands/globalAnalysisViewCommands.js | 4 +- dbux-code/src/commands/userCommands.js | 4 +- dbux-code/src/practice/codeEvents.js | 41 +++--- .../traceDetailsView/nodes/AsyncTDNodes.js | 8 +- .../nodes/ExecutionsTDNodes.js | 4 +- .../src/traceDetailsView/nodes/ObjectNode.js | 4 +- .../traceDetailsController.js | 5 +- dbux-code/src/userEvents.js | 121 +++++++++--------- .../src/workshop/PathwaysDataContainer.js | 5 + dbux-data/src/pathways/UserAction.js | 32 +++-- dbux-projects/src/dataLib/pathwaysDataUtil.js | 14 +- 13 files changed, 137 insertions(+), 125 deletions(-) diff --git a/dbux-code/package.json b/dbux-code/package.json index c289917e9..fd8f19c46 100644 --- a/dbux-code/package.json +++ b/dbux-code/package.json @@ -482,7 +482,7 @@ } }, { - "command": "dbuxDataFlowView.setSearchMode.ByAccessId", + "command": "dbuxDataFlowView.nextSearchMode.ByAccessId", "title": "Search by: accessId", "icon": { "light": "resources/light/variable.svg", @@ -490,7 +490,7 @@ } }, { - "command": "dbuxDataFlowView.setSearchMode.ByValueId", + "command": "dbuxDataFlowView.nextSearchMode.ByValueId", "title": "Search by: valueId", "icon": { "light": "resources/light/brackets.svg", @@ -972,12 +972,12 @@ "group": "navigation@20" }, { - "command": "dbuxDataFlowView.setSearchMode.ByAccessId", + "command": "dbuxDataFlowView.nextSearchMode.ByAccessId", "when": "view == dbuxDataFlowView && dbuxDataFlowView.context.searchModeName == ByAccessId", "group": "navigation@1" }, { - "command": "dbuxDataFlowView.setSearchMode.ByValueId", + "command": "dbuxDataFlowView.nextSearchMode.ByValueId", "when": "view == dbuxDataFlowView && dbuxDataFlowView.context.searchModeName == ByValueId", "group": "navigation@1" }, @@ -1328,11 +1328,11 @@ "when": "false" }, { - "command": "dbuxDataFlowView.setSearchMode.ByAccessId", + "command": "dbuxDataFlowView.nextSearchMode.ByAccessId", "when": "false" }, { - "command": "dbuxDataFlowView.setSearchMode.ByValueId", + "command": "dbuxDataFlowView.nextSearchMode.ByValueId", "when": "false" }, { diff --git a/dbux-code/src/commands/dataFlowViewCommands.js b/dbux-code/src/commands/dataFlowViewCommands.js index 3a7229864..976dab4d5 100644 --- a/dbux-code/src/commands/dataFlowViewCommands.js +++ b/dbux-code/src/commands/dataFlowViewCommands.js @@ -10,18 +10,18 @@ import { registerCommand } from './commandUtil'; */ export function initDataFlowViewCommands(context, dataFlowViewController) { registerCommand(context, - 'dbuxDataFlowView.setSearchMode.ByAccessId', + 'dbuxDataFlowView.nextSearchMode.ByAccessId', (/* node */) => { dataFlowViewController.setSearchMode(DataFlowSearchModeType.nextValue(DataFlowSearchModeType.ByAccessId)); - emitDataFlowViewSearchModeChangedAction(DataFlowSearchModeType.ByAccessId); + emitDataFlowViewSearchModeChangedAction(dataFlowViewController.searchMode); } ); registerCommand(context, - 'dbuxDataFlowView.setSearchMode.ByValueId', + 'dbuxDataFlowView.nextSearchMode.ByValueId', (/* node */) => { dataFlowViewController.setSearchMode(DataFlowSearchModeType.nextValue(DataFlowSearchModeType.ByValueId)); - emitDataFlowViewSearchModeChangedAction(DataFlowSearchModeType.ByValueId); + emitDataFlowViewSearchModeChangedAction(dataFlowViewController.searchMode); } ); diff --git a/dbux-code/src/commands/globalAnalysisViewCommands.js b/dbux-code/src/commands/globalAnalysisViewCommands.js index f4b71d7df..28ae709fd 100644 --- a/dbux-code/src/commands/globalAnalysisViewCommands.js +++ b/dbux-code/src/commands/globalAnalysisViewCommands.js @@ -1,7 +1,7 @@ import { nextMode } from '../globalAnalysisView/nodes/GlobalModulesNode'; import { showInformationMessage } from '../codeUtil/codeModals'; import searchController from '../search/searchController'; -import { emitShowErrorAction } from '../userEvents'; +import { emitTraceUserAction } from '../userEvents'; import { registerCommand } from './commandUtil'; /** @typedef {import('../globalAnalysisView/GlobalAnalysisViewController').default} GlobalAnalysisViewController */ @@ -15,7 +15,7 @@ export function initGlobalAnalysisViewCommands(context, globalAnalysisViewContro async () => { const selectedNode = await globalAnalysisViewController.showError(); if (selectedNode) { - emitShowErrorAction(selectedNode.trace); + emitTraceUserAction(selectedNode.trace); } } ); diff --git a/dbux-code/src/commands/userCommands.js b/dbux-code/src/commands/userCommands.js index 165b27072..b11e3e677 100644 --- a/dbux-code/src/commands/userCommands.js +++ b/dbux-code/src/commands/userCommands.js @@ -30,7 +30,7 @@ import { translate } from '../lang'; import { getDefaultExportDirectory, getLogsDirectory } from '../codeUtil/codePath'; import { runTaskWithProgressBar } from '../codeUtil/runTaskWithProgressBar'; import searchController from '../search/searchController'; -import { emitSelectTraceAction, emitShowOutputChannelAction } from '../userEvents'; +import { emitTraceUserAction, emitShowOutputChannelAction } from '../userEvents'; import { runFile } from './runCommands'; // eslint-disable-next-line no-unused-vars @@ -218,7 +218,7 @@ export function initUserCommands(extensionContext) { } else { traceSelection.selectTrace(trace); - emitSelectTraceAction(trace, UserActionType.SelectTraceById, { userInput }); + emitTraceUserAction(UserActionType.SelectTraceById, trace, { userInput }); } } diff --git a/dbux-code/src/practice/codeEvents.js b/dbux-code/src/practice/codeEvents.js index a614d277f..ebc8513d9 100644 --- a/dbux-code/src/practice/codeEvents.js +++ b/dbux-code/src/practice/codeEvents.js @@ -1,10 +1,10 @@ import { commands, SymbolKind, window } from 'vscode'; -import allApplications from '@dbux/data/src/applications/allApplications'; +// import allApplications from '@dbux/data/src/applications/allApplications'; import UserActionType from '@dbux/data/src/pathways/UserActionType'; import { newLogger } from '@dbux/common/src/log/logger'; import { emitEditorAction } from '../userEvents'; -import { getOrCreateTracesAtCursor } from '../codeUtil/TracesAtCursor'; +// import { getOrCreateTracesAtCursor } from '../codeUtil/TracesAtCursor'; import { codeRangeToBabelLoc } from '../helpers/codeLocHelpers'; /** @typedef {import('@dbux/projects/src/ProjectsManager').default} ProjectsManager */ @@ -21,7 +21,7 @@ const defaultNewEventLineThreshold = 8; * @param {ProjectsManager} manager */ export function initCodeEvents(manager, context) { - const traceAtCursor = getOrCreateTracesAtCursor(context); + // const traceAtCursor = getOrCreateTracesAtCursor(context); let _previousSelectionData, _previousVisibleRangeData; window.onDidChangeTextEditorSelection(async (e) => { @@ -37,7 +37,6 @@ export function initCodeEvents(manager, context) { return; } - // TODO?: take only first selection only. Do we need all selections? Can there be no selections? const firstSelection = e.selections[0]; let data = { file: e.textEditor.document.uri.fsPath, @@ -83,26 +82,26 @@ export function initCodeEvents(manager, context) { // ########################################################################### async function getExtraEditorEventInfo(editor) { - const trace = traceAtCursor.getMostInner(); - let staticTrace = null; - let staticContext = null; - let applicationId = null; - if (trace) { - const { staticTraceId } = trace; - ({ applicationId } = trace); - const dp = allApplications.getById(applicationId).dataProvider; - staticTrace = dp.collections.staticTraces.getById(staticTraceId); - staticContext = dp.collections.staticContexts.getById(staticTrace.staticContextId); - } + // const trace = traceAtCursor.getMostInner(); + // let staticTrace = null; + // let staticContext = null; + // let applicationId = null; + // if (trace) { + // const { staticTraceId } = trace; + // ({ applicationId } = trace); + // const dp = allApplications.getById(applicationId).dataProvider; + // staticTrace = dp.collections.staticTraces.getById(staticTraceId); + // staticContext = dp.collections.staticContexts.getById(staticTrace.staticContextId); + // } const symbol = await getSymbolAt(editor.document.uri, editor.selections[0]?.start); - const { sessionId } = manager.practiceSession; + // const { sessionId } = manager.practiceSession; return { - applicationId, - staticContext, - staticTrace, + // applicationId, + // staticContext, + // staticTrace, symbol: convertVSCodeSymbol(symbol), - sessionId + // sessionId }; } } @@ -115,7 +114,7 @@ function convertVSCodeSymbol(symbol) { if (symbol) { return { name: symbol.name, - range: codeRangeToBabelLoc(symbol.range) + loc: codeRangeToBabelLoc(symbol.range) }; } else { diff --git a/dbux-code/src/traceDetailsView/nodes/AsyncTDNodes.js b/dbux-code/src/traceDetailsView/nodes/AsyncTDNodes.js index 6f865bd31..9f067f9bd 100644 --- a/dbux-code/src/traceDetailsView/nodes/AsyncTDNodes.js +++ b/dbux-code/src/traceDetailsView/nodes/AsyncTDNodes.js @@ -8,10 +8,10 @@ import PromiseLink from '@dbux/common/src/types/PromiseLink'; import PromiseLinkType from '@dbux/common/src/types/constants/PromiseLinkType'; import EmptyObject from '@dbux/common/src/util/EmptyObject'; import { showInformationMessage } from '../../codeUtil/codeModals'; -import makeTreeItem, { makeTreeItems } from '../../helpers/makeTreeItem'; +import makeTreeItem from '../../helpers/makeTreeItem'; import TraceDetailNode from './TraceDetailNode'; import { makeArrayLengthLabel } from '../../helpers/treeViewUtil'; -import { emitSelectTraceAction } from '../../userEvents'; +import { emitTraceUserAction } from '../../userEvents'; /** @typedef {import('@dbux/common/src/types/Trace').default} Trace */ @@ -110,7 +110,7 @@ class RootEdgesTDNode extends TraceDetailNode { const trace = dp.util.getTraceOfAsyncNode(forkParent.asyncNodeId); if (trace) { traceSelection.selectTrace(trace); - emitSelectTraceAction(trace, UserActionType.TDAsyncGoToForkParent); + emitTraceUserAction(UserActionType.TDAsyncGoToForkParent, trace); return; } } @@ -123,7 +123,7 @@ class RootEdgesTDNode extends TraceDetailNode { const schedulerTrace = this.dp.collections.traces.getById(schedulerTraceId); if (schedulerTrace) { traceSelection.selectTrace(schedulerTrace); - emitSelectTraceAction(schedulerTrace, UserActionType.TDAsyncGoToScheduler); + emitTraceUserAction(UserActionType.TDAsyncGoToScheduler, schedulerTrace); return; } } diff --git a/dbux-code/src/traceDetailsView/nodes/ExecutionsTDNodes.js b/dbux-code/src/traceDetailsView/nodes/ExecutionsTDNodes.js index cc7caa80f..75b92fbb7 100644 --- a/dbux-code/src/traceDetailsView/nodes/ExecutionsTDNodes.js +++ b/dbux-code/src/traceDetailsView/nodes/ExecutionsTDNodes.js @@ -2,7 +2,7 @@ import { makeTraceValueLabel } from '@dbux/data/src/helpers/makeLabels'; import UserActionType from '@dbux/data/src/pathways/UserActionType'; import allApplications from '@dbux/data/src/applications/allApplications'; import EmptyArray from '@dbux/common/src/util/EmptyArray'; -import { emitSelectTraceAction } from '../../userEvents'; +import { emitTraceUserAction } from '../../userEvents'; import TraceNode from '../../codeUtil/treeView/TraceNode'; import TraceContainerNode, { UngroupedNode } from '../../codeUtil/treeView/TraceContainerNode'; @@ -23,7 +23,7 @@ class ExecutionNode extends TraceNode { handleClick() { super.handleClick(); - emitSelectTraceAction(this.trace, UserActionType.TDExecutionsTraceUse); + emitTraceUserAction(UserActionType.TDExecutionsTraceUse, this.trace); } } diff --git a/dbux-code/src/traceDetailsView/nodes/ObjectNode.js b/dbux-code/src/traceDetailsView/nodes/ObjectNode.js index 46e9afcb3..6c16612cc 100644 --- a/dbux-code/src/traceDetailsView/nodes/ObjectNode.js +++ b/dbux-code/src/traceDetailsView/nodes/ObjectNode.js @@ -1,7 +1,7 @@ import allApplications from '@dbux/data/src/applications/allApplications'; import UserActionType from '@dbux/data/src/pathways/UserActionType'; import traceSelection from '@dbux/data/src/traceSelection'; -import { emitSelectTraceAction } from '../../userEvents'; +import { emitTraceUserAction } from '../../userEvents'; import TraceNode from '../../codeUtil/treeView/TraceNode'; export default class ObjectNode extends TraceNode { @@ -18,6 +18,6 @@ export default class ObjectNode extends TraceNode { handleClick() { super.handleClick(); - emitSelectTraceAction(this.trace, UserActionType.TDTrackObjectTraceUse); + emitTraceUserAction(UserActionType.TDTrackObjectTraceUse, this.trace); } } \ No newline at end of file diff --git a/dbux-code/src/traceDetailsView/traceDetailsController.js b/dbux-code/src/traceDetailsView/traceDetailsController.js index 0e7f15490..6d15347f9 100644 --- a/dbux-code/src/traceDetailsView/traceDetailsController.js +++ b/dbux-code/src/traceDetailsView/traceDetailsController.js @@ -5,7 +5,8 @@ import NestedError from '@dbux/common/src/NestedError'; import { throttle } from '@dbux/common/src/util/scheduling'; import allApplications from '@dbux/data/src/applications/allApplications'; import traceSelection from '@dbux/data/src/traceSelection'; -import { emitSelectTraceAction } from '../userEvents'; +import UserActionType from '@dbux/data/src/pathways/UserActionType'; +import { emitTraceUserAction } from '../userEvents'; import { getRelatedAppIds } from '../codeDeco/editedWarning'; import { showWarningMessage } from '../codeUtil/codeModals'; import TraceDetailsNodeProvider from './TraceDetailsNodeProvider'; @@ -104,7 +105,7 @@ class TraceDetailsController { } if (trace) { traceSelection.selectTrace(trace, 'selectTraceAtCursor'); - emitSelectTraceAction(trace); + emitTraceUserAction(UserActionType.selectTrace, trace); } } diff --git a/dbux-code/src/userEvents.js b/dbux-code/src/userEvents.js index ffdf59e83..0488c54dd 100644 --- a/dbux-code/src/userEvents.js +++ b/dbux-code/src/userEvents.js @@ -1,11 +1,14 @@ /** - * @file Here we export `ProjectsManager.emitUserEvent` such that you can emit events everywhere in dbux-code + * @file */ import { pathRelative } from '@dbux/common-node/src/util/pathUtil'; import { newLogger } from '@dbux/common/src/log/logger'; +import EmptyObject from '@dbux/common/src/util/EmptyObject'; import allApplications from '@dbux/data/src/applications/allApplications'; import UserActionType from '@dbux/data/src/pathways/UserActionType'; +import DataFlowFilterModeType from './dataFlowView/DataFlowFilterModeType'; +import DataFlowSearchModeType from './dataFlowView/DataFlowSearchModeType'; import PackageNodeSortMode from './globalAnalysisView/nodes/PackageNodeSortMode'; // eslint-disable-next-line no-unused-vars @@ -22,43 +25,49 @@ export function initUserEvent(_manager) { } // ########################################################################### -// events registry +// basic events registry // ########################################################################### /** - * NOTE: Register every possible UserActions here, so we can manage them all together + * The most basic `UserActions`, which contains no location nor trace info */ export function emitUserAction(actionType, data) { emitUserEvent(actionType, data); } -/** ######################################## - * trace selection - * ######################################*/ - -export function emitShowErrorAction(errorTrace) { - emitUserEvent(UserActionType.ShowError, { errorTrace }); +/** + * `UserActions` that related to some 'file' & 'location' + */ +export function emitLocUserAction(actionType, file, range, moreProp) { + emitUserEvent(actionType, { file, range, ...moreProp }); } -export function emitSelectTraceAction(trace, actionType = UserActionType.SelectTrace, moreProp) { - emitUserEvent(actionType, { - trace, - applicationUUID: getTraceApplicationUUID(trace), - locationInfo: getExtraTraceLocationImformation(trace), +/** + * `UserActions` that related to some trace, we use the information to find the related location + */ +export function emitTraceUserAction(actionType, trace, moreProp = EmptyObject) { + emitLocUserAction(actionType, { + ...makeTraceLocationInformation(trace), ...moreProp }); } +/** ########################################################################### + * helpers + * #########################################################################*/ + /** ######################################## * DataFlowView * ######################################*/ -export function emitDataFlowViewSearchModeChangedAction(searchMode) { - emitUserEvent(UserActionType.DataFlowViewSearchModeChanged, { searchMode }); +export function emitDataFlowViewSearchModeChangedAction(mode) { + const modeName = DataFlowSearchModeType.nameFromForce(mode); + emitUserAction(UserActionType.DataFlowViewSearchModeChanged, { mode, modeName }); } -export function emitDataFlowViewFilterModeChangedAction(filterMode) { - emitUserEvent(UserActionType.DataFlowViewFilterModeChanged, { filterMode }); +export function emitDataFlowViewFilterModeChangedAction(mode) { + const modeName = DataFlowFilterModeType.nameFromForce(mode); + emitUserAction(UserActionType.DataFlowViewFilterModeChanged, { mode, modeName }); } /** ######################################## @@ -67,7 +76,7 @@ export function emitDataFlowViewFilterModeChangedAction(filterMode) { export function emitGlobalPackageSortModeChangedAction(mode) { const modeName = PackageNodeSortMode.nameFromForce(mode); - emitUserEvent(UserActionType.GlobalPackageSortModeChanged, { mode, modeName }); + emitUserAction(UserActionType.GlobalPackageSortModeChanged, { mode, modeName }); } /** ######################################## @@ -75,11 +84,11 @@ export function emitGlobalPackageSortModeChangedAction(mode) { * ######################################*/ export function emitTDExecutionGroupModeChangedAction(modeLabel) { - emitUserEvent(UserActionType.TDExecutionsGroupModeChanged, { modeLabel }); + emitUserAction(UserActionType.TDExecutionsGroupModeChanged, { modeLabel }); } export function emitValueRenderAction(value, nodeId) { - emitUserEvent(UserActionType.TDValueRender, { value, nodeId }); + emitUserAction(UserActionType.TDValueRender, { value, nodeId }); } /** ######################################## @@ -87,28 +96,23 @@ export function emitValueRenderAction(value, nodeId) { * ######################################*/ export function emitStopRunnerAction() { - emitUserEvent(UserActionType.StopProjectRunner); + emitUserAction(UserActionType.StopProjectRunner); } export function emitShowHideProjectViewsAction(isShowing) { - emitUserEvent(UserActionType.ProjectViewsVisibilityChanged, { isShowing }); + emitUserAction(UserActionType.ProjectViewsVisibilityChanged, { isShowing }); } -export function emitTagTraceAction(trace, actionType) { - emitUserEvent(actionType || UserActionType.TagTrace, { - trace, - locationInfo: getExtraTraceLocationImformation(trace) - }); +export function emitTagTraceAction(trace) { + emitTraceUserAction(UserActionType.TagTrace, trace); } -export function emitAnnotateTraceAction(type, trace, s) { - emitUserEvent(type, { - annotation: s, - trace, - locationInfo: getExtraTraceLocationImformation(trace) - }); +export function emitAnnotateTraceAction(actionType, trace, annotation) { + emitTraceUserAction(actionType, trace, { annotation }); } +// TODO-M: fix actions below + export function emitProjectViewListModeChanged(isByChapter) { emitUserEvent(UserActionType.ProjectViewListModeChanged, { modeName: isByChapter ? 'byChapter' : 'byProject' }); } @@ -167,8 +171,8 @@ export function emitNavigationAction(actionName, selectMethod, trace) { emitUserEvent(actionType, { selectMethod, trace, - applicationUUID: getTraceApplicationUUID(trace), - locationInfo: getExtraTraceLocationImformation(trace) + // applicationUUID: getTraceApplicationUUID(trace), + locationInfo: makeTraceLocationInformation(trace) }); } @@ -196,53 +200,46 @@ export function emitTreeViewCollapseChangeAction(treeViewName, action, nodeId, n }); } -export function emitCallGraphAction(evtType, data) { - emitUserEvent(evtType, data); +export function emitCallGraphAction(actionType, data) { + emitUserEvent(actionType, data); } -export function emitCallGraphTraceAction(trace, evtType, moreProp) { - emitSelectTraceAction(trace, evtType, moreProp); +export function emitCallGraphTraceAction(trace, actionType, moreProp) { + emitTraceUserAction(actionType, trace, moreProp); } -export function emitPathwaysAction(evtType, data) { - emitUserEvent(evtType, data); +export function emitPathwaysAction(actionType, data) { + emitUserEvent(actionType, data); } // ########################################################################### // Util // ########################################################################### -function getExtraTraceLocationImformation(trace) { - const { applicationId, traceId, staticTraceId, staticTraceIndex } = trace; +function makeTraceLocationInformation(trace) { + const { applicationId, traceId } = trace; + const app = allApplications.getById(applicationId); const dp = app.dataProvider; - - const staticTrace = dp.collections.staticTraces.getById(staticTraceId); - const staticContext = dp.collections.staticContexts.getById(staticTrace.staticContextId); - const filePath = pathRelative(app.entryPointPath, dp.util.getTraceFilePath(traceId)); + // TODO-M: resolve this + const file = pathRelative(app.entryPointPath, dp.util.getTraceFilePath(traceId)); + const range = dp.util.getTraceLoc(traceId); return { - filePath, - staticTrace, - staticContext, - staticTraceIndex + file, + range, + applicationId, + traceId }; } -function getTraceApplicationUUID(trace) { - return allApplications.getById(trace.applicationId).uuid; -} +// function getTraceApplicationUUID(trace) { +// return allApplications.getById(trace.applicationId).uuid; +// } // ########################################################################### // emitter // ########################################################################### -// export function onUserEvent(cb) { -// if (!manager) { -// throw new Error('trying to listen on userEvent before ProjectsManager is registered'); -// } -// return manager.onUserEvent(cb); -// } - /** * NOTE: Basic UserAction emitter, should not be used without registration * @param {string} name diff --git a/dbux-code/src/workshop/PathwaysDataContainer.js b/dbux-code/src/workshop/PathwaysDataContainer.js index b7b74b19e..d8f550ac4 100644 --- a/dbux-code/src/workshop/PathwaysDataContainer.js +++ b/dbux-code/src/workshop/PathwaysDataContainer.js @@ -1,4 +1,5 @@ import { newLogger } from '@dbux/common/src/log/logger'; +import { uploadPathways } from '@dbux/projects/src/firestore/upload'; import PathwaysDataBuffer from './PathwaysDataBuffer'; // eslint-disable-next-line no-unused-vars @@ -51,6 +52,10 @@ export class PathwaysDataContainer { this.addAllData(serializedData); }); + if (this.sessionId) { + await uploadPathways(this.sessionId, 'info', session.serialize()); + } + await flushOldPromise; } } diff --git a/dbux-data/src/pathways/UserAction.js b/dbux-data/src/pathways/UserAction.js index f3696e264..d85d8aeb5 100644 --- a/dbux-data/src/pathways/UserAction.js +++ b/dbux-data/src/pathways/UserAction.js @@ -1,19 +1,11 @@ +/** @typedef {import('@dbux/common/src/types/Loc').default} Loc */ + export default class UserAction { /** * @type {number} see: UserActionType.js */ type; - // /** - // * @type {string} uuid of PracticeSession - // */ - // sessionId; - - // /** - // * @type {string} - // */ - // exerciseId; - /** * @type {number} event create time */ @@ -30,4 +22,24 @@ export default class UserAction { stepId; endTime; + + /** + * @type {number?} + */ + traceId; + + /** + * @type {number?} + */ + applicationId + + /** + * @type {string?} + */ + file; + + /** + * @type {Loc?} + */ + range; } diff --git a/dbux-projects/src/dataLib/pathwaysDataUtil.js b/dbux-projects/src/dataLib/pathwaysDataUtil.js index 5a30ee66c..7ef29db8b 100644 --- a/dbux-projects/src/dataLib/pathwaysDataUtil.js +++ b/dbux-projects/src/dataLib/pathwaysDataUtil.js @@ -79,9 +79,7 @@ export default { } const { applicationId } = trace; - - const applicationSet = allApplications; - return applicationSet.getById(applicationId); + return allApplications.getById(applicationId); }, @@ -238,11 +236,11 @@ export default { }, getActionStaticContextId(pdp, action) { - if (action.staticContext) { - // hackfix: in pdp version=1, EditorEvents does not contains applicationId, we can only assume it's 1 now - const { applicationId = 1, staticContext: { staticContextId } } = action; - return { applicationId, staticContextId }; - } + // if (action.staticContext) { + // // hackfix: in pdp version=1, EditorEvents does not contains applicationId, we can only assume it's 1 now + // const { applicationId = 1, staticContext: { staticContextId } } = action; + // return { applicationId, staticContextId }; + // } const dp = pdp.util.getActionApplication(action)?.dataProvider; if (!dp) {