logic-helper
Version:
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
80 lines (74 loc) • 1.89 kB
JavaScript
import {
getWsEventBus
} from '@/utils/util.js';
import {
watch
} from 'vue'
import {
store
} from '@/common/js/app.js'
const eventReceiver = getWsEventBus('ws-event-handler');
import {
EventHelper
} from '@/utils/event.js';
import * as TopoEventHandler from './handlers/event-topo-handlers';
import * as RecordEventHandler from './handlers/event-record-handlers';
import * as ControllerEventHandler from './handlers/event-controller-handlers';
const allHandlers = [TopoEventHandler, RecordEventHandler, ControllerEventHandler]
const allEventName = [];
allHandlers.forEach(handler => {
allEventName.push(...Object.keys(handler))
})
const nameSet = [];
allEventName.forEach((name) => {
if (nameSet.includes(name)) {
throw new Error('repeated event-handler :' + name);
} else {
nameSet.push(name);
}
});
function eventHandler({
eventName,
params
}) {
if (eventName) {
for (let v of allHandlers) {
if (v[eventName]) {
return v[eventName](params);
}
}
} else {
console.error('eventName is missing!')
}
}
eventReceiver.on('wait', async (data, request) => {
try {
let res = (await eventHandler(data)) || '';
eventReceiver.reply(request, res);
} catch (e) {
console.error('ws-event-handler error >>>>', e);
eventReceiver.reply(request, e);
}
});
export const handler = function (eventName, params) {
return eventHandler({
eventName,
params
})
}
const $event = new EventHelper('utils/eventHandler')
$event.$on('ctl-s', () => {
store.storage.saveToFiles()
})
$event.$on('ctl-y', () => {
store.model.ctlY()
})
$event.$on('ctl-z', () => {
store.model.ctlZ()
})
$event.$on('ctl-c', () => {
// store.model.copyNode()
})
$event.$on('ctl-v', () => {
// store.model.pasteNode()
})