@eturnity/eturnity_3d 7.20.1 → 7.24.0

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 (41) hide show
  1. package/package.json +2 -2
  2. package/src/EventManager/EventManager.js +48 -0
  3. package/src/Item/Item.js +12 -0
  4. package/src/Layer/Layer.js +119 -0
  5. package/src/Overlay/AirTeamOverlay.js +605 -0
  6. package/src/Overlay/ImageOverlay.js +309 -0
  7. package/src/Overlay/Overlay.js +255 -0
  8. package/src/Overlay/OverlayFactory.js +19 -0
  9. package/src/Overlay/OverlayLayer.js +36 -0
  10. package/src/components/ThreeCanvasViewer.vue +17 -6
  11. package/src/config.js +120 -17
  12. package/src/helper/UpdateRoofModuleFieldRelations.js +65 -25
  13. package/src/helper/cameraMixin.js +25 -0
  14. package/src/helper/materialMixin.js +14 -1
  15. package/src/helper/projectedMaterial.js +662 -0
  16. package/src/helper/render/base.js +5 -5
  17. package/src/helper/render/clear.js +0 -17
  18. package/src/helper/render/edge.js +2 -0
  19. package/src/helper/render/geometryHandler.js +60 -31
  20. package/src/helper/render/imageOverlay.js +25 -144
  21. package/src/helper/render/index.js +2 -0
  22. package/src/helper/render/mergedGeometry.js +11 -2
  23. package/src/helper/render/obstacle.js +2 -1
  24. package/src/helper/render/overlay.js +41 -0
  25. package/src/helper/render/projectionMaterial.js +17 -19
  26. package/src/helper/render/roof.js +49 -52
  27. package/src/helper/render/texture.js +25 -0
  28. package/src/helper/render/tile.js +84 -24
  29. package/src/helper/render/tileProjection.js +23 -14
  30. package/src/helper/renderMixin.js +22 -8
  31. package/src/helper/threeMixin.js +5 -2
  32. package/src/store/hydrateData.js +23 -11
  33. package/src/store/nodesEdgesCreation.js +78 -4
  34. package/src/store/three-d-module.js +1 -1
  35. package/dist/css/app.58568098.css +0 -1
  36. package/dist/img/reneSola_Virtus_2_JC320S_24_Bbw.85a0cb6d.png +0 -0
  37. package/dist/index.html +0 -15
  38. package/dist/js/app-legacy.aa792c98.js +0 -2
  39. package/dist/js/app-legacy.aa792c98.js.map +0 -1
  40. package/dist/js/chunk-vendors-legacy.9bb3863d.js +0 -41
  41. package/dist/js/chunk-vendors-legacy.9bb3863d.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@eturnity/eturnity_3d",
3
3
  "private": false,
4
- "version": "7.20.1",
4
+ "version": "7.24.0",
5
5
  "files": [
6
6
  "dist",
7
7
  "src"
@@ -15,7 +15,7 @@
15
15
  "prettier": "prettier --write \"**/*.{js,vue}\""
16
16
  },
17
17
  "dependencies": {
18
- "@eturnity/eturnity_maths": "7.20.0",
18
+ "@eturnity/eturnity_maths": "7.24.0",
19
19
  "@originjs/vite-plugin-commonjs": "1.0.3",
20
20
  "core-js": "2.6.12",
21
21
  "cors": "2.8.5",
@@ -0,0 +1,48 @@
1
+ export default class EventManager {
2
+ constructor() {
3
+ this.listeners = {}
4
+ this.availableEvents = []
5
+ }
6
+
7
+ // Add an event listener
8
+ addEventListener(events, callback) {
9
+ let eventList = events.split(' ')
10
+ eventList.forEach((event) => {
11
+ if (!this.listeners[event]) {
12
+ this.listeners[event] = []
13
+ }
14
+ this.listeners[event].push(callback)
15
+ })
16
+ }
17
+
18
+ // Remove an event listener
19
+ removeEventListener(events, callback) {
20
+ let eventList = events.split(' ')
21
+ eventList.forEach((event) => {
22
+ if (this.listeners[event]) {
23
+ this.listeners[event] = this.listeners[event].filter(
24
+ (listener) => listener !== callback
25
+ )
26
+ }
27
+ })
28
+ }
29
+
30
+ // Dispatch an event and bubble it up to parent components
31
+ emit(event, eventData) {
32
+ //Check if event is available
33
+ if (!this.availableEvents.includes(event)) {
34
+ console.error(
35
+ event,
36
+ ' not available. Available events:',
37
+ this.availableEvents
38
+ )
39
+ }
40
+ // Check if the event has listeners
41
+ if (this.listeners[event]) {
42
+ // Execute each listener callback
43
+ this.listeners[event].forEach((callback) => {
44
+ callback(eventData)
45
+ })
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,12 @@
1
+ import { v4 as uuidv4 } from 'uuid'
2
+
3
+ export default class Item {
4
+ constructor(emit) {
5
+ this.id = uuidv4()
6
+ this.version = 0
7
+ this.emit = emit
8
+ this.actionsAvailable = []
9
+ this.isSelected = false
10
+ }
11
+ serialize() {}
12
+ }
@@ -0,0 +1,119 @@
1
+ import EventManager from '../EventManager/EventManager'
2
+
3
+ export default class LayerManager extends EventManager {
4
+ constructor() {
5
+ super()
6
+ this.items = []
7
+ this.selectedItemsIds = []
8
+ this.itemsIds = []
9
+ this.availableEvents.push(
10
+ 'selected-items-updated',
11
+ 'items-updated',
12
+ 'item-updated',
13
+ 'item-added',
14
+ 'item-removed',
15
+ 'item-selected'
16
+ )
17
+ }
18
+ findById(id) {
19
+ return this.items.find((item) => item.id == id)
20
+ }
21
+ getItems() {
22
+ return this.items
23
+ }
24
+ getReadyItems() {
25
+ return this.items.filter((item) => item.isReady)
26
+ }
27
+ getItemsIds() {
28
+ return this.itemsIds
29
+ }
30
+ getSelectedItemsIds() {
31
+ return this.selectedItemsIds
32
+ }
33
+ getSelectedItems() {
34
+ return this.items.filter((item) => this.selectedItemsIds.includes(item.id))
35
+ }
36
+ setItems(items) {
37
+ this.items = items
38
+ this.itemsIds = items.map((i) => i.id)
39
+ const newSelectedItemsIds = this.selectedItemsIds.filter((id) =>
40
+ this.itemsIds.includes(id)
41
+ )
42
+ this.selectItemsIds(newSelectedItemsIds)
43
+ this.emit('items-updated', [...this.items])
44
+ }
45
+ selectItemsIds(ids) {
46
+ this.selectedItemsIds = ids
47
+ this.items.forEach(
48
+ (item) => (item.isSelected = this.selectedItemsIds.includes(item.id))
49
+ )
50
+ this.emit('selected-items-updated', this.selectedItemsIds)
51
+ }
52
+ selectItems(items) {
53
+ const selectedItemsIds = items.map((item) => item.id)
54
+ this.selectItemsIds(selectedItemsIds)
55
+ }
56
+ deselectItems() {
57
+ this.selectItems([])
58
+ }
59
+ toggleSelectionById(id) {
60
+ let newSelectedItems = this.getSelectedItems()
61
+ if (this.selectedItemsIds.includes(id)) {
62
+ newSelectedItems = newSelectedItems.filter((item) => item.id != id)
63
+ } else {
64
+ let item = this.findById(id)
65
+ if (item) {
66
+ newSelectedItems.push(item)
67
+ }
68
+ }
69
+ this.selectItems(newSelectedItems)
70
+ }
71
+ addOrUpdateItem(item) {
72
+ const id = item.id
73
+ const existingItemWithSameId = this.items.find((i) => i.id == id)
74
+ if (existingItemWithSameId) {
75
+ if (item.version > existingItemWithSameId.version) {
76
+ this.removeItemById(id)
77
+ } else {
78
+ return existingItemWithSameId
79
+ }
80
+ }
81
+ let newItems = [...this.items]
82
+ newItems.push(item)
83
+ this.setItems(newItems)
84
+ this.emit('item-added', item)
85
+ return item
86
+ }
87
+ removeItemById(id) {
88
+ this.setItems(this.items.filter((item) => item.id != id))
89
+ this.emit('item-removed')
90
+ }
91
+ removeSelectedItems() {
92
+ this.setItems(this.items.filter((item) => !item.isSelected))
93
+ this.emit('item-removed')
94
+ }
95
+ removeAllItems() {
96
+ this.setItems([])
97
+ this.emit('item-removed')
98
+ }
99
+ dispatchActionToAllItems(actionName, params) {
100
+ return this.getItems().map((item) => {
101
+ if (
102
+ typeof item[actionName] === 'function' &&
103
+ item.actionsAvailable.includes(actionName)
104
+ ) {
105
+ return item[actionName](params)
106
+ }
107
+ })
108
+ }
109
+ dispatchActionToItemById(id, actionName, params) {
110
+ const item = this.findById(id)
111
+ if (
112
+ typeof item[actionName] === 'function' &&
113
+ item.actionsAvailable.includes(actionName)
114
+ ) {
115
+ return item[actionName](params)
116
+ }
117
+ return
118
+ }
119
+ }