@isoftdata/utility-dashboard-backend 3.4.0 → 4.0.0-beta.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/README.md +185 -201
- package/dist/chart-helper.d.ts +6 -10
- package/dist/chart-helper.js +58 -136
- package/dist/index.d.ts +19 -41
- package/dist/index.js +41 -71
- package/dist/style-templates.d.ts +2 -2
- package/dist/style-templates.js +4 -16
- package/dist/types/chart.d.ts +44 -59
- package/dist/types/parameter.d.ts +5 -9
- package/dist/types/report.d.ts +2 -2
- package/dist/types/session.d.ts +0 -1
- package/package.json +56 -64
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.js +0 -2
package/dist/chart-helper.js
CHANGED
|
@@ -2,7 +2,6 @@ import formattingTemplates from './formatting-templates.js';
|
|
|
2
2
|
import toSnakeCase from 'to-snake-case';
|
|
3
3
|
import mysqlDataTypes from 'mysql/lib/protocol/constants/types.js';
|
|
4
4
|
import styleTableRow from './style-templates.js';
|
|
5
|
-
import { klona } from 'klona';
|
|
6
5
|
function mysqlToGoogleChartsDataTypeMap(mysqlDataType) {
|
|
7
6
|
switch (mysqlDataType) {
|
|
8
7
|
case 'VAR_STRING':
|
|
@@ -37,29 +36,6 @@ function mysqlToGoogleChartsDataTypeMap(mysqlDataType) {
|
|
|
37
36
|
return 'string';
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
|
-
const roleRegex = /^role:(\w+)([ \-_]\w+)?/;
|
|
41
|
-
function getRoleFromColumnName(name) {
|
|
42
|
-
const match = name.match(roleRegex);
|
|
43
|
-
return match?.[1] ?? null;
|
|
44
|
-
}
|
|
45
|
-
function getColumnRoleType(role, dataType) {
|
|
46
|
-
if (role?.startsWith('role:')) {
|
|
47
|
-
role = role.replace('role:', '');
|
|
48
|
-
}
|
|
49
|
-
switch (role) {
|
|
50
|
-
case 'certainty':
|
|
51
|
-
case 'emphasis':
|
|
52
|
-
case 'scope':
|
|
53
|
-
return 'boolean';
|
|
54
|
-
case 'interval':
|
|
55
|
-
return 'number';
|
|
56
|
-
case 'domain':
|
|
57
|
-
case 'data':
|
|
58
|
-
return dataType;
|
|
59
|
-
default:
|
|
60
|
-
return 'string';
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
39
|
function makeDataTableCol(key, fields, role = null) {
|
|
64
40
|
return {
|
|
65
41
|
id: toSnakeCase(key).toLowerCase(),
|
|
@@ -68,92 +44,65 @@ function makeDataTableCol(key, fields, role = null) {
|
|
|
68
44
|
role,
|
|
69
45
|
};
|
|
70
46
|
}
|
|
71
|
-
function
|
|
72
|
-
return (Array.isArray(results) && results.length === 0)
|
|
47
|
+
function resultsIsObjectArray(results) {
|
|
48
|
+
return (Array.isArray(results) && results.length === 0)
|
|
49
|
+
|| (Array.isArray(results) && results.length > 0 && typeof results[0] === 'object' && results[0] !== null && !Array.isArray(results[0]));
|
|
73
50
|
}
|
|
74
51
|
function fieldsIsFieldPacketArray(fields) {
|
|
75
52
|
return (Array.isArray(fields) && fields.length === 0) || (Array.isArray(fields) && fields.length > 0 && fields[0].constructor.name === 'FieldPacket');
|
|
76
53
|
}
|
|
77
|
-
export function queryWithFields(connection, query) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
reject(err);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
});
|
|
54
|
+
export async function queryWithFields(connection, query) {
|
|
55
|
+
try {
|
|
56
|
+
const [results, fields] = await connection.queryWithFieldPackets(query);
|
|
57
|
+
if (!resultsIsObjectArray(results)) {
|
|
58
|
+
throw new Error('Query did not return a valid result set. Ensure that the chart has exactly one valid SELECT query.');
|
|
59
|
+
}
|
|
60
|
+
else if (!fieldsIsFieldPacketArray(fields)) {
|
|
61
|
+
throw new Error('Query did not return a valid field set.');
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return {
|
|
65
|
+
results,
|
|
66
|
+
fields: fields.reduce((sum, field) => {
|
|
67
|
+
return {
|
|
68
|
+
...sum,
|
|
69
|
+
[field.name]: mysqlToGoogleChartsDataTypeMap(mysqlDataTypes[field.type] || field.type),
|
|
70
|
+
};
|
|
71
|
+
}, {}) ?? {},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error('Error running query for dashboard chart', err);
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
109
79
|
}
|
|
110
80
|
export function getMultiSeriesData({ data: queryResult, seriesOptions, formatting, fields }) {
|
|
111
81
|
const { groupXAxisBy, series, value, tooltip } = seriesOptions;
|
|
112
|
-
const allOfTheKeysInTheSeries = new Set(queryResult.
|
|
113
|
-
|
|
114
|
-
const roleKeys = Object.keys(row)
|
|
115
|
-
.filter(key => key.startsWith('role:'))
|
|
116
|
-
.map(key => `${key}-${row[series]}`);
|
|
117
|
-
if (roleKeys.length) {
|
|
118
|
-
keys.push(...roleKeys);
|
|
119
|
-
}
|
|
120
|
-
return keys;
|
|
121
|
-
}));
|
|
122
|
-
const objectOfAllKeys = {};
|
|
82
|
+
const allOfTheKeysInTheSeries = new Set(queryResult.map(row => row[series]));
|
|
83
|
+
const objectOfAllKeysWithNullValues = {};
|
|
123
84
|
for (const key of allOfTheKeysInTheSeries) {
|
|
124
|
-
|
|
125
|
-
if (tooltip
|
|
126
|
-
|
|
85
|
+
objectOfAllKeysWithNullValues[key] = null;
|
|
86
|
+
if (tooltip) {
|
|
87
|
+
objectOfAllKeysWithNullValues[`${tooltip} ${key}`] = null;
|
|
127
88
|
}
|
|
128
89
|
}
|
|
129
90
|
const grouped = {};
|
|
130
|
-
let groupedByDate = false;
|
|
131
91
|
for (const row of queryResult) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (!grouped[groupXAxisByValue]) {
|
|
135
|
-
grouped[groupXAxisByValue] = { ...klona(objectOfAllKeys) };
|
|
92
|
+
if (!grouped[row[groupXAxisBy]]) {
|
|
93
|
+
grouped[row[groupXAxisBy]] = { ...objectOfAllKeysWithNullValues };
|
|
136
94
|
}
|
|
137
|
-
grouped[
|
|
138
|
-
const roleKeys = Object.keys(row).filter(key => key.startsWith('role:'));
|
|
139
|
-
roleKeys.forEach(key => {
|
|
140
|
-
grouped[groupXAxisByValue][`${key}-${row[series]}`].push(row[key]);
|
|
141
|
-
});
|
|
95
|
+
grouped[row[groupXAxisBy]][row[series]] = row[value];
|
|
142
96
|
if (tooltip) {
|
|
143
|
-
grouped[
|
|
97
|
+
grouped[row[groupXAxisBy]][`${tooltip} ${row[series]}`] = row[tooltip];
|
|
144
98
|
}
|
|
145
99
|
}
|
|
146
100
|
const seriesFields = { [groupXAxisBy]: fields[groupXAxisBy] };
|
|
147
101
|
const seriesFormatting = {};
|
|
148
102
|
for (const key of allOfTheKeysInTheSeries) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
else {
|
|
153
|
-
seriesFields[key] = fields[value];
|
|
154
|
-
}
|
|
155
|
-
if (tooltip && !key.startsWith('role:')) {
|
|
156
|
-
seriesFields[`role:tooltip-${key}`] = fields[tooltip];
|
|
103
|
+
seriesFields[key] = fields[value];
|
|
104
|
+
if (tooltip) {
|
|
105
|
+
seriesFields[`${tooltip} ${key}`] = fields[tooltip];
|
|
157
106
|
}
|
|
158
107
|
if (formatting && value in formatting) {
|
|
159
108
|
seriesFormatting[key] = formatting[value];
|
|
@@ -161,15 +110,10 @@ export function getMultiSeriesData({ data: queryResult, seriesOptions, formattin
|
|
|
161
110
|
}
|
|
162
111
|
const multiSeriesData = [];
|
|
163
112
|
for (const key in grouped) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
for (const groupedKey of groupedKeys) {
|
|
169
|
-
obj[groupedKey] = grouped[key][groupedKey][i] ?? null;
|
|
170
|
-
}
|
|
171
|
-
multiSeriesData.push(obj);
|
|
172
|
-
}
|
|
113
|
+
multiSeriesData.push({
|
|
114
|
+
[groupXAxisBy]: key,
|
|
115
|
+
...grouped[key],
|
|
116
|
+
});
|
|
173
117
|
}
|
|
174
118
|
return {
|
|
175
119
|
data: multiSeriesData,
|
|
@@ -222,19 +166,6 @@ export function handleFormattingTemplates(formatting) {
|
|
|
222
166
|
}
|
|
223
167
|
return formattingOutput;
|
|
224
168
|
}
|
|
225
|
-
function getSeriesRole(seriesName, multiSeries) {
|
|
226
|
-
if (multiSeries?.tooltip && seriesName.startsWith(multiSeries.tooltip)) {
|
|
227
|
-
return {
|
|
228
|
-
role: 'tooltip',
|
|
229
|
-
seriesName,
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
const match = seriesName.match(roleRegex);
|
|
233
|
-
if (match) {
|
|
234
|
-
return { role: match[1], seriesName: seriesName };
|
|
235
|
-
}
|
|
236
|
-
return { role: null, seriesName };
|
|
237
|
-
}
|
|
238
169
|
export function getDataTableFormat(data, fields, multiSeries) {
|
|
239
170
|
let cols = [];
|
|
240
171
|
if (multiSeries) {
|
|
@@ -242,8 +173,12 @@ export function getDataTableFormat(data, fields, multiSeries) {
|
|
|
242
173
|
}
|
|
243
174
|
for (const key in fields) {
|
|
244
175
|
if (!multiSeries || key !== multiSeries.groupXAxisBy) {
|
|
245
|
-
|
|
246
|
-
|
|
176
|
+
if (multiSeries?.tooltip && key.includes(multiSeries.tooltip)) {
|
|
177
|
+
cols.push(makeDataTableCol(key, fields, 'tooltip'));
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
cols.push(makeDataTableCol(key, fields));
|
|
181
|
+
}
|
|
247
182
|
}
|
|
248
183
|
}
|
|
249
184
|
const rows = data.map(row => {
|
|
@@ -255,20 +190,6 @@ export function getDataTableFormat(data, fields, multiSeries) {
|
|
|
255
190
|
c: items,
|
|
256
191
|
};
|
|
257
192
|
});
|
|
258
|
-
if (!cols.length) {
|
|
259
|
-
cols.push({
|
|
260
|
-
id: 'nodata1',
|
|
261
|
-
label: 'No Data',
|
|
262
|
-
type: 'number',
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
if (cols.length === 1) {
|
|
266
|
-
cols.push({
|
|
267
|
-
id: 'nodata2',
|
|
268
|
-
label: 'No Data',
|
|
269
|
-
type: 'number',
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
193
|
return { cols, rows };
|
|
273
194
|
}
|
|
274
195
|
export function makeDataCumulative(dataTable, cumulative = true) {
|
|
@@ -286,28 +207,29 @@ export function makeDataCumulative(dataTable, cumulative = true) {
|
|
|
286
207
|
});
|
|
287
208
|
return dataTable;
|
|
288
209
|
}
|
|
289
|
-
export function
|
|
210
|
+
export function getRactiveTableDataFormat(rows, fields, formatting, styleTemplates = {}) {
|
|
290
211
|
const columns = Object.keys(fields).map(field => {
|
|
291
|
-
if (formatting?.[field]?.type === 'NumberFormat') {
|
|
212
|
+
if (formatting?.[field]?.type === 'NumberFormat' && formatting?.[field]?.format?.prefix === '$') {
|
|
292
213
|
return {
|
|
293
214
|
property: `${field}[value]`,
|
|
294
215
|
name: field,
|
|
295
|
-
class: 'text-right
|
|
216
|
+
class: 'text-right border-top-0',
|
|
296
217
|
};
|
|
297
218
|
}
|
|
298
219
|
return {
|
|
299
220
|
property: `${field}[value]`,
|
|
300
221
|
name: field,
|
|
301
|
-
class: '',
|
|
222
|
+
class: 'border-top-0',
|
|
302
223
|
};
|
|
303
224
|
});
|
|
304
225
|
if (styleTemplates) {
|
|
305
|
-
rows = rows.map(row =>
|
|
226
|
+
rows = rows.map(row => {
|
|
227
|
+
return styleTableRow(row, styleTemplates);
|
|
228
|
+
});
|
|
306
229
|
}
|
|
307
230
|
return {
|
|
308
231
|
columns,
|
|
309
232
|
rows,
|
|
310
233
|
};
|
|
311
234
|
}
|
|
312
|
-
export { getSvelteDataTableFormat as getRactiveDataTableFormat };
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NoYXJ0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLG1CQUFtQixNQUFNLDJCQUEyQixDQUFBO0FBQzNELE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxPQUFPLGNBQWMsTUFBTSx1Q0FBdUMsQ0FBQTtBQUNsRSxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRTdCLFNBQVMsOEJBQThCLENBQUMsYUFBcUI7SUFDNUQsUUFBUSxhQUFhLEVBQUUsQ0FBQztRQUN2QixLQUFLLFlBQVksQ0FBQztRQUNsQixLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxTQUFTO1lBQ2IsT0FBTyxRQUFRLENBQUE7UUFDaEIsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLFlBQVksQ0FBQztRQUNsQixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFVBQVUsQ0FBQztRQUNoQixLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssTUFBTTtZQUNWLE9BQU8sUUFBUSxDQUFBO1FBQ2hCLEtBQUssV0FBVyxDQUFDO1FBQ2pCLEtBQUssVUFBVSxDQUFDO1FBQ2hCLEtBQUssWUFBWSxDQUFDO1FBQ2xCLEtBQUssV0FBVztZQUNmLE9BQU8sVUFBVSxDQUFBO1FBQ2xCLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxTQUFTO1lBQ2IsT0FBTyxNQUFNLENBQUE7UUFDZCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssT0FBTztZQUNYLE9BQU8sV0FBVyxDQUFBO1FBQ25CO1lBQ0MsT0FB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
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NoYXJ0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLG1CQUFtQixNQUFNLDJCQUEyQixDQUFBO0FBQzNELE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxPQUFPLGNBQWMsTUFBTSx1Q0FBdUMsQ0FBQTtBQUNsRSxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQTtBQUVoRCxTQUFTLDhCQUE4QixDQUFDLGFBQXFCO0lBQzVELFFBQVEsYUFBYSxFQUFFLENBQUM7UUFDdkIsS0FBSyxZQUFZLENBQUM7UUFDbEIsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssU0FBUztZQUNiLE9BQU8sUUFBUSxDQUFBO1FBQ2hCLEtBQUssU0FBUyxDQUFDO1FBQ2YsS0FBSyxZQUFZLENBQUM7UUFDbEIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssUUFBUSxDQUFDO1FBQ2QsS0FBSyxVQUFVLENBQUM7UUFDaEIsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLE1BQU07WUFDVixPQUFPLFFBQVEsQ0FBQTtRQUNoQixLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLFVBQVUsQ0FBQztRQUNoQixLQUFLLFlBQVksQ0FBQztRQUNsQixLQUFLLFdBQVc7WUFDZixPQUFPLFVBQVUsQ0FBQTtRQUNsQixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssU0FBUztZQUNiLE9BQU8sTUFBTSxDQUFBO1FBQ2QsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE9BQU87WUFDWCxPQUFPLFdBQVcsQ0FBQTtRQUNuQjtZQUNDLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7QUFDRixDQUFDO0FBRUQsU0FB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
|
package/dist/index.d.ts
CHANGED
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
export * from './types/index.js';
|
|
3
|
-
export { queryWithFields } from './chart-helper.js';
|
|
1
|
+
import { DatabaseConnectionInterface, QueryCommand, RowDataPacket } from '@isoftdata/utility-db';
|
|
4
2
|
import { QueryFieldsObject } from './chart-helper.js';
|
|
5
|
-
import type { DashboardReportParameter
|
|
6
|
-
import type { Session, SiteType } from './types/session
|
|
7
|
-
import type { MultiSeriesOptions, Formatting, Chart, Table, GoogleDataTable, ProcessedFormatting
|
|
8
|
-
import type {
|
|
9
|
-
import type { Report, ReportInput } from './types/report.js';
|
|
10
|
-
import type { PartialDeep } from 'type-fest';
|
|
3
|
+
import type { DashboardReportParameter } from './types/parameter';
|
|
4
|
+
import type { Session, SiteType } from './types/session';
|
|
5
|
+
import type { MultiSeriesOptions, Formatting, Chart, Table, GoogleDataTable, ProcessedFormatting } from './types/chart';
|
|
6
|
+
import type { Report, ReportInput } from './types/report';
|
|
11
7
|
export * as formatterTemplates from './formatting-templates.js';
|
|
12
8
|
export { handleFormattingTemplates } from './chart-helper.js';
|
|
9
|
+
export type { ReportInput } from './types/report';
|
|
13
10
|
export type CustomDataSourceFunction = (query: string, values?: unknown[]) => Promise<{
|
|
14
11
|
results: RowDataPacket[];
|
|
15
12
|
fields: QueryFieldsObject;
|
|
16
|
-
jsonOverride?: PartialDeep<ChartJson>;
|
|
17
13
|
}>;
|
|
18
14
|
export type LoadDataTableAndProcessedFormattingOptions = {
|
|
19
|
-
query:
|
|
20
|
-
sql: string;
|
|
21
|
-
values: unknown[];
|
|
22
|
-
};
|
|
15
|
+
query: QueryCommand;
|
|
23
16
|
multiSeries?: MultiSeriesOptions;
|
|
24
17
|
formatting?: Formatting;
|
|
25
18
|
chartType: string;
|
|
@@ -27,45 +20,30 @@ export type LoadDataTableAndProcessedFormattingOptions = {
|
|
|
27
20
|
table?: Table;
|
|
28
21
|
customDataSource?: CustomDataSourceFunction | null;
|
|
29
22
|
};
|
|
30
|
-
export declare function loadDataTableAndProcessedFormatting(mysqlConnection:
|
|
23
|
+
export declare function loadDataTableAndProcessedFormatting(mysqlConnection: DatabaseConnectionInterface, { query: queryObject, multiSeries, formatting, chartType, cumulative, table, customDataSource }: LoadDataTableAndProcessedFormattingOptions): Promise<{
|
|
31
24
|
dataTable: GoogleDataTable | Table;
|
|
32
25
|
processedFormatting: ProcessedFormatting;
|
|
33
26
|
fields: QueryFieldsObject;
|
|
34
|
-
jsonOverride?: PartialDeep<ChartJson>;
|
|
35
27
|
}>;
|
|
36
28
|
export type loadDataTableOptions = {
|
|
37
|
-
query:
|
|
38
|
-
sql: string;
|
|
39
|
-
values: unknown[];
|
|
40
|
-
};
|
|
29
|
+
query: QueryCommand;
|
|
41
30
|
multiSeries: MultiSeriesOptions;
|
|
42
31
|
formatting: Formatting;
|
|
43
32
|
chartType: string;
|
|
44
33
|
};
|
|
45
|
-
export declare function loadDataTable(mysqlConnection:
|
|
46
|
-
type
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
dates?: {
|
|
50
|
-
from: string;
|
|
51
|
-
to: string;
|
|
52
|
-
} | null;
|
|
53
|
-
};
|
|
54
|
-
type LoadOutputParameterValuesOptions = {
|
|
55
|
-
definitionList: Array<DashboardReportParameterInput>;
|
|
56
|
-
selectionList?: Array<SelectionParameter>;
|
|
34
|
+
export declare function loadDataTable(mysqlConnection: DatabaseConnectionInterface, { query: queryObject, multiSeries, formatting, chartType }: loadDataTableOptions): Promise<GoogleDataTable>;
|
|
35
|
+
type loadOutputParameterValuesOptions = {
|
|
36
|
+
definitionList: DashboardReportParameter[];
|
|
37
|
+
selectionList?: Array<Partial<DashboardReportParameter> & Pick<DashboardReportParameter, 'name'>>;
|
|
57
38
|
forClient?: boolean;
|
|
58
39
|
session: Session;
|
|
59
40
|
site?: SiteType;
|
|
60
41
|
siteIdColumn?: string;
|
|
61
42
|
siteNameColumn?: string;
|
|
62
43
|
};
|
|
63
|
-
export declare function loadOutputParameterValues(mysqlConnection:
|
|
44
|
+
export declare function loadOutputParameterValues(mysqlConnection: DatabaseConnectionInterface, { definitionList, selectionList, forClient, session, site, siteIdColumn, siteNameColumn }: loadOutputParameterValuesOptions): Promise<DashboardReportParameter[]>;
|
|
64
45
|
export declare const parameterRegex: RegExp;
|
|
65
|
-
export declare function parameterizeQuery(queryString: string
|
|
66
|
-
sql: string;
|
|
67
|
-
values: unknown[];
|
|
68
|
-
};
|
|
46
|
+
export declare function parameterizeQuery(queryString: string, parameterValues: DashboardReportParameter[]): QueryCommand;
|
|
69
47
|
export declare function parameterizeUrl(url: string, parameterValues: DashboardReportParameter[]): string;
|
|
70
48
|
type FormatReportMetadataOptions = {
|
|
71
49
|
report: ReportInput;
|
|
@@ -75,9 +53,9 @@ type FormatReportMetadataOptions = {
|
|
|
75
53
|
siteIdColumn?: string;
|
|
76
54
|
siteNameColumn?: string;
|
|
77
55
|
};
|
|
78
|
-
export declare function formatReportMetadata(mysqlConnection:
|
|
56
|
+
export declare function formatReportMetadata(mysqlConnection: DatabaseConnectionInterface, { report, chartsInReport, session, site, siteIdColumn, siteNameColumn }: FormatReportMetadataOptions): Promise<Report>;
|
|
79
57
|
export type FormatChartDataForReportOptions = {
|
|
80
|
-
reportParameters:
|
|
58
|
+
reportParameters: DashboardReportParameter[];
|
|
81
59
|
chart: Chart;
|
|
82
60
|
reportChart: {
|
|
83
61
|
chartId: number;
|
|
@@ -86,11 +64,11 @@ export type FormatChartDataForReportOptions = {
|
|
|
86
64
|
rank: number;
|
|
87
65
|
reportChartId: number;
|
|
88
66
|
};
|
|
89
|
-
parameterSelectionList:
|
|
67
|
+
parameterSelectionList: DashboardReportParameter[];
|
|
90
68
|
session: Session;
|
|
91
69
|
site: SiteType;
|
|
92
70
|
siteIdColumn?: string;
|
|
93
71
|
siteNameColumn?: string;
|
|
94
72
|
customDataSource?: CustomDataSourceFunction | null;
|
|
95
73
|
};
|
|
96
|
-
export declare function formatChartDataForReport(mysqlConnection:
|
|
74
|
+
export declare function formatChartDataForReport(mysqlConnection: DatabaseConnectionInterface, { reportParameters, chart, reportChart, parameterSelectionList, session, site, siteIdColumn, siteNameColumn, customDataSource }: FormatChartDataForReportOptions): Promise<Omit<Chart, 'query'>>;
|