@vived/app 4.17.3 → 4.17.5

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.
@@ -1,4 +1,5 @@
1
1
  /// <reference types="jest" />
2
+ import { AppObjectRepo } from "../../../AppObject";
2
3
  import { AppObject } from "../../../AppObject/AppObject";
3
4
  import { AppRenderingUC } from "../UC/AppRenderingUC";
4
5
  export declare class MockAppRenderingUC extends AppRenderingUC {
@@ -6,3 +7,4 @@ export declare class MockAppRenderingUC extends AppRenderingUC {
6
7
  stopRendering: jest.Mock<any, any>;
7
8
  constructor(appObject: AppObject);
8
9
  }
10
+ export declare function makeMockAppRenderingUC(appObjects: AppObjectRepo): MockAppRenderingUC;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MockAppRenderingUC = void 0;
3
+ exports.makeMockAppRenderingUC = exports.MockAppRenderingUC = void 0;
4
4
  const AppRenderingUC_1 = require("../UC/AppRenderingUC");
5
5
  class MockAppRenderingUC extends AppRenderingUC_1.AppRenderingUC {
6
6
  constructor(appObject) {
@@ -10,3 +10,7 @@ class MockAppRenderingUC extends AppRenderingUC_1.AppRenderingUC {
10
10
  }
11
11
  }
12
12
  exports.MockAppRenderingUC = MockAppRenderingUC;
13
+ function makeMockAppRenderingUC(appObjects) {
14
+ return new MockAppRenderingUC(appObjects.getOrCreate("MockAppRenderingUC"));
15
+ }
16
+ exports.makeMockAppRenderingUC = makeMockAppRenderingUC;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="jest" />
2
+ import { AppObjectRepo } from "../../../AppObject";
2
3
  import { AppObject } from "../../../AppObject/AppObject";
3
4
  import { RenderCanvasUC } from "../UC/RenderCanvasUC";
4
5
  export declare class MockRenderUC extends RenderCanvasUC {
@@ -6,3 +7,4 @@ export declare class MockRenderUC extends RenderCanvasUC {
6
7
  clearCanvas: jest.Mock<any, any>;
7
8
  constructor(appObject: AppObject);
8
9
  }
10
+ export declare function makeMockRenderUC(appObjects: AppObjectRepo): MockRenderUC;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MockRenderUC = void 0;
3
+ exports.makeMockRenderUC = exports.MockRenderUC = void 0;
4
4
  const RenderCanvasUC_1 = require("../UC/RenderCanvasUC");
5
5
  class MockRenderUC extends RenderCanvasUC_1.RenderCanvasUC {
6
6
  constructor(appObject) {
@@ -10,3 +10,7 @@ class MockRenderUC extends RenderCanvasUC_1.RenderCanvasUC {
10
10
  }
11
11
  }
12
12
  exports.MockRenderUC = MockRenderUC;
13
+ function makeMockRenderUC(appObjects) {
14
+ return new MockRenderUC(appObjects.getOrCreate("MockRenderUC"));
15
+ }
16
+ exports.makeMockRenderUC = makeMockRenderUC;
@@ -37,6 +37,5 @@ export declare class ChannelModel extends AppObjectEntity {
37
37
  private _meshList;
38
38
  get meshList(): string[];
39
39
  set meshList(val: string[]);
40
- dispose: () => void;
41
40
  constructor(appObject: AppObject);
42
41
  }
@@ -22,9 +22,6 @@ class ChannelModel extends AppObject_1.AppObjectEntity {
22
22
  this._defaultScale = new Entities_1.MemoizedNumber(1, this.notifyOnChange);
23
23
  this._state = new Entities_1.MemoizedString(ChannelModelState.INIT, this.notifyOnChange);
24
24
  this._meshList = [];
25
- this.dispose = () => {
26
- super.dispose();
27
- };
28
25
  }
29
26
  static addIfMissing(appObj) {
30
27
  const existing = appObj.getComponent(this.type);
@@ -1,12 +1,11 @@
1
1
  import { AppObject, AppObjectEntityRepo, AppObjectRepo } from "../../../AppObject";
2
2
  import { ChannelModel } from "./ChannelModel";
3
- export declare class ChannelModelRepo extends AppObjectEntityRepo<ChannelModel> {
3
+ export declare abstract class ChannelModelRepo extends AppObjectEntityRepo<ChannelModel> {
4
4
  static readonly type = "CHANNEL_MODEL_REPO";
5
+ abstract get isLoadingChannelModel(): boolean;
6
+ abstract set isLoadingChannelModel(val: boolean);
7
+ abstract getChannelModel(id: string, createIfMissing: boolean): ChannelModel | undefined;
8
+ abstract channelModelFactory(id: string): ChannelModel;
5
9
  static get: (appObjects: AppObjectRepo) => ChannelModelRepo | undefined;
6
- static addToAO(appObj: AppObject): ChannelModelRepo;
7
- private memoizedIsLoading;
8
- get isLoadingChannelModel(): boolean;
9
- set isLoadingChannelModel(val: boolean);
10
- makeIfMissing(appObject: AppObject): ChannelModel;
11
- constructor(appObject: AppObject);
12
10
  }
11
+ export declare function makeChannelModelRepo(appObject: AppObject): ChannelModelRepo;
@@ -1,16 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChannelModelRepo = void 0;
3
+ exports.makeChannelModelRepo = exports.ChannelModelRepo = void 0;
4
4
  const AppObject_1 = require("../../../AppObject");
5
5
  const Entities_1 = require("../../../Entities");
6
6
  const ChannelModel_1 = require("./ChannelModel");
7
7
  class ChannelModelRepo extends AppObject_1.AppObjectEntityRepo {
8
+ }
9
+ exports.ChannelModelRepo = ChannelModelRepo;
10
+ ChannelModelRepo.type = "CHANNEL_MODEL_REPO";
11
+ ChannelModelRepo.get = (appObjects) => AppObject_1.getSingletonComponent(ChannelModelRepo.type, appObjects);
12
+ function makeChannelModelRepo(appObject) {
13
+ return new ChannelModelRepoImp(appObject);
14
+ }
15
+ exports.makeChannelModelRepo = makeChannelModelRepo;
16
+ class ChannelModelRepoImp extends ChannelModelRepo {
8
17
  constructor(appObject) {
9
18
  super(appObject, ChannelModelRepo.type);
10
19
  this.memoizedIsLoading = new Entities_1.MemoizedBoolean(false, this.notifyOnChange);
11
- }
12
- static addToAO(appObj) {
13
- return new ChannelModelRepo(appObj);
20
+ this.getChannelModel = (id, createIfMissing) => {
21
+ let rVal = this.getForAppObject(id);
22
+ if (rVal === undefined && createIfMissing) {
23
+ rVal = this.channelModelFactory(id);
24
+ this.add(rVal);
25
+ }
26
+ return rVal;
27
+ };
28
+ this.channelModelFactory = (id) => {
29
+ const ao = this.appObjects.getOrCreate(id);
30
+ return new ChannelModel_1.ChannelModel(ao);
31
+ };
14
32
  }
15
33
  get isLoadingChannelModel() {
16
34
  return this.memoizedIsLoading.val;
@@ -18,18 +36,4 @@ class ChannelModelRepo extends AppObject_1.AppObjectEntityRepo {
18
36
  set isLoadingChannelModel(val) {
19
37
  this.memoizedIsLoading.val = val;
20
38
  }
21
- makeIfMissing(appObject) {
22
- const existing = this.getForAppObject(appObject.id);
23
- if (existing) {
24
- return existing;
25
- }
26
- else {
27
- const newEntity = new ChannelModel_1.ChannelModel(appObject);
28
- this.add(newEntity);
29
- return newEntity;
30
- }
31
- }
32
39
  }
33
- exports.ChannelModelRepo = ChannelModelRepo;
34
- ChannelModelRepo.type = "CHANNEL_MODEL_REPO";
35
- ChannelModelRepo.get = (appObjects) => AppObject_1.getSingletonComponent(ChannelModelRepo.type, appObjects);
@@ -0,0 +1,8 @@
1
+ /// <reference types="jest" />
2
+ import { AppObject, AppObjectRepo } from "../../../AppObject";
3
+ import { ProcessChannelModelUC } from "../UC";
4
+ export declare class ProcessChannelModelUCMock extends ProcessChannelModelUC {
5
+ processChannelModel: jest.Mock<any, any>;
6
+ constructor(appObject: AppObject);
7
+ }
8
+ export declare function makeProcessChannelModelUCMock(appObjects: AppObjectRepo): ProcessChannelModelUCMock;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeProcessChannelModelUCMock = exports.ProcessChannelModelUCMock = void 0;
4
+ const UC_1 = require("../UC");
5
+ class ProcessChannelModelUCMock extends UC_1.ProcessChannelModelUC {
6
+ constructor(appObject) {
7
+ super(appObject, UC_1.ProcessChannelModelUC.type);
8
+ this.processChannelModel = jest.fn().mockResolvedValue(undefined);
9
+ }
10
+ }
11
+ exports.ProcessChannelModelUCMock = ProcessChannelModelUCMock;
12
+ function makeProcessChannelModelUCMock(appObjects) {
13
+ return new ProcessChannelModelUCMock(appObjects.getOrCreate("ProcessChannelModelUCMock"));
14
+ }
15
+ exports.makeProcessChannelModelUCMock = makeProcessChannelModelUCMock;
@@ -31,18 +31,20 @@ exports.makeSetupChannelModelUC = makeSetupChannelModelUC;
31
31
  class SetupChannelModelUCImp extends SetupChannelModelUC {
32
32
  constructor(appObject) {
33
33
  super(appObject, SetupChannelModelUC.type);
34
+ this.closeSpinner = () => {
35
+ // default spinner close
36
+ };
34
37
  this.setupChannelModel = (modelID) => __awaiter(this, void 0, void 0, function* () {
35
- const channelModelRepo = this.appObject.getComponent(Entities_1.ChannelModelRepo.type);
38
+ const channelModelRepo = this.channelModelRepo;
36
39
  if (!channelModelRepo) {
37
40
  this.warn("Unable to get channelModelRepo from the model repo App Object");
38
41
  return Promise.reject(new Error("No Channel Model Repo"));
39
42
  }
40
- const processModel = ProcessChannelModelUC_1.ProcessChannelModelUC.get(this.appObjects);
43
+ const processModel = this.processModel;
41
44
  if (!processModel) {
42
45
  return Promise.reject(new Error("No Process ModelUC"));
43
46
  }
44
- const appObj = this.appObjects.getOrCreate(modelID);
45
- const channelModel = channelModelRepo.makeIfMissing(appObj);
47
+ const channelModel = channelModelRepo.getChannelModel(modelID, true);
46
48
  if (channelModel.state === Entities_1.ChannelModelState.LOADING) {
47
49
  return Promise.resolve(channelModel);
48
50
  }
@@ -52,12 +54,8 @@ class SetupChannelModelUCImp extends SetupChannelModelUC {
52
54
  channelModel.modelError = undefined;
53
55
  channelModel.state = Entities_1.ChannelModelState.LOADING;
54
56
  channelModelRepo.isLoadingChannelModel = true;
55
- const spinner = Dispatcher_1.ShowSpinnerUC.get(this.appObjects);
56
- let closeSpinner = () => {
57
- // done
58
- };
59
- if (spinner) {
60
- closeSpinner = yield spinner.showSpinner("Loading active model and data", "Loading...");
57
+ if (this.showSpinnerUC) {
58
+ this.closeSpinner = yield this.showSpinnerUC.showSpinner("Loading active model and data", "Loading...");
61
59
  }
62
60
  try {
63
61
  const { bounds_max, bounds_min, defaultPosition, defaultRotation, defaultScale, name, objects, } = yield this.modelDataLoader(modelID);
@@ -78,7 +76,7 @@ class SetupChannelModelUCImp extends SetupChannelModelUC {
78
76
  channelModel.state = Entities_1.ChannelModelState.READY;
79
77
  channelModelRepo.isLoadingChannelModel = false;
80
78
  Dispatcher_1.dispatchStateChange(this.appObjects);
81
- closeSpinner();
79
+ this.closeSpinner();
82
80
  return Promise.resolve(channelModel);
83
81
  }
84
82
  catch (e) {
@@ -87,7 +85,7 @@ class SetupChannelModelUCImp extends SetupChannelModelUC {
87
85
  channelModelRepo.isLoadingChannelModel = false;
88
86
  }
89
87
  channelModel.modelError = error;
90
- closeSpinner();
88
+ this.closeSpinner();
91
89
  const alertDTO = {
92
90
  title: "Load Error",
93
91
  message: `Failed to Load the Model and Data. Error message: ${error.message}`,
@@ -106,6 +104,16 @@ class SetupChannelModelUCImp extends SetupChannelModelUC {
106
104
  return Promise.reject(error);
107
105
  }
108
106
  });
107
+ this.appObjects.registerSingleton(this);
108
+ }
109
+ get channelModelRepo() {
110
+ return this.getCachedSingleton(Entities_1.ChannelModelRepo.type);
111
+ }
112
+ get processModel() {
113
+ return this.getCachedSingleton(ProcessChannelModelUC_1.ProcessChannelModelUC.type);
114
+ }
115
+ get showSpinnerUC() {
116
+ return this.getCachedSingleton(Dispatcher_1.ShowSpinnerUC.type);
109
117
  }
110
118
  setupMeshObject(id, label, meshPaths) {
111
119
  const appObj = this.appObjects.getOrCreate(id);
@@ -9,7 +9,6 @@ export interface ChannelModelDataMeshDTOv0 {
9
9
  meshPaths: string[];
10
10
  label: string;
11
11
  }
12
- export declare type ChannelModelDTO = ChannelModelDTOv0 | ChannelModelDTOv1;
13
12
  export interface ChannelModelDTOv0 {
14
13
  version: number;
15
14
  objects: ChannelModelDataMeshDTOv0[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vived/app",
3
- "version": "4.17.3",
3
+ "version": "4.17.5",
4
4
  "description": "Public package for the VIVED Learning App system",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",