immersive2/src/worker.ts

52 lines
1.5 KiB
TypeScript

import {IndexdbPersistenceManager} from "./integration/indexdbPersistenceManager";
import {DiagramEvent, DiagramEventType} from "./diagram/diagramEntity";
const persistenceManager = new IndexdbPersistenceManager("diagram");
const ctx: Worker = self as any;
ctx.onmessage = (event) => {
console.log(event);
if (event.data.type == 'sync') {
persistenceManager.sync();
}
if (event.data.type == 'init') {
persistenceManager.updateObserver.add((event) => {
console.log(event);
ctx.postMessage({entity: event});
});
persistenceManager.configObserver.add((event) => {
console.log(event);
ctx.postMessage({config: event});
});
persistenceManager.initialize().then(() => {
});
} else {
if (event.data.entity) {
console.log(event.data);
const data = (event.data.entity as DiagramEvent);
switch (data.type) {
case DiagramEventType.ADD:
persistenceManager.add(data.entity);
break;
case DiagramEventType.DROP:
case DiagramEventType.MODIFY:
persistenceManager.modify(data.entity);
break;
case DiagramEventType.REMOVE:
persistenceManager.remove(data.entity.id);
break;
}
}
if (event.data.config) {
persistenceManager.setConfig(event.data.config);
}
}
};