@etsoo/appscript 1.6.28 → 1.6.29

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.
@@ -354,6 +354,12 @@ export declare abstract class CoreApp<U extends IUser, S extends IAppSettings, N
354
354
  * @param onReady On ready callback
355
355
  */
356
356
  changeCulture(culture: DataTypes.CultureDefinition): Promise<DataTypes.StringRecord>;
357
+ /**
358
+ * Load custom resources, override to implement custom resources
359
+ * @param resources Resources
360
+ * @param culture Culture name
361
+ */
362
+ protected loadCustomResources(resources: DataTypes.StringRecord, culture: string): Promise<void> | void;
357
363
  /**
358
364
  * Update current region label
359
365
  */
@@ -829,9 +829,17 @@ class CoreApp {
829
829
  // Set static resources back
830
830
  culture.resources = resources;
831
831
  }
832
+ // Load system custom resources
833
+ await this.loadCustomResources(resources, name);
832
834
  this.updateRegionLabel();
833
835
  return resources;
834
836
  }
837
+ /**
838
+ * Load custom resources, override to implement custom resources
839
+ * @param resources Resources
840
+ * @param culture Culture name
841
+ */
842
+ loadCustomResources(resources, culture) { }
835
843
  /**
836
844
  * Update current region label
837
845
  */
@@ -1,4 +1,5 @@
1
- import { ListType } from "@etsoo/shared";
1
+ import { DataTypes, ListType } from "@etsoo/shared";
2
+ import { CustomCultureData } from "../def/CustomCulture";
2
3
  /**
3
4
  * Business utils
4
5
  */
@@ -18,4 +19,11 @@ export declare namespace BusinessUtils {
18
19
  * @returns 12 months
19
20
  */
20
21
  function getMonths(monthLabels: string[], startMonth?: number): ListType[];
22
+ /**
23
+ * Merge custom resources to target collection
24
+ * @param target Target collection merges to
25
+ * @param resources New resources to merge
26
+ */
27
+ function mergeCustomResources(target: DataTypes.StringRecord, resources: CustomCultureData[]): void;
28
+ function restoreResources(target?: DataTypes.StringRecord): void;
21
29
  }
@@ -6,6 +6,7 @@ exports.BusinessUtils = void 0;
6
6
  */
7
7
  var BusinessUtils;
8
8
  (function (BusinessUtils) {
9
+ let resourcesCache = {};
9
10
  /**
10
11
  * Format avatar title
11
12
  * @param title Title
@@ -55,4 +56,41 @@ var BusinessUtils;
55
56
  return months;
56
57
  }
57
58
  BusinessUtils.getMonths = getMonths;
59
+ /**
60
+ * Merge custom resources to target collection
61
+ * @param target Target collection merges to
62
+ * @param resources New resources to merge
63
+ */
64
+ function mergeCustomResources(target, resources) {
65
+ for (const item of resources) {
66
+ if (item.organizationId) {
67
+ // Backup
68
+ const backup = target[item.id];
69
+ if (backup != null &&
70
+ (typeof backup !== "object" || !("organizationId" in backup))) {
71
+ resourcesCache[item.id] = backup;
72
+ }
73
+ }
74
+ if (item.description || item.jsonData) {
75
+ const { id, ...rest } = item;
76
+ target[item.id] = rest;
77
+ }
78
+ else {
79
+ target[item.id] = item.title;
80
+ }
81
+ }
82
+ }
83
+ BusinessUtils.mergeCustomResources = mergeCustomResources;
84
+ function restoreResources(target) {
85
+ // Clear cache if no target
86
+ if (target == null) {
87
+ resourcesCache = {};
88
+ return;
89
+ }
90
+ // Restore resources
91
+ for (const key in resourcesCache) {
92
+ target[key] = resourcesCache[key];
93
+ }
94
+ }
95
+ BusinessUtils.restoreResources = restoreResources;
58
96
  })(BusinessUtils || (exports.BusinessUtils = BusinessUtils = {}));
@@ -1,15 +1,11 @@
1
1
  /**
2
- * Custom culture
2
+ * Custom culture data
3
3
  */
4
- export type CustomCulture = {
4
+ export type CustomCultureData = {
5
5
  /**
6
6
  * Target id
7
7
  */
8
8
  id: string;
9
- /**
10
- * Culture, like zh-Hans
11
- */
12
- culture: string;
13
9
  /**
14
10
  * Organization id
15
11
  */
@@ -28,3 +24,12 @@ export type CustomCulture = {
28
24
  */
29
25
  jsonData?: string;
30
26
  };
27
+ /**
28
+ * Custom culture
29
+ */
30
+ export type CustomCulture = CustomCultureData & {
31
+ /**
32
+ * Culture, like zh-Hans
33
+ */
34
+ culture: string;
35
+ };
@@ -354,6 +354,12 @@ export declare abstract class CoreApp<U extends IUser, S extends IAppSettings, N
354
354
  * @param onReady On ready callback
355
355
  */
356
356
  changeCulture(culture: DataTypes.CultureDefinition): Promise<DataTypes.StringRecord>;
357
+ /**
358
+ * Load custom resources, override to implement custom resources
359
+ * @param resources Resources
360
+ * @param culture Culture name
361
+ */
362
+ protected loadCustomResources(resources: DataTypes.StringRecord, culture: string): Promise<void> | void;
357
363
  /**
358
364
  * Update current region label
359
365
  */
@@ -826,9 +826,17 @@ export class CoreApp {
826
826
  // Set static resources back
827
827
  culture.resources = resources;
828
828
  }
829
+ // Load system custom resources
830
+ await this.loadCustomResources(resources, name);
829
831
  this.updateRegionLabel();
830
832
  return resources;
831
833
  }
834
+ /**
835
+ * Load custom resources, override to implement custom resources
836
+ * @param resources Resources
837
+ * @param culture Culture name
838
+ */
839
+ loadCustomResources(resources, culture) { }
832
840
  /**
833
841
  * Update current region label
834
842
  */
@@ -1,4 +1,5 @@
1
- import { ListType } from "@etsoo/shared";
1
+ import { DataTypes, ListType } from "@etsoo/shared";
2
+ import { CustomCultureData } from "../def/CustomCulture";
2
3
  /**
3
4
  * Business utils
4
5
  */
@@ -18,4 +19,11 @@ export declare namespace BusinessUtils {
18
19
  * @returns 12 months
19
20
  */
20
21
  function getMonths(monthLabels: string[], startMonth?: number): ListType[];
22
+ /**
23
+ * Merge custom resources to target collection
24
+ * @param target Target collection merges to
25
+ * @param resources New resources to merge
26
+ */
27
+ function mergeCustomResources(target: DataTypes.StringRecord, resources: CustomCultureData[]): void;
28
+ function restoreResources(target?: DataTypes.StringRecord): void;
21
29
  }
@@ -3,6 +3,7 @@
3
3
  */
4
4
  export var BusinessUtils;
5
5
  (function (BusinessUtils) {
6
+ let resourcesCache = {};
6
7
  /**
7
8
  * Format avatar title
8
9
  * @param title Title
@@ -52,4 +53,41 @@ export var BusinessUtils;
52
53
  return months;
53
54
  }
54
55
  BusinessUtils.getMonths = getMonths;
56
+ /**
57
+ * Merge custom resources to target collection
58
+ * @param target Target collection merges to
59
+ * @param resources New resources to merge
60
+ */
61
+ function mergeCustomResources(target, resources) {
62
+ for (const item of resources) {
63
+ if (item.organizationId) {
64
+ // Backup
65
+ const backup = target[item.id];
66
+ if (backup != null &&
67
+ (typeof backup !== "object" || !("organizationId" in backup))) {
68
+ resourcesCache[item.id] = backup;
69
+ }
70
+ }
71
+ if (item.description || item.jsonData) {
72
+ const { id, ...rest } = item;
73
+ target[item.id] = rest;
74
+ }
75
+ else {
76
+ target[item.id] = item.title;
77
+ }
78
+ }
79
+ }
80
+ BusinessUtils.mergeCustomResources = mergeCustomResources;
81
+ function restoreResources(target) {
82
+ // Clear cache if no target
83
+ if (target == null) {
84
+ resourcesCache = {};
85
+ return;
86
+ }
87
+ // Restore resources
88
+ for (const key in resourcesCache) {
89
+ target[key] = resourcesCache[key];
90
+ }
91
+ }
92
+ BusinessUtils.restoreResources = restoreResources;
55
93
  })(BusinessUtils || (BusinessUtils = {}));
@@ -1,15 +1,11 @@
1
1
  /**
2
- * Custom culture
2
+ * Custom culture data
3
3
  */
4
- export type CustomCulture = {
4
+ export type CustomCultureData = {
5
5
  /**
6
6
  * Target id
7
7
  */
8
8
  id: string;
9
- /**
10
- * Culture, like zh-Hans
11
- */
12
- culture: string;
13
9
  /**
14
10
  * Organization id
15
11
  */
@@ -28,3 +24,12 @@ export type CustomCulture = {
28
24
  */
29
25
  jsonData?: string;
30
26
  };
27
+ /**
28
+ * Custom culture
29
+ */
30
+ export type CustomCulture = CustomCultureData & {
31
+ /**
32
+ * Culture, like zh-Hans
33
+ */
34
+ culture: string;
35
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/appscript",
3
- "version": "1.6.28",
3
+ "version": "1.6.29",
4
4
  "description": "Applications shared TypeScript framework",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -1229,11 +1229,25 @@ export abstract class CoreApp<
1229
1229
  // Set static resources back
1230
1230
  culture.resources = resources;
1231
1231
  }
1232
+
1233
+ // Load system custom resources
1234
+ await this.loadCustomResources(resources, name);
1235
+
1232
1236
  this.updateRegionLabel();
1233
1237
 
1234
1238
  return resources;
1235
1239
  }
1236
1240
 
1241
+ /**
1242
+ * Load custom resources, override to implement custom resources
1243
+ * @param resources Resources
1244
+ * @param culture Culture name
1245
+ */
1246
+ protected loadCustomResources(
1247
+ resources: DataTypes.StringRecord,
1248
+ culture: string
1249
+ ): Promise<void> | void {}
1250
+
1237
1251
  /**
1238
1252
  * Update current region label
1239
1253
  */
@@ -1,9 +1,12 @@
1
- import { ListType } from "@etsoo/shared";
1
+ import { DataTypes, ListType } from "@etsoo/shared";
2
+ import { CustomCultureData } from "../def/CustomCulture";
2
3
 
3
4
  /**
4
5
  * Business utils
5
6
  */
6
7
  export namespace BusinessUtils {
8
+ let resourcesCache: DataTypes.StringRecord = {};
9
+
7
10
  /**
8
11
  * Format avatar title
9
12
  * @param title Title
@@ -62,4 +65,47 @@ export namespace BusinessUtils {
62
65
 
63
66
  return months;
64
67
  }
68
+
69
+ /**
70
+ * Merge custom resources to target collection
71
+ * @param target Target collection merges to
72
+ * @param resources New resources to merge
73
+ */
74
+ export function mergeCustomResources(
75
+ target: DataTypes.StringRecord,
76
+ resources: CustomCultureData[]
77
+ ) {
78
+ for (const item of resources) {
79
+ if (item.organizationId) {
80
+ // Backup
81
+ const backup = target[item.id];
82
+ if (
83
+ backup != null &&
84
+ (typeof backup !== "object" || !("organizationId" in backup))
85
+ ) {
86
+ resourcesCache[item.id] = backup;
87
+ }
88
+ }
89
+
90
+ if (item.description || item.jsonData) {
91
+ const { id, ...rest } = item;
92
+ target[item.id] = rest;
93
+ } else {
94
+ target[item.id] = item.title;
95
+ }
96
+ }
97
+ }
98
+
99
+ export function restoreResources(target?: DataTypes.StringRecord) {
100
+ // Clear cache if no target
101
+ if (target == null) {
102
+ resourcesCache = {};
103
+ return;
104
+ }
105
+
106
+ // Restore resources
107
+ for (const key in resourcesCache) {
108
+ target[key] = resourcesCache[key];
109
+ }
110
+ }
65
111
  }
@@ -1,17 +1,12 @@
1
1
  /**
2
- * Custom culture
2
+ * Custom culture data
3
3
  */
4
- export type CustomCulture = {
4
+ export type CustomCultureData = {
5
5
  /**
6
6
  * Target id
7
7
  */
8
8
  id: string;
9
9
 
10
- /**
11
- * Culture, like zh-Hans
12
- */
13
- culture: string;
14
-
15
10
  /**
16
11
  * Organization id
17
12
  */
@@ -33,3 +28,13 @@ export type CustomCulture = {
33
28
  */
34
29
  jsonData?: string;
35
30
  };
31
+
32
+ /**
33
+ * Custom culture
34
+ */
35
+ export type CustomCulture = CustomCultureData & {
36
+ /**
37
+ * Culture, like zh-Hans
38
+ */
39
+ culture: string;
40
+ };