@operato/scene-visualizer 1.2.28 → 1.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/db.sqlite +0 -0
  3. package/dist/editors/property-editor-gltf-info.js.map +1 -1
  4. package/dist/editors/property-editor-location-increase-pattern.js.map +1 -1
  5. package/dist/effects/outline.js +2 -1
  6. package/dist/effects/outline.js.map +1 -1
  7. package/dist/rack-table.d.ts +2 -1
  8. package/dist/rack-table.js +39 -23
  9. package/dist/rack-table.js.map +1 -1
  10. package/dist/rack.d.ts +7 -7
  11. package/dist/rack.js +37 -43
  12. package/dist/rack.js.map +1 -1
  13. package/dist/stock.d.ts +2 -2
  14. package/dist/stock.js +2 -1
  15. package/dist/stock.js.map +1 -1
  16. package/dist/three-container.js +8 -5
  17. package/dist/three-container.js.map +1 -1
  18. package/dist/three-controls.js +0 -8
  19. package/dist/three-controls.js.map +1 -1
  20. package/dist/threed/real-object-gltf.js +2 -1
  21. package/dist/threed/real-object-gltf.js.map +1 -1
  22. package/dist/threed/real-object.js +2 -1
  23. package/dist/threed/real-object.js.map +1 -1
  24. package/dist/threed/texture/canvas-texture.js +2 -1
  25. package/dist/threed/texture/canvas-texture.js.map +1 -1
  26. package/dist/visualizer.js +0 -6
  27. package/dist/visualizer.js.map +1 -1
  28. package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +26 -6
  29. package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +30 -0
  30. package/logs/application-2023-04-30-10.log +6 -0
  31. package/logs/application-2023-04-30-12.log +6 -0
  32. package/logs/application-2023-04-30-14.log +6 -0
  33. package/logs/application-2023-04-30-16.log +15 -0
  34. package/logs/application-2023-04-30-20.log +6 -0
  35. package/logs/application-2023-04-30-22.log +6 -0
  36. package/logs/connections-2023-04-30-10.log +41 -0
  37. package/logs/connections-2023-04-30-12.log +41 -0
  38. package/logs/connections-2023-04-30-14.log +41 -0
  39. package/logs/connections-2023-04-30-16.log +41 -0
  40. package/logs/connections-2023-04-30-20.log +41 -0
  41. package/logs/connections-2023-04-30-22.log +41 -0
  42. package/package.json +9 -9
  43. package/src/effects/outline.ts +2 -1
  44. package/src/rack-table.ts +56 -31
  45. package/src/rack.ts +52 -46
  46. package/src/three-container.ts +10 -6
  47. package/src/three-controls.ts +0 -9
  48. package/src/threed/real-object.ts +2 -1
  49. package/src/threed/texture/canvas-texture.ts +2 -1
  50. package/src/visualizer.ts +0 -6
  51. package/tsconfig.tsbuildinfo +1 -1
  52. package/logs/application-2023-04-24-13.log +0 -15
  53. package/logs/application-2023-04-24-14.log +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"real-object-gltf.js","sourceRoot":"","sources":["../../src/threed/real-object-gltf.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAQ,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAA;AAGlF,MAAM,OAAO,cAAe,SAAQ,UAAU;IAA9C;;QAIU,eAAU,GAAmB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAA;IAmH1D,CAAC;IAjHC,MAAM,KAAK,UAAU;QACnB,OAAO,cAAc,CAAC,WAAW,CAAA;IACnC,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE1C,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,OAAM;SACP;QAED,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAEjC,0EAA0E;QAC1E,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;QACrC,WAAW,CAAC,cAAc,CAAC,8CAA8C,CAAC,CAAA;QAC1E,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAEtC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QACnC,UAAU,CAAC,iBAAiB,CAAC,8CAA8C,CAAC,CAAA;QAC5E,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAe,CAAC,UAAW,CAAC,CAAA;QAC1D,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAEpC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAA;QAE5C,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/C,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QAE5C,UAAU,CAAC,IAAI,CACb,UAAU,EACV,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,CAAA;QACtE,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC,CACF,CAAA;IACH,CAAC;IAEO,UAAU,CAAC,IAAU;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAEtB,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC1B,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;QAE9B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAqB,EAAE,EAAE;YACxC,IAAK,KAAa,CAAC,MAAM,EAAE;gBACzB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAW,CAAC,CAAA;QAEvD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;QAEzB,6CAA6C;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEtB,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,cAAe,CAAC,KAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBAC9D,MAAM,CAAC,IAAI,EAAE,CAAA;aACd;SACF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;SAC/B;IACH,CAAC;IAED,KAAK;QACH,yCAAyC;QACzC,mCAAmC;QAEnC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,eAAe;QACb,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE/D,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;QAEnD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;QAEpE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,QAAQ,CAAC,KAAiB,EAAE,MAAkB;QAC5C,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAE7B,IAAI,KAAK,IAAI,KAAK,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE,CAAA;SACpB;IACH,CAAC;;AArHc,0BAAW,GAAG,IAAI,UAAU,EAAE,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '@hatiolab/things-scene'\n\nimport { RealObject } from './real-object'\n\nimport { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'\nimport { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader'\n// @ts-ignore\nimport { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js'\nimport { Properties } from '@hatiolab/things-scene'\n\nexport class RealObjectGLTF extends RealObject {\n private static _GLTFLoader = new GLTFLoader()\n\n private pivot?: THREE.Object3D\n private objectSize?: THREE.Vector3 = new THREE.Vector3()\n\n static get GLTFLoader() {\n return RealObjectGLTF._GLTFLoader\n }\n\n build() {\n super.build()\n\n var { src: source } = this.component.state\n\n if (!source) {\n this.clear()\n return\n }\n\n let gltfLoader = new GLTFLoader()\n\n // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n const dracoLoader = new DRACOLoader()\n dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/')\n gltfLoader.setDRACOLoader(dracoLoader)\n\n const ktx2Loader = new KTX2Loader()\n ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`)\n ktx2Loader.detectSupport(this.threeContainer!.renderer3d!)\n gltfLoader.setKTX2Loader(ktx2Loader)\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder)\n\n var fullsource = this.component.app.url(source)\n gltfLoader.setCrossOrigin('use-credentials')\n\n gltfLoader.load(\n fullsource,\n gltf => {\n this.gltfLoaded(gltf)\n },\n xhr => {\n console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded')\n },\n err => {\n error('GLTFLoader.load', err)\n this.clear()\n }\n )\n }\n\n private gltfLoaded(gltf: GLTF) {\n let scene = gltf.scene\n\n var animations = gltf.animations\n var object = scene.clone()\n object.userData.context = this\n\n object.traverse((child: THREE.Object3D) => {\n if ((child as any).isMesh) {\n child.castShadow = true\n }\n })\n\n var boundingBox = new THREE.Box3().setFromObject(object)\n var center = boundingBox.getCenter(object.position)\n this.objectSize = boundingBox.getSize(this.objectSize!)\n\n center.multiplyScalar(-1)\n\n // 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.\n this.clear()\n\n this.pivot = new THREE.Object3D()\n this.object3d.add(this.pivot)\n this.pivot.add(object)\n\n this.updateDimension()\n\n if (animations && animations.length) {\n for (var i = 0; i < animations.length; i++) {\n var animation = animations[i]\n var action = this.threeContainer!.mixer!.clipAction(animation)\n action.play()\n }\n } else {\n console.log('no animations..')\n }\n }\n\n clear() {\n // TODO gltf object 리소스 해제가 필요하면, 여기에 추가.\n // 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.\n\n return super.clear()\n }\n\n updateDimension() {\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n var { x = 1, y = 1, z = 1 } = this.objectSize || {}\n\n this.pivot && this.pivot.scale.set(width / x, depth / y, height / z)\n\n this.component.invalidate()\n }\n\n updateSource() {\n this.build()\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if ('src' in after) {\n this.updateSource()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"real-object-gltf.js","sourceRoot":"","sources":["../../src/threed/real-object-gltf.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '@hatiolab/things-scene'\n\nimport { RealObject } from './real-object'\n\nimport { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'\nimport { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader'\n// @ts-ignore\nimport { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js'\nimport { Properties } from '@hatiolab/things-scene'\n\nexport class RealObjectGLTF extends RealObject {\n private static _GLTFLoader = new GLTFLoader()\n\n private pivot?: THREE.Object3D\n private objectSize?: THREE.Vector3 = new THREE.Vector3()\n\n static get GLTFLoader() {\n return RealObjectGLTF._GLTFLoader\n }\n\n build() {\n super.build()\n\n var { src: source } = this.component.state\n\n if (!source) {\n this.clear()\n return\n }\n\n let gltfLoader = new GLTFLoader()\n\n // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n const dracoLoader = new DRACOLoader()\n dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/')\n gltfLoader.setDRACOLoader(dracoLoader)\n\n const ktx2Loader = new KTX2Loader()\n ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`)\n ktx2Loader.detectSupport(this.threeContainer!.renderer3d!)\n gltfLoader.setKTX2Loader(ktx2Loader)\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder)\n\n var fullsource = this.component.app.url(source)\n gltfLoader.setCrossOrigin('use-credentials')\n\n gltfLoader.load(\n fullsource,\n gltf => {\n this.gltfLoaded(gltf)\n },\n xhr => {\n console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded')\n },\n err => {\n error('GLTFLoader.load', err)\n this.clear()\n }\n )\n }\n\n private gltfLoaded(gltf: GLTF) {\n let scene = gltf.scene\n\n var animations = gltf.animations\n var object = scene.clone()\n object.userData.context = this\n\n object.traverse((child: THREE.Object3D) => {\n if ((child as any).isMesh) {\n child.castShadow = true\n }\n })\n\n var boundingBox = new THREE.Box3().setFromObject(object)\n var center = boundingBox.getCenter(object.position)\n this.objectSize = boundingBox.getSize(this.objectSize!)\n\n center.multiplyScalar(-1)\n\n // 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.\n this.clear()\n\n this.pivot = new THREE.Object3D()\n this.object3d.add(this.pivot)\n this.pivot.add(object)\n\n this.updateDimension()\n\n if (animations && animations.length) {\n for (var i = 0; i < animations.length; i++) {\n var animation = animations[i]\n var action = this.threeContainer!.mixer!.clipAction(animation)\n action.play()\n }\n } else {\n console.log('no animations..')\n }\n }\n\n clear() {\n // TODO gltf object 리소스 해제가 필요하면, 여기에 추가.\n // 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.\n\n return super.clear()\n }\n\n updateDimension() {\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n var { x = 1, y = 1, z = 1 } = this.objectSize || {}\n\n this.pivot && this.pivot.scale.set(width / x, depth / y, height / z)\n\n this.component.invalidate()\n }\n\n updateSource() {\n this.build()\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if ('src' in after) {\n this.updateSource()\n }\n }\n}\n"]}
@@ -12,7 +12,8 @@ export class RealObject {
12
12
  if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {
13
13
  return new THREE.TextureLoader(THREE.DefaultLoadingManager).load(component.app.url(fillStyle.image), texture => {
14
14
  texture.minFilter = THREE.LinearFilter;
15
- texture.encoding = THREE.sRGBEncoding;
15
+ // @ts-ignore
16
+ texture.colorSpace = THREE.SRGBColorSpace;
16
17
  texture.repeat.set(1, 1);
17
18
  texture.needsUpdate = true;
18
19
  component.invalidate();
@@ -1 +1 @@
1
- {"version":3,"file":"real-object.js","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { Component, Properties, DELTA } from '@hatiolab/things-scene'\n\nimport { SCALE_MIN } from './common'\nimport { ThreeDimensionalContainer } from './three-dimensional-container'\n\nfunction hasProperties(props: string[], obj: object) {\n return props.findIndex(prop => prop in obj) !== -1\n}\n\nexport abstract class RealObject<T extends THREE.Object3D = THREE.Object3D> {\n protected _component: Component\n protected _focused: boolean = false\n\n public object3d: T\n\n static buildFillStyleTexture(component: Component) {\n const { fillStyle } = component.state\n\n if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {\n return new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n component.app.url(fillStyle.image),\n texture => {\n texture.minFilter = THREE.LinearFilter\n texture.encoding = THREE.sRGBEncoding\n texture.repeat.set(1, 1)\n texture.needsUpdate = true\n\n component.invalidate()\n },\n e => {\n console.error(e)\n }\n )\n }\n }\n\n constructor(component: Component) {\n this._component = component\n this.object3d = this.getObject3dInstance()\n\n this.component.on('change', this.onchange, this)\n }\n\n update() {\n this.clear()\n this.build()\n\n this.updateDimension()\n this.updateTransform()\n this.updateFillStyle()\n this.updateStrokeStyle()\n this.updateAlpha()\n this.updateHidden()\n this.updateText()\n }\n\n protected getObject3dInstance(): T {\n return new THREE.Object3D() as T\n }\n\n build() {\n this.object3d.userData.context = this\n this.object3d.castShadow = true\n this.object3d.name = this.component.state.id\n }\n\n get component(): Component {\n return this._component!\n }\n\n get threeContainer(): ThreeDimensionalContainer | undefined {\n var component = this.component\n\n while (component) {\n if ('is3dContainer' in component && (component as ThreeDimensionalContainer).is3dContainer()) {\n return component as ThreeDimensionalContainer\n }\n component = component.parent\n }\n }\n\n get focused(): boolean {\n return this._focused\n }\n\n set focused(focused: boolean) {\n this._focused = focused\n }\n\n dispose() {\n this.component.off('change', this.onchange, this)\n delete this.component._realObject\n\n this.clear()\n }\n\n clear() {\n this.object3d.children.slice().forEach((child: any) => {\n if (child['dispose']) child['dispose']()\n if (child['geometry'] && child['geometry']['dispose']) child['geometry']['dispose']()\n if (child['material'] && child['material']['dispose']) child['material']['dispose']()\n if (child['texture'] && child['texture']['dispose']) child['texture']['dispose']()\n this.object3d.remove(child)\n })\n\n this.object3d.userData = {}\n return this.object3d.clear()\n }\n\n /**\n * Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale\n */\n updateTransform() {\n // var {\n // scale: { x: sx = 1, y: sy = 1, z: sz = 1 } = UNIT_SCALE,\n // translate: { x: tx = 0, y: ty = 0, z: tz = 0 } = UNIT_TRANSLATE,\n // rotate: { x: rx = 0, y: ry = 0, z: rz = 0 } = UNIT_ROTATE\n // } = this.component.state\n\n var { x: tx, y: ty, z: tz } = this.position\n var { x: rx, y: ry, z: rz } = this.rotation\n var { x: sx, y: sy, z: sz } = this.scale\n\n this.object3d.position.set(tx, ty, tz)\n this.object3d.rotation.set(rx, ry, rz)\n this.object3d.scale.set(Math.max(sx, SCALE_MIN), Math.max(sy, SCALE_MIN), Math.max(sz, SCALE_MIN))\n }\n\n get position() {\n const { x, y, z } = this.center\n return {\n x,\n y: z,\n z: y\n }\n }\n\n get rotation() {\n const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state\n\n return {\n x: rotationX,\n y: rotationY,\n z: -rotation\n }\n }\n\n get scale() {\n const { scale = 1 } = this.component.state\n\n return {\n x: scale,\n y: scale,\n z: scale\n }\n }\n\n get cx() {\n var { x = 0 } = this.component.center\n var { width: parentWidth = 0 } = this.component.parent.bounds\n var { tx = 0 } = this.component.delta() as DELTA\n\n return x + tx - parentWidth / 2\n }\n\n get cy() {\n var { y = 0 } = this.component.center\n var { height: parentHeight = 0 } = this.component.parent.bounds\n var { ty = 0 } = this.component.delta() as DELTA\n\n return y + ty - parentHeight / 2\n }\n\n get cz() {\n var { zPos = 0, depth = 1 } = this.component.state\n var { tz = 0 } = this.component.delta() as DELTA\n\n return zPos + tz + depth / 2\n }\n\n get center() {\n var { x = 0, y = 0 } = this.component.center\n var { width: parentWidth = 0, height: parentHeight = 0 } = this.component.parent.bounds\n\n var { tx = 0, ty = 0, tz = 0 } = this.component.delta() as DELTA\n\n return {\n x: x + tx - parentWidth / 2,\n y: y + ty - parentHeight / 2,\n z: this.cz\n }\n }\n\n get dimension() {\n const { width, height } = this.component.bounds\n const { depth } = this.component.state\n return {\n width,\n height,\n depth\n }\n }\n\n /**\n * Object3D 모델의 변화를 Component의 모델값에 반영\n */\n // updateTransformReverse() {\n // var { rotation, position, scale } = this.object3d\n\n // this.component.set({\n // rotate: {\n // x: rotation.x,\n // y: rotation.y,\n // z: rotation.z\n // },\n // translate: {\n // x: position.x,\n // y: position.y,\n // z: position.z\n // },\n // scale: {\n // x: scale.x,\n // y: scale.y,\n // z: scale.z\n // }\n // })\n // }\n\n /* update functions - 전체적인 rebuilding이 필요하지 않은 update 기능 들임 */\n updatePosition() {\n var { x = 0, y = 0, z = 0 } = this.position\n this.object3d.position.set(x, y, z)\n }\n\n updateRotate() {\n var { x = 0, y = 0, z = 0 } = this.rotation\n this.object3d.rotation.set(x, y, z)\n }\n\n updateScale() {\n var { x = 1, y = 1, z = 1 } = this.scale\n this.object3d.scale.set(Math.max(x, SCALE_MIN), Math.max(y, SCALE_MIN), Math.max(z, SCALE_MIN))\n }\n\n updateDimension() {\n var { width, height, depth } = this.dimension\n this.object3d.scale.set(width, height, depth)\n }\n\n updateAlpha() {\n var { alpha } = this.component.state\n\n alpha = alpha == undefined ? 1 : alpha\n\n this.object3d.traverse((o: any) => {\n var materials = o.material\n if (!o.material) return\n\n if (!Array.isArray(materials)) {\n materials = [materials]\n }\n\n materials.forEach((m: any) => {\n m.opacity *= alpha\n m.transparent = alpha < 1\n })\n })\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n updateStrokeStyle() {}\n updateFillStyle() {}\n updateText() {}\n\n onchange(after: Properties, before: Properties) {\n if (hasProperties(['cx', 'cy', 'cz', 'zPos', 'left', 'top'], after)) {\n this.updatePosition()\n }\n\n if (hasProperties(['width', 'height', 'depth'], after)) {\n this.updateDimension()\n }\n\n if (hasProperties(['rotationX', 'rotationY', 'rotation'], after)) {\n this.updateRotate()\n }\n\n if ('scale' in after) {\n this.updateScale()\n }\n\n if ('hidden' in after) {\n this.updateHidden()\n }\n\n if ('alpha' in after) {\n this.updateAlpha()\n }\n\n if ('strokeStyle' in after) {\n this.updateStrokeStyle()\n }\n\n if ('fillStyle' in after) {\n this.updateFillStyle()\n }\n\n if ('text' in after) {\n this.updateText()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"real-object.js","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { Component, Properties, DELTA } from '@hatiolab/things-scene'\n\nimport { SCALE_MIN } from './common'\nimport { ThreeDimensionalContainer } from './three-dimensional-container'\n\nfunction hasProperties(props: string[], obj: object) {\n return props.findIndex(prop => prop in obj) !== -1\n}\n\nexport abstract class RealObject<T extends THREE.Object3D = THREE.Object3D> {\n protected _component: Component\n protected _focused: boolean = false\n\n public object3d: T\n\n static buildFillStyleTexture(component: Component) {\n const { fillStyle } = component.state\n\n if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {\n return new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n component.app.url(fillStyle.image),\n texture => {\n texture.minFilter = THREE.LinearFilter\n // @ts-ignore\n texture.colorSpace = THREE.SRGBColorSpace\n texture.repeat.set(1, 1)\n texture.needsUpdate = true\n\n component.invalidate()\n },\n e => {\n console.error(e)\n }\n )\n }\n }\n\n constructor(component: Component) {\n this._component = component\n this.object3d = this.getObject3dInstance()\n\n this.component.on('change', this.onchange, this)\n }\n\n update() {\n this.clear()\n this.build()\n\n this.updateDimension()\n this.updateTransform()\n this.updateFillStyle()\n this.updateStrokeStyle()\n this.updateAlpha()\n this.updateHidden()\n this.updateText()\n }\n\n protected getObject3dInstance(): T {\n return new THREE.Object3D() as T\n }\n\n build() {\n this.object3d.userData.context = this\n this.object3d.castShadow = true\n this.object3d.name = this.component.state.id\n }\n\n get component(): Component {\n return this._component!\n }\n\n get threeContainer(): ThreeDimensionalContainer | undefined {\n var component = this.component\n\n while (component) {\n if ('is3dContainer' in component && (component as ThreeDimensionalContainer).is3dContainer()) {\n return component as ThreeDimensionalContainer\n }\n component = component.parent\n }\n }\n\n get focused(): boolean {\n return this._focused\n }\n\n set focused(focused: boolean) {\n this._focused = focused\n }\n\n dispose() {\n this.component.off('change', this.onchange, this)\n delete this.component._realObject\n\n this.clear()\n }\n\n clear() {\n this.object3d.children.slice().forEach((child: any) => {\n if (child['dispose']) child['dispose']()\n if (child['geometry'] && child['geometry']['dispose']) child['geometry']['dispose']()\n if (child['material'] && child['material']['dispose']) child['material']['dispose']()\n if (child['texture'] && child['texture']['dispose']) child['texture']['dispose']()\n this.object3d.remove(child)\n })\n\n this.object3d.userData = {}\n return this.object3d.clear()\n }\n\n /**\n * Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale\n */\n updateTransform() {\n // var {\n // scale: { x: sx = 1, y: sy = 1, z: sz = 1 } = UNIT_SCALE,\n // translate: { x: tx = 0, y: ty = 0, z: tz = 0 } = UNIT_TRANSLATE,\n // rotate: { x: rx = 0, y: ry = 0, z: rz = 0 } = UNIT_ROTATE\n // } = this.component.state\n\n var { x: tx, y: ty, z: tz } = this.position\n var { x: rx, y: ry, z: rz } = this.rotation\n var { x: sx, y: sy, z: sz } = this.scale\n\n this.object3d.position.set(tx, ty, tz)\n this.object3d.rotation.set(rx, ry, rz)\n this.object3d.scale.set(Math.max(sx, SCALE_MIN), Math.max(sy, SCALE_MIN), Math.max(sz, SCALE_MIN))\n }\n\n get position() {\n const { x, y, z } = this.center\n return {\n x,\n y: z,\n z: y\n }\n }\n\n get rotation() {\n const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state\n\n return {\n x: rotationX,\n y: rotationY,\n z: -rotation\n }\n }\n\n get scale() {\n const { scale = 1 } = this.component.state\n\n return {\n x: scale,\n y: scale,\n z: scale\n }\n }\n\n get cx() {\n var { x = 0 } = this.component.center\n var { width: parentWidth = 0 } = this.component.parent.bounds\n var { tx = 0 } = this.component.delta() as DELTA\n\n return x + tx - parentWidth / 2\n }\n\n get cy() {\n var { y = 0 } = this.component.center\n var { height: parentHeight = 0 } = this.component.parent.bounds\n var { ty = 0 } = this.component.delta() as DELTA\n\n return y + ty - parentHeight / 2\n }\n\n get cz() {\n var { zPos = 0, depth = 1 } = this.component.state\n var { tz = 0 } = this.component.delta() as DELTA\n\n return zPos + tz + depth / 2\n }\n\n get center() {\n var { x = 0, y = 0 } = this.component.center\n var { width: parentWidth = 0, height: parentHeight = 0 } = this.component.parent.bounds\n\n var { tx = 0, ty = 0, tz = 0 } = this.component.delta() as DELTA\n\n return {\n x: x + tx - parentWidth / 2,\n y: y + ty - parentHeight / 2,\n z: this.cz\n }\n }\n\n get dimension() {\n const { width, height } = this.component.bounds\n const { depth } = this.component.state\n return {\n width,\n height,\n depth\n }\n }\n\n /**\n * Object3D 모델의 변화를 Component의 모델값에 반영\n */\n // updateTransformReverse() {\n // var { rotation, position, scale } = this.object3d\n\n // this.component.set({\n // rotate: {\n // x: rotation.x,\n // y: rotation.y,\n // z: rotation.z\n // },\n // translate: {\n // x: position.x,\n // y: position.y,\n // z: position.z\n // },\n // scale: {\n // x: scale.x,\n // y: scale.y,\n // z: scale.z\n // }\n // })\n // }\n\n /* update functions - 전체적인 rebuilding이 필요하지 않은 update 기능 들임 */\n updatePosition() {\n var { x = 0, y = 0, z = 0 } = this.position\n this.object3d.position.set(x, y, z)\n }\n\n updateRotate() {\n var { x = 0, y = 0, z = 0 } = this.rotation\n this.object3d.rotation.set(x, y, z)\n }\n\n updateScale() {\n var { x = 1, y = 1, z = 1 } = this.scale\n this.object3d.scale.set(Math.max(x, SCALE_MIN), Math.max(y, SCALE_MIN), Math.max(z, SCALE_MIN))\n }\n\n updateDimension() {\n var { width, height, depth } = this.dimension\n this.object3d.scale.set(width, height, depth)\n }\n\n updateAlpha() {\n var { alpha } = this.component.state\n\n alpha = alpha == undefined ? 1 : alpha\n\n this.object3d.traverse((o: any) => {\n var materials = o.material\n if (!o.material) return\n\n if (!Array.isArray(materials)) {\n materials = [materials]\n }\n\n materials.forEach((m: any) => {\n m.opacity *= alpha\n m.transparent = alpha < 1\n })\n })\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n updateStrokeStyle() {}\n updateFillStyle() {}\n updateText() {}\n\n onchange(after: Properties, before: Properties) {\n if (hasProperties(['cx', 'cy', 'cz', 'zPos', 'left', 'top'], after)) {\n this.updatePosition()\n }\n\n if (hasProperties(['width', 'height', 'depth'], after)) {\n this.updateDimension()\n }\n\n if (hasProperties(['rotationX', 'rotationY', 'rotation'], after)) {\n this.updateRotate()\n }\n\n if ('scale' in after) {\n this.updateScale()\n }\n\n if ('hidden' in after) {\n this.updateHidden()\n }\n\n if ('alpha' in after) {\n this.updateAlpha()\n }\n\n if ('strokeStyle' in after) {\n this.updateStrokeStyle()\n }\n\n if ('fillStyle' in after) {\n this.updateFillStyle()\n }\n\n if ('text' in after) {\n this.updateText()\n }\n }\n}\n"]}
@@ -16,7 +16,8 @@ export function createCanvasTexture(component) {
16
16
  texture.repeat.set(1, 1);
17
17
  texture.magFilter = THREE.NearestFilter;
18
18
  texture.minFilter = THREE.LinearMipMapLinearFilter;
19
- texture.encoding = THREE.sRGBEncoding;
19
+ // @ts-ignore
20
+ texture.colorSpace = THREE.SRGBColorSpace;
20
21
  return texture;
21
22
  }
22
23
  export function renderCanvasTexture(canvas, component, scale) {
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-texture.js","sourceRoot":"","sources":["../../../src/threed/texture/canvas-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,UAAU,mBAAmB,CAAC,SAAoB;;IACtD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAExC,0CAA0C;IAC1C,mEAAmE;IACnE,MAAM,KAAK,GAAG,CAAC,MAAA,MAAA,SAAS,CAAC,UAAU,0CAAE,cAAc,0CAAE,IAAe,IAAG,CAAC,CAAA;IAExE,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;IAExD,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAE7C,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAE7C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IAC1B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAA;IACvC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAA;IAClD,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAA;IAErC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,SAAoB,EAAE,KAAa;IAChG,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAEpC,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAErC,OAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC5B,OAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IAC/B,SAAS,CAAC,MAAM,CAAC,OAAQ,CAAC,CAAA;IAC1B,SAAS,CAAC,UAAU,CAAC,OAAQ,CAAC,CAAA;AAChC,CAAC","sourcesContent":["import * as THREE from 'three'\nimport { Component } from '@hatiolab/things-scene'\n\nimport { createCanvas } from '../html/elements'\n\nexport function createCanvasTexture(component: Component): THREE.Texture {\n var { width, height } = component.bounds\n\n // Factor for increasing image resolution.\n // TODO to be able to redraw according to the change in zoom value.\n const scale = (component.realObject?.threeContainer?.zoom as number) * 2\n\n let canvas = createCanvas(width * scale, height * scale)\n\n var texture = new THREE.CanvasTexture(canvas)\n\n renderCanvasTexture(canvas, component, scale)\n\n texture.needsUpdate = true\n texture.wrapS = THREE.RepeatWrapping\n texture.wrapT = THREE.RepeatWrapping\n texture.offset.set(0, 0)\n texture.repeat.set(1, 1)\n texture.magFilter = THREE.NearestFilter\n texture.minFilter = THREE.LinearMipMapLinearFilter\n texture.encoding = THREE.sRGBEncoding\n\n return texture\n}\n\nexport function renderCanvasTexture(canvas: HTMLCanvasElement, component: Component, scale: number) {\n var { left, top } = component.bounds\n\n let context = canvas.getContext('2d')\n\n context!.scale(scale, scale)\n context!.translate(-left, -top)\n component.render(context!)\n component.postrender(context!)\n}\n"]}
1
+ {"version":3,"file":"canvas-texture.js","sourceRoot":"","sources":["../../../src/threed/texture/canvas-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,UAAU,mBAAmB,CAAC,SAAoB;;IACtD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAExC,0CAA0C;IAC1C,mEAAmE;IACnE,MAAM,KAAK,GAAG,CAAC,MAAA,MAAA,SAAS,CAAC,UAAU,0CAAE,cAAc,0CAAE,IAAe,IAAG,CAAC,CAAA;IAExE,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;IAExD,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAE7C,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAE7C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IAC1B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAA;IACvC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAA;IAClD,aAAa;IACb,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAA;IAEzC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,SAAoB,EAAE,KAAa;IAChG,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAEpC,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAErC,OAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC5B,OAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IAC/B,SAAS,CAAC,MAAM,CAAC,OAAQ,CAAC,CAAA;IAC1B,SAAS,CAAC,UAAU,CAAC,OAAQ,CAAC,CAAA;AAChC,CAAC","sourcesContent":["import * as THREE from 'three'\nimport { Component } from '@hatiolab/things-scene'\n\nimport { createCanvas } from '../html/elements'\n\nexport function createCanvasTexture(component: Component): THREE.Texture {\n var { width, height } = component.bounds\n\n // Factor for increasing image resolution.\n // TODO to be able to redraw according to the change in zoom value.\n const scale = (component.realObject?.threeContainer?.zoom as number) * 2\n\n let canvas = createCanvas(width * scale, height * scale)\n\n var texture = new THREE.CanvasTexture(canvas)\n\n renderCanvasTexture(canvas, component, scale)\n\n texture.needsUpdate = true\n texture.wrapS = THREE.RepeatWrapping\n texture.wrapT = THREE.RepeatWrapping\n texture.offset.set(0, 0)\n texture.repeat.set(1, 1)\n texture.magFilter = THREE.NearestFilter\n texture.minFilter = THREE.LinearMipMapLinearFilter\n // @ts-ignore\n texture.colorSpace = THREE.SRGBColorSpace\n\n return texture\n}\n\nexport function renderCanvasTexture(canvas: HTMLCanvasElement, component: Component, scale: number) {\n var { left, top } = component.bounds\n\n let context = canvas.getContext('2d')\n\n context!.scale(scale, scale)\n context!.translate(-left, -top)\n component.render(context!)\n component.postrender(context!)\n}\n"]}
@@ -82,12 +82,6 @@ const NATURE = {
82
82
  name: 'autoRotate',
83
83
  property: 'autoRotate'
84
84
  },
85
- {
86
- type: 'checkbox',
87
- label: 'show-axis',
88
- name: 'showAxis',
89
- property: 'showAxis'
90
- },
91
85
  {
92
86
  type: 'checkbox',
93
87
  label: '3dmode',
@@ -1 +1 @@
1
- {"version":3,"file":"visualizer.js","sourceRoot":"","sources":["../src/visualizer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, ScenePopup, Properties, ComponentNature } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\n\nimport { RealObject } from './threed/real-object'\nimport './three-layout'\nimport { ThreeContainer } from './three-container'\nimport { Stock } from './stock'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'fov',\n name: 'fov',\n property: 'fov'\n },\n {\n type: 'number',\n label: 'near',\n name: 'near',\n property: 'near'\n },\n {\n type: 'number',\n label: 'far',\n name: 'far',\n property: 'far'\n },\n {\n type: 'number',\n label: 'zoom',\n name: 'zoom',\n property: 'zoom'\n },\n {\n type: 'number',\n label: 'camera-x',\n name: 'cameraX'\n },\n {\n type: 'number',\n label: 'camera-y',\n name: 'cameraY'\n },\n {\n type: 'number',\n label: 'camera-z',\n name: 'cameraZ'\n },\n {\n type: 'select',\n label: 'precision',\n name: 'precision',\n property: {\n options: [\n {\n display: 'High',\n value: 'highp'\n },\n {\n display: 'Medium',\n value: 'mediump'\n },\n {\n display: 'Low',\n value: 'lowp'\n }\n ]\n }\n },\n {\n type: 'checkbox',\n label: 'anti-alias',\n name: 'antialias',\n property: 'antialias'\n },\n {\n type: 'checkbox',\n label: 'auto-rotate',\n name: 'autoRotate',\n property: 'autoRotate'\n },\n {\n type: 'checkbox',\n label: 'show-axis',\n name: 'showAxis',\n property: 'showAxis'\n },\n {\n type: 'checkbox',\n label: '3dmode',\n name: 'threed',\n property: 'threed'\n },\n {\n type: 'checkbox',\n label: 'debug',\n name: 'debug',\n property: 'debug'\n },\n {\n type: 'string',\n label: 'location-field',\n name: 'locationField',\n placeHolder: 'location'\n },\n {\n type: 'board-selector',\n label: 'popup-scene',\n name: 'popupScene'\n },\n {\n type: 'id-input',\n label: 'legend-target',\n name: 'legendTarget',\n property: {\n component: 'legend'\n }\n },\n {\n type: 'number',\n label: 'rotation-speed',\n name: 'rotationSpeed'\n },\n {\n type: 'checkbox',\n label: 'hide-empty-stock',\n name: 'hideEmptyStock'\n },\n {\n type: 'select',\n label: 'popup-position',\n name: 'popupPosition',\n property: {\n options: [\n { display: '', value: '' },\n { display: 'CENTER', value: 'center' },\n { display: 'LEFTTOP', value: 'left-top' },\n { display: 'RIGHTTOP', value: 'right-top' },\n { display: 'LEFTBOTTOM', value: 'left-bottom' },\n { display: 'RIGHTBOTTOM', value: 'right-bottom' }\n ]\n }\n }\n ],\n help: 'scene/component/visualizer'\n}\n\nconst WEBGL_NO_SUPPORT_TEXT = 'WebGL no support'\n\nexport class Visualizer extends ThreeContainer {\n _legendTarget?: Component\n\n _objects: { [id: string]: RealObject } = {}\n\n _stock_materials: THREE.Material[] = []\n _default_material?: THREE.Material /* only for Stock */\n _empty_material?: THREE.Material /* only for Stock */\n\n get legendTarget() {\n var { legendTarget } = this.state\n\n if (!this._legendTarget && legendTarget) {\n this._legendTarget = this.root.findById(legendTarget)\n this._legendTarget && this._legendTarget.on('change', this.onLegendTargetChanged, this)\n }\n\n return this._legendTarget\n }\n\n putObject(id: string, object: RealObject) {\n id && (this._objects[id] = object)\n }\n\n getObject(id: string): RealObject {\n return this._objects[id]\n }\n\n /* Container Overides .. */\n\n dispose() {\n this._legendTarget && this._legendTarget.off('change', this.onLegendTargetChanged, this)\n delete this._legendTarget\n\n super.dispose()\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n\n resetMaterials() {\n this._stock_materials.forEach(m => {\n if (m.dispose) m.dispose()\n })\n\n this._stock_materials = []\n }\n\n /* Event Handlers */\n\n onchange(after: Properties, before: Properties) {\n if (before.hasOwnProperty('legendTarget') || after.hasOwnProperty('legendTarget')) {\n this._legendTarget && this._legendTarget.off('change', this.onLegendTargetChanged, this)\n delete this._legendTarget\n this.resetMaterials()\n }\n\n super.onchange(after, before)\n }\n\n onchangeData(): void {\n if (typeof this.data !== 'object') {\n return\n }\n\n var data = this.data\n var locationField = this.getState('locationField') || 'location'\n\n if (data instanceof Array) {\n /**\n * Array type data\n * (e.g. data: [{\n * 'location' : 'A0101-01',\n * 'description': 'description1',\n * ...\n * }, {\n * ...\n * }])\n */\n\n data = data.reduce((acc, value, i, arr) => {\n var location = value[locationField]\n\n if (!location) {\n return acc\n }\n\n // 하나의 로케이션에 여러 레코드 정보가 올 수 있으므로, 하나이 로케이션의 스탁정보를 items 배열에 담는다.\n if (acc[location]) {\n acc[location]['items'].push(value)\n } else {\n acc[location] = { items: [value] }\n }\n\n return acc\n }, {})\n }\n\n /**\n * Object type data\n * (e.g. data: {\n * 'A0101-01': { items: [{ location: 'A0101-01', qty: 10, description: 'description', ... }, {...}] },\n * ...\n * })\n */\n for (var key in data) {\n let id = key\n if (data.hasOwnProperty(id)) {\n let d = data[id]\n let object = this.getObject(id)\n if (object) {\n ;(object as Stock).onchangeStockData(d)\n }\n }\n }\n }\n\n onLegendTargetChanged(after: { [key: string]: any }, before: { [key: string]: any }) {\n if (after.hasOwnProperty('status') && before.hasOwnProperty('status')) this.resetMaterials()\n }\n\n onmouseup(e: MouseEvent) {\n if (this._controls) {\n if (this._lastFocused) {\n ;(this._lastFocused as any)._focused = false\n }\n\n const { popupScene, left, top, width, height } = this.state\n\n var ref = popupScene\n var pointer = this.transcoordC2S(e.offsetX, e.offsetY)\n\n this._mouse!.x = ((pointer.x - left) / width) * 2 - 1\n this._mouse!.y = -((pointer.y - top) / height) * 2 + 1\n\n var object = this.getObjectByRaycast()\n var realObject = object?.userData.context\n\n if (realObject) {\n if (ref && realObject instanceof Stock) {\n ;(realObject as any).onmouseup(e, this, (data: any) => {\n ScenePopup.show(this, ref, {\n data,\n modal: false,\n closable: true,\n output: false,\n location: this.state.popupPosition || 'right-top'\n })\n })\n }\n\n ;(realObject as any)._focused = true\n ;(realObject as any)._focusedAt = performance.now()\n this._lastFocused = realObject\n realObject.component?.trigger('click', e)\n } else {\n ScenePopup.hide(this.root)\n }\n\n this.invalidate()\n\n e.stopPropagation()\n }\n }\n}\n\nComponent.register('visualizer', Visualizer)\n"]}
1
+ {"version":3,"file":"visualizer.js","sourceRoot":"","sources":["../src/visualizer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, ScenePopup, Properties, ComponentNature } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\n\nimport { RealObject } from './threed/real-object'\nimport './three-layout'\nimport { ThreeContainer } from './three-container'\nimport { Stock } from './stock'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'fov',\n name: 'fov',\n property: 'fov'\n },\n {\n type: 'number',\n label: 'near',\n name: 'near',\n property: 'near'\n },\n {\n type: 'number',\n label: 'far',\n name: 'far',\n property: 'far'\n },\n {\n type: 'number',\n label: 'zoom',\n name: 'zoom',\n property: 'zoom'\n },\n {\n type: 'number',\n label: 'camera-x',\n name: 'cameraX'\n },\n {\n type: 'number',\n label: 'camera-y',\n name: 'cameraY'\n },\n {\n type: 'number',\n label: 'camera-z',\n name: 'cameraZ'\n },\n {\n type: 'select',\n label: 'precision',\n name: 'precision',\n property: {\n options: [\n {\n display: 'High',\n value: 'highp'\n },\n {\n display: 'Medium',\n value: 'mediump'\n },\n {\n display: 'Low',\n value: 'lowp'\n }\n ]\n }\n },\n {\n type: 'checkbox',\n label: 'anti-alias',\n name: 'antialias',\n property: 'antialias'\n },\n {\n type: 'checkbox',\n label: 'auto-rotate',\n name: 'autoRotate',\n property: 'autoRotate'\n },\n {\n type: 'checkbox',\n label: '3dmode',\n name: 'threed',\n property: 'threed'\n },\n {\n type: 'checkbox',\n label: 'debug',\n name: 'debug',\n property: 'debug'\n },\n {\n type: 'string',\n label: 'location-field',\n name: 'locationField',\n placeHolder: 'location'\n },\n {\n type: 'board-selector',\n label: 'popup-scene',\n name: 'popupScene'\n },\n {\n type: 'id-input',\n label: 'legend-target',\n name: 'legendTarget',\n property: {\n component: 'legend'\n }\n },\n {\n type: 'number',\n label: 'rotation-speed',\n name: 'rotationSpeed'\n },\n {\n type: 'checkbox',\n label: 'hide-empty-stock',\n name: 'hideEmptyStock'\n },\n {\n type: 'select',\n label: 'popup-position',\n name: 'popupPosition',\n property: {\n options: [\n { display: '', value: '' },\n { display: 'CENTER', value: 'center' },\n { display: 'LEFTTOP', value: 'left-top' },\n { display: 'RIGHTTOP', value: 'right-top' },\n { display: 'LEFTBOTTOM', value: 'left-bottom' },\n { display: 'RIGHTBOTTOM', value: 'right-bottom' }\n ]\n }\n }\n ],\n help: 'scene/component/visualizer'\n}\n\nconst WEBGL_NO_SUPPORT_TEXT = 'WebGL no support'\n\nexport class Visualizer extends ThreeContainer {\n _legendTarget?: Component\n\n _objects: { [id: string]: RealObject } = {}\n\n _stock_materials: THREE.Material[] = []\n _default_material?: THREE.Material /* only for Stock */\n _empty_material?: THREE.Material /* only for Stock */\n\n get legendTarget() {\n var { legendTarget } = this.state\n\n if (!this._legendTarget && legendTarget) {\n this._legendTarget = this.root.findById(legendTarget)\n this._legendTarget && this._legendTarget.on('change', this.onLegendTargetChanged, this)\n }\n\n return this._legendTarget\n }\n\n putObject(id: string, object: RealObject) {\n id && (this._objects[id] = object)\n }\n\n getObject(id: string): RealObject {\n return this._objects[id]\n }\n\n /* Container Overides .. */\n\n dispose() {\n this._legendTarget && this._legendTarget.off('change', this.onLegendTargetChanged, this)\n delete this._legendTarget\n\n super.dispose()\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n\n resetMaterials() {\n this._stock_materials.forEach(m => {\n if (m.dispose) m.dispose()\n })\n\n this._stock_materials = []\n }\n\n /* Event Handlers */\n\n onchange(after: Properties, before: Properties) {\n if (before.hasOwnProperty('legendTarget') || after.hasOwnProperty('legendTarget')) {\n this._legendTarget && this._legendTarget.off('change', this.onLegendTargetChanged, this)\n delete this._legendTarget\n this.resetMaterials()\n }\n\n super.onchange(after, before)\n }\n\n onchangeData(): void {\n if (typeof this.data !== 'object') {\n return\n }\n\n var data = this.data\n var locationField = this.getState('locationField') || 'location'\n\n if (data instanceof Array) {\n /**\n * Array type data\n * (e.g. data: [{\n * 'location' : 'A0101-01',\n * 'description': 'description1',\n * ...\n * }, {\n * ...\n * }])\n */\n\n data = data.reduce((acc, value, i, arr) => {\n var location = value[locationField]\n\n if (!location) {\n return acc\n }\n\n // 하나의 로케이션에 여러 레코드 정보가 올 수 있으므로, 하나이 로케이션의 스탁정보를 items 배열에 담는다.\n if (acc[location]) {\n acc[location]['items'].push(value)\n } else {\n acc[location] = { items: [value] }\n }\n\n return acc\n }, {})\n }\n\n /**\n * Object type data\n * (e.g. data: {\n * 'A0101-01': { items: [{ location: 'A0101-01', qty: 10, description: 'description', ... }, {...}] },\n * ...\n * })\n */\n for (var key in data) {\n let id = key\n if (data.hasOwnProperty(id)) {\n let d = data[id]\n let object = this.getObject(id)\n if (object) {\n ;(object as Stock).onchangeStockData(d)\n }\n }\n }\n }\n\n onLegendTargetChanged(after: { [key: string]: any }, before: { [key: string]: any }) {\n if (after.hasOwnProperty('status') && before.hasOwnProperty('status')) this.resetMaterials()\n }\n\n onmouseup(e: MouseEvent) {\n if (this._controls) {\n if (this._lastFocused) {\n ;(this._lastFocused as any)._focused = false\n }\n\n const { popupScene, left, top, width, height } = this.state\n\n var ref = popupScene\n var pointer = this.transcoordC2S(e.offsetX, e.offsetY)\n\n this._mouse!.x = ((pointer.x - left) / width) * 2 - 1\n this._mouse!.y = -((pointer.y - top) / height) * 2 + 1\n\n var object = this.getObjectByRaycast()\n var realObject = object?.userData.context\n\n if (realObject) {\n if (ref && realObject instanceof Stock) {\n ;(realObject as any).onmouseup(e, this, (data: any) => {\n ScenePopup.show(this, ref, {\n data,\n modal: false,\n closable: true,\n output: false,\n location: this.state.popupPosition || 'right-top'\n })\n })\n }\n\n ;(realObject as any)._focused = true\n ;(realObject as any)._focusedAt = performance.now()\n this._lastFocused = realObject\n realObject.component?.trigger('click', e)\n } else {\n ScenePopup.hide(this.root)\n }\n\n this.invalidate()\n\n e.stopPropagation()\n }\n }\n}\n\nComponent.register('visualizer', Visualizer)\n"]}
@@ -6,14 +6,34 @@
6
6
  "auditLog": "logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json",
7
7
  "files": [
8
8
  {
9
- "date": 1682311771683,
10
- "name": "logs/application-2023-04-24-13.log",
11
- "hash": "308d8bd89639190321ed5ec959e2a2e70f817beea06ab6e6bcce38e8434958f2"
9
+ "date": 1682816519035,
10
+ "name": "logs/application-2023-04-30-10.log",
11
+ "hash": "2f114875a93c5cab185b59cd7740ad5c9b6446f738ebf54b0060925a64672f59"
12
12
  },
13
13
  {
14
- "date": 1682312800924,
15
- "name": "logs/application-2023-04-24-14.log",
16
- "hash": "b0de333ddd3629539938a8c5f5b55697ec5582bec9296ec199065f260f1d3aaf"
14
+ "date": 1682827172535,
15
+ "name": "logs/application-2023-04-30-12.log",
16
+ "hash": "f2c26e8a9deb8d7ec515df9bf888ea27980d805c97632d33bb92700f3987f55e"
17
+ },
18
+ {
19
+ "date": 1682834307425,
20
+ "name": "logs/application-2023-04-30-14.log",
21
+ "hash": "fc322b4a238f87ea34a0d714a800f8e8b8d748a080a79a003344f241e8d5e49b"
22
+ },
23
+ {
24
+ "date": 1682838718120,
25
+ "name": "logs/application-2023-04-30-16.log",
26
+ "hash": "3d929e6c96aec962192f8c544456b83928b2db628fa7bb643e477bb4a4a25125"
27
+ },
28
+ {
29
+ "date": 1682853322474,
30
+ "name": "logs/application-2023-04-30-20.log",
31
+ "hash": "29893a6a42402ae4dab627a57cee76e2e888bd36c50850a45ceeb782086f752a"
32
+ },
33
+ {
34
+ "date": 1682860370889,
35
+ "name": "logs/application-2023-04-30-22.log",
36
+ "hash": "9e069a9e5f3e6e496c9a8b485d90713425d550dab183a96ff40319e196b45ac6"
17
37
  }
18
38
  ],
19
39
  "hashType": "sha256"
@@ -24,6 +24,36 @@
24
24
  "date": 1682312801993,
25
25
  "name": "logs/connections-2023-04-24-14.log",
26
26
  "hash": "ee927e633d4502a0e55fa670e495a10639855b6f7b4621726e3825cb7abe1247"
27
+ },
28
+ {
29
+ "date": 1682816520632,
30
+ "name": "logs/connections-2023-04-30-10.log",
31
+ "hash": "5acf31bd3e96d9dd99c7f5a89be0c710fafec03371e7644d28159cab90860891"
32
+ },
33
+ {
34
+ "date": 1682827173462,
35
+ "name": "logs/connections-2023-04-30-12.log",
36
+ "hash": "7c246b474aef6eef6893e7d9702b81263dae542e5265a084b0adabc98f424896"
37
+ },
38
+ {
39
+ "date": 1682834308891,
40
+ "name": "logs/connections-2023-04-30-14.log",
41
+ "hash": "e763c34931877cff029426f8ddd5d047422aff579305509b06c9249ef3edb231"
42
+ },
43
+ {
44
+ "date": 1682839218629,
45
+ "name": "logs/connections-2023-04-30-16.log",
46
+ "hash": "354a53afaeafe6c4a664932467af897c63f9dfdadc4724ceb6a78e422b4ff2c6"
47
+ },
48
+ {
49
+ "date": 1682853323446,
50
+ "name": "logs/connections-2023-04-30-20.log",
51
+ "hash": "84a1e1185eb171b44eb65033eaccdb69ce52a9c5f31a81dca6ebb9015079e93e"
52
+ },
53
+ {
54
+ "date": 1682860371980,
55
+ "name": "logs/connections-2023-04-30-22.log",
56
+ "hash": "3253bd050d577c6431875d9c4a24aace5eb620d19ca7f244c41468088dcf8edf"
27
57
  }
28
58
  ],
29
59
  "hashType": "sha256"
@@ -0,0 +1,6 @@
1
+ 2023-04-30T10:01:59+09:00 info: File Storage is Ready.
2
+ 2023-04-30T10:02:00+09:00 error: oracledb module loading failed
3
+ 2023-04-30T10:02:01+09:00 info: Default DataSource established
4
+ 2023-04-30T10:02:01+09:00 info: Transaction DataSource established
5
+ 2023-04-30T10:02:02+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
6
+ 2023-04-30T10:02:02+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
@@ -0,0 +1,6 @@
1
+ 2023-04-30T12:59:33+09:00 info: File Storage is Ready.
2
+ 2023-04-30T12:59:33+09:00 error: oracledb module loading failed
3
+ 2023-04-30T12:59:34+09:00 info: Default DataSource established
4
+ 2023-04-30T12:59:34+09:00 info: Transaction DataSource established
5
+ 2023-04-30T12:59:34+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
6
+ 2023-04-30T12:59:34+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
@@ -0,0 +1,6 @@
1
+ 2023-04-30T14:58:27+09:00 info: File Storage is Ready.
2
+ 2023-04-30T14:58:29+09:00 error: oracledb module loading failed
3
+ 2023-04-30T14:58:29+09:00 info: Default DataSource established
4
+ 2023-04-30T14:58:29+09:00 info: Transaction DataSource established
5
+ 2023-04-30T14:58:30+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
6
+ 2023-04-30T14:58:30+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
@@ -0,0 +1,15 @@
1
+ 2023-04-30T16:11:58+09:00 error: SQLITE_BUSY: database is locked
2
+ 2023-04-30T16:15:34+09:00 error: SQLITE_BUSY: database is locked
3
+ 2023-04-30T16:17:45+09:00 error: SQLITE_BUSY: database is locked
4
+ 2023-04-30T16:17:55+09:00 error: SQLITE_BUSY: database is locked
5
+ 2023-04-30T16:18:47+09:00 error: SQLITE_BUSY: database is locked
6
+ 2023-04-30T16:19:58+09:00 error: SQLITE_BUSY: database is locked
7
+ 2023-04-30T16:20:18+09:00 info: File Storage is Ready.
8
+ 2023-04-30T16:20:18+09:00 error: oracledb module loading failed
9
+ 2023-04-30T16:20:19+09:00 info: Default DataSource established
10
+ 2023-04-30T16:20:19+09:00 info: Transaction DataSource established
11
+ 2023-04-30T16:20:20+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
12
+ 2023-04-30T16:20:20+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
13
+ 2023-04-30T16:24:09+09:00 error: SQLITE_BUSY: database is locked
14
+ 2023-04-30T16:25:33+09:00 error: SQLITE_BUSY: database is locked
15
+ 2023-04-30T16:29:13+09:00 error: SQLITE_BUSY: database is locked
@@ -0,0 +1,6 @@
1
+ 2023-04-30T20:15:22+09:00 info: File Storage is Ready.
2
+ 2023-04-30T20:15:23+09:00 error: oracledb module loading failed
3
+ 2023-04-30T20:15:24+09:00 info: Default DataSource established
4
+ 2023-04-30T20:15:24+09:00 info: Transaction DataSource established
5
+ 2023-04-30T20:15:25+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
6
+ 2023-04-30T20:15:25+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
@@ -0,0 +1,6 @@
1
+ 2023-04-30T22:12:51+09:00 info: File Storage is Ready.
2
+ 2023-04-30T22:12:52+09:00 error: oracledb module loading failed
3
+ 2023-04-30T22:12:52+09:00 info: Default DataSource established
4
+ 2023-04-30T22:12:53+09:00 info: Transaction DataSource established
5
+ 2023-04-30T22:12:53+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
6
+ 2023-04-30T22:12:53+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
@@ -0,0 +1,41 @@
1
+ 2023-04-30T10:02:02+09:00 info: Initializing ConnectionManager...
2
+ 2023-04-30T10:02:02+09:00 info: Connector 'echo-back-server' started to ready
3
+ 2023-04-30T10:02:02+09:00 info: Connector 'echo-back' started to ready
4
+ 2023-04-30T10:02:02+09:00 info: Connector 'http-connector' started to ready
5
+ 2023-04-30T10:02:02+09:00 info: Connector 'graphql-connector' started to ready
6
+ 2023-04-30T10:02:02+09:00 info: Connector 'sqlite-connector' started to ready
7
+ 2023-04-30T10:02:02+09:00 info: Connector 'postgresql-connector' started to ready
8
+ 2023-04-30T10:02:02+09:00 info: Connector 'mqtt-connector' started to ready
9
+ 2023-04-30T10:02:02+09:00 info: Connector 'mssql-connector' started to ready
10
+ 2023-04-30T10:02:02+09:00 info: Connector 'oracle-connector' started to ready
11
+ 2023-04-30T10:02:02+09:00 info: Connector 'mysql-connector' started to ready
12
+ 2023-04-30T10:02:02+09:00 info: Connector 'socket-server' started to ready
13
+ 2023-04-30T10:02:02+09:00 info: Connector 'msgraph-connector' started to ready
14
+ 2023-04-30T10:02:02+09:00 info: Connector 'openai-connector' started to ready
15
+ 2023-04-30T10:02:02+09:00 info: echo-back-servers are ready
16
+ 2023-04-30T10:02:02+09:00 info: echo-back connections are ready
17
+ 2023-04-30T10:02:02+09:00 info: http-connector connections are ready
18
+ 2023-04-30T10:02:02+09:00 info: graphql-connector connections are ready
19
+ 2023-04-30T10:02:02+09:00 info: sqlite-connector connections are ready
20
+ 2023-04-30T10:02:02+09:00 info: postgresql-connector connections are ready
21
+ 2023-04-30T10:02:02+09:00 info: mqtt-connector connections are ready
22
+ 2023-04-30T10:02:02+09:00 info: mssql-connector connections are ready
23
+ 2023-04-30T10:02:02+09:00 info: oracle-connector connections are ready
24
+ 2023-04-30T10:02:02+09:00 info: mysql-connector connections are ready
25
+ 2023-04-30T10:02:02+09:00 info: socket servers are ready
26
+ 2023-04-30T10:02:02+09:00 info: msgraph-connector connections are ready
27
+ 2023-04-30T10:02:02+09:00 info: openai-connector connections are ready
28
+ 2023-04-30T10:02:02+09:00 info: All connector for 'echo-back-server' ready
29
+ 2023-04-30T10:02:02+09:00 info: All connector for 'echo-back' ready
30
+ 2023-04-30T10:02:02+09:00 info: All connector for 'http-connector' ready
31
+ 2023-04-30T10:02:02+09:00 info: All connector for 'graphql-connector' ready
32
+ 2023-04-30T10:02:02+09:00 info: All connector for 'sqlite-connector' ready
33
+ 2023-04-30T10:02:02+09:00 info: All connector for 'postgresql-connector' ready
34
+ 2023-04-30T10:02:02+09:00 info: All connector for 'mqtt-connector' ready
35
+ 2023-04-30T10:02:02+09:00 info: All connector for 'mssql-connector' ready
36
+ 2023-04-30T10:02:02+09:00 info: All connector for 'oracle-connector' ready
37
+ 2023-04-30T10:02:02+09:00 info: All connector for 'mysql-connector' ready
38
+ 2023-04-30T10:02:02+09:00 info: All connector for 'socket-server' ready
39
+ 2023-04-30T10:02:02+09:00 info: All connector for 'msgraph-connector' ready
40
+ 2023-04-30T10:02:02+09:00 info: All connector for 'openai-connector' ready
41
+ 2023-04-30T10:02:02+09:00 info: ConnectionManager initialization done:
@@ -0,0 +1,41 @@
1
+ 2023-04-30T12:59:34+09:00 info: Initializing ConnectionManager...
2
+ 2023-04-30T12:59:34+09:00 info: Connector 'echo-back-server' started to ready
3
+ 2023-04-30T12:59:34+09:00 info: Connector 'echo-back' started to ready
4
+ 2023-04-30T12:59:34+09:00 info: Connector 'http-connector' started to ready
5
+ 2023-04-30T12:59:34+09:00 info: Connector 'graphql-connector' started to ready
6
+ 2023-04-30T12:59:34+09:00 info: Connector 'sqlite-connector' started to ready
7
+ 2023-04-30T12:59:34+09:00 info: Connector 'postgresql-connector' started to ready
8
+ 2023-04-30T12:59:34+09:00 info: Connector 'mqtt-connector' started to ready
9
+ 2023-04-30T12:59:34+09:00 info: Connector 'mssql-connector' started to ready
10
+ 2023-04-30T12:59:34+09:00 info: Connector 'oracle-connector' started to ready
11
+ 2023-04-30T12:59:34+09:00 info: Connector 'mysql-connector' started to ready
12
+ 2023-04-30T12:59:34+09:00 info: Connector 'socket-server' started to ready
13
+ 2023-04-30T12:59:34+09:00 info: Connector 'msgraph-connector' started to ready
14
+ 2023-04-30T12:59:34+09:00 info: Connector 'openai-connector' started to ready
15
+ 2023-04-30T12:59:34+09:00 info: echo-back-servers are ready
16
+ 2023-04-30T12:59:34+09:00 info: echo-back connections are ready
17
+ 2023-04-30T12:59:34+09:00 info: http-connector connections are ready
18
+ 2023-04-30T12:59:34+09:00 info: graphql-connector connections are ready
19
+ 2023-04-30T12:59:34+09:00 info: sqlite-connector connections are ready
20
+ 2023-04-30T12:59:34+09:00 info: postgresql-connector connections are ready
21
+ 2023-04-30T12:59:34+09:00 info: mqtt-connector connections are ready
22
+ 2023-04-30T12:59:34+09:00 info: mssql-connector connections are ready
23
+ 2023-04-30T12:59:34+09:00 info: oracle-connector connections are ready
24
+ 2023-04-30T12:59:34+09:00 info: mysql-connector connections are ready
25
+ 2023-04-30T12:59:34+09:00 info: socket servers are ready
26
+ 2023-04-30T12:59:34+09:00 info: msgraph-connector connections are ready
27
+ 2023-04-30T12:59:34+09:00 info: openai-connector connections are ready
28
+ 2023-04-30T12:59:34+09:00 info: All connector for 'echo-back-server' ready
29
+ 2023-04-30T12:59:34+09:00 info: All connector for 'echo-back' ready
30
+ 2023-04-30T12:59:34+09:00 info: All connector for 'http-connector' ready
31
+ 2023-04-30T12:59:34+09:00 info: All connector for 'graphql-connector' ready
32
+ 2023-04-30T12:59:34+09:00 info: All connector for 'sqlite-connector' ready
33
+ 2023-04-30T12:59:34+09:00 info: All connector for 'postgresql-connector' ready
34
+ 2023-04-30T12:59:34+09:00 info: All connector for 'mqtt-connector' ready
35
+ 2023-04-30T12:59:34+09:00 info: All connector for 'mssql-connector' ready
36
+ 2023-04-30T12:59:34+09:00 info: All connector for 'oracle-connector' ready
37
+ 2023-04-30T12:59:34+09:00 info: All connector for 'mysql-connector' ready
38
+ 2023-04-30T12:59:34+09:00 info: All connector for 'socket-server' ready
39
+ 2023-04-30T12:59:34+09:00 info: All connector for 'msgraph-connector' ready
40
+ 2023-04-30T12:59:34+09:00 info: All connector for 'openai-connector' ready
41
+ 2023-04-30T12:59:34+09:00 info: ConnectionManager initialization done:
@@ -0,0 +1,41 @@
1
+ 2023-04-30T14:58:30+09:00 info: Initializing ConnectionManager...
2
+ 2023-04-30T14:58:30+09:00 info: Connector 'echo-back-server' started to ready
3
+ 2023-04-30T14:58:30+09:00 info: Connector 'echo-back' started to ready
4
+ 2023-04-30T14:58:30+09:00 info: Connector 'http-connector' started to ready
5
+ 2023-04-30T14:58:30+09:00 info: Connector 'graphql-connector' started to ready
6
+ 2023-04-30T14:58:30+09:00 info: Connector 'sqlite-connector' started to ready
7
+ 2023-04-30T14:58:30+09:00 info: Connector 'postgresql-connector' started to ready
8
+ 2023-04-30T14:58:30+09:00 info: Connector 'mqtt-connector' started to ready
9
+ 2023-04-30T14:58:30+09:00 info: Connector 'mssql-connector' started to ready
10
+ 2023-04-30T14:58:30+09:00 info: Connector 'oracle-connector' started to ready
11
+ 2023-04-30T14:58:30+09:00 info: Connector 'mysql-connector' started to ready
12
+ 2023-04-30T14:58:30+09:00 info: Connector 'socket-server' started to ready
13
+ 2023-04-30T14:58:30+09:00 info: Connector 'msgraph-connector' started to ready
14
+ 2023-04-30T14:58:30+09:00 info: Connector 'openai-connector' started to ready
15
+ 2023-04-30T14:58:30+09:00 info: echo-back-servers are ready
16
+ 2023-04-30T14:58:30+09:00 info: echo-back connections are ready
17
+ 2023-04-30T14:58:30+09:00 info: http-connector connections are ready
18
+ 2023-04-30T14:58:30+09:00 info: graphql-connector connections are ready
19
+ 2023-04-30T14:58:30+09:00 info: sqlite-connector connections are ready
20
+ 2023-04-30T14:58:30+09:00 info: postgresql-connector connections are ready
21
+ 2023-04-30T14:58:30+09:00 info: mqtt-connector connections are ready
22
+ 2023-04-30T14:58:30+09:00 info: mssql-connector connections are ready
23
+ 2023-04-30T14:58:30+09:00 info: oracle-connector connections are ready
24
+ 2023-04-30T14:58:30+09:00 info: mysql-connector connections are ready
25
+ 2023-04-30T14:58:30+09:00 info: socket servers are ready
26
+ 2023-04-30T14:58:30+09:00 info: msgraph-connector connections are ready
27
+ 2023-04-30T14:58:30+09:00 info: openai-connector connections are ready
28
+ 2023-04-30T14:58:30+09:00 info: All connector for 'echo-back-server' ready
29
+ 2023-04-30T14:58:30+09:00 info: All connector for 'echo-back' ready
30
+ 2023-04-30T14:58:30+09:00 info: All connector for 'http-connector' ready
31
+ 2023-04-30T14:58:30+09:00 info: All connector for 'graphql-connector' ready
32
+ 2023-04-30T14:58:30+09:00 info: All connector for 'sqlite-connector' ready
33
+ 2023-04-30T14:58:30+09:00 info: All connector for 'postgresql-connector' ready
34
+ 2023-04-30T14:58:30+09:00 info: All connector for 'mqtt-connector' ready
35
+ 2023-04-30T14:58:30+09:00 info: All connector for 'mssql-connector' ready
36
+ 2023-04-30T14:58:30+09:00 info: All connector for 'oracle-connector' ready
37
+ 2023-04-30T14:58:30+09:00 info: All connector for 'mysql-connector' ready
38
+ 2023-04-30T14:58:30+09:00 info: All connector for 'socket-server' ready
39
+ 2023-04-30T14:58:30+09:00 info: All connector for 'msgraph-connector' ready
40
+ 2023-04-30T14:58:30+09:00 info: All connector for 'openai-connector' ready
41
+ 2023-04-30T14:58:30+09:00 info: ConnectionManager initialization done:
@@ -0,0 +1,41 @@
1
+ 2023-04-30T16:20:20+09:00 info: Initializing ConnectionManager...
2
+ 2023-04-30T16:20:20+09:00 info: Connector 'echo-back-server' started to ready
3
+ 2023-04-30T16:20:20+09:00 info: Connector 'echo-back' started to ready
4
+ 2023-04-30T16:20:20+09:00 info: Connector 'http-connector' started to ready
5
+ 2023-04-30T16:20:20+09:00 info: Connector 'graphql-connector' started to ready
6
+ 2023-04-30T16:20:20+09:00 info: Connector 'sqlite-connector' started to ready
7
+ 2023-04-30T16:20:20+09:00 info: Connector 'postgresql-connector' started to ready
8
+ 2023-04-30T16:20:20+09:00 info: Connector 'mqtt-connector' started to ready
9
+ 2023-04-30T16:20:20+09:00 info: Connector 'mssql-connector' started to ready
10
+ 2023-04-30T16:20:20+09:00 info: Connector 'oracle-connector' started to ready
11
+ 2023-04-30T16:20:20+09:00 info: Connector 'mysql-connector' started to ready
12
+ 2023-04-30T16:20:20+09:00 info: Connector 'socket-server' started to ready
13
+ 2023-04-30T16:20:20+09:00 info: Connector 'msgraph-connector' started to ready
14
+ 2023-04-30T16:20:20+09:00 info: Connector 'openai-connector' started to ready
15
+ 2023-04-30T16:20:20+09:00 info: echo-back-servers are ready
16
+ 2023-04-30T16:20:20+09:00 info: echo-back connections are ready
17
+ 2023-04-30T16:20:20+09:00 info: http-connector connections are ready
18
+ 2023-04-30T16:20:20+09:00 info: graphql-connector connections are ready
19
+ 2023-04-30T16:20:20+09:00 info: sqlite-connector connections are ready
20
+ 2023-04-30T16:20:20+09:00 info: postgresql-connector connections are ready
21
+ 2023-04-30T16:20:20+09:00 info: mqtt-connector connections are ready
22
+ 2023-04-30T16:20:20+09:00 info: mssql-connector connections are ready
23
+ 2023-04-30T16:20:20+09:00 info: oracle-connector connections are ready
24
+ 2023-04-30T16:20:20+09:00 info: mysql-connector connections are ready
25
+ 2023-04-30T16:20:20+09:00 info: socket servers are ready
26
+ 2023-04-30T16:20:20+09:00 info: msgraph-connector connections are ready
27
+ 2023-04-30T16:20:20+09:00 info: openai-connector connections are ready
28
+ 2023-04-30T16:20:20+09:00 info: All connector for 'echo-back-server' ready
29
+ 2023-04-30T16:20:20+09:00 info: All connector for 'echo-back' ready
30
+ 2023-04-30T16:20:20+09:00 info: All connector for 'http-connector' ready
31
+ 2023-04-30T16:20:20+09:00 info: All connector for 'graphql-connector' ready
32
+ 2023-04-30T16:20:20+09:00 info: All connector for 'sqlite-connector' ready
33
+ 2023-04-30T16:20:20+09:00 info: All connector for 'postgresql-connector' ready
34
+ 2023-04-30T16:20:20+09:00 info: All connector for 'mqtt-connector' ready
35
+ 2023-04-30T16:20:20+09:00 info: All connector for 'mssql-connector' ready
36
+ 2023-04-30T16:20:20+09:00 info: All connector for 'oracle-connector' ready
37
+ 2023-04-30T16:20:20+09:00 info: All connector for 'mysql-connector' ready
38
+ 2023-04-30T16:20:20+09:00 info: All connector for 'socket-server' ready
39
+ 2023-04-30T16:20:20+09:00 info: All connector for 'msgraph-connector' ready
40
+ 2023-04-30T16:20:20+09:00 info: All connector for 'openai-connector' ready
41
+ 2023-04-30T16:20:20+09:00 info: ConnectionManager initialization done:
@@ -0,0 +1,41 @@
1
+ 2023-04-30T20:15:25+09:00 info: Initializing ConnectionManager...
2
+ 2023-04-30T20:15:25+09:00 info: Connector 'echo-back-server' started to ready
3
+ 2023-04-30T20:15:25+09:00 info: Connector 'echo-back' started to ready
4
+ 2023-04-30T20:15:25+09:00 info: Connector 'http-connector' started to ready
5
+ 2023-04-30T20:15:25+09:00 info: Connector 'graphql-connector' started to ready
6
+ 2023-04-30T20:15:25+09:00 info: Connector 'sqlite-connector' started to ready
7
+ 2023-04-30T20:15:25+09:00 info: Connector 'postgresql-connector' started to ready
8
+ 2023-04-30T20:15:25+09:00 info: Connector 'mqtt-connector' started to ready
9
+ 2023-04-30T20:15:25+09:00 info: Connector 'mssql-connector' started to ready
10
+ 2023-04-30T20:15:25+09:00 info: Connector 'oracle-connector' started to ready
11
+ 2023-04-30T20:15:25+09:00 info: Connector 'mysql-connector' started to ready
12
+ 2023-04-30T20:15:25+09:00 info: Connector 'socket-server' started to ready
13
+ 2023-04-30T20:15:25+09:00 info: Connector 'msgraph-connector' started to ready
14
+ 2023-04-30T20:15:25+09:00 info: Connector 'openai-connector' started to ready
15
+ 2023-04-30T20:15:25+09:00 info: echo-back-servers are ready
16
+ 2023-04-30T20:15:25+09:00 info: echo-back connections are ready
17
+ 2023-04-30T20:15:25+09:00 info: http-connector connections are ready
18
+ 2023-04-30T20:15:25+09:00 info: graphql-connector connections are ready
19
+ 2023-04-30T20:15:25+09:00 info: sqlite-connector connections are ready
20
+ 2023-04-30T20:15:25+09:00 info: postgresql-connector connections are ready
21
+ 2023-04-30T20:15:25+09:00 info: mqtt-connector connections are ready
22
+ 2023-04-30T20:15:25+09:00 info: mssql-connector connections are ready
23
+ 2023-04-30T20:15:25+09:00 info: oracle-connector connections are ready
24
+ 2023-04-30T20:15:25+09:00 info: mysql-connector connections are ready
25
+ 2023-04-30T20:15:25+09:00 info: socket servers are ready
26
+ 2023-04-30T20:15:25+09:00 info: msgraph-connector connections are ready
27
+ 2023-04-30T20:15:25+09:00 info: openai-connector connections are ready
28
+ 2023-04-30T20:15:25+09:00 info: All connector for 'echo-back-server' ready
29
+ 2023-04-30T20:15:25+09:00 info: All connector for 'echo-back' ready
30
+ 2023-04-30T20:15:25+09:00 info: All connector for 'http-connector' ready
31
+ 2023-04-30T20:15:25+09:00 info: All connector for 'graphql-connector' ready
32
+ 2023-04-30T20:15:25+09:00 info: All connector for 'sqlite-connector' ready
33
+ 2023-04-30T20:15:25+09:00 info: All connector for 'postgresql-connector' ready
34
+ 2023-04-30T20:15:25+09:00 info: All connector for 'mqtt-connector' ready
35
+ 2023-04-30T20:15:25+09:00 info: All connector for 'mssql-connector' ready
36
+ 2023-04-30T20:15:25+09:00 info: All connector for 'oracle-connector' ready
37
+ 2023-04-30T20:15:25+09:00 info: All connector for 'mysql-connector' ready
38
+ 2023-04-30T20:15:25+09:00 info: All connector for 'socket-server' ready
39
+ 2023-04-30T20:15:25+09:00 info: All connector for 'msgraph-connector' ready
40
+ 2023-04-30T20:15:25+09:00 info: All connector for 'openai-connector' ready
41
+ 2023-04-30T20:15:25+09:00 info: ConnectionManager initialization done: