replace objectloader1 with 2

This commit is contained in:
oguzhankoral
2025-09-18 15:46:46 +03:00
parent 685a137531
commit 4ca0ae0978
5 changed files with 3514 additions and 1988 deletions
+3490 -1952
View File
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -17,11 +17,10 @@
"@babel/runtime-corejs3": "^7.21.5",
"@headlessui/vue": "^1.7.13",
"@heroicons/vue": "^2.0.12",
"@speckle/objectloader": "^2.25.9",
"@speckle/objectloader2": "^2.25.9",
"@speckle/objectloader2": "file:../../../speckle-server/packages/objectloader2",
"@speckle/tailwind-theme": "2.23.2",
"@speckle/ui-components": "2.23.2",
"@speckle/viewer": "2.23.23",
"@speckle/viewer": "2.26.1",
"color-interpolate": "^1.0.5",
"core-js": "^3.30.2",
"lodash": "^4.17.21",
@@ -34,11 +34,9 @@ import ViewModes from '../../global/icon/ViewModes.vue'
const viewModes = {
[ViewMode.DEFAULT]: 'Default',
[ViewMode.DEFAULT_EDGES]: 'Edges',
[ViewMode.SHADED]: 'Shaded',
[ViewMode.PEN]: 'Pen',
[ViewMode.ARCTIC]: 'Arctic',
[ViewMode.COLORS]: 'Colors'
[ViewMode.ARCTIC]: 'Arctic'
}
const visualStore = useVisualStore()
@@ -1,4 +1,4 @@
import ObjectLoader from '@speckle/objectloader'
import { ObjectLoader2 } from '@speckle/objectloader2'
import { SpeckleLoader, WorldTree } from '@speckle/viewer'
export class SpeckleObjectsOfflineLoader extends SpeckleLoader {
@@ -7,15 +7,13 @@ export class SpeckleObjectsOfflineLoader extends SpeckleLoader {
}
protected initObjectLoader(
_resource: string,
_authToken?: string,
_enableCaching?: boolean,
resourceData?: string | ArrayBuffer
): ObjectLoader {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return ObjectLoader.createFromObjects(resourceData as unknown as [])
resource: string,
authToken?: string,
enableCaching?: boolean,
resourceData?: unknown
): ReturnType<SpeckleLoader['initObjectLoader']> {
const data = (resourceData ?? this._resourceData) as unknown
return super.initObjectLoader(resource, authToken, enableCaching, data)
}
public async load(): Promise<boolean> {
@@ -25,7 +23,7 @@ export class SpeckleObjectsOfflineLoader extends SpeckleLoader {
return false
}
/** If not id is provided, we make one up based on the root object id */
this._resource = this._resource || `/json/${rootObject.id as string}`
this._resource = this._resource || `/json/${rootObject.baseId as string}`
return super.load()
}
}
@@ -1,5 +1,5 @@
import { useVisualStore } from '@src/store/visualStore'
import ObjectLoader from '@speckle/objectloader' // Default import for v1
import { ObjectLoader2Factory } from '@speckle/objectloader2'
interface SpeckleObject {
id: string
@@ -18,26 +18,26 @@ export class SpeckleApiLoader {
this.projectId = projectId
this.token = token
this.headers = {
'Authorization': `Bearer ${token}`,
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json'
}
}
async downloadObjectsWithChildren(objectId: string, onProgress?: (loaded: number, total: number) => void): Promise<SpeckleObject[]> {
async downloadObjectsWithChildren(
objectId: string,
onProgress?: (loaded: number, total: number) => void
): Promise<SpeckleObject[]> {
const visualStore = useVisualStore()
visualStore.setLoadingProgress('Initializing object loader', 0)
console.log('Creating ObjectLoader v1 for Power BI environment')
// Create ObjectLoader v1 instance - use 'token' not 'authToken'
const loader = new ObjectLoader({
const loader = ObjectLoader2Factory.createFromUrl({
serverUrl: this.serverUrl,
streamId: this.projectId,
objectId: objectId,
objectId,
token: this.token,
options: {
enableCaching: false, // Disable caching for Power BI environment
}
attributeMask: { exclude: ['properties', 'encodedValue'] }
})
try {
@@ -71,15 +71,9 @@ export class SpeckleApiLoader {
visualStore.setLoadingProgress('Download complete', 1)
return objects
} catch (error) {
console.error('Error loading objects:', error)
throw error
} finally {
// ObjectLoader v1 cleanup
if (loader.dispose) {
loader.dispose()
}
}
}
@@ -91,13 +85,12 @@ export class SpeckleApiLoader {
async downloadMultipleModels(objectIds: string[]): Promise<SpeckleObject[][]> {
const allObjects: SpeckleObject[][] = []
for (const objectId of objectIds) {
const objects = await this.downloadObjectsWithChildren(objectId)
allObjects.push(objects)
}
return allObjects
}
}
}