tm1npm 1.6.0 → 2.1.0
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.
- package/CHANGELOG.md +89 -0
- package/lib/objects/Axis.d.ts +1 -0
- package/lib/objects/Axis.d.ts.map +1 -1
- package/lib/objects/Axis.js +3 -0
- package/lib/objects/Chore.d.ts +2 -2
- package/lib/objects/Chore.d.ts.map +1 -1
- package/lib/objects/Chore.js +7 -13
- package/lib/objects/Cube.d.ts.map +1 -1
- package/lib/objects/Cube.js +2 -1
- package/lib/objects/Hierarchy.js +10 -10
- package/lib/objects/MDXView.d.ts +2 -0
- package/lib/objects/MDXView.d.ts.map +1 -1
- package/lib/objects/MDXView.js +30 -9
- package/lib/objects/NativeView.d.ts +5 -5
- package/lib/objects/NativeView.d.ts.map +1 -1
- package/lib/objects/NativeView.js +17 -34
- package/lib/objects/Process.d.ts +8 -3
- package/lib/objects/Process.d.ts.map +1 -1
- package/lib/objects/Process.js +143 -33
- package/lib/objects/Subset.d.ts.map +1 -1
- package/lib/objects/Subset.js +10 -3
- package/lib/objects/User.d.ts +5 -5
- package/lib/objects/User.d.ts.map +1 -1
- package/lib/objects/User.js +14 -23
- package/lib/services/ApplicationService.d.ts.map +1 -1
- package/lib/services/AsyncOperationService.d.ts +8 -1
- package/lib/services/AsyncOperationService.d.ts.map +1 -1
- package/lib/services/AsyncOperationService.js +69 -26
- package/lib/services/FileService.d.ts.map +1 -1
- package/lib/services/ProcessService.d.ts +18 -13
- package/lib/services/ProcessService.d.ts.map +1 -1
- package/lib/services/ProcessService.js +28 -17
- package/lib/services/RestService.d.ts +213 -25
- package/lib/services/RestService.d.ts.map +1 -1
- package/lib/services/RestService.js +840 -271
- package/lib/services/TM1Service.d.ts +42 -1
- package/lib/services/TM1Service.d.ts.map +1 -1
- package/lib/services/TM1Service.js +94 -4
- package/lib/tests/asyncOperationService.test.js +51 -45
- package/lib/tests/debuggerService.test.js +3 -1
- package/lib/tests/objectModelParity.test.js +362 -11
- package/lib/tests/objects.improved.test.js +28 -5
- package/lib/tests/processService.comprehensive.test.js +2 -2
- package/lib/tests/processService.test.js +20 -6
- package/lib/tests/restService.test.d.ts +0 -4
- package/lib/tests/restService.test.d.ts.map +1 -1
- package/lib/tests/restService.test.js +1558 -143
- package/lib/tests/tm1Service.test.js +80 -8
- package/lib/tests/user.issue61.test.d.ts +2 -0
- package/lib/tests/user.issue61.test.d.ts.map +1 -0
- package/lib/tests/user.issue61.test.js +180 -0
- package/lib/utils/Utils.d.ts +6 -1
- package/lib/utils/Utils.d.ts.map +1 -1
- package/lib/utils/Utils.js +56 -7
- package/package.json +1 -1
- package/src/objects/Axis.ts +4 -0
- package/src/objects/Chore.ts +7 -14
- package/src/objects/Cube.ts +2 -1
- package/src/objects/Hierarchy.ts +11 -11
- package/src/objects/MDXView.ts +29 -9
- package/src/objects/NativeView.ts +26 -42
- package/src/objects/Process.ts +182 -66
- package/src/objects/Subset.ts +17 -3
- package/src/objects/User.ts +17 -23
- package/src/services/ApplicationService.ts +4 -4
- package/src/services/AsyncOperationService.ts +76 -29
- package/src/services/FileService.ts +3 -3
- package/src/services/ProcessService.ts +67 -37
- package/src/services/RestService.ts +1020 -278
- package/src/services/TM1Service.ts +124 -6
- package/src/tests/asyncOperationService.test.ts +52 -48
- package/src/tests/debuggerService.test.ts +3 -1
- package/src/tests/objectModelParity.test.ts +456 -11
- package/src/tests/objects.improved.test.ts +41 -9
- package/src/tests/processService.comprehensive.test.ts +3 -3
- package/src/tests/processService.test.ts +21 -9
- package/src/tests/restService.test.ts +1844 -139
- package/src/tests/tm1Service.test.ts +95 -11
- package/src/tests/user.issue61.test.ts +206 -0
- package/src/utils/Utils.ts +60 -7
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here.
|
|
4
|
+
|
|
5
|
+
## 2.0.0 — 2026-04-16
|
|
6
|
+
|
|
7
|
+
### BREAKING CHANGES
|
|
8
|
+
|
|
9
|
+
**RestService HTTP methods now use tm1py-parity semantics**
|
|
10
|
+
(see [#80](https://github.com/KimKaoPoo/tm1npm/pull/95)).
|
|
11
|
+
|
|
12
|
+
- **Timeout unit is seconds, not milliseconds.** `get/post/patch/put/delete`
|
|
13
|
+
now accept a `RequestOptions` object (extending `Omit<AxiosRequestConfig,
|
|
14
|
+
'timeout'>`) whose `timeout` is specified in seconds to match tm1py's
|
|
15
|
+
`RestService.request(timeout: float)`. The value is converted to
|
|
16
|
+
milliseconds internally before reaching Axios.
|
|
17
|
+
- Migration: `rest.get(url, { timeout: 30000 })` → `rest.get(url, { timeout: 30 })`.
|
|
18
|
+
- TypeScript will **not** flag the change because both old and new
|
|
19
|
+
values are `number`; audit call sites before upgrading.
|
|
20
|
+
- Heuristic to find likely millisecond-valued call sites:
|
|
21
|
+
```
|
|
22
|
+
rg -n 'rest\.(get|post|patch|put|delete).*timeout:\s*\d{4,}' src/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- **`retrieve_async_response` now returns the full `AxiosResponse`**
|
|
26
|
+
instead of `response.data`. This matches tm1py's `retrieve_async_response`
|
|
27
|
+
which returns `requests.Response`.
|
|
28
|
+
- Migration: `(await rest.retrieve_async_response(id)).Status` →
|
|
29
|
+
`(await rest.retrieve_async_response(id)).data.Status`.
|
|
30
|
+
|
|
31
|
+
- **`get_async_operation_status` was removed.** The `/_async('{id}')`
|
|
32
|
+
endpoint does not expose a `Status` sub-resource, so the helper always
|
|
33
|
+
returned `'Unknown'` on real servers. Use `retrieve_async_response` and
|
|
34
|
+
inspect the response status instead.
|
|
35
|
+
|
|
36
|
+
- **`wait_for_async_operation` parameter order.** `cancel_at_timeout` is
|
|
37
|
+
now the fourth parameter (after `poll_interval_seconds`) to preserve
|
|
38
|
+
the pre-existing signature of callers passing a polling cadence.
|
|
39
|
+
|
|
40
|
+
- **`getConnectionStats().timeout` is now in seconds** (was
|
|
41
|
+
`(config.timeout || 60) * 1000` i.e. milliseconds). Dashboards or
|
|
42
|
+
logging that compare the value against an ms threshold will need
|
|
43
|
+
updating.
|
|
44
|
+
- Migration: `stats.timeout / 1000` → `stats.timeout` (already seconds).
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
|
|
48
|
+
- Central `_request()` dispatcher in `RestService` that routes to sync or
|
|
49
|
+
async execution and honors new per-request options: `asyncRequestsMode`,
|
|
50
|
+
`returnAsyncId`, `cancelAtTimeout`, `timeout` (seconds), `idempotent`,
|
|
51
|
+
`verifyResponse`.
|
|
52
|
+
- `_executeAsyncRequest` sends `Prefer: respond-async[,wait=55]`, parses
|
|
53
|
+
the `Location` header on `202 Accepted`, and polls `/_async('{id}')`
|
|
54
|
+
via `waitTimeGenerator` (exponential backoff capped at
|
|
55
|
+
`asyncPollingMaxDelay`).
|
|
56
|
+
- `cancel_async_operation` and `retrieve_async_response` now target the
|
|
57
|
+
correct TM1 v12 endpoint `/_async('{id}')` (previously
|
|
58
|
+
`/AsyncOperations('{id}')`). `AsyncOperationService` updated to match.
|
|
59
|
+
- `wait_for_async_operation` detects the `asyncresult` response header
|
|
60
|
+
and throws `TM1RestException` on non-2xx embedded status codes to
|
|
61
|
+
match tm1py's `_transform_async_response` semantics.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- 5xx and network-level retries in the response interceptor now only
|
|
66
|
+
apply when the request is marked `idempotent: true` (default `true`
|
|
67
|
+
for GET, `false` for POST/PATCH/PUT/DELETE).
|
|
68
|
+
- `verifyResponse: false` honors a caller-supplied `validateStatus`
|
|
69
|
+
instead of silently overwriting it.
|
|
70
|
+
- `AsyncOperationService.createAsyncOperation` now marks returned
|
|
71
|
+
operations with `trackedLocally: true` so `getAsyncOperationStatus`
|
|
72
|
+
reads from the in-memory cache instead of polling `/_async('{id}')`
|
|
73
|
+
with a client-side UUID (which the server does not recognize).
|
|
74
|
+
`ProcessService.executeWithReturnAsync` / `pollProcessExecution`
|
|
75
|
+
depend on this behavior for their background-resolve pattern.
|
|
76
|
+
- `retrieve_async_response` no longer throws on non-2xx statuses; it
|
|
77
|
+
returns the raw `AxiosResponse` so the internal poller can retry on
|
|
78
|
+
transient 404s (resource not yet materialized) without aborting.
|
|
79
|
+
|
|
80
|
+
### Known Parity Gaps
|
|
81
|
+
|
|
82
|
+
- **No `cancel_running_operation` / thread cancellation on sync
|
|
83
|
+
timeout.** tm1py's `request()` catches `Timeout` / `ConnectionError`
|
|
84
|
+
and calls `cancel_running_operation()` (which uses
|
|
85
|
+
`MonitoringService.cancel_thread()` to abort the server-side thread).
|
|
86
|
+
tm1npm cancels via `DELETE /_async('{id}')` in the async-polling path,
|
|
87
|
+
but has no top-level thread-cancellation fallback for sync-mode
|
|
88
|
+
timeouts or pre-202 async timeouts. Tracked for a future PR once
|
|
89
|
+
`MonitoringService.cancelThread` is implemented.
|
package/lib/objects/Axis.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export declare class ViewTitleSelection {
|
|
|
25
25
|
private _selected;
|
|
26
26
|
constructor(dimensionName: string, subset: AnonymousSubset | Subset, selected: string);
|
|
27
27
|
get subset(): Subset | AnonymousSubset;
|
|
28
|
+
set subset(value: Subset | AnonymousSubset);
|
|
28
29
|
get dimensionName(): string;
|
|
29
30
|
get hierarchyName(): string;
|
|
30
31
|
get selected(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Axis.d.ts","sourceRoot":"","sources":["../../src/objects/Axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGnD,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C;OACG;IAEH,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAYnE,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,iBAAiB;IAepE,OAAO,CAAC,aAAa;CAqBxB;AAGD,qBAAa,kBAAkB;IAC3B;;OAEG;IAEH,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,SAAS,CAAS;gBAEd,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOrF,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEhC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,kBAAkB;IA+BrE,OAAO,CAAC,aAAa;CA6BxB"}
|
|
1
|
+
{"version":3,"file":"Axis.d.ts","sourceRoot":"","sources":["../../src/objects/Axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGnD,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C;OACG;IAEH,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAYnE,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,iBAAiB;IAepE,OAAO,CAAC,aAAa;CAqBxB;AAGD,qBAAa,kBAAkB;IAC3B;;OAEG;IAEH,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,SAAS,CAAS;gBAEd,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOrF,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAEhD;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEhC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,kBAAkB;IA+BrE,OAAO,CAAC,aAAa;CA6BxB"}
|
package/lib/objects/Axis.js
CHANGED
package/lib/objects/Chore.d.ts
CHANGED
|
@@ -36,12 +36,12 @@ export declare class Chore extends TM1Object {
|
|
|
36
36
|
get body(): string;
|
|
37
37
|
get bodyAsDict(): any;
|
|
38
38
|
private constructBody;
|
|
39
|
-
|
|
39
|
+
setFrequency(frequency: ChoreFrequency, startTime?: ChoreStartTime): void;
|
|
40
40
|
activate(): void;
|
|
41
41
|
deactivate(): void;
|
|
42
42
|
insertTask(newTask: ChoreTask, step?: number): void;
|
|
43
43
|
get executionPath(): Record<string, string[]>;
|
|
44
|
-
|
|
44
|
+
reschedule(days?: number, hours?: number, minutes?: number, seconds?: number): void;
|
|
45
45
|
static fromJson(choreAsJson: string): Chore;
|
|
46
46
|
}
|
|
47
47
|
//# sourceMappingURL=Chore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chore.d.ts","sourceRoot":"","sources":["../../src/objects/Chore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,KAAM,SAAQ,SAAS;IAChC;;OAEG;IACH,gBAAuB,aAAa,kBAAkB;IACtD,gBAAuB,eAAe,oBAAoB;IAE1D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAc;gBAGxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;WAYhB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK;WAUpC,QAAQ,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK;IAkB/C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,cAAc,CAAC,cAAc,EAAE,OAAO,EAEhD;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,CAAC,aAAa,EAAE,MAAM,EAE7C;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,KAAK,IAAI,SAAS,EAAE,CAE9B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAElC;IAEM,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAOtD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,GAAG,CAE3B;IAED,OAAO,CAAC,aAAa;IAYd,
|
|
1
|
+
{"version":3,"file":"Chore.d.ts","sourceRoot":"","sources":["../../src/objects/Chore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,KAAM,SAAQ,SAAS;IAChC;;OAEG;IACH,gBAAuB,aAAa,kBAAkB;IACtD,gBAAuB,eAAe,oBAAoB;IAE1D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAc;gBAGxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;WAYhB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK;WAUpC,QAAQ,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK;IAkB/C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,cAAc,CAAC,cAAc,EAAE,OAAO,EAEhD;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,CAAC,aAAa,EAAE,MAAM,EAE7C;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,KAAK,IAAI,SAAS,EAAE,CAE9B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAElC;IAEM,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAOtD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,GAAG,CAE3B;IAED,OAAO,CAAC,aAAa;IAYd,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI;IAYzE,QAAQ,IAAI,IAAI;IAMhB,UAAU,IAAI,IAAI;IAMlB,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAc1D,IAAW,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASnD;IAEM,UAAU,CAAC,IAAI,GAAE,MAAU,EAAE,KAAK,GAAE,MAAU,EAAE,OAAO,GAAE,MAAU,EAAE,OAAO,GAAE,MAAU,GAAG,IAAI;WAWxF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK;CAOrD"}
|
package/lib/objects/Chore.js
CHANGED
|
@@ -98,11 +98,11 @@ class Chore extends TM1Object_1.TM1Object {
|
|
|
98
98
|
body.Tasks = this._tasks.map(task => task.bodyAsDict);
|
|
99
99
|
return body;
|
|
100
100
|
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
101
|
+
setFrequency(frequency, startTime) {
|
|
102
|
+
/** Replace the chore frequency (and optionally start time)
|
|
103
103
|
*
|
|
104
104
|
* :param frequency: new ChoreFrequency
|
|
105
|
-
* :param
|
|
105
|
+
* :param startTime: new ChoreStartTime (optional)
|
|
106
106
|
*/
|
|
107
107
|
this._frequency = frequency;
|
|
108
108
|
if (startTime) {
|
|
@@ -140,21 +140,15 @@ class Chore extends TM1Object_1.TM1Object {
|
|
|
140
140
|
.map(task => task.processName);
|
|
141
141
|
return { [this._name]: processNames };
|
|
142
142
|
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
143
|
+
reschedule(days = 0, hours = 0, minutes = 0, seconds = 0) {
|
|
144
|
+
/** Reschedule the chore by adding time to the current start time.
|
|
145
|
+
*
|
|
145
146
|
* :param days: Days to add
|
|
146
147
|
* :param hours: Hours to add
|
|
147
148
|
* :param minutes: Minutes to add
|
|
148
149
|
* :param seconds: Seconds to add
|
|
149
150
|
*/
|
|
150
|
-
|
|
151
|
-
const newDateTime = new Date(this._startTime.datetime);
|
|
152
|
-
newDateTime.setDate(newDateTime.getDate() + days);
|
|
153
|
-
newDateTime.setHours(newDateTime.getHours() + hours);
|
|
154
|
-
newDateTime.setMinutes(newDateTime.getMinutes() + minutes);
|
|
155
|
-
newDateTime.setSeconds(newDateTime.getSeconds() + seconds);
|
|
156
|
-
this._startTime = new ChoreStartTime_1.ChoreStartTime(newDateTime, this._startTime.tz);
|
|
157
|
-
}
|
|
151
|
+
this._startTime.add(days, hours, minutes, seconds);
|
|
158
152
|
}
|
|
159
153
|
static fromJson(choreAsJson) {
|
|
160
154
|
/** Alternative constructor from JSON string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cube.d.ts","sourceRoot":"","sources":["../../src/objects/Cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Cube.d.ts","sourceRoot":"","sources":["../../src/objects/Cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,qBAAa,IAAK,SAAQ,SAAS;IAC/B;;OAEG;IAEH,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEX,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK;IAa9E,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,EAAE,CAEhC;IAED,IAAW,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAEpC;IAED,IAAW,QAAQ,IAAI,OAAO,CAK7B;IAED,IAAW,KAAK,IAAI,KAAK,GAAG,SAAS,CAEpC;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,EAUjD;IAED,IAAW,SAAS,IAAI,OAAO,CAK9B;IAED,IAAW,SAAS,IAAI,OAAO,CAK9B;IAED,IAAW,WAAW,IAAI,OAAO,CAKhC;WAEa,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;WAUlC,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAa7C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,GAAG,CAE3B;IAED,OAAO,CAAC,aAAa;CAYxB"}
|
package/lib/objects/Cube.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Cube = void 0;
|
|
4
4
|
const TM1Object_1 = require("./TM1Object");
|
|
5
5
|
const Rules_1 = require("./Rules");
|
|
6
|
+
const Utils_1 = require("../utils/Utils");
|
|
6
7
|
class Cube extends TM1Object_1.TM1Object {
|
|
7
8
|
constructor(name, dimensions, rules) {
|
|
8
9
|
/**
|
|
@@ -97,7 +98,7 @@ class Cube extends TM1Object_1.TM1Object {
|
|
|
97
98
|
constructBody() {
|
|
98
99
|
const body = {
|
|
99
100
|
Name: this._name,
|
|
100
|
-
Dimensions: this._dimensions.map(dim => ({
|
|
101
|
+
"Dimensions@odata.bind": this._dimensions.map(dim => `Dimensions('${(0, Utils_1.buildUrlFriendlyObjectName)(dim)}')`)
|
|
101
102
|
};
|
|
102
103
|
if (this._rules) {
|
|
103
104
|
body.Rules = this._rules.text;
|
package/lib/objects/Hierarchy.js
CHANGED
|
@@ -17,7 +17,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
|
|
|
17
17
|
this._dimensionName = dimensionName;
|
|
18
18
|
if (elements) {
|
|
19
19
|
for (const elem of elements) {
|
|
20
|
-
this._elements.set(elem.name
|
|
20
|
+
this._elements.set((0, Utils_1.lowerAndDropSpaces)(elem.name), elem);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
this._elementAttributes = elementAttributes ? [...elementAttributes] : [];
|
|
@@ -65,7 +65,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
|
|
|
65
65
|
return Array.from(this._elements.values());
|
|
66
66
|
}
|
|
67
67
|
get elementNames() {
|
|
68
|
-
return Array.from(this._elements.
|
|
68
|
+
return Array.from(this._elements.values()).map(e => e.name);
|
|
69
69
|
}
|
|
70
70
|
get elementAttributes() {
|
|
71
71
|
return this._elementAttributes;
|
|
@@ -122,16 +122,16 @@ class Hierarchy extends TM1Object_1.TM1Object {
|
|
|
122
122
|
return edges;
|
|
123
123
|
}
|
|
124
124
|
addElement(element) {
|
|
125
|
-
this._elements.set(element.name
|
|
125
|
+
this._elements.set((0, Utils_1.lowerAndDropSpaces)(element.name), element);
|
|
126
126
|
}
|
|
127
127
|
removeElement(elementName) {
|
|
128
|
-
return this._elements.delete(
|
|
128
|
+
return this._elements.delete((0, Utils_1.lowerAndDropSpaces)(elementName));
|
|
129
129
|
}
|
|
130
130
|
getElement(elementName) {
|
|
131
|
-
return this._elements.get(
|
|
131
|
+
return this._elements.get((0, Utils_1.lowerAndDropSpaces)(elementName));
|
|
132
132
|
}
|
|
133
133
|
hasElement(elementName) {
|
|
134
|
-
return this._elements.has(
|
|
134
|
+
return this._elements.has((0, Utils_1.lowerAndDropSpaces)(elementName));
|
|
135
135
|
}
|
|
136
136
|
addEdge(parentName, componentName, weight = 1) {
|
|
137
137
|
if (!this._edges.has(parentName)) {
|
|
@@ -158,7 +158,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
|
|
|
158
158
|
this._elementAttributes.push(elementAttribute);
|
|
159
159
|
}
|
|
160
160
|
removeElementAttribute(attributeName) {
|
|
161
|
-
const index = this._elementAttributes.findIndex(ea => ea.name
|
|
161
|
+
const index = this._elementAttributes.findIndex(ea => (0, Utils_1.caseAndSpaceInsensitiveEquals)(ea.name, attributeName));
|
|
162
162
|
if (index !== -1) {
|
|
163
163
|
this._elementAttributes.splice(index, 1);
|
|
164
164
|
return true;
|
|
@@ -166,10 +166,10 @@ class Hierarchy extends TM1Object_1.TM1Object {
|
|
|
166
166
|
return false;
|
|
167
167
|
}
|
|
168
168
|
getElementAttribute(attributeName) {
|
|
169
|
-
return this._elementAttributes.find(ea => ea.name
|
|
169
|
+
return this._elementAttributes.find(ea => (0, Utils_1.caseAndSpaceInsensitiveEquals)(ea.name, attributeName));
|
|
170
170
|
}
|
|
171
171
|
hasElementAttribute(attributeName) {
|
|
172
|
-
return this._elementAttributes.some(ea => ea.name
|
|
172
|
+
return this._elementAttributes.some(ea => (0, Utils_1.caseAndSpaceInsensitiveEquals)(ea.name, attributeName));
|
|
173
173
|
}
|
|
174
174
|
getAncestors(elementName, recursive = false) {
|
|
175
175
|
const normalizedTarget = (0, Utils_1.lowerAndDropSpaces)(elementName);
|
|
@@ -260,7 +260,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
|
|
|
260
260
|
const element = this._elements.get(oldKey);
|
|
261
261
|
element.name = newName;
|
|
262
262
|
this._elements.delete(oldKey);
|
|
263
|
-
this._elements.set(
|
|
263
|
+
this._elements.set((0, Utils_1.lowerAndDropSpaces)(newName), element);
|
|
264
264
|
}
|
|
265
265
|
// Rebuild edges replacing all occurrences of oldName
|
|
266
266
|
const newEdges = new Map();
|
package/lib/objects/MDXView.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export declare class MDXView extends View {
|
|
|
4
4
|
*
|
|
5
5
|
* IMPORTANT. MDXViews can't be seen through the old TM1 clients (Archict, Perspectives). They do exist though!
|
|
6
6
|
*/
|
|
7
|
+
private static readonly _DYNAMIC_PROPERTIES_EXCLUDED_KEYS;
|
|
8
|
+
private static _filterDynamicProperties;
|
|
7
9
|
private _mdx;
|
|
8
10
|
private _dynamicProperties;
|
|
9
11
|
constructor(cubeName: string, viewName: string, MDX: string, dynamicProperties?: Record<string, any>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MDXView.d.ts","sourceRoot":"","sources":["../../src/objects/MDXView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,qBAAa,OAAQ,SAAQ,IAAI;IAC7B;;;OAGG;IAEH,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,kBAAkB,CAAsB;gBAEpC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMpG,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAElD;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEtD;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAEM,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;WAkCrE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;WAKxD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IASnE,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"MDXView.d.ts","sourceRoot":"","sources":["../../src/objects/MDXView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,qBAAa,OAAQ,SAAQ,IAAI;IAC7B;;;OAGG;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAStD;IAEH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAUvC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,kBAAkB,CAAsB;gBAEpC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMpG,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAElD;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEtD;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAEM,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;WAkCrE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;WAKxD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IASnE,OAAO,CAAC,aAAa;CASxB"}
|
package/lib/objects/MDXView.js
CHANGED
|
@@ -4,6 +4,15 @@ exports.MDXView = void 0;
|
|
|
4
4
|
const View_1 = require("./View");
|
|
5
5
|
const Utils_1 = require("../utils/Utils");
|
|
6
6
|
class MDXView extends View_1.View {
|
|
7
|
+
static _filterDynamicProperties(properties) {
|
|
8
|
+
const out = {};
|
|
9
|
+
for (const key of Object.keys(properties)) {
|
|
10
|
+
if (!MDXView._DYNAMIC_PROPERTIES_EXCLUDED_KEYS.has(key)) {
|
|
11
|
+
out[key] = properties[key];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return out;
|
|
15
|
+
}
|
|
7
16
|
constructor(cubeName, viewName, MDX, dynamicProperties) {
|
|
8
17
|
super(cubeName, viewName);
|
|
9
18
|
this._mdx = MDX;
|
|
@@ -59,19 +68,31 @@ class MDXView extends View_1.View {
|
|
|
59
68
|
return MDXView.fromDict(viewAsDict, cubeName);
|
|
60
69
|
}
|
|
61
70
|
static fromDict(viewAsDict, cubeName) {
|
|
62
|
-
|
|
63
|
-
return new MDXView(((_a = viewAsDict.Cube) === null || _a === void 0 ? void 0 : _a.Name) || cubeName, viewAsDict.Name, viewAsDict.MDX, viewAsDict.Properties || {});
|
|
71
|
+
return new MDXView(cubeName ? cubeName : viewAsDict.Cube.Name, viewAsDict.Name, viewAsDict.MDX, MDXView._filterDynamicProperties(viewAsDict));
|
|
64
72
|
}
|
|
65
73
|
constructBody() {
|
|
66
|
-
const mdxViewAsDict = {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
74
|
+
const mdxViewAsDict = {
|
|
75
|
+
'@odata.type': 'ibm.tm1.api.v1.MDXView',
|
|
76
|
+
Name: this._name,
|
|
77
|
+
MDX: this._mdx,
|
|
78
|
+
...MDXView._filterDynamicProperties(this._dynamicProperties),
|
|
79
|
+
};
|
|
73
80
|
return JSON.stringify(mdxViewAsDict);
|
|
74
81
|
}
|
|
75
82
|
}
|
|
76
83
|
exports.MDXView = MDXView;
|
|
84
|
+
/** Abstraction on TM1 MDX view
|
|
85
|
+
*
|
|
86
|
+
* IMPORTANT. MDXViews can't be seen through the old TM1 clients (Archict, Perspectives). They do exist though!
|
|
87
|
+
*/
|
|
88
|
+
MDXView._DYNAMIC_PROPERTIES_EXCLUDED_KEYS = new Set([
|
|
89
|
+
'@odata.type',
|
|
90
|
+
'@odata.context',
|
|
91
|
+
'@odata.etag',
|
|
92
|
+
'Name',
|
|
93
|
+
'MDX',
|
|
94
|
+
'Cube',
|
|
95
|
+
'Attributes',
|
|
96
|
+
'LocalizedAttributes',
|
|
97
|
+
]);
|
|
77
98
|
//# sourceMappingURL=MDXView.js.map
|
|
@@ -31,12 +31,12 @@ export declare class NativeView extends View {
|
|
|
31
31
|
addTitle(title: ViewTitleSelection): void;
|
|
32
32
|
addColumn(column: ViewAxisSelection): void;
|
|
33
33
|
addRow(row: ViewAxisSelection): void;
|
|
34
|
-
removeTitle(dimensionName: string):
|
|
35
|
-
removeColumn(dimensionName: string):
|
|
36
|
-
removeRow(dimensionName: string):
|
|
34
|
+
removeTitle(dimensionName: string): void;
|
|
35
|
+
removeColumn(dimensionName: string): void;
|
|
36
|
+
removeRow(dimensionName: string): void;
|
|
37
37
|
substituteTitle(dimension: string, element: string): void;
|
|
38
|
-
static fromJSON(viewAsJson: string, cubeName
|
|
39
|
-
static fromDict(viewAsDict: any, cubeName
|
|
38
|
+
static fromJSON(viewAsJson: string, cubeName?: string): NativeView;
|
|
39
|
+
static fromDict(viewAsDict: any, cubeName?: string): NativeView;
|
|
40
40
|
private constructBody;
|
|
41
41
|
}
|
|
42
42
|
//# sourceMappingURL=NativeView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeView.d.ts","sourceRoot":"","sources":["../../src/objects/NativeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI/D,qBAAa,UAAW,SAAQ,IAAI;IAChC;;;;OAIG;IAEH,OAAO,CAAC,qBAAqB,CAAU;IACvC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAAsB;gBAG/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,oBAAoB,GAAE,OAAe,EACrC,iBAAiB,GAAE,OAAe,EAClC,YAAY,GAAE,MAAsB,EACpC,MAAM,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACrC,IAAI,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAWtC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,iBAAiB,EAAE,CAErC;IAED,IAAW,OAAO,IAAI,iBAAiB,EAAE,CAExC;IAED,IAAW,MAAM,IAAI,kBAAkB,EAAE,CAExC;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,MAAM,CAwDzB;IAED,IAAW,oBAAoB,IAAI,OAAO,CAEzC;IAED,IAAW,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAE7C;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAE1C;IAED,IAAW,kBAAkB,IAAI,OAAO,CAEvC;IAED,IAAW,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAG3C;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAEM,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIzC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAI1C,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAIpC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"NativeView.d.ts","sourceRoot":"","sources":["../../src/objects/NativeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI/D,qBAAa,UAAW,SAAQ,IAAI;IAChC;;;;OAIG;IAEH,OAAO,CAAC,qBAAqB,CAAU;IACvC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAAsB;gBAG/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,oBAAoB,GAAE,OAAe,EACrC,iBAAiB,GAAE,OAAe,EAClC,YAAY,GAAE,MAAsB,EACpC,MAAM,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACrC,IAAI,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAWtC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,iBAAiB,EAAE,CAErC;IAED,IAAW,OAAO,IAAI,iBAAiB,EAAE,CAExC;IAED,IAAW,MAAM,IAAI,kBAAkB,EAAE,CAExC;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,MAAM,CAwDzB;IAED,IAAW,oBAAoB,IAAI,OAAO,CAEzC;IAED,IAAW,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAE7C;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAE1C;IAED,IAAW,kBAAkB,IAAI,OAAO,CAEvC;IAED,IAAW,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAG3C;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAEM,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIzC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAI1C,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAIpC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAKxC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAKzC,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAKtC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;WAWlD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU;WAK3D,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU;IAuCtE,OAAO,CAAC,aAAa;CAmBxB"}
|
|
@@ -119,68 +119,51 @@ class NativeView extends View_1.View {
|
|
|
119
119
|
this._rows.push(row);
|
|
120
120
|
}
|
|
121
121
|
removeTitle(dimensionName) {
|
|
122
|
-
|
|
123
|
-
if (index !== -1) {
|
|
124
|
-
this._titles.splice(index, 1);
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
return false;
|
|
122
|
+
this._titles = this._titles.filter(t => !(0, Utils_1.caseAndSpaceInsensitiveEquals)(t.dimensionName, dimensionName));
|
|
128
123
|
}
|
|
129
124
|
removeColumn(dimensionName) {
|
|
130
|
-
|
|
131
|
-
if (index !== -1) {
|
|
132
|
-
this._columns.splice(index, 1);
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
return false;
|
|
125
|
+
this._columns = this._columns.filter(c => !(0, Utils_1.caseAndSpaceInsensitiveEquals)(c.dimensionName, dimensionName));
|
|
136
126
|
}
|
|
137
127
|
removeRow(dimensionName) {
|
|
138
|
-
|
|
139
|
-
if (index !== -1) {
|
|
140
|
-
this._rows.splice(index, 1);
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
return false;
|
|
128
|
+
this._rows = this._rows.filter(r => !(0, Utils_1.caseAndSpaceInsensitiveEquals)(r.dimensionName, dimensionName));
|
|
144
129
|
}
|
|
145
130
|
substituteTitle(dimension, element) {
|
|
146
|
-
/** Substitute the title element for a given dimension
|
|
147
|
-
*
|
|
148
|
-
* :param dimension: str, name of dimension
|
|
149
|
-
* :param element: str, name of element
|
|
150
|
-
*/
|
|
151
131
|
for (const title of this._titles) {
|
|
152
132
|
if ((0, Utils_1.caseAndSpaceInsensitiveEquals)(title.dimensionName, dimension)) {
|
|
133
|
+
title.subset = new Subset_1.AnonymousSubset(dimension, dimension, undefined, [element]);
|
|
153
134
|
title.selected = element;
|
|
154
135
|
return;
|
|
155
136
|
}
|
|
156
137
|
}
|
|
157
|
-
throw new Error(`
|
|
138
|
+
throw new Error(`Dimension '${dimension}' not found in titles`);
|
|
158
139
|
}
|
|
159
140
|
static fromJSON(viewAsJson, cubeName) {
|
|
160
141
|
const viewAsDict = JSON.parse(viewAsJson);
|
|
161
142
|
return NativeView.fromDict(viewAsDict, cubeName);
|
|
162
143
|
}
|
|
163
144
|
static fromDict(viewAsDict, cubeName) {
|
|
164
|
-
|
|
165
|
-
|
|
145
|
+
let resolvedCube = cubeName;
|
|
146
|
+
if (!resolvedCube) {
|
|
147
|
+
const ctx = viewAsDict["@odata.context"];
|
|
148
|
+
resolvedCube = ctx.substring(20, ctx.indexOf("')/"));
|
|
149
|
+
}
|
|
150
|
+
const view = new NativeView(resolvedCube, viewAsDict.Name, viewAsDict.SuppressEmptyColumns || false, viewAsDict.SuppressEmptyRows || false, viewAsDict.FormatString || "0.#########");
|
|
166
151
|
if (viewAsDict.Titles) {
|
|
167
152
|
for (const titleDict of viewAsDict.Titles) {
|
|
168
|
-
|
|
169
|
-
|
|
153
|
+
if (!('Selected' in titleDict) && !('Selected@odata.bind' in titleDict)) {
|
|
154
|
+
throw new Error("View Title dict must contain 'Selected' or 'Selected@odata.bind' as key");
|
|
155
|
+
}
|
|
156
|
+
view.addTitle(Axis_1.ViewTitleSelection.fromDict(titleDict));
|
|
170
157
|
}
|
|
171
158
|
}
|
|
172
|
-
// Parse columns
|
|
173
159
|
if (viewAsDict.Columns) {
|
|
174
160
|
for (const columnDict of viewAsDict.Columns) {
|
|
175
|
-
|
|
176
|
-
view.addColumn(column);
|
|
161
|
+
view.addColumn(Axis_1.ViewAxisSelection.fromDict(columnDict));
|
|
177
162
|
}
|
|
178
163
|
}
|
|
179
|
-
// Parse rows
|
|
180
164
|
if (viewAsDict.Rows) {
|
|
181
165
|
for (const rowDict of viewAsDict.Rows) {
|
|
182
|
-
|
|
183
|
-
view.addRow(row);
|
|
166
|
+
view.addRow(Axis_1.ViewAxisSelection.fromDict(rowDict));
|
|
184
167
|
}
|
|
185
168
|
}
|
|
186
169
|
return view;
|
package/lib/objects/Process.d.ts
CHANGED
|
@@ -39,11 +39,11 @@ export declare class Process extends TM1Object {
|
|
|
39
39
|
private _datasourceJsonVariableMapping;
|
|
40
40
|
static maxStatements(version: string): number;
|
|
41
41
|
static addGeneratedStringToCode(code: string): string;
|
|
42
|
-
constructor(name: string, hasSecurityAccess?: boolean, uiData?: string, parameters?: Iterable<any>, variables?: Iterable<any>, variablesUiData?: Iterable<any>, prologProcedure?: string, metadataProcedure?: string, dataProcedure?: string, epilogProcedure?: string, datasourceType?: string, datasourceAsciiDecimalSeparator?: string, datasourceAsciiDelimiterChar?: string, datasourceAsciiDelimiterType?: string, datasourceAsciiHeaderRecords?: number, datasourceAsciiQuoteCharacter?: string, datasourceAsciiThousandSeparator?: string, datasourceDataSourceNameForClient?: string, datasourceDataSourceNameForServer?: string, datasourcePassword?: string, datasourceUserName?: string, datasourceQuery?: string, datasourceUsesUnicode?: boolean, datasourceView?: string, datasourceSubset?: string, datasourceJsonRootPointer?: string, datasourceJsonVariableMapping?: string);
|
|
42
|
+
constructor(name: string, hasSecurityAccess?: boolean | undefined, uiData?: string, parameters?: Iterable<any>, variables?: Iterable<any>, variablesUiData?: Iterable<any>, prologProcedure?: string, metadataProcedure?: string, dataProcedure?: string, epilogProcedure?: string, datasourceType?: string, datasourceAsciiDecimalSeparator?: string, datasourceAsciiDelimiterChar?: string, datasourceAsciiDelimiterType?: string, datasourceAsciiHeaderRecords?: number | string, datasourceAsciiQuoteCharacter?: string, datasourceAsciiThousandSeparator?: string, datasourceDataSourceNameForClient?: string, datasourceDataSourceNameForServer?: string, datasourcePassword?: string, datasourceUserName?: string, datasourceQuery?: string, datasourceUsesUnicode?: boolean | string, datasourceView?: string, datasourceSubset?: string, datasourceJsonRootPointer?: string, datasourceJsonVariableMapping?: string);
|
|
43
43
|
get name(): string;
|
|
44
44
|
set name(value: string);
|
|
45
|
-
get hasSecurityAccess(): boolean;
|
|
46
|
-
set hasSecurityAccess(value: boolean);
|
|
45
|
+
get hasSecurityAccess(): boolean | undefined;
|
|
46
|
+
set hasSecurityAccess(value: boolean | undefined);
|
|
47
47
|
get uiData(): string;
|
|
48
48
|
set uiData(value: string);
|
|
49
49
|
get parameters(): any[];
|
|
@@ -63,6 +63,11 @@ export declare class Process extends TM1Object {
|
|
|
63
63
|
get datasourceType(): string;
|
|
64
64
|
set datasourceType(value: string);
|
|
65
65
|
static fromDict(processAsDict: any): Process;
|
|
66
|
+
addVariable(name: string, variableType: string): void;
|
|
67
|
+
removeVariable(name: string): void;
|
|
68
|
+
addParameter(name: string, prompt: string, value: string | number, parameterType?: string): void;
|
|
69
|
+
removeParameter(name: string): void;
|
|
70
|
+
dropParameterTypes(): void;
|
|
66
71
|
get body(): string;
|
|
67
72
|
get bodyAsDict(): any;
|
|
68
73
|
private constructBody;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Process.d.ts","sourceRoot":"","sources":["../../src/objects/Process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,qBAAa,OAAQ,SAAQ,SAAS;IAClC;;;OAGG;IAEH,yEAAyE;IACzE,gBAAuB,0BAA0B,yCAAyC;IAC1F,gBAAuB,wBAAwB,wCAAwC;IACvF,gBAAuB,yBAAyB,SAAsF;IACtI,gBAAuB,cAAc,SAAU;IAC/C,gBAAuB,4BAA4B,UAAW;IAE9D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"Process.d.ts","sourceRoot":"","sources":["../../src/objects/Process.ts"],"names":[],"mappings":"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"}
|