@ic3/reporting-api 8.0.1 → 8.2.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/dist/ApiUtils.js +1 -1
- package/dist/IOnNewEventJsContext.d.ts +66 -0
- package/dist/{theme/ThemeReportAppMenu.js → IOnNewEventJsContext.js} +1 -1
- package/dist/IOnNewEventJsContext.js.map +1 -0
- package/dist/IReporting.d.ts +9 -3
- package/dist/IThemeManager.d.ts +0 -2
- package/dist/LazyTreeView.d.ts +0 -23
- package/dist/LazyTreeView.js +0 -13
- package/dist/LazyTreeView.js.map +1 -1
- package/dist/Loader.d.ts +70 -1
- package/dist/Loader.js +150 -1
- package/dist/Loader.js.map +1 -1
- package/dist/PublicAmchartsData.d.ts +60 -0
- package/dist/PublicAmchartsData.js +122 -0
- package/dist/PublicAmchartsData.js.map +1 -0
- package/dist/PublicContext.d.ts +40 -3
- package/dist/PublicLayout.d.ts +5 -1
- package/dist/PublicTemplate.d.ts +39 -15
- package/dist/PublicTemplate.js.map +1 -1
- package/dist/PublicTemplateForm.d.ts +45 -57
- package/dist/PublicTemplateForm.js +10 -1
- package/dist/PublicTemplateForm.js.map +1 -1
- package/dist/PublicTheme.d.ts +155 -15
- package/dist/PublicTheme.js.map +1 -1
- package/dist/PublicTidyColumn.d.ts +69 -23
- package/dist/PublicTidyColumn.js +8 -0
- package/dist/PublicTidyColumn.js.map +1 -1
- package/dist/PublicTidyHistogram.d.ts +1 -1
- package/dist/PublicTidyMath.d.ts +26 -20
- package/dist/PublicTidyTable.d.ts +12 -5
- package/dist/PublicTidyTableInteractions.d.ts +76 -22
- package/dist/PublicTidyTableTypeGuards.d.ts +4 -0
- package/dist/PublicTidyTableTypeGuards.js +16 -0
- package/dist/PublicTidyTableTypeGuards.js.map +1 -0
- package/dist/PublicTidyTableTypes.d.ts +98 -16
- package/dist/PublicTidyTableTypes.js +1 -1
- package/dist/PublicTidyTableTypes.js.map +1 -1
- package/dist/PublicTidyTree.d.ts +10 -13
- package/dist/PublicTidyTree.js +11 -8
- package/dist/PublicTidyTree.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/theme/ThemeAmCharts4.d.ts +25 -6
- package/dist/theme/ThemeApp.d.ts +26 -11
- package/dist/theme/ThemeApp.js +23 -12
- package/dist/theme/ThemeApp.js.map +1 -1
- package/dist/theme/ThemeAppMenuIcon.d.ts +7 -0
- package/dist/theme/ThemeAppMenuIcon.js +8 -0
- package/dist/theme/ThemeAppMenuIcon.js.map +1 -0
- package/dist/theme/ThemeDatePicker.d.ts +7 -0
- package/dist/theme/ThemeDatePicker.js +8 -0
- package/dist/theme/ThemeDatePicker.js.map +1 -1
- package/dist/theme/ThemeEditorTopBar.d.ts +31 -0
- package/dist/theme/ThemeEditorTopBar.js +35 -0
- package/dist/theme/ThemeEditorTopBar.js.map +1 -0
- package/dist/theme/ThemeEmbeddedReport.d.ts +3 -0
- package/dist/theme/ThemeFilterAutocomplete.d.ts +1 -0
- package/dist/theme/ThemeFilterAutocomplete.js +1 -0
- package/dist/theme/ThemeFilterAutocomplete.js.map +1 -1
- package/dist/theme/ThemeFilterButtons.d.ts +1 -1
- package/dist/theme/ThemeFilterButtons.js +1 -1
- package/dist/theme/ThemeFilterButtons.js.map +1 -1
- package/dist/theme/ThemeFilterPanel.d.ts +80 -9
- package/dist/theme/ThemeFilterPanel.js +45 -3
- package/dist/theme/ThemeFilterPanel.js.map +1 -1
- package/dist/theme/ThemeFilterTree.d.ts +4 -3
- package/dist/theme/ThemeFilterTree.js +2 -1
- package/dist/theme/ThemeFilterTree.js.map +1 -1
- package/dist/theme/ThemeGlobal.d.ts +4 -0
- package/dist/theme/ThemeGlobal.js +9 -0
- package/dist/theme/ThemeGlobal.js.map +1 -0
- package/dist/theme/ThemeKpiCard.d.ts +41 -5
- package/dist/theme/ThemeKpiCard.js +15 -0
- package/dist/theme/ThemeKpiCard.js.map +1 -1
- package/dist/theme/ThemeLazyTreeClasses.d.ts +14 -0
- package/dist/theme/ThemeLazyTreeClasses.js +19 -0
- package/dist/theme/ThemeLazyTreeClasses.js.map +1 -0
- package/dist/theme/ThemePivotTable.d.ts +0 -5
- package/dist/theme/ThemePivotTable.js.map +1 -1
- package/dist/theme/ThemeQueryBuilderNode.d.ts +8 -0
- package/dist/theme/ThemeQueryBuilderNode.js +8 -0
- package/dist/theme/ThemeQueryBuilderNode.js.map +1 -0
- package/dist/theme/ThemeTable.d.ts +0 -14
- package/dist/theme/ThemeTable.js.map +1 -1
- package/dist/theme/ThemeWidgetBox.d.ts +8 -0
- package/dist/theme/ThemeWidgetBox.js +24 -16
- package/dist/theme/ThemeWidgetBox.js.map +1 -1
- package/package.json +5 -5
- package/dist/theme/ThemeReportAppMenu.d.ts +0 -18
- package/dist/theme/ThemeReportAppMenu.js.map +0 -1
package/dist/ApiUtils.js
CHANGED
|
@@ -8,7 +8,7 @@ const ReportingVersion_1 = __importDefault(require("./ReportingVersion"));
|
|
|
8
8
|
class ApiUtils {
|
|
9
9
|
static makePlugin(definition) {
|
|
10
10
|
return () => {
|
|
11
|
-
return Object.assign({ apiVersion: new ReportingVersion_1.default("8.0
|
|
11
|
+
return Object.assign({ apiVersion: new ReportingVersion_1.default("8.2.0" || "-", "Thu, 14 Jul 2022 12:18:27 GMT" || "-") }, definition);
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { PublicIcEvent } from "./IcEvent";
|
|
2
|
+
export interface IEventPayLoad {
|
|
3
|
+
nsId: string;
|
|
4
|
+
widgetId: string;
|
|
5
|
+
eventName: string;
|
|
6
|
+
event: PublicIcEvent | null | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface IOnNewEventJsContext {
|
|
9
|
+
/**
|
|
10
|
+
* A context cache that persist over calls.
|
|
11
|
+
*/
|
|
12
|
+
getCache(): Map<string, any>;
|
|
13
|
+
/**
|
|
14
|
+
* Report user name.
|
|
15
|
+
*/
|
|
16
|
+
getUserName(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Report tenant, if any.
|
|
19
|
+
*/
|
|
20
|
+
getTenant(): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Reporting version.
|
|
23
|
+
*/
|
|
24
|
+
getReportingVersion(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Returns true if the event is empty.
|
|
27
|
+
*/
|
|
28
|
+
isEmptyEvent(event: IEventPayLoad): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* The name of the event/channel.
|
|
31
|
+
*/
|
|
32
|
+
getEventName(event: IEventPayLoad): string;
|
|
33
|
+
/**
|
|
34
|
+
* The caption of the event (i.e. 'United Kingdom').
|
|
35
|
+
*/
|
|
36
|
+
getEventCaption(event: IEventPayLoad): string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* The MDX of the event (i.e. [Geography].[Country].&[UK]).
|
|
39
|
+
*/
|
|
40
|
+
getEventMdx(event: IEventPayLoad): string | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* The widgetId from the widget the event was generated, if available.
|
|
43
|
+
*/
|
|
44
|
+
getEventWidgetId(event: IEventPayLoad): string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Returns the widget jQuery object
|
|
47
|
+
*
|
|
48
|
+
* Using JQuery might conflit with React's state.
|
|
49
|
+
* Use with care as you will modify the DOM directly.
|
|
50
|
+
*/
|
|
51
|
+
getWidget$(widgetId: string): any;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the widget header jQuery object.
|
|
54
|
+
*
|
|
55
|
+
* Using JQuery might conflit with React's state.
|
|
56
|
+
* Use with care as you will modify the DOM directly.
|
|
57
|
+
*/
|
|
58
|
+
getWidgetHeader$(widgetId: string): any;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the widget header jQuery object (you can user text() to modify the header's title.
|
|
61
|
+
*
|
|
62
|
+
* Using JQuery might conflit with React's state.
|
|
63
|
+
* Use with care as you will modify the DOM directly.
|
|
64
|
+
*/
|
|
65
|
+
getWidgetHeaderTitle$(widgetId: string): any;
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IOnNewEventJsContext.js","sourceRoot":"","sources":["../src/IOnNewEventJsContext.ts"],"names":[],"mappings":""}
|
package/dist/IReporting.d.ts
CHANGED
|
@@ -34,6 +34,12 @@ export interface IOpenReportOptions {
|
|
|
34
34
|
* Full path of the report (e.g., shared:/marc/my-report).
|
|
35
35
|
*/
|
|
36
36
|
path: string;
|
|
37
|
+
/**
|
|
38
|
+
* When opening a report in viewer mode (i.e., /viewer URL) icCube is checking that the default schema
|
|
39
|
+
* is being authorized and generates an error. When opening a report from a host application and changing
|
|
40
|
+
* the default schema on the fly, you might want to disable that check.
|
|
41
|
+
*/
|
|
42
|
+
disableDefaultSchemaAuthCheck?: boolean;
|
|
37
43
|
/**
|
|
38
44
|
* Optional JSON object (i.e., constant / filter default value).
|
|
39
45
|
*/
|
|
@@ -71,9 +77,9 @@ export interface IOpenReportAppOptions {
|
|
|
71
77
|
export interface IReporting {
|
|
72
78
|
getVersion(): ReportingVersion;
|
|
73
79
|
/**
|
|
74
|
-
* @param options
|
|
75
|
-
* @param pushToHistory
|
|
76
|
-
* @param keepGlobalFilter
|
|
80
|
+
* @param options path, ...
|
|
81
|
+
* @param pushToHistory defaulted to true
|
|
82
|
+
* @param keepGlobalFilter defaulted to true. Apply the global filter to the newly opened report.
|
|
77
83
|
*
|
|
78
84
|
* @see IOpenReportOptions#onDefinition
|
|
79
85
|
*/
|
package/dist/IThemeManager.d.ts
CHANGED
|
@@ -49,10 +49,8 @@ export declare type IThemeWidgetVariant = {
|
|
|
49
49
|
};
|
|
50
50
|
export interface IThemeManager {
|
|
51
51
|
/**
|
|
52
|
-
*
|
|
53
52
|
* The theme decorator allows to setup the Theme.components and Theme.ic3 using the theme
|
|
54
53
|
* created from its partial options (e.g., using palette, typography, spacing, etc...)
|
|
55
|
-
*
|
|
56
54
|
*/
|
|
57
55
|
registerTheme(themeOptions: any, themeDecorator?: (theme: any) => ic3Components, baseTheme?: EmbeddedThemeNames): void;
|
|
58
56
|
}
|
package/dist/LazyTreeView.d.ts
CHANGED
|
@@ -24,29 +24,6 @@ export interface LazyTreeItemClasses {
|
|
|
24
24
|
/** Styles applied to the label element. */
|
|
25
25
|
label: string;
|
|
26
26
|
}
|
|
27
|
-
export interface LazyTreeClasses {
|
|
28
|
-
/** Styles applied to the search toolbar element */
|
|
29
|
-
toolbar: string;
|
|
30
|
-
/** Styles applied to the search search input element */
|
|
31
|
-
input: string;
|
|
32
|
-
/** Styles applied to the select filter button (on) */
|
|
33
|
-
button: string;
|
|
34
|
-
/** Styles applied to the select filter button (on) */
|
|
35
|
-
buttonFilterSelectedOn: string;
|
|
36
|
-
/** Styles applied to the select filter button (off) */
|
|
37
|
-
buttonFilterSelectedOff: string;
|
|
38
|
-
/** Styles applied to the TreeRoot element */
|
|
39
|
-
treeRoot: string;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Global classes
|
|
43
|
-
*/
|
|
44
|
-
export interface Ic3GlobalClasses {
|
|
45
|
-
singleSelection: string;
|
|
46
|
-
multipleSelection: string;
|
|
47
|
-
}
|
|
48
|
-
export declare const ic3GlobalClasses: Ic3GlobalClasses;
|
|
49
|
-
export declare const lazyTreeClasses: LazyTreeClasses;
|
|
50
27
|
export interface ILazyTreeViewLoader {
|
|
51
28
|
/**
|
|
52
29
|
* This will build the tree with react children
|
package/dist/LazyTreeView.js
CHANGED
|
@@ -1,16 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.lazyTreeClasses = exports.ic3GlobalClasses = void 0;
|
|
4
|
-
exports.ic3GlobalClasses = {
|
|
5
|
-
singleSelection: 'Ic3-SingleSelection',
|
|
6
|
-
multipleSelection: 'Ic3-MultipleSelection',
|
|
7
|
-
};
|
|
8
|
-
exports.lazyTreeClasses = {
|
|
9
|
-
toolbar: 'Ic3-LazyTreeView-toolbar',
|
|
10
|
-
input: 'Ic3-LazyTreeView-toolbar-input',
|
|
11
|
-
button: 'Ic3-LazyTreeView-toolbar-button',
|
|
12
|
-
buttonFilterSelectedOn: 'Ic3-LazyTreeView-toolbar-buttonOn',
|
|
13
|
-
buttonFilterSelectedOff: 'Ic3-LazyTreeView-toolbar-buttonOff',
|
|
14
|
-
treeRoot: 'Ic3-LazyTreeView-treeRoot',
|
|
15
|
-
};
|
|
16
3
|
//# sourceMappingURL=LazyTreeView.js.map
|
package/dist/LazyTreeView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyTreeView.js","sourceRoot":"","sources":["../src/LazyTreeView.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LazyTreeView.js","sourceRoot":"","sources":["../src/LazyTreeView.ts"],"names":[],"mappings":""}
|
package/dist/Loader.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IReporting } from "./IReporting";
|
|
2
|
-
export declare type AppType = "console" | "viewer" | "editor" | "admin" | "appEditor";
|
|
2
|
+
export declare type AppType = "embedded-div-init" | "console" | "viewer" | "editor" | "admin" | "appEditor";
|
|
3
3
|
export interface IDashboardsLoaderFrameParams {
|
|
4
4
|
/**
|
|
5
5
|
* An unique ID (DOM) that is identifying the icCube dashboards instance.
|
|
@@ -16,4 +16,73 @@ export interface IDashboardsLoaderFrameParams {
|
|
|
16
16
|
onReady: (ic3: IReporting) => void;
|
|
17
17
|
url: string;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Support for embedding icCube via an iFrame.
|
|
21
|
+
*/
|
|
19
22
|
export declare function DashboardsLoaderFrame(params: IDashboardsLoaderFrameParams): void;
|
|
23
|
+
export interface IDashboardsLoaderDivParams {
|
|
24
|
+
/**
|
|
25
|
+
* identifier of the IReporting instance
|
|
26
|
+
*/
|
|
27
|
+
uid: string;
|
|
28
|
+
/**
|
|
29
|
+
* the container to put icCube
|
|
30
|
+
*/
|
|
31
|
+
container: string | HTMLElement;
|
|
32
|
+
/**
|
|
33
|
+
* an optional container where icCube will set the height to fit the current report
|
|
34
|
+
*/
|
|
35
|
+
resizingContainer?: HTMLElement;
|
|
36
|
+
/**
|
|
37
|
+
* The type of application (default: 'viewer')
|
|
38
|
+
*/
|
|
39
|
+
appType?: AppType;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Support for embedding icCube via a DIV.
|
|
43
|
+
*
|
|
44
|
+
* icCube uses Webpack: loading the entry point (i.e., main.js) will start loading all initial chunks.
|
|
45
|
+
*
|
|
46
|
+
* You can create this context ASAP. Actually can be done at any point in your app life time before
|
|
47
|
+
* any icCube rendering is required yet.
|
|
48
|
+
*
|
|
49
|
+
* Can be easily wrapped into a React context (see ic3-demo-embedded-react Github project).
|
|
50
|
+
*/
|
|
51
|
+
export declare class DashboardsLoaderDivContext {
|
|
52
|
+
private static readonly crfCodeRE;
|
|
53
|
+
private static readonly mainJsCacheKeyRE;
|
|
54
|
+
private static readonly buildVersionRE;
|
|
55
|
+
private static readonly buildTimestampRE;
|
|
56
|
+
/**
|
|
57
|
+
* The URL path of the icCube index.html containing the Webpack main entry point (i.e., main.js).
|
|
58
|
+
*/
|
|
59
|
+
private readonly indexHtmlUrl;
|
|
60
|
+
/**
|
|
61
|
+
* The URL path where icCube Webpack files are located:
|
|
62
|
+
*
|
|
63
|
+
* /icCube/report
|
|
64
|
+
* app -- public path
|
|
65
|
+
* index.html
|
|
66
|
+
* main.js
|
|
67
|
+
* chunks
|
|
68
|
+
* ...
|
|
69
|
+
* plugins -- e.g., amCharts
|
|
70
|
+
* ...
|
|
71
|
+
*
|
|
72
|
+
*/
|
|
73
|
+
private readonly publicPath;
|
|
74
|
+
private readonly mainJsUrl;
|
|
75
|
+
private buildVersion;
|
|
76
|
+
private buildTimestamp;
|
|
77
|
+
private libLoader;
|
|
78
|
+
constructor(suffix?: string);
|
|
79
|
+
private static extractMatch;
|
|
80
|
+
private static loadScript;
|
|
81
|
+
getBuildVersion(): string;
|
|
82
|
+
getBuildTimestamp(): string;
|
|
83
|
+
loadLibsAndInitialize(options: IDashboardsLoaderDivParams): Promise<IReporting>;
|
|
84
|
+
/**
|
|
85
|
+
* First step load main.js, associated chunks
|
|
86
|
+
*/
|
|
87
|
+
private loadLibs;
|
|
88
|
+
}
|
package/dist/Loader.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DashboardsLoaderFrame = void 0;
|
|
3
|
+
exports.DashboardsLoaderDivContext = exports.DashboardsLoaderFrame = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Support for embedding icCube via an iFrame.
|
|
6
|
+
*/
|
|
4
7
|
function DashboardsLoaderFrame(params) {
|
|
5
8
|
const { containerId, className, style, onReady, url } = params;
|
|
6
9
|
const containerELT = document.getElementById(containerId);
|
|
@@ -38,4 +41,150 @@ function DashboardsLoaderFrame(params) {
|
|
|
38
41
|
containerELT.appendChild(iFrame);
|
|
39
42
|
}
|
|
40
43
|
exports.DashboardsLoaderFrame = DashboardsLoaderFrame;
|
|
44
|
+
/**
|
|
45
|
+
* Support for embedding icCube via a DIV.
|
|
46
|
+
*
|
|
47
|
+
* icCube uses Webpack: loading the entry point (i.e., main.js) will start loading all initial chunks.
|
|
48
|
+
*
|
|
49
|
+
* You can create this context ASAP. Actually can be done at any point in your app life time before
|
|
50
|
+
* any icCube rendering is required yet.
|
|
51
|
+
*
|
|
52
|
+
* Can be easily wrapped into a React context (see ic3-demo-embedded-react Github project).
|
|
53
|
+
*/
|
|
54
|
+
class DashboardsLoaderDivContext {
|
|
55
|
+
constructor(suffix) {
|
|
56
|
+
/**
|
|
57
|
+
* The URL path of the icCube index.html containing the Webpack main entry point (i.e., main.js).
|
|
58
|
+
*/
|
|
59
|
+
this.indexHtmlUrl = "/icCube/report/console";
|
|
60
|
+
/**
|
|
61
|
+
* The URL path where icCube Webpack files are located:
|
|
62
|
+
*
|
|
63
|
+
* /icCube/report
|
|
64
|
+
* app -- public path
|
|
65
|
+
* index.html
|
|
66
|
+
* main.js
|
|
67
|
+
* chunks
|
|
68
|
+
* ...
|
|
69
|
+
* plugins -- e.g., amCharts
|
|
70
|
+
* ...
|
|
71
|
+
*
|
|
72
|
+
*/
|
|
73
|
+
this.publicPath = "/icCube/report/app/";
|
|
74
|
+
this.buildVersion = "";
|
|
75
|
+
this.buildTimestamp = "";
|
|
76
|
+
!suffix && (suffix = "");
|
|
77
|
+
this.indexHtmlUrl += suffix;
|
|
78
|
+
this.mainJsUrl = this.publicPath + "main.js" + suffix;
|
|
79
|
+
// Start loading all required initial libraries (in the background).
|
|
80
|
+
this.libLoader = this.loadLibs();
|
|
81
|
+
}
|
|
82
|
+
static extractMatch(indexHtml, regExp, error) {
|
|
83
|
+
const match = indexHtml.match(regExp);
|
|
84
|
+
if (match == null || match.length !== 2) {
|
|
85
|
+
if (error != null)
|
|
86
|
+
throw new Error(error);
|
|
87
|
+
else
|
|
88
|
+
return "";
|
|
89
|
+
}
|
|
90
|
+
const token = match[1];
|
|
91
|
+
return token;
|
|
92
|
+
}
|
|
93
|
+
getBuildVersion() {
|
|
94
|
+
return this.buildVersion;
|
|
95
|
+
}
|
|
96
|
+
getBuildTimestamp() {
|
|
97
|
+
return this.buildTimestamp;
|
|
98
|
+
}
|
|
99
|
+
loadLibsAndInitialize(options) {
|
|
100
|
+
const { uid, container, appType, resizingContainer } = options;
|
|
101
|
+
const loader = this.loadLibs();
|
|
102
|
+
return loader.then((starter) => {
|
|
103
|
+
return new Promise((resolve, reject) => {
|
|
104
|
+
const start = performance.now();
|
|
105
|
+
starter(Object.assign(Object.assign({}, options), { uid, appType: appType !== null && appType !== void 0 ? appType : "viewer", container,
|
|
106
|
+
resizingContainer, callback: (reporting) => {
|
|
107
|
+
const timeDiff = Math.round(performance.now() - start);
|
|
108
|
+
console.log("[ic3-dashboards-context] loadLibsAndInitialize completed in " + timeDiff + " ms.");
|
|
109
|
+
resolve(reporting);
|
|
110
|
+
} }));
|
|
111
|
+
});
|
|
112
|
+
}).catch(reason => Promise.reject(reason));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* First step load main.js, associated chunks
|
|
116
|
+
*/
|
|
117
|
+
loadLibs() {
|
|
118
|
+
if (this.libLoader == null) {
|
|
119
|
+
const wnd = window;
|
|
120
|
+
const start = performance.now();
|
|
121
|
+
this.libLoader = fetch(this.indexHtmlUrl, { cache: 'no-cache' })
|
|
122
|
+
.then(response => {
|
|
123
|
+
if (!response.ok) {
|
|
124
|
+
throw new Error(response.status + ":" + response.statusText + " (" + response.url + ")");
|
|
125
|
+
}
|
|
126
|
+
return response.text();
|
|
127
|
+
}).then(indexHtml => {
|
|
128
|
+
// CSRF code
|
|
129
|
+
{
|
|
130
|
+
const token = DashboardsLoaderDivContext.extractMatch(indexHtml, DashboardsLoaderDivContext.crfCodeRE, "Internal Error (user not authenticated?)");
|
|
131
|
+
if (token.includes("ic3-CSRF-Token")) {
|
|
132
|
+
throw new Error("Internal Error (token not replaced in [" + this.indexHtmlUrl + "] )");
|
|
133
|
+
}
|
|
134
|
+
wnd['ic3_CSRF_token'] = token;
|
|
135
|
+
}
|
|
136
|
+
// Webpack entry point (main.js) cache busting key
|
|
137
|
+
let cacheKey = "";
|
|
138
|
+
if (!this.mainJsUrl.includes("?")) {
|
|
139
|
+
cacheKey = "?" + DashboardsLoaderDivContext.extractMatch(indexHtml, DashboardsLoaderDivContext.mainJsCacheKeyRE, "Internal Error (main.js version missing)");
|
|
140
|
+
}
|
|
141
|
+
// Build information
|
|
142
|
+
this.buildVersion = DashboardsLoaderDivContext.extractMatch(indexHtml, DashboardsLoaderDivContext.buildVersionRE);
|
|
143
|
+
this.buildTimestamp = DashboardsLoaderDivContext.extractMatch(indexHtml, DashboardsLoaderDivContext.buildTimestampRE);
|
|
144
|
+
const scriptUrl = this.mainJsUrl + cacheKey;
|
|
145
|
+
// Load Webpack entry point: main.js
|
|
146
|
+
console.log("[ic3-dashboards-context] start loading library [version:" + this.buildVersion + "] [build:" + this.buildTimestamp + "]");
|
|
147
|
+
wnd["__ic3__webpack_public_path__"] = this.publicPath;
|
|
148
|
+
wnd["__ic3_div_embedded__"] = true;
|
|
149
|
+
return DashboardsLoaderDivContext.loadScript(scriptUrl).catch(reason => Promise.reject("Error loading main.js script : " + scriptUrl));
|
|
150
|
+
}).then(() => {
|
|
151
|
+
console.log("[ic3-dashboards-context] main.js loaded in " + Math.round(performance.now() - start) + " ms");
|
|
152
|
+
let count = 0;
|
|
153
|
+
return new Promise((resolve, reject) => {
|
|
154
|
+
// Busy wait till icCube has loaded all initial Webpack chunks and initialized itself.
|
|
155
|
+
(function waitUtil() {
|
|
156
|
+
if (wnd["__ic3_div_embedded_starter__"] !== undefined) {
|
|
157
|
+
const timeDiff = Math.round(performance.now() - start);
|
|
158
|
+
console.log("[ic3-dashboards-context] scripts ready in " + timeDiff + " ms");
|
|
159
|
+
resolve(wnd["__ic3_div_embedded_starter__"]);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
if (count++ === 4) {
|
|
163
|
+
console.log("[ic3-dashboards-context] scripts : waiting for icCube initialized");
|
|
164
|
+
count = 0;
|
|
165
|
+
}
|
|
166
|
+
setTimeout(waitUtil, 250);
|
|
167
|
+
}
|
|
168
|
+
})();
|
|
169
|
+
});
|
|
170
|
+
}).catch(reason => { var _a; return Promise.reject((_a = reason.message) !== null && _a !== void 0 ? _a : reason); });
|
|
171
|
+
}
|
|
172
|
+
return this.libLoader;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.DashboardsLoaderDivContext = DashboardsLoaderDivContext;
|
|
176
|
+
DashboardsLoaderDivContext.crfCodeRE = /ic3_CSRF_token = "(.*)"/;
|
|
177
|
+
DashboardsLoaderDivContext.mainJsCacheKeyRE = /main\.js\?(.*)">/;
|
|
178
|
+
DashboardsLoaderDivContext.buildVersionRE = /ic3_build_version = "(.*)"/;
|
|
179
|
+
DashboardsLoaderDivContext.buildTimestampRE = /ic3_build_timestamp = "(.*)"/;
|
|
180
|
+
DashboardsLoaderDivContext.loadScript = (src) => {
|
|
181
|
+
return new Promise((resolve, reject) => {
|
|
182
|
+
const script = document.createElement('script');
|
|
183
|
+
script.type = 'text/javascript';
|
|
184
|
+
script.onload = resolve;
|
|
185
|
+
script.onerror = reject;
|
|
186
|
+
script.src = src;
|
|
187
|
+
document.head.append(script);
|
|
188
|
+
});
|
|
189
|
+
};
|
|
41
190
|
//# sourceMappingURL=Loader.js.map
|
package/dist/Loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../src/Loader.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../src/Loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ITidyColorColumn, ITidyColumn, ITidyNumericColumn } from "./PublicTidyColumn";
|
|
2
|
+
import { ITidyTable } from "./PublicTidyTable";
|
|
3
|
+
import { GroupRowIndices, IAmCharts4Data } from "./PublicTidyTableTypes";
|
|
4
|
+
export declare enum ISeriesValuesType {
|
|
5
|
+
LINE = 0,
|
|
6
|
+
COLUMN = 1,
|
|
7
|
+
TREND = 2
|
|
8
|
+
}
|
|
9
|
+
export interface ISeriesValues {
|
|
10
|
+
type: ISeriesValuesType;
|
|
11
|
+
values: ITidyNumericColumn;
|
|
12
|
+
colors?: ITidyColorColumn;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Used for managing amcharts data in the Amcharts plugin. This class controls both the creation of the charts
|
|
16
|
+
* data and the creation of the series of that chart.
|
|
17
|
+
*/
|
|
18
|
+
export declare class PublicAmchartsData {
|
|
19
|
+
private readonly onValues;
|
|
20
|
+
private readonly onAxis;
|
|
21
|
+
private readonly onLevel;
|
|
22
|
+
private readonly onGroup;
|
|
23
|
+
private readonly table;
|
|
24
|
+
constructor(table: ITidyTable, onValues: ISeriesValues[], onAxis: ITidyColumn, onGroup?: ITidyColumn, onLevel?: ITidyColumn);
|
|
25
|
+
/**
|
|
26
|
+
* Get the data for the chart.
|
|
27
|
+
*/
|
|
28
|
+
getChartData(): IAmCharts4Data[];
|
|
29
|
+
/**
|
|
30
|
+
* Create, update and remove series in the chart.
|
|
31
|
+
* @param itemControl map keeping track of current series in the chart.
|
|
32
|
+
* @param create create a new series if it is not in itemControl.
|
|
33
|
+
* - seriesId: unique id of the series
|
|
34
|
+
* - groupKey: key for the group by (if defined). If not defined, use _
|
|
35
|
+
* - valueKey: series value datafield
|
|
36
|
+
* - fillKey: series fill datafield
|
|
37
|
+
* - sValue: the onValues part used
|
|
38
|
+
* @param update update a series.
|
|
39
|
+
* - seriesId: unique id of the series
|
|
40
|
+
* - groupKey: key for the group by (if defined). If not defined, use _
|
|
41
|
+
* - series: the charts series to update
|
|
42
|
+
* - sValue: the onValues part used
|
|
43
|
+
* - groupRows: row indices of the group. Length >= 1.
|
|
44
|
+
* @param remove remove the series.
|
|
45
|
+
* @param typeFilter if defined, only call create, update and remove for this type.
|
|
46
|
+
* @param firstGroupOnly only call the first group
|
|
47
|
+
*/
|
|
48
|
+
updateSeries<T>(itemControl: Map<string, T>, create: (seriesId: string, groupKey: string, valueKey: string, fillKey: string, sValue: ISeriesValues) => T, update: (seriesId: string, groupKey: string, series: T, sValue: ISeriesValues, groupRows: GroupRowIndices) => void, remove: (item: T) => void, typeFilter?: ISeriesValuesType, firstGroupOnly?: boolean): void;
|
|
49
|
+
getAxis(): ITidyColumn;
|
|
50
|
+
getLevel(): ITidyColumn | undefined;
|
|
51
|
+
getGroup(): ITidyColumn | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the first item in the onValues argument of the constructor.
|
|
54
|
+
*/
|
|
55
|
+
getFirstValue(): ITidyNumericColumn;
|
|
56
|
+
/**
|
|
57
|
+
* Returns true if and only if there are multiple non-trend measures in the chart.
|
|
58
|
+
*/
|
|
59
|
+
isMultiMeasure(): boolean;
|
|
60
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PublicAmchartsData = exports.ISeriesValuesType = void 0;
|
|
4
|
+
const PublicTidyTableTypes_1 = require("./PublicTidyTableTypes");
|
|
5
|
+
var ISeriesValuesType;
|
|
6
|
+
(function (ISeriesValuesType) {
|
|
7
|
+
ISeriesValuesType[ISeriesValuesType["LINE"] = 0] = "LINE";
|
|
8
|
+
ISeriesValuesType[ISeriesValuesType["COLUMN"] = 1] = "COLUMN";
|
|
9
|
+
ISeriesValuesType[ISeriesValuesType["TREND"] = 2] = "TREND";
|
|
10
|
+
})(ISeriesValuesType = exports.ISeriesValuesType || (exports.ISeriesValuesType = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Used for managing amcharts data in the Amcharts plugin. This class controls both the creation of the charts
|
|
13
|
+
* data and the creation of the series of that chart.
|
|
14
|
+
*/
|
|
15
|
+
class PublicAmchartsData {
|
|
16
|
+
constructor(table, onValues, onAxis, onGroup, onLevel) {
|
|
17
|
+
this.onValues = onValues;
|
|
18
|
+
this.onAxis = onAxis;
|
|
19
|
+
this.onGroup = onGroup;
|
|
20
|
+
this.onLevel = onLevel;
|
|
21
|
+
this.table = table;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the data for the chart.
|
|
25
|
+
*/
|
|
26
|
+
getChartData() {
|
|
27
|
+
const chartValues = {};
|
|
28
|
+
this.onValues.forEach((value, idx) => {
|
|
29
|
+
chartValues[String(idx) + "v"] = value.values;
|
|
30
|
+
if (value.colors) {
|
|
31
|
+
chartValues[String(idx) + "c"] = value.colors;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return this.table.toAmcharts4Data(this.onAxis, chartValues, this.onGroup, this.onLevel);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create, update and remove series in the chart.
|
|
38
|
+
* @param itemControl map keeping track of current series in the chart.
|
|
39
|
+
* @param create create a new series if it is not in itemControl.
|
|
40
|
+
* - seriesId: unique id of the series
|
|
41
|
+
* - groupKey: key for the group by (if defined). If not defined, use _
|
|
42
|
+
* - valueKey: series value datafield
|
|
43
|
+
* - fillKey: series fill datafield
|
|
44
|
+
* - sValue: the onValues part used
|
|
45
|
+
* @param update update a series.
|
|
46
|
+
* - seriesId: unique id of the series
|
|
47
|
+
* - groupKey: key for the group by (if defined). If not defined, use _
|
|
48
|
+
* - series: the charts series to update
|
|
49
|
+
* - sValue: the onValues part used
|
|
50
|
+
* - groupRows: row indices of the group. Length >= 1.
|
|
51
|
+
* @param remove remove the series.
|
|
52
|
+
* @param typeFilter if defined, only call create, update and remove for this type.
|
|
53
|
+
* @param firstGroupOnly only call the first group
|
|
54
|
+
*/
|
|
55
|
+
updateSeries(itemControl, create, update, remove, typeFilter, firstGroupOnly) {
|
|
56
|
+
const group = this.onGroup;
|
|
57
|
+
const updated = new Set();
|
|
58
|
+
const forEachSeries = (groupKey, groupIdx) => {
|
|
59
|
+
this.onValues.forEach((onValue, idx) => {
|
|
60
|
+
if (typeFilter != null && onValue.type !== typeFilter) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const seriesKey = groupKey + "." + String(idx);
|
|
64
|
+
let item = itemControl.get(seriesKey);
|
|
65
|
+
if (item == null) {
|
|
66
|
+
const newItem = create(seriesKey, groupKey, seriesKey + "v", seriesKey + "c", onValue);
|
|
67
|
+
itemControl.set(seriesKey, newItem);
|
|
68
|
+
item = newItem;
|
|
69
|
+
}
|
|
70
|
+
update(seriesKey, groupKey, item, onValue, groupIdx);
|
|
71
|
+
updated.add(seriesKey);
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
if (group != null) {
|
|
75
|
+
const index = group.groupBy(true);
|
|
76
|
+
if (firstGroupOnly) {
|
|
77
|
+
const groupIdx = index.values().next().value;
|
|
78
|
+
const groupKey = group.getUid(groupIdx[0]);
|
|
79
|
+
forEachSeries(groupKey, groupIdx);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
index.forEach(groupIdx => {
|
|
83
|
+
const groupKey = group.getUid(groupIdx[0]);
|
|
84
|
+
forEachSeries(groupKey, groupIdx);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const groupKey = PublicTidyTableTypes_1.IAmcharts4DataKey.NULL;
|
|
90
|
+
forEachSeries(groupKey, [0]);
|
|
91
|
+
}
|
|
92
|
+
itemControl.forEach((item, key) => {
|
|
93
|
+
if (!updated.has(key)) {
|
|
94
|
+
itemControl.delete(key);
|
|
95
|
+
remove(item);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
getAxis() {
|
|
100
|
+
return this.onAxis;
|
|
101
|
+
}
|
|
102
|
+
getLevel() {
|
|
103
|
+
return this.onLevel;
|
|
104
|
+
}
|
|
105
|
+
getGroup() {
|
|
106
|
+
return this.onGroup;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Returns the first item in the onValues argument of the constructor.
|
|
110
|
+
*/
|
|
111
|
+
getFirstValue() {
|
|
112
|
+
return this.onValues[0].values;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns true if and only if there are multiple non-trend measures in the chart.
|
|
116
|
+
*/
|
|
117
|
+
isMultiMeasure() {
|
|
118
|
+
return this.onValues.filter(i => i.type !== ISeriesValuesType.TREND).length > 1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.PublicAmchartsData = PublicAmchartsData;
|
|
122
|
+
//# sourceMappingURL=PublicAmchartsData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicAmchartsData.js","sourceRoot":"","sources":["../src/PublicAmchartsData.ts"],"names":[],"mappings":"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"}
|