UNPKG

@aptpod/data-viz-visual-parts-sdk

Version:

Visual Parts SDK for VM2M Data Visualizer

335 lines 14.3 kB
// 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