@cognite/reveal 4.2.0-dev.20230410 → 4.2.0-dev.20230412

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.
@@ -2,10 +2,12 @@
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
4
  export { Image360 } from './src/entity/Image360';
5
+ export { Image360Revision } from './src/entity/Image360Revision';
5
6
  export { Image360Collection } from './src/collection/Image360Collection';
6
7
  export { Image360Facade } from './src/Image360Facade';
7
8
  export { Image360CollectionFactory } from './src/collection/Image360CollectionFactory';
8
9
  export { Image360Entity } from './src/entity/Image360Entity';
10
+ export { Image360RevisionEntity } from './src/entity/Image360RevisionEntity';
9
11
  export { Image360Visualization } from './src/entity/Image360Visualization';
10
12
  export { Image360EnteredDelegate, Image360ExitedDelegate } from './src/types';
11
13
  export { DefaultImage360Collection } from './src/collection/DefaultImage360Collection';
@@ -6,6 +6,7 @@ import { Image360Entity } from './entity/Image360Entity';
6
6
  import { Image360CollectionFactory } from './collection/Image360CollectionFactory';
7
7
  import { DefaultImage360Collection } from './collection/DefaultImage360Collection';
8
8
  import { IconCullingScheme } from './icons/IconCollection';
9
+ import { Image360RevisionEntity } from './entity/Image360RevisionEntity';
9
10
  export declare class Image360Facade<T> {
10
11
  private readonly _entityFactory;
11
12
  private readonly _image360Collections;
@@ -18,7 +19,7 @@ export declare class Image360Facade<T> {
18
19
  constructor(_entityFactory: Image360CollectionFactory<T>);
19
20
  create(dataProviderFilter: T, postTransform?: THREE.Matrix4, preComputedRotation?: boolean): Promise<DefaultImage360Collection>;
20
21
  delete(entity: Image360Entity): Promise<void>;
21
- preload(entity: Image360Entity, lockDownload?: boolean): Promise<void>;
22
+ preload(entity: Image360Entity, revision: Image360RevisionEntity, lockDownload?: boolean): Promise<void>;
22
23
  getCollectionContainingEntity(entity: Image360Entity): DefaultImage360Collection;
23
24
  intersect(coords: THREE.Vector2, camera: THREE.Camera): Image360Entity | undefined;
24
25
  dispose(): void;
@@ -2,14 +2,17 @@
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
4
  import { Image360Entity } from '../entity/Image360Entity';
5
+ import { Image360RevisionEntity } from '../entity/Image360RevisionEntity';
5
6
  export type DownloadRequest = {
6
7
  entity: Image360Entity;
8
+ revision: Image360RevisionEntity;
7
9
  firstCompleted: Promise<void>;
8
10
  fullResolutionCompleted: Promise<void>;
9
11
  abort: () => void;
10
12
  };
11
13
  export type Loaded360Image = {
12
14
  entity: Image360Entity;
15
+ revision: Image360RevisionEntity;
13
16
  isFullResolution: boolean;
14
17
  };
15
18
  export declare class Image360LoadingCache {
@@ -18,13 +21,14 @@ export declare class Image360LoadingCache {
18
21
  private readonly _loaded360Images;
19
22
  private readonly _inProgressDownloads;
20
23
  private _lockedDownload;
21
- get cachedEntities(): Image360Entity[];
24
+ get cachedRevisions(): Image360RevisionEntity[];
22
25
  get currentlyLoadingEntities(): DownloadRequest[];
23
- getDownloadInProgress(entity: Image360Entity): DownloadRequest | undefined;
26
+ getDownloadInProgress(revision: Image360RevisionEntity): DownloadRequest | undefined;
24
27
  constructor(_imageCacheSize?: number, _downloadCacheSize?: number);
25
- cachedPreload(entity: Image360Entity, lockDownload?: boolean): Promise<void>;
28
+ cachedPreload(entity: Image360Entity, revision: Image360RevisionEntity, lockDownload?: boolean): Promise<void>;
26
29
  purge(entity: Image360Entity): Promise<void>;
27
- private addEntityToCache;
28
- private abortLastRecentlyReqestedEntity;
30
+ private addRevisionToCache;
31
+ private abortLastRecentlyReqestedRevision;
29
32
  private createAbortSignal;
33
+ private isRevisionVisible;
30
34
  }
@@ -15,9 +15,18 @@ export declare class DefaultImage360Collection implements Image360Collection {
15
15
  * A list containing all the 360 images in this set.
16
16
  */
17
17
  readonly image360Entities: Image360Entity[];
18
+ /**
19
+ * If defined, any subsequently entered 360 images will load the revision that are closest to the target date.
20
+ * If undefined, the most recent revision will be loaded.
21
+ */
22
+ private _targetRevisionDate;
18
23
  private readonly _events;
19
24
  private readonly _icons;
20
25
  private _isCollectionVisible;
26
+ private readonly _collectionId;
27
+ get id(): string;
28
+ get targetRevisionDate(): Date | undefined;
29
+ set targetRevisionDate(date: Date | undefined);
21
30
  /**
22
31
  * The events from the image collection.
23
32
  */
@@ -26,7 +35,7 @@ export declare class DefaultImage360Collection implements Image360Collection {
26
35
  image360Exited: EventTrigger<Image360ExitedDelegate>;
27
36
  };
28
37
  get isCollectionVisible(): boolean;
29
- constructor(entities: Image360Entity[], icons: IconCollection);
38
+ constructor(collectionId: string, entities: Image360Entity[], icons: IconCollection);
30
39
  /**
31
40
  * Subscribes to events on 360 Image datasets. There are several event types:
32
41
  * 'image360Entered' - Subscribes to a event for entering 360 image mode.
@@ -11,6 +11,11 @@ export interface Image360Collection {
11
11
  * A list containing all the 360 images in this set.
12
12
  */
13
13
  readonly image360Entities: Image360[];
14
+ /**
15
+ * If defined, any subsequently entered 360 images will load the revision that are closest to the target date.
16
+ * If undefined, the most recent revision will be loaded.
17
+ */
18
+ targetRevisionDate: Date | undefined;
14
19
  /**
15
20
  * Specify parameters used to determine the number of icons that are visible when entering 360 Images.
16
21
  * @param radius Only icons within the given radius will be made visible.
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
+ import { Image360Revision } from './Image360Revision';
4
5
  import { Image360Visualization } from './Image360Visualization';
5
6
  export interface Image360 {
6
7
  /**
@@ -14,4 +15,14 @@ export interface Image360 {
14
15
  * @returns Image360Visualization
15
16
  */
16
17
  readonly image360Visualization: Image360Visualization;
18
+ /**
19
+ * List all historical images for this entity.
20
+ * @returns A list of available revisions.
21
+ */
22
+ getRevisions(): Image360Revision[];
23
+ /**
24
+ * Get the revision that is currently loaded for this entry.
25
+ * @returns The active revision.
26
+ */
27
+ getActiveRevision(): Image360Revision;
17
28
  }
@@ -1,19 +1,19 @@
1
1
  /*!
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
- import * as THREE from 'three';
5
4
  import { SceneHandler } from '../../../utilities';
6
- import { Image360Descriptor, Image360FileProvider } from '../../../data-providers';
5
+ import { Image360FileProvider } from '../../../data-providers';
7
6
  import { Image360Icon } from '../icons/Image360Icon';
8
- import { Image360VisualizationBox } from './Image360VisualizationBox';
9
7
  import { Image360 } from './Image360';
8
+ import { Historical360ImageSet } from '../../../data-providers/src/types';
9
+ import { Image360RevisionEntity } from './Image360RevisionEntity';
10
+ import { Image360VisualizationBox } from './Image360VisualizationBox';
10
11
  export declare class Image360Entity implements Image360 {
11
- private readonly _imageProvider;
12
- private readonly _image360Metadata;
12
+ private readonly _revisions;
13
13
  private readonly _transform;
14
14
  private readonly _image360Icon;
15
15
  private readonly _image360VisualzationBox;
16
- private _getFullResolutionTextures;
16
+ private _activeRevision;
17
17
  /**
18
18
  * Get a copy of the model-to-world transformation matrix
19
19
  * of the given 360 image.
@@ -31,31 +31,28 @@ export declare class Image360Entity implements Image360 {
31
31
  * @returns Image360Visualization
32
32
  */
33
33
  get image360Visualization(): Image360VisualizationBox;
34
- constructor(image360Metadata: Image360Descriptor, sceneHandler: SceneHandler, imageProvider: Image360FileProvider, transform: THREE.Matrix4, icon: Image360Icon);
34
+ constructor(image360Metadata: Historical360ImageSet, sceneHandler: SceneHandler, imageProvider: Image360FileProvider, transform: THREE.Matrix4, icon: Image360Icon);
35
+ /**
36
+ * List all historical images for this entity.
37
+ * @returns A list of available revisions.
38
+ */
39
+ getRevisions(): Image360RevisionEntity[];
35
40
  /**
36
- * Loads the 360 image (6 faces) into the visualization object.
37
- *
38
- * This will start the download of both low and full resolution images and return one promise for when the first image set is ready
39
- * and one promise for when both downloads are completed. If the low resolution images are completed first the full resolution
40
- * download and texture loading will continue in the background, and applyFullResolution can be used to apply full resolution textures
41
- * to the image360VisualzationBox at a desired time.
42
- *
43
- * @returns firstCompleted A promise for when the first set om images has been loaded and applied to the image360VisualzationBox.
44
- * @returns fullResolutionCompleted A promise for when full resolution images are done loading.
41
+ * Get the revision that is currently loaded for this entry.
42
+ * @returns Returns the active revision.
45
43
  */
46
- load360Image(abortSignal?: AbortSignal): {
47
- firstCompleted: Promise<void>;
48
- fullResolutionCompleted: Promise<void>;
49
- };
44
+ getActiveRevision(): Image360RevisionEntity;
45
+ setActiveRevision(revision: Image360RevisionEntity): void;
46
+ getMostRecentRevision(): Image360RevisionEntity;
50
47
  /**
51
- * Apply full resolution textures to the image360VisualzationBox. This has no effect if full resolution has already been applied.
48
+ * Get the revision closest to the provided date.
49
+ * If all revisions are undated the first available revison is returned.
52
50
  */
53
- applyFullResolution(): Promise<void>;
51
+ getRevisionClosestToDate(date: Date): Image360RevisionEntity;
54
52
  /**
55
53
  * Drops the GPU resources for the 360 image
56
- * the icon will be preserved.
57
54
  */
58
- unload360Image(): void;
55
+ unloadImage(): void;
59
56
  /**
60
57
  * @obvious
61
58
  */
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Copyright 2022 Cognite AS
3
+ */
4
+ /**
5
+ * Interface used to manage historical revisions of {@link Image360}.
6
+ * One instance represents one specific image revision.
7
+ */
8
+ export interface Image360Revision {
9
+ /**
10
+ * The date of this revision. Undefined if the revison is undated.
11
+ * @returns Date | undefined
12
+ */
13
+ readonly date: Date | undefined;
14
+ }
@@ -0,0 +1,46 @@
1
+ /*!
2
+ * Copyright 2022 Cognite AS
3
+ */
4
+ import { Image360Descriptor, Image360FileProvider } from '../../../data-providers';
5
+ import { Image360Revision } from './Image360Revision';
6
+ import { Image360VisualizationBox } from './Image360VisualizationBox';
7
+ export declare class Image360RevisionEntity implements Image360Revision {
8
+ private readonly _imageProvider;
9
+ private readonly _image360Descriptor;
10
+ private readonly _image360VisualzationBox;
11
+ private _textures;
12
+ private _getFullResolutionTextures;
13
+ constructor(imageProvider: Image360FileProvider, image360Descriptor: Image360Descriptor, image360VisualzationBox: Image360VisualizationBox);
14
+ /**
15
+ * The date of this revision. Undefined if the revison is undated.
16
+ * @returns Date | undefined
17
+ */
18
+ get date(): Date | undefined;
19
+ /**
20
+ * Loads the textures needed for the 360 image (6 faces).
21
+ *
22
+ * This will start the download of both low and full resolution textures and return one promise for when the first image set is ready
23
+ * and one promise for when both downloads are completed. If the low resolution images are completed first the full resolution
24
+ * download and texture loading will continue in the background, and applyFullResolution can be used to apply full resolution textures
25
+ * to the image360VisualzationBox at a desired time.
26
+ *
27
+ * @returns firstCompleted A promise for when the first set of textures has been loaded.
28
+ * @returns fullResolutionCompleted A promise for when full resolution images are done loading.
29
+ */
30
+ loadTextures(abortSignal?: AbortSignal): {
31
+ firstCompleted: Promise<void>;
32
+ fullResolutionCompleted: Promise<void>;
33
+ };
34
+ /**
35
+ * Clear the cached textures used by this revision.
36
+ */
37
+ clearTextures(): void;
38
+ /**
39
+ * Apply cached textures to the image360VisualzationBox.
40
+ */
41
+ applyTextures(): void;
42
+ /**
43
+ * Apply full resolution textures to the image360VisualzationBox. This has no effect if full resolution has already been applied.
44
+ */
45
+ applyFullResolutionTextures(): Promise<void>;
46
+ }
@@ -20,7 +20,7 @@ export declare class Image360VisualizationBox implements Image360Visualization {
20
20
  set scale(newScale: THREE.Vector3);
21
21
  set renderOrder(newRenderOrder: number);
22
22
  constructor(worldTransform: THREE.Matrix4, sceneHandler: SceneHandler);
23
- loadImages(textures: Image360Texture[]): Promise<void>;
23
+ loadImages(textures: Image360Texture[]): void;
24
24
  loadFaceTextures(faces: Image360Face[]): Promise<Image360Texture[]>;
25
25
  unloadImages(): void;
26
26
  }
@@ -2,8 +2,8 @@
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
4
  import * as THREE from 'three';
5
- import { CogniteClient } from '@cognite/sdk';
6
- import { Image360Collection, Image360Entity, Image360 } from '../../../360-images';
5
+ import { CogniteClient, Metadata } from '@cognite/sdk';
6
+ import { Image360Collection, Image360Entity, Image360, Image360RevisionEntity } from '../../../360-images';
7
7
  import { BeforeSceneRenderedDelegate, EventTrigger, InputHandler, SceneHandler } from '../../../utilities';
8
8
  import { ProxyCameraManager } from '../../../camera-manager';
9
9
  export declare class Image360ApiHelper {
@@ -19,17 +19,16 @@ export declare class Image360ApiHelper {
19
19
  private readonly _onBeforeSceneRenderedEvent;
20
20
  private _cachedCameraManager;
21
21
  constructor(cogniteClient: CogniteClient, sceneHandler: SceneHandler, domElement: HTMLElement, activeCameraManager: ProxyCameraManager, inputHandler: InputHandler, requestRedraw: () => void, onBeforeSceneRendered: EventTrigger<BeforeSceneRenderedDelegate>);
22
- add360ImageSet(eventFilter: {
23
- [key: string]: string;
24
- }, collectionTransform: THREE.Matrix4, preMultipliedRotation: boolean): Promise<Image360Collection>;
22
+ add360ImageSet(eventFilter: Metadata, collectionTransform: THREE.Matrix4, preMultipliedRotation: boolean): Promise<Image360Collection>;
25
23
  remove360Images(entities: Image360[]): Promise<void>;
26
- enter360Image(image360Entity: Image360Entity): Promise<void>;
24
+ enter360Image(image360Entity: Image360Entity, revision?: Image360RevisionEntity): Promise<void>;
27
25
  private transition;
28
26
  private tweenVisualizationAlpha;
29
27
  private tweenVisualizationZoom;
30
28
  private set360CameraManager;
31
29
  exit360Image(): void;
32
30
  dispose(): void;
31
+ private findRevisionIdToEnter;
33
32
  private enter360ImageOnIntersect;
34
33
  intersect360ImageIcons(offsetX: number, offsetY: number): Image360Entity | undefined;
35
34
  private setHoverIconOnIntersect;
@@ -10,7 +10,7 @@ import { CogniteModel } from '../types';
10
10
  import { ViewerState } from '../../utilities/ViewStateHelper';
11
11
  import { CameraManager, CameraChangeDelegate, CameraStopDelegate } from '../../../../camera-manager';
12
12
  import { SupportedModelTypes } from '../../../../model-base';
13
- import { Image360Collection, Image360 } from '../../../../360-images';
13
+ import { Image360Collection, Image360, Image360Revision } from '../../../../360-images';
14
14
  /**
15
15
  * @example
16
16
  * ```js
@@ -284,9 +284,10 @@ export declare class Cognite3DViewer {
284
284
  remove360Images(...image360Entities: Image360[]): Promise<void>;
285
285
  /**
286
286
  * Enter visualization of a 360 image.
287
- * @param image360
287
+ * @param image360 The 360 image to enter.
288
+ * @param revision The image revision to use. If not provided the newest revision will be shown.
288
289
  */
289
- enter360Image(image360: Image360): Promise<void>;
290
+ enter360Image(image360: Image360, revision?: Image360Revision): Promise<void>;
290
291
  /**
291
292
  * Exit visualization of the 360 image.
292
293
  */
@@ -2,12 +2,12 @@
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
4
  import { CogniteClient, Metadata } from '@cognite/sdk';
5
- import { Image360Descriptor, Image360Face, Image360FileDescriptor } from '../types';
5
+ import { Historical360ImageSet, Image360Face, Image360FileDescriptor } from '../types';
6
6
  import { Image360Provider } from '../Image360Provider';
7
7
  export declare class Cdf360ImageEventProvider implements Image360Provider<Metadata> {
8
8
  private readonly _client;
9
9
  constructor(client: CogniteClient);
10
- get360ImageDescriptors(metadataFilter: Metadata, preMultipliedRotation: boolean): Promise<Image360Descriptor[]>;
10
+ get360ImageDescriptors(metadataFilter: Metadata, preMultipliedRotation: boolean): Promise<Historical360ImageSet[]>;
11
11
  get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
12
12
  getLowResolution360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
13
13
  private getFileIds;
@@ -15,7 +15,7 @@ export declare class Cdf360ImageEventProvider implements Image360Provider<Metada
15
15
  private mergeDescriptors;
16
16
  private listEvents;
17
17
  private listFiles;
18
- private getNewestFileInfoSet;
18
+ private sortFileInfoSetByNewest;
19
19
  private getFileBuffers;
20
20
  getIconBuffers(fileIds: {
21
21
  id: number;
@@ -1,9 +1,9 @@
1
1
  import { Image360Provider } from '../Image360Provider';
2
- import { Image360Descriptor, Image360Face, Image360FileDescriptor } from '../types';
2
+ import { Historical360ImageSet, Image360Face, Image360FileDescriptor } from '../types';
3
3
  export declare class Local360ImageProvider implements Image360Provider<unknown> {
4
4
  private readonly _modelUrl;
5
5
  constructor(modelUrl: string);
6
- get360ImageDescriptors(): Promise<Image360Descriptor[]>;
6
+ get360ImageDescriptors(): Promise<Historical360ImageSet[]>;
7
7
  get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
8
8
  getLowResolution360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
9
9
  }
@@ -9,13 +9,17 @@ export interface BinaryFileProvider {
9
9
  getBinaryFile(baseUrl: string, fileName: string, abortSignal?: AbortSignal): Promise<ArrayBuffer>;
10
10
  }
11
11
  export interface Image360DescriptorProvider<T> {
12
- get360ImageDescriptors(metadataFilter: T, preMultipliedRotation: boolean): Promise<Image360Descriptor[]>;
12
+ get360ImageDescriptors(metadataFilter: T, preMultipliedRotation: boolean): Promise<Historical360ImageSet[]>;
13
13
  }
14
14
  export interface Image360FileProvider {
15
15
  get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
16
16
  getLowResolution360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
17
17
  }
18
- export type Image360Descriptor = Image360EventDescriptor & {
18
+ export type Historical360ImageSet = Image360EventDescriptor & {
19
+ imageRevisions: Image360Descriptor[];
20
+ };
21
+ export type Image360Descriptor = {
22
+ timestamp?: number;
19
23
  faceDescriptors: Image360FileDescriptor[];
20
24
  };
21
25
  export type Image360EventDescriptor = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognite/reveal",
3
- "version": "4.2.0-dev.20230410",
3
+ "version": "4.2.0-dev.20230412",
4
4
  "description": "WebGL based 3D viewer for CAD and point clouds processed in Cognite Data Fusion.",
5
5
  "homepage": "https://github.com/cognitedata/reveal/tree/master/viewer",
6
6
  "repository": {
@@ -78,7 +78,7 @@
78
78
  "three-stdlib": "2.21.8"
79
79
  },
80
80
  "devDependencies": {
81
- "@azure/msal-browser": "2.34.0",
81
+ "@azure/msal-browser": "2.35.0",
82
82
  "@cognite/sdk": "8.0.0",
83
83
  "@microsoft/api-extractor": "^7.33.6",
84
84
  "@types/dat.gui": "0.7.9",
@@ -96,12 +96,12 @@
96
96
  "@types/stats": "0.16.30",
97
97
  "@types/three": "0.150.0",
98
98
  "@types/tween.js": "18.5.1",
99
- "@typescript-eslint/eslint-plugin": "5.57.0",
100
- "@typescript-eslint/parser": "5.57.0",
101
- "concurrently": "7.6.0",
99
+ "@typescript-eslint/eslint-plugin": "5.57.1",
100
+ "@typescript-eslint/parser": "5.57.1",
101
+ "concurrently": "8.0.1",
102
102
  "cross-env": "7.0.3",
103
103
  "dat.gui": "0.7.9",
104
- "eslint": "8.37.0",
104
+ "eslint": "8.38.0",
105
105
  "eslint-config-prettier": "8.8.0",
106
106
  "eslint-plugin-header": "3.1.1",
107
107
  "eslint-plugin-jsdoc": "40.1.1",
@@ -110,7 +110,7 @@
110
110
  "eslint-plugin-unused-imports": "2.0.0",
111
111
  "file-loader": "6.2.0",
112
112
  "gl": "6.0.2",
113
- "glob": "9.3.2",
113
+ "glob": "9.3.4",
114
114
  "glslify-loader": "2.0.0",
115
115
  "html-webpack-plugin": "5.5.0",
116
116
  "jest": "29.5.0",
@@ -132,12 +132,12 @@
132
132
  "shx": "0.3.4",
133
133
  "stats.js": "0.17.0",
134
134
  "three": "0.150.1",
135
- "ts-jest": "29.0.5",
135
+ "ts-jest": "29.1.0",
136
136
  "ts-loader": "9.4.2",
137
137
  "tsc-alias": "1.8.5",
138
- "typescript": "5.0.3",
138
+ "typescript": "5.0.4",
139
139
  "wasm-pack": "0.10.3",
140
- "webpack": "5.77.0",
140
+ "webpack": "5.78.0",
141
141
  "webpack-cli": "5.0.1",
142
142
  "webpack-dev-server": "4.13.2",
143
143
  "webpack-node-externals": "3.0.0",