You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.3 KiB
166 lines
5.3 KiB
"use strict";
|
|
// import { CustomElement, CustomEvent } from '../../shapes';
|
|
// import { deepMix, isNil } from '@antv/util';
|
|
// import { DEFAULT_TIMELINE_STYLE } from './constants';
|
|
// import { PlayAxisStyleProps, TimeData } from './types';
|
|
// export type AxisStyleProps = PlayAxisStyleProps & {
|
|
// x?: number;
|
|
// y?: number;
|
|
// data: TimeData[];
|
|
// length?: number;
|
|
// orientation?: string;
|
|
// singleMode?: boolean;
|
|
// playInterval?: number; // ms
|
|
// tag?: string;
|
|
// };
|
|
// export const DEFAULT_STYLE: AxisStyleProps = deepMix(
|
|
// {},
|
|
// {
|
|
// x: 0,
|
|
// y: 0,
|
|
// data: [],
|
|
// length: 120,
|
|
// orientation: 'horizontal',
|
|
// selection: 0,
|
|
// selectionStyle: {
|
|
// fill: '#5B8FF9',
|
|
// fillOpacity: 0.15,
|
|
// },
|
|
// loop: false,
|
|
// playInterval: 1000,
|
|
// },
|
|
// DEFAULT_TIMELINE_STYLE.playAxis
|
|
// );
|
|
// export const DEFAULT_AXIS_CFG = {
|
|
// // axisLine: null,
|
|
// // label: {
|
|
// // autoRotate: false,
|
|
// // rotate: 0,
|
|
// // autoHide: true,
|
|
// // autoHideTickLine: false,
|
|
// // autoEllipsis: true,
|
|
// // minLength: 50,
|
|
// // alignTick: true,
|
|
// // },
|
|
// };
|
|
// export function normalSelection(selection: number | number[] = [], singleMode?: boolean): [number, number] {
|
|
// const [s1 = 0, s2 = s1] = Array.of(selection).flat() as number[];
|
|
// return singleMode ? [s1, s1] : [s1, s2];
|
|
// }
|
|
// export abstract class AxisBase<T extends AxisStyleProps = AxisStyleProps> extends CustomElement<T> {
|
|
// protected playTimer?: any;
|
|
// protected selection: [number, number] = [0, 0];
|
|
// public update(cfg: Partial<AxisStyleProps> = {}) {
|
|
// const newAttrs = deepMix({}, this.attributes, cfg);
|
|
// if (cfg.selection) {
|
|
// this.selection = normalSelection(cfg.selection, newAttrs.singleMode);
|
|
// }
|
|
// if (cfg.singleMode) {
|
|
// this.selection = normalSelection(newAttrs.selection, cfg.singleMode);
|
|
// }
|
|
// const playing = this.playTimer;
|
|
// playing && this.stop();
|
|
// this.attr(newAttrs);
|
|
// this.render();
|
|
// playing && this.play();
|
|
// }
|
|
// public play() {
|
|
// const { data: timeData, loop, singleMode, playMode } = this.style;
|
|
// const maxLength = timeData.length;
|
|
// let { playInterval } = this.style;
|
|
// if (isNil(playInterval)) {
|
|
// playInterval = DEFAULT_STYLE.playInterval;
|
|
// }
|
|
// if (this.playTimer) clearInterval(this.playTimer);
|
|
// this.playTimer = setInterval(() => {
|
|
// if (!loop && this.selection[1] >= maxLength - 1) {
|
|
// this.stop(true);
|
|
// return;
|
|
// }
|
|
// if (singleMode) {
|
|
// // do something
|
|
// const currentIndex = (this.selection[0] + 1) % maxLength;
|
|
// this.setSelection({ start: currentIndex, end: currentIndex });
|
|
// return;
|
|
// }
|
|
// let startIndex = this.selection[0];
|
|
// let endIndex = this.selection[1];
|
|
// const offset = this.selection[1] - this.selection[0];
|
|
// if (endIndex >= maxLength - 1) {
|
|
// if (playMode === 'increase') {
|
|
// endIndex = startIndex;
|
|
// } else {
|
|
// startIndex = 0;
|
|
// endIndex = offset;
|
|
// }
|
|
// } else {
|
|
// if (playMode !== 'increase') {
|
|
// startIndex = (startIndex + 1) % maxLength;
|
|
// }
|
|
// endIndex = (endIndex + 1) % maxLength;
|
|
// }
|
|
// this.setSelection({ start: startIndex, end: endIndex });
|
|
// }, playInterval);
|
|
// }
|
|
// public stop(dispatchEvent?: boolean): void {
|
|
// clearInterval(this.playTimer);
|
|
// this.playTimer = undefined;
|
|
// if (dispatchEvent) {
|
|
// this.dispatchEvent(new CustomEvent('timelineStopped', { selection: this.selection }));
|
|
// }
|
|
// }
|
|
// public prev() {
|
|
// const [s1, s2] = this.selection;
|
|
// const max = this.style.data.length;
|
|
// let start;
|
|
// let end;
|
|
// if (max && this.style.singleMode) {
|
|
// start = (s1 - 1 + max) % max;
|
|
// end = (s1 - 1 + max) % max;
|
|
// } else if (s1 === 0) {
|
|
// start = max - (s2 - s1) - 1;
|
|
// end = max - 1;
|
|
// } else {
|
|
// start = s1 - 1;
|
|
// end = s2 - 1;
|
|
// }
|
|
// this.setSelection({ start: start ?? this.selection[0], end: end ?? this.selection[1] });
|
|
// }
|
|
// public next() {
|
|
// const [s1, s2] = this.selection;
|
|
// const max = this.style.data.length;
|
|
// let start;
|
|
// let end;
|
|
// if (max && this.style.singleMode) {
|
|
// start = (s1 + 1) % max;
|
|
// end = (s1 + 1) % max;
|
|
// } else if (s2 === max - 1) {
|
|
// start = 0;
|
|
// end = s2 - s1;
|
|
// } else {
|
|
// start = s1 + 1;
|
|
// end = s2 + 1;
|
|
// }
|
|
// this.setSelection({ start: start ?? this.selection[0], end: end ?? this.selection[1] });
|
|
// }
|
|
// public getSelection(): [number, number] {
|
|
// return this.selection;
|
|
// }
|
|
// protected abstract render(): void;
|
|
// protected abstract setSelection(newSelection: { start?: number; end?: number }): void;
|
|
// protected get orientation() {
|
|
// return this.style.orientation || 'horizontal';
|
|
// }
|
|
// protected ifH<T>(a: T, b: T) {
|
|
// if (this.orientation === 'horizontal') {
|
|
// return typeof a === 'function' ? a() : a;
|
|
// }
|
|
// return typeof b === 'function' ? b() : b;
|
|
// }
|
|
// public destroy() {
|
|
// super.destroy();
|
|
// if (this.playTimer) clearInterval(this.playTimer);
|
|
// this.playTimer = undefined;
|
|
// }
|
|
// }
|
|
//# sourceMappingURL=playAxis.js.map
|