114 lines
3.1 KiB
JavaScript
114 lines
3.1 KiB
JavaScript
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
|
||
} |