@aptpod/data-viz-visual-parts-sdk
Version:
Visual Parts SDK for VM2M Data Visualizer
335 lines • 14.3 kB
JavaScript
// import { TypedEvent } from '../events/typed-event'
const EMPTY_FUNCTION = () => { };
export class TypedEvent {
constructor(config) {
this.dispose = () => {
this.listeners.length = 0;
this.listenersOncer.length = 0;
};
this.on = (listener) => {
this.listeners.push(listener);
this.onListenerUpdate();
return {
dispose: () => this.off(listener),
};
};
this.once = (listener) => {
this.listenersOncer.push(listener);
this.onListenerUpdate();
};
this.off = (listener) => {
const callbackIndex = this.listeners.indexOf(listener);
if (callbackIndex > -1) {
this.listeners.splice(callbackIndex, 1);
this.onListenerUpdate();
}
};
this.emit = (event) => {
/** Update any general listeners */
this.listeners.forEach((listener) => listener(event));
/** Clear the `once` queue */
if (this.listenersOncer.length > 0) {
this.listenersOncer.forEach((listener) => listener(event));
this.listenersOncer = [];
this.onListenerUpdate();
}
};
this.hasOneOrMoreListener = () => {
const totalLength = this.listeners.length + this.listenersOncer.length;
return totalLength > 0;
};
const { onListenerUpdate } = config !== null && config !== void 0 ? config : {};
this.listeners = [];
this.listenersOncer = [];
this.onListenerUpdate = onListenerUpdate !== null && onListenerUpdate !== void 0 ? onListenerUpdate : EMPTY_FUNCTION;
}
}
/**
* Data Visualizer の再生モードの値です。
*/
export const PLAYBACK_MODE = {
LIVE: 'live',
STORED_DATA: 'stored_data',
};
/**
* Data Visualizer の再生状態を表す値です。
*/
export const PLAYBACK_STATUS = {
PLAY: 'play',
PAUSE: 'pause',
STOP: 'stop',
};
/**
* バインドされているデータの表示種別を表す識別子です。
*/
export const DISPLAY_TYPE = {
STRING: 'string',
NUMBER: 'number',
VIDEO: 'video',
AUDIO: 'audio',
};
//
// --- Data Binding Item 関連 ---
//
/**
* バインドされているデータの表示種別を表す識別子です。
* @since Data Visualizer v3.9.0
*/
export const DATA_BINDING_ITEM_DISPLAY_TYPE = {
STRING: 'string',
NUMBER: 'number',
};
/**
* データ設定の DAT Format Version の定義です。
* @since Data Visualizer v3.9.0
*/
export const DATA_BINDING_ITEM_TARGET_DATA_VERSION = {
V1: 1,
V2: 2,
};
/**
* DAT Format Ver.1 で使用される Data Type の定義です。
* @since Data Visualizer v3.9.0
*/
export const DATA_BINDING_ITEM_TARGET_DATA_VERSION_1_DATA_TYPE = {
CAN: 1,
CANopen: 0xfffc,
NMEA: 2,
GENERAL_SENSOR: 3,
CONTROL_PAD: 4,
MAVLINK1_PACKET: 5,
STRING: 10,
FLOAT: 11,
INT: 12,
BYTES: 14,
GENERIC: 127,
VIDEO: 0xfffe,
AUDIO: 0xffff,
MSGPACK_ROS_TOPIC: 'msgpack/ros_topic',
};
/**
* DAT Format Ver.2 で使用される Data Type の定義です。
* @since Data Visualizer v3.9.0
*/
export const DATA_BINDING_ITEM_TARGET_DATA_VERSION_2_DATA_TYPE = {
CAN_FRAME: 'can_frame',
NMEA: 'string/nmea',
MAVLINK1_PACKET: 'mavlink1_packet',
STRING: 'string',
FLOAT64: 'float64',
INT64: 'int64',
BYTES: 'bytes',
JPEG: 'jpeg',
H264_FRAME: 'h264_frame',
H264_NAL_UNIT: 'h264_nal_unit',
PCM: 'pcm',
AAC: 'aac',
MSGPACK_ROS_TOPIC: 'msgpack/ros_topic',
VECTOR_2D: 'vector_2d',
VECTOR_3D: 'vector_3d',
};
const createEvent = (config) => {
const { emit, once, on, off, dispose, hasOneOrMoreListener } = new TypedEvent(config);
const emitter = { emit, hasOneOrMoreListener };
const listener = { once, on, off };
return { emitter, listener, dispose };
};
/** @internal */
export const createVisualPartsEvent = (config) => {
const baseURL = createEvent(config);
const fontFamilies = createEvent(config);
const time = createEvent(config);
const size = createEvent(config);
const playbackComparationTime = createEvent(config); // eslint-disable-line prettier/prettier
const playbackMode = createEvent(config);
const playbackStatus = createEvent(config);
const playbackCount = createEvent(config);
const playbackRate = createEvent(config);
const playbackTimeRange = createEvent(config); // eslint-disable-line prettier/prettier
const playbackTimeSelectedRange = createEvent(config); // eslint-disable-line prettier/prettier
const viewBox = createEvent(config);
const viewGrid = createEvent(config);
const viewZoom = createEvent(config);
const viewContentFit = createEvent(config);
const viewTimeline = createEvent(config); // eslint-disable-line prettier/prettier
const backgroundDisplay = createEvent(config); // eslint-disable-line prettier/prettier
const extension = createEvent(config);
const googleMapsOptions = createEvent(config); // eslint-disable-line prettier/prettier
const dataSpecification = createEvent(config); // eslint-disable-line prettier/prettier
const dataSpecifications = createEvent(config); // eslint-disable-line prettier/prettier
const dataBindingItem = createEvent(config); // eslint-disable-line prettier/prettier
const dataBindingItems = createEvent(config); // eslint-disable-line prettier/prettier
const currentData = createEvent(config);
const depDatas = createEvent(config);
const values = createEvent(config);
const user = createEvent(config);
const project = createEvent(config);
const senderEdge = createEvent(config);
const measurement = createEvent(config);
const loaded = createEvent(config);
const extensionPatch = createEvent(config);
const backgroundDisplayToggle = createEvent(config); // eslint-disable-line prettier/prettier
const timeChange = createEvent(config);
const timeChangeWithPageAndRect = createEvent(config); // eslint-disable-line prettier/prettier
const timeChangeWithPagePosition = createEvent(config); // eslint-disable-line prettier/prettier
const comparationTimeChangeWithPagePosition = createEvent(config); // eslint-disable-line prettier/prettier
const playbackTimeSelectedRangeChange = createEvent(config); // eslint-disable-line prettier/prettier
const playbackTimeSelectedRangeChangeStartSelect = createEvent(config); // eslint-disable-line prettier/prettier
const playbackTimeSelectedRangeChangeStartMove = createEvent(config); // eslint-disable-line prettier/prettier
const playbackTimeSelectedRangeChangeStartResizeStart = createEvent(config); // eslint-disable-line prettier/prettier
const playbackTimeSelectedRangeChangeStartResizeEnd = createEvent(config); // eslint-disable-line prettier/prettier
const playbackTimeSelectedRangeReset = createEvent(config); // eslint-disable-line prettier/prettier
const captureCreate = createEvent(config);
const renderingProfile = createEvent(config); // eslint-disable-line prettier/prettier
const measurementCreate = createEvent(config);
const error = createEvent(config);
const dispatcher = {
baseURL: baseURL.emitter,
fontFamilies: fontFamilies.emitter,
time: time.emitter,
size: size.emitter,
playbackComparationTime: playbackComparationTime.emitter,
playbackMode: playbackMode.emitter,
playbackStatus: playbackStatus.emitter,
playbackCount: playbackCount.emitter,
playbackRate: playbackRate.emitter,
playbackTimeRange: playbackTimeRange.emitter,
playbackTimeSelectedRange: playbackTimeSelectedRange.emitter,
viewBox: viewBox.emitter,
viewGrid: viewGrid.emitter,
viewContentFit: viewContentFit.emitter,
viewZoom: viewZoom.emitter,
viewTimeline: viewTimeline.emitter,
backgroundDisplay: backgroundDisplay.emitter,
extension: extension.emitter,
googleMapsOptions: googleMapsOptions.emitter,
dataSpecification: dataSpecification.emitter,
dataSpecifications: dataSpecifications.emitter,
dataBindingItem: dataBindingItem.emitter,
dataBindingItems: dataBindingItems.emitter,
currentData: currentData.emitter,
depDatas: depDatas.emitter,
values: values.emitter,
user: user.emitter,
project: project.emitter,
senderEdge: senderEdge.emitter,
measurement: measurement.emitter,
loaded: loaded.listener,
extensionPatch: extensionPatch.listener,
backgroundDisplayToggle: backgroundDisplayToggle.listener,
timeChange: timeChange.listener,
timeChangeWithPageAndRect: timeChangeWithPageAndRect.listener,
timeChangeWithPagePosition: timeChangeWithPagePosition.listener,
comparationTimeChangeWithPagePosition: comparationTimeChangeWithPagePosition.listener,
playbackTimeSelectedRangeChange: playbackTimeSelectedRangeChange.listener,
playbackTimeSelectedRangeChangeStartSelect: playbackTimeSelectedRangeChangeStartSelect.listener,
playbackTimeSelectedRangeChangeStartMove: playbackTimeSelectedRangeChangeStartMove.listener,
playbackTimeSelectedRangeChangeStartResizeStart: playbackTimeSelectedRangeChangeStartResizeStart.listener,
playbackTimeSelectedRangeChangeStartResizeEnd: playbackTimeSelectedRangeChangeStartResizeEnd.listener,
playbackTimeSelectedRangeReset: playbackTimeSelectedRangeReset.listener,
captureCreate: captureCreate.listener,
renderingProfile: renderingProfile.listener,
measurementCreate: measurementCreate.listener,
error: error.listener,
};
const exposer = {
baseURL: baseURL.listener,
fontFamilies: fontFamilies.listener,
time: time.listener,
size: size.listener,
playbackComparationTime: playbackComparationTime.listener,
playbackMode: playbackMode.listener,
playbackStatus: playbackStatus.listener,
playbackCount: playbackCount.listener,
playbackRate: playbackRate.listener,
playbackTimeRange: playbackTimeRange.listener,
playbackTimeSelectedRange: playbackTimeSelectedRange.listener,
viewBox: viewBox.listener,
viewGrid: viewGrid.listener,
viewContentFit: viewContentFit.listener,
viewZoom: viewZoom.listener,
viewTimeline: viewTimeline.listener,
backgroundDisplay: backgroundDisplay.listener,
extension: extension.listener,
googleMapsOptions: googleMapsOptions.listener,
dataSpecification: dataSpecification.listener,
dataSpecifications: dataSpecifications.listener,
dataBindingItem: dataBindingItem.listener,
dataBindingItems: dataBindingItems.listener,
currentData: currentData.listener,
depDatas: depDatas.listener,
values: values.listener,
user: user.listener,
project: project.listener,
senderEdge: senderEdge.listener,
measurement: measurement.listener,
loaded: loaded.emitter,
extensionPatch: extensionPatch.emitter,
backgroundDisplayToggle: backgroundDisplayToggle.emitter,
timeChange: timeChange.emitter,
timeChangeWithPageAndRect: timeChangeWithPageAndRect.emitter,
timeChangeWithPagePosition: timeChangeWithPagePosition.emitter,
comparationTimeChangeWithPagePosition: comparationTimeChangeWithPagePosition.emitter,
playbackTimeSelectedRangeChange: playbackTimeSelectedRangeChange.emitter,
playbackTimeSelectedRangeChangeStartSelect: playbackTimeSelectedRangeChangeStartSelect.emitter,
playbackTimeSelectedRangeChangeStartMove: playbackTimeSelectedRangeChangeStartMove.emitter,
playbackTimeSelectedRangeChangeStartResizeStart: playbackTimeSelectedRangeChangeStartResizeStart.emitter,
playbackTimeSelectedRangeChangeStartResizeEnd: playbackTimeSelectedRangeChangeStartResizeEnd.emitter,
playbackTimeSelectedRangeReset: playbackTimeSelectedRangeReset.emitter,
captureCreate: captureCreate.emitter,
renderingProfile: renderingProfile.emitter,
measurementCreate: measurementCreate.emitter,
error: error.emitter,
};
const dispose = () => {
baseURL.dispose();
fontFamilies.dispose();
time.dispose();
size.dispose();
playbackComparationTime.dispose();
playbackMode.dispose();
playbackStatus.dispose();
playbackCount.dispose();
playbackRate.dispose();
playbackTimeRange.dispose();
playbackTimeSelectedRange.dispose();
viewBox.dispose();
viewGrid.dispose();
viewContentFit.dispose();
viewZoom.dispose();
viewTimeline.dispose();
backgroundDisplay.dispose();
extension.dispose();
googleMapsOptions.dispose();
dataSpecification.dispose();
dataSpecifications.dispose();
dataBindingItem.dispose();
dataBindingItems.dispose();
currentData.dispose();
depDatas.dispose();
values.dispose();
user.dispose();
project.dispose();
senderEdge.dispose();
measurement.dispose();
loaded.dispose();
extensionPatch.dispose();
backgroundDisplayToggle.dispose();
timeChange.dispose();
timeChangeWithPageAndRect.dispose();
timeChangeWithPagePosition.dispose();
comparationTimeChangeWithPagePosition.dispose();
playbackTimeSelectedRangeChange.dispose();
playbackTimeSelectedRangeChangeStartSelect.dispose();
playbackTimeSelectedRangeChangeStartMove.dispose();
playbackTimeSelectedRangeChangeStartResizeStart.dispose();
playbackTimeSelectedRangeChangeStartResizeEnd.dispose();
playbackTimeSelectedRangeReset.dispose();
captureCreate.dispose();
renderingProfile.dispose();
measurementCreate.dispose();
error.dispose();
};
return { dispatcher, exposer, dispose };
};
//# sourceMappingURL=visual-parts.js.map