immersive2/src/worker.ts

37 lines
1.1 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.data);
if (event.data.type == 'init') {
persistenceManager.updateObserver.add((event) => {
ctx.postMessage({entity: event});
});
persistenceManager.configObserver.add((event) => {
ctx.postMessage({config: event});
});
persistenceManager.initialize().then(() => {
console.log('initialized');
});
} else {
const data = (event.data as DiagramEvent);
switch (data.type) {
case DiagramEventType.ADD:
persistenceManager.add(data.entity);
break;
case DiagramEventType.MODIFY:
persistenceManager.modify(data.entity);
break;
case DiagramEventType.REMOVE:
persistenceManager.remove(data.entity.id);
break;
}
}
};