Add card-wide action support for timeline.

This commit is contained in:
Dermot Duffy
2022-04-10 15:07:39 -07:00
parent e3ef1a9657
commit e3e7646fea
4 changed files with 16 additions and 0 deletions
+1
View File
@@ -153,6 +153,7 @@ class ActionHandler extends HTMLElement implements ActionHandler {
element.addEventListener('touchcancel', end); element.addEventListener('touchcancel', end);
element.addEventListener('mousedown', start, { passive: true }); element.addEventListener('mousedown', start, { passive: true });
element.addEventListener('pointerdown', start, { passive: true });
element.addEventListener('click', end); element.addEventListener('click', end);
element.addEventListener('keyup', handleEnter); element.addEventListener('keyup', handleEnter);
+2
View File
@@ -1157,6 +1157,8 @@ export class FrigateCard extends LitElement {
specificActions = this._getConfig().event_viewer.actions; specificActions = this._getConfig().event_viewer.actions;
} else if (this._view?.is('image')) { } else if (this._view?.is('image')) {
specificActions = this._getConfig().image?.actions; specificActions = this._getConfig().image?.actions;
} else if (this._view?.is('timeline')) {
specificActions = this._getConfig().timeline?.actions;
} }
return { ...this._getConfig().view.actions, ...specificActions }; return { ...this._getConfig().view.actions, ...specificActions };
} }
+12
View File
@@ -13,6 +13,7 @@ import { DataSet } from 'vis-data/esnext';
import { import {
DataGroupCollectionType, DataGroupCollectionType,
Timeline, Timeline,
TimelineEventPropertiesResult,
TimelineItem, TimelineItem,
TimelineOptions, TimelineOptions,
TimelineOptionsCluster, TimelineOptionsCluster,
@@ -40,6 +41,7 @@ import {
dispatchErrorMessageEvent, dispatchErrorMessageEvent,
dispatchFrigateCardEvent, dispatchFrigateCardEvent,
getCameraTitle, getCameraTitle,
stopEventFromActivatingCardWideActions,
} from '../common.js'; } from '../common.js';
import timelineCoreStyle from '../scss/timeline-core.scss'; import timelineCoreStyle from '../scss/timeline-core.scss';
@@ -428,6 +430,14 @@ export class FrigateCardTimelineCore extends LitElement {
></div>`; ></div>`;
} }
protected _timelineClickHandler(properties: TimelineEventPropertiesResult): void {
if (properties.what === 'item') {
// Prevent interaction with items on the timeline from activating card
// wide actions.
stopEventFromActivatingCardWideActions(properties.event);
}
}
/** /**
* Handle a range change in the timeline. * Handle a range change in the timeline.
* @param properties vis.js provided range information. * @param properties vis.js provided range information.
@@ -807,6 +817,8 @@ export class FrigateCardTimelineCore extends LitElement {
); );
this._timeline.on('select', this._timelineSelectHandler.bind(this)); this._timeline.on('select', this._timelineSelectHandler.bind(this));
this._timeline.on('rangechanged', this._timelineRangeHandler.bind(this)); this._timeline.on('rangechanged', this._timelineRangeHandler.bind(this));
this._timeline.on('click', this._timelineClickHandler.bind(this));
this._timeline.on('doubleclick', this._timelineClickHandler.bind(this));
} }
} }
+1
View File
@@ -806,6 +806,7 @@ const timelineConfigSchema = z
}) })
.default(timelineConfigDefault.controls), .default(timelineConfigDefault.controls),
}) })
.merge(actionsSchema)
.default(timelineConfigDefault); .default(timelineConfigDefault);
export type TimelineConfig = z.infer<typeof timelineConfigSchema>; export type TimelineConfig = z.infer<typeof timelineConfigSchema>;