12 Commits

Author SHA1 Message Date
Iain Sproat 15d79e6606 feat(domains): add *.speckle.systems domains to capabilities (#57) 2024-08-12 11:44:44 +02:00
Mucahit Bilal GOKER bc5d16dfb8 Update README.md 2024-06-06 10:51:15 +03:00
Mucahit Bilal GOKER e445d27b01 Merge pull request #56 from specklesystems/bimgeek/update-readme
Update README.md
2024-06-04 17:01:23 +03:00
Mucahit Bilal GOKER 75c8a60cef Update README.md 2024-06-03 22:10:52 +03:00
Alan Rynne 0f034c17d0 bump: 2.19 2024-05-27 15:10:40 +02:00
Alan Rynne bded971ecf chore: Bump viewer version to latest (#54)
And bump visual version to `rc2`
2024-05-23 16:47:39 +02:00
Alan Rynne 77b13c2d89 bump: 2.19.0-rc 2024-05-14 18:37:20 +02:00
Alan Rynne e3855a71c1 Merge pull request #53 from specklesystems/dev
Update `main` with changes from `dev`
2024-05-14 17:21:50 +02:00
Alan Rynne 90c22211a9 bump to 2.19.0-wip (#52) 2024-04-29 12:24:51 +02:00
Alan Rynne b13eef0b18 bump: Viewer 2.18.15 + code changes (#51) 2024-04-23 14:25:09 +02:00
Alan Rynne 31c75f5407 Merge branch 'main' into dev 2024-04-08 16:31:53 +02:00
Benjamin Ottensten cd75dca5d7 Update web app link in README 2024-03-18 13:20:48 +01:00
6 changed files with 139 additions and 50 deletions
+8 -2
View File
@@ -1,3 +1,9 @@
# ⚠️⚠️⚠️ Note: This repository is no longer maintained and has been merged with the [Speckle Power BI](https://github.com/specklesystems/speckle-powerbi) repository. ⚠️⚠️⚠️
The functionalities and features of Speckle Power BI Visuals have been consolidated into the main [Speckle Power BI](https://github.com/specklesystems/speckle-powerbi) repository. Please visit the Speckle Power BI repository for the latest updates, installation instructions, and continued development.
<h1 align="center">
<img src="https://user-images.githubusercontent.com/2679513/131189167-18ea5fe1-c578-47f6-9785-3748178e4312.png" width="150px"/><br/>
Speckle | PowerBI Visuals
@@ -7,7 +13,7 @@
Expected use case is that the visual displays data pulled from Speckle via the Speckle Data Connector for PowerBI (https://github.com/specklesystems/speckle-powerbi)
</h3>
> ⚠️ This repo is still in very early stages of development, use at your own risk!
> This repo is still in very early stages of development, use at your own risk!
<p align="center"><b>Speckle</b> is data infrastructure for the AEC industry.</p><br/>
@@ -35,7 +41,7 @@ What is Speckle? Check our ![YouTube Video Views](https://img.shields.io/youtube
Give Speckle a try in no time by:
- [![speckle XYZ](https://img.shields.io/badge/https://-speckle.xyz-0069ff?style=flat-square&logo=hackthebox&logoColor=white)](https://speckle.xyz) ⇒ creating an account at
- [![speckle](https://img.shields.io/badge/https://-app.speckle.systems-0069ff?style=flat-square&logo=hackthebox&logoColor=white)](https://app.speckle.systems) ⇒ creating an account
- [![create a droplet](https://img.shields.io/badge/Create%20a%20Droplet-0069ff?style=flat-square&logo=digitalocean&logoColor=white)](https://marketplace.digitalocean.com/apps/speckle-server?refcode=947a2b5d7dc1) ⇒ deploying an instance in 1 click
### Resources
+2
View File
@@ -207,6 +207,8 @@
"name": "WebAccess",
"parameters": [
"https://speckle.xyz",
"https://app.speckle.systems",
"https://latest.speckle.systems",
"https://*.speckle.xyz",
"https://latest.speckle.dev",
"https://*.speckle.dev",
+114 -38
View File
@@ -13,7 +13,7 @@
"@heroicons/vue": "^2.0.12",
"@speckle/tailwind-theme": "2.14.7",
"@speckle/ui-components": "2.14.7",
"@speckle/viewer": "^2.16.0",
"@speckle/viewer": "^2.18.14",
"color-interpolate": "^1.0.5",
"core-js": "^3.30.2",
"lodash": "^4.17.21",
@@ -2661,12 +2661,12 @@
}
},
"node_modules/@speckle/objectloader": {
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/@speckle/objectloader/-/objectloader-2.16.0.tgz",
"integrity": "sha512-UjzOUf+Vpi0ESmrlJ9kYin0BqaziSQmR6I/ZJjCgWgOOdL6g9ME3e3BdpJj+DTEAMQQ3j7BkGpzlpU9U+qRXeQ==",
"version": "2.18.16",
"resolved": "https://registry.npmjs.org/@speckle/objectloader/-/objectloader-2.18.16.tgz",
"integrity": "sha512-YykdjxVkYlND+tgjHUL2I+Djaggm+w2v+UKZSIDSt7LVGIDg88JXJZ/JbO9B8ptx16i0E2oCQRuiTCntimoqZQ==",
"dependencies": {
"@babel/core": "^7.17.9",
"@speckle/shared": "^2.16.0",
"@speckle/shared": "^2.18.16",
"core-js": "^3.21.1",
"regenerator-runtime": "^0.13.7"
},
@@ -2675,9 +2675,9 @@
}
},
"node_modules/@speckle/shared": {
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/@speckle/shared/-/shared-2.16.0.tgz",
"integrity": "sha512-hGFMwZ3al4haM/FaEeuD9gZ9hG2fa78BTviWXwRyTzrKwvI5n2BK/h/FfgnyTlg3q/TMJ3xm7DLqpbpPx5Jqtw==",
"version": "2.18.16",
"resolved": "https://registry.npmjs.org/@speckle/shared/-/shared-2.18.16.tgz",
"integrity": "sha512-I5/jmvbuOjDJYjFY04f3IsDnQ0/Rt6DQKekXWiuyfmuLUqsBvM9hbWZBsg3vPmvX2HFgfQxisZAD0bHwpNTb3A==",
"dependencies": {
"lodash": "^4.17.0",
"lodash-es": "^4.17.21",
@@ -2689,7 +2689,8 @@
"peerDependencies": {
"@tiptap/core": "^2.0.0-beta.176",
"pino": "^8.7.0",
"pino-http": "^8.0.0"
"pino-http": "^8.0.0",
"pino-pretty": ">=8.0.0"
}
},
"node_modules/@speckle/tailwind-theme": {
@@ -2728,29 +2729,39 @@
}
},
"node_modules/@speckle/viewer": {
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/@speckle/viewer/-/viewer-2.16.0.tgz",
"integrity": "sha512-awQpKKxGMgsTdfPGd46ftmOKiqojX0grjm1H6C9zaK17pceKOow3oz9KkIhniNVTwocfhOfuNBCrjtk03siNNw==",
"version": "2.18.16",
"resolved": "https://registry.npmjs.org/@speckle/viewer/-/viewer-2.18.16.tgz",
"integrity": "sha512-exIloJG6ZLDX5FgrxyTcbr1+7K3CXC8weKJkWc6d1nZITGiDZnPB6CG3ffEmudKEdbPirUpGuYX5QsqZvvcA5w==",
"dependencies": {
"@speckle/objectloader": "^2.16.0",
"@speckle/objectloader": "^2.18.16",
"@speckle/shared": "^2.18.16",
"@types/flat": "^5.0.2",
"camera-controls": "^1.33.1",
"flat": "^5.0.2",
"hold-event": "^0.1.0",
"js-logger": "1.6.1",
"lodash-es": "^4.17.21",
"rainbowvis.js": "^1.0.1",
"string-to-color": "^2.2.2",
"three": "^0.140.0",
"three-mesh-bvh": "0.5.17",
"tree-model": "1.0.7",
"troika-three-text": "0.47.2",
"underscore": "1.13.6"
"type-fest": "^4.15.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@speckle/viewer/node_modules/type-fest": {
"version": "4.18.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.2.tgz",
"integrity": "sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@tailwindcss/forms": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz",
@@ -4485,8 +4496,7 @@
"node_modules/colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
},
"node_modules/colornames": {
"version": "1.1.1",
@@ -4866,6 +4876,15 @@
"integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==",
"peer": true
},
"node_modules/dateformat": {
"version": "4.6.3",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
"integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
"peer": true,
"engines": {
"node": "*"
}
},
"node_modules/de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
@@ -5045,6 +5064,15 @@
"node": ">= 0.8"
}
},
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"peer": true,
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/enhanced-resolve": {
"version": "5.14.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz",
@@ -5639,6 +5667,12 @@
"node": ">= 4"
}
},
"node_modules/fast-copy": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz",
"integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==",
"peer": true
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -5690,6 +5724,12 @@
"node": ">=6"
}
},
"node_modules/fast-safe-stringify": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
"peer": true
},
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -5819,14 +5859,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/flat": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"bin": {
"flat": "cli.js"
}
},
"node_modules/flat-cache": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
@@ -6144,6 +6176,12 @@
"he": "bin/he"
}
},
"node_modules/help-me": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
"integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==",
"peer": true
},
"node_modules/hex-rgb": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz",
@@ -6613,6 +6651,15 @@
"jiti": "bin/jiti.js"
}
},
"node_modules/joycon": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
"integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
"peer": true,
"engines": {
"node": ">=10"
}
},
"node_modules/js-logger": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/js-logger/-/js-logger-1.6.1.tgz",
@@ -7115,7 +7162,6 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -7628,6 +7674,31 @@
"process-warning": "^2.0.0"
}
},
"node_modules/pino-pretty": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.0.0.tgz",
"integrity": "sha512-YFJZqw59mHIY72wBnBs7XhLGG6qpJMa4pEQTRgEPEbjIYbng2LXEZZF1DoyDg9CfejEy8uZCyzpcBXXG0oOCwQ==",
"peer": true,
"dependencies": {
"colorette": "^2.0.7",
"dateformat": "^4.6.3",
"fast-copy": "^3.0.0",
"fast-safe-stringify": "^2.1.1",
"help-me": "^5.0.0",
"joycon": "^3.1.1",
"minimist": "^1.2.6",
"on-exit-leak-free": "^2.1.0",
"pino-abstract-transport": "^1.0.0",
"pump": "^3.0.0",
"readable-stream": "^4.0.0",
"secure-json-parse": "^2.4.0",
"sonic-boom": "^3.0.0",
"strip-json-comments": "^3.1.1"
},
"bin": {
"pino-pretty": "bin.js"
}
},
"node_modules/pino-std-serializers": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz",
@@ -9017,6 +9088,16 @@
"node": ">= 0.10"
}
},
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"peer": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"node_modules/punycode": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
@@ -9065,11 +9146,6 @@
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
"peer": true
},
"node_modules/rainbowvis.js": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/rainbowvis.js/-/rainbowvis.js-1.1.1.tgz",
"integrity": "sha512-/sFEGIfTRsGnVhNSVRWytNMSXadyqcDWW6LLoQs2EWg3R0IZylHp05/XjkqeG4gn0kSp3UE2M8uCPseahcHtuA=="
},
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -9461,6 +9537,12 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/secure-json-parse": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
"integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==",
"peer": true
},
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -9899,7 +9981,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
"engines": {
"node": ">=8"
},
@@ -10595,11 +10676,6 @@
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
"peer": true
},
"node_modules/underscore": {
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+1 -1
View File
@@ -18,7 +18,7 @@
"@heroicons/vue": "^2.0.12",
"@speckle/tailwind-theme": "2.14.7",
"@speckle/ui-components": "2.14.7",
"@speckle/viewer": "^2.16.0",
"@speckle/viewer": "^2.18.14",
"color-interpolate": "^1.0.5",
"core-js": "^3.30.2",
"lodash": "^4.17.21",
+1 -1
View File
@@ -4,7 +4,7 @@
"displayName": "Speckle PowerBI Viewer",
"guid": "powerbiSpeckleVisualAA98F06515D847E8ACB33BAB487244E0",
"visualClassName": "Visual",
"version": "2.18.0",
"version": "2.19.0",
"description": "An interactive 3D viewer for Speckle Data",
"supportUrl": "https://speckle.community",
"gitHubUrl": "https://github.com/specklesystems/speckle-powerbi-visuals"
+13 -8
View File
@@ -1,17 +1,18 @@
import {
CanonicalView,
FilteringState,
Viewer,
LegacyViewer,
IntersectionQuery,
DefaultViewerParams,
Box3,
SpeckleView
SpeckleView,
CameraController
} from '@speckle/viewer'
import { pickViewableHit, projectToScreen } from '../utils/viewerUtils'
import _ from 'lodash'
import { SpeckleVisualSettingsModel } from 'src/settings/visualSettingsModel'
export default class ViewerHandler {
private viewer: Viewer
private viewer: LegacyViewer
private readonly parent: HTMLElement
private state: FilteringState
private loadedObjectsCache: Set<string> = new Set<string>()
@@ -37,7 +38,8 @@ export default class ViewerHandler {
break
}
this.viewer.cameraHandler.controls.maxPolarAngle = settings.camera.allowCameraUnder.value
this.viewer.getExtension(CameraController).controls.maxPolarAngle = settings.camera
.allowCameraUnder.value
? Math.PI
: Math.PI / 2
@@ -70,7 +72,7 @@ export default class ViewerHandler {
}
public addCameraUpdateEventListener(listener: (ev) => void) {
this.viewer.cameraHandler.controls.addEventListener('update', listener)
this.viewer.getExtension(CameraController).controls.addEventListener('update', listener)
}
public constructor(parent: HTMLElement) {
@@ -82,7 +84,7 @@ export default class ViewerHandler {
const viewerSettings = DefaultViewerParams
viewerSettings.showStats = false
viewerSettings.verbose = false
const viewer = new Viewer(this.parent, viewerSettings)
const viewer = new LegacyViewer(this.parent, viewerSettings)
await viewer.init()
this.viewer = viewer
}
@@ -210,11 +212,14 @@ export default class ViewerHandler {
}
public getScreenPosition(worldPosition): { x: number; y: number } {
return projectToScreen(this.viewer.cameraHandler.camera, worldPosition)
return projectToScreen(
this.viewer.getExtension(CameraController).controls.camera,
worldPosition
)
}
public dispose() {
this.viewer.cameraHandler.controls.removeAllEventListeners()
this.viewer.getExtension(CameraController).controls.removeAllEventListeners()
this.viewer.dispose()
this.viewer = null
}