2024-08-28 23:04:05 +08:00

114 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}