import { globalLookup, globalSetting } from "./global"; import { domContainer, pluginRenderTimeGrid, pluginRenderValues, mountTree, eventHandler } from './wave-view'; import registerWheelEvent from "./wave-view/wheel-event"; import { registerTouchendEvent, registerTouchmoveEvent, registerTouchstartEvent } from "./wave-view/touch-event"; import { findCurrentSignalValue } from './utils'; import { registerKeyEvent } from "./wave-view/key-event"; import { WaveContainerView } from "./wave-container-view"; let mainRenderEl = null; const canvasMap = new Map(); /** * * @returns {Element} */ function getMainRenderEl() { if (!mainRenderEl) { const el = document.querySelectorAll('.vcd-render-wrapper')[0]; if (el) { mainRenderEl = el; } } return mainRenderEl; } function pluginLocalStore(desc, pstate /* , els */) { const pstateJsonString = JSON.stringify({ // yOffset: pstate.yOffset, xOffset: pstate.xOffset, xScale: pstate.xScale }); localStorage.setItem('dide', pstateJsonString); } /** * * @param {HTMLElement} parentElement */ function makeWaveView(parentElement) { const platform = navigator.platform; if (!parentElement) { parentElement = getMainRenderEl(); } const container = domContainer({ elemento: mountTree.defaultElemento, layers: mountTree.defaultLayers, renderPlugins: [ pluginRenderTimeGrid, pluginRenderValues, pluginLocalStore ] }); parentElement.appendChild(container.pstate.container); container.start(globalLookup); globalLookup.updater = () => { console.log('updater'); }; // 注册基本的响应事件 container.elo.container.addEventListener('wheel', registerWheelEvent(parentElement, container.pstate, globalLookup, eventHandler) ); // 好像必须是 document document.addEventListener('keydown', registerKeyEvent(parentElement, container.pstate, globalLookup, eventHandler) ); // TODO: 触控支持 // container.elo.container.addEventListener('touchstart', // registerTouchstartEvent(parentElement, container.pstate, globalLookup, eventHandler) // ); // container.elo.container.addEventListener('touchmove', // registerTouchmoveEvent(parentElement, container.pstate, globalLookup, eventHandler) // ); // container.elo.container.addEventListener('touchend', // registerTouchendEvent(parentElement, container.pstate, globalLookup, eventHandler) // ); } /** * @description 用于点击波形后触发的逻辑,如果波形已经在列表中,则去除,否则,加入 * NOTE:该函数需要同时操作所有的波形容器视图 * @param {WireItem} signal */ function toggleRender(signal) { if (WaveContainerView.has(signal)) { WaveContainerView.delete(signal); globalLookup.render(); } else { WaveContainerView.add(signal); globalLookup.render(); } } export { getMainRenderEl, makeWaveView, toggleRender }