feat(editor): add database filter event tracking (#12645)

close: BS-3568

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
	- Added event tracking for filter creation in database views to improve activity monitoring and analytics.

- **Chores**
	- Updated internal event types to support new database view tracking.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
zzj3720
2025-05-30 04:27:30 +00:00
parent 756847d3cb
commit a35e1b1882
5 changed files with 19 additions and 1 deletions

View File

@@ -16,5 +16,6 @@ export const renderFilterBar = (props: DataViewWidgetProps) => {
.vars="${filterTrait.view.vars$}" .vars="${filterTrait.view.vars$}"
.filterGroup="${filterTrait.filter$}" .filterGroup="${filterTrait.filter$}"
.onChange="${filterTrait.filterSet}" .onChange="${filterTrait.filterSet}"
.dataViewLogic="${props.dataViewLogic}"
></filter-bar>`; ></filter-bar>`;
}; };

View File

@@ -16,6 +16,7 @@ import { property } from 'lit/decorators.js';
import type { Variable } from '../../../core/expression/types.js'; import type { Variable } from '../../../core/expression/types.js';
import type { Filter, FilterGroup } from '../../../core/filter/types.js'; import type { Filter, FilterGroup } from '../../../core/filter/types.js';
import { popCreateFilter } from '../../../core/index.js'; import { popCreateFilter } from '../../../core/index.js';
import type { DataViewUILogicBase } from '../../../core/view/data-view-base.js';
import { popFilterGroup } from './group-panel-view.js'; import { popFilterGroup } from './group-panel-view.js';
export class FilterBar extends SignalWatcher(ShadowlessElement) { export class FilterBar extends SignalWatcher(ShadowlessElement) {
@@ -99,6 +100,7 @@ export class FilterBar extends SignalWatcher(ShadowlessElement) {
requestAnimationFrame(() => { requestAnimationFrame(() => {
this.expandGroup(element, index); this.expandGroup(element, index);
}); });
this.dataViewLogic.eventTrace('CreateDatabaseFilter', {});
}, },
}); });
}; };
@@ -206,6 +208,9 @@ export class FilterBar extends SignalWatcher(ShadowlessElement) {
@property({ attribute: false }) @property({ attribute: false })
accessor vars!: ReadonlySignal<Variable[]>; accessor vars!: ReadonlySignal<Variable[]>;
@property({ attribute: false })
accessor dataViewLogic!: DataViewUILogicBase;
} }
declare global { declare global {

View File

@@ -26,7 +26,10 @@ import { repeat } from 'lit/directives/repeat.js';
import type { Variable } from '../../../core/expression/types.js'; import type { Variable } from '../../../core/expression/types.js';
import type { FilterTrait } from '../../../core/filter/trait.js'; import type { FilterTrait } from '../../../core/filter/trait.js';
import type { Filter, FilterGroup } from '../../../core/filter/types.js'; import type { Filter, FilterGroup } from '../../../core/filter/types.js';
import { popCreateFilter } from '../../../core/index.js'; import {
type DataViewUILogicBase,
popCreateFilter,
} from '../../../core/index.js';
import { import {
type FilterGroupView, type FilterGroupView,
getDepth, getDepth,
@@ -375,6 +378,7 @@ export const popFilterRoot = (
props: { props: {
filterTrait: FilterTrait; filterTrait: FilterTrait;
onBack: () => void; onBack: () => void;
dataViewLogic: DataViewUILogicBase;
} }
) => { ) => {
const filterTrait = props.filterTrait; const filterTrait = props.filterTrait;
@@ -414,6 +418,10 @@ export const popFilterRoot = (
...value, ...value,
conditions: [...value.conditions, filter], conditions: [...value.conditions, filter],
}); });
props.dataViewLogic.eventTrace(
'CreateDatabaseFilter',
{}
);
}, },
}, },
{ middleware: subMenuMiddleware } { middleware: subMenuMiddleware }

View File

@@ -75,6 +75,7 @@ export class DataViewHeaderToolsFilter extends WidgetBase {
conditions: [filter], conditions: [filter],
}; };
this.toggleShowFilter(true); this.toggleShowFilter(true);
this.dataViewLogic.eventTrace('CreateDatabaseFilter', {});
}, },
} }
); );

View File

@@ -145,13 +145,16 @@ const createSettingMenus = (
popFilterRoot(target, { popFilterRoot(target, {
filterTrait: filterTrait, filterTrait: filterTrait,
onBack: reopen, onBack: reopen,
dataViewLogic: dataViewLogic,
}); });
dataViewLogic.eventTrace('CreateDatabaseFilter', {});
}, },
}); });
} else { } else {
popFilterRoot(target, { popFilterRoot(target, {
filterTrait: filterTrait, filterTrait: filterTrait,
onBack: reopen, onBack: reopen,
dataViewLogic: dataViewLogic,
}); });
} }
}, },