@isoftdata/utility-dashboard-backend 3.4.1 → 4.0.0-beta.1

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/index.js CHANGED
@@ -1,11 +1,7 @@
1
- export * from './types/index.js';
2
- export { queryWithFields } from './chart-helper.js';
3
- import { query } from '@isoftdata/utility-db';
4
- import { getMultiSeriesData, makeNegativeNumericValuesZero, coerceNullColumn, handleFormattingTemplates, getDataTableFormat, queryWithFields, makeDataCumulative, getSvelteDataTableFormat, } from './chart-helper.js';
1
+ import { getMultiSeriesData, makeNegativeNumericValuesZero, coerceNullColumn, handleFormattingTemplates, getDataTableFormat, queryWithFields, makeDataCumulative, getRactiveTableDataFormat, } from './chart-helper.js';
5
2
  import { datesFromRange } from '@isoftdata/utility-date-time';
6
3
  import { format as formatDate } from 'date-fns';
7
4
  import camelCase from 'camelcase';
8
- import mysql from 'mysql';
9
5
  import deepmerge from 'deepmerge';
10
6
  export * as formatterTemplates from './formatting-templates.js';
11
7
  export { handleFormattingTemplates } from './chart-helper.js';
@@ -28,7 +24,7 @@ const handleChartTypeSpecificQuirks = (chartType, resultSet) => {
28
24
  return resultSet;
29
25
  };
30
26
  async function loadChartData(mysqlConnection, chart, queryObject, customDataSource) {
31
- let { formatting, chartWrapper, multiSeries, table, cumulative, url, ...theRest } = chart;
27
+ let { formatting, chartWrapper, multiSeries, table, supertype, cumulative, url, ...theRest } = chart;
32
28
  if (!chartWrapper) {
33
29
  throw new Error('No chartWrapper found in chart!');
34
30
  }
@@ -39,33 +35,31 @@ async function loadChartData(mysqlConnection, chart, queryObject, customDataSour
39
35
  query: queryObject,
40
36
  multiSeries,
41
37
  formatting,
42
- chartType: chartWrapper.chartType ?? chart.supertype,
38
+ chartType: chartWrapper.chartType,
43
39
  cumulative,
44
40
  table,
45
41
  customDataSource,
46
42
  });
47
43
  dataTable = dataTableAndProcessedFormatting.dataTable;
48
44
  processedFormatting = dataTableAndProcessedFormatting.processedFormatting;
49
- if (dataTableAndProcessedFormatting.jsonOverride) {
50
- chart = deepmerge(chart, dataTableAndProcessedFormatting.jsonOverride);
51
- chartWrapper = chart.chartWrapper;
52
- }
53
45
  }
54
46
  catch (err) {
55
47
  console.error('Error loading dataTable / processedFormatting');
56
48
  throw err;
57
49
  }
58
- if (theRest.supertype === 'table') {
50
+ if (supertype === 'table') {
59
51
  return {
60
52
  ...theRest,
53
+ supertype,
61
54
  chartWrapper,
62
55
  table: { ...table, ...dataTable },
63
56
  formatting: processedFormatting,
64
57
  };
65
58
  }
66
- else if (theRest.supertype === 'embed') {
59
+ else if (supertype === 'embed') {
67
60
  return {
68
61
  ...theRest,
62
+ supertype,
69
63
  chartWrapper,
70
64
  url: url ?? '',
71
65
  formatting: processedFormatting,
@@ -75,6 +69,7 @@ async function loadChartData(mysqlConnection, chart, queryObject, customDataSour
75
69
  return {
76
70
  ...theRest,
77
71
  cumulative,
72
+ supertype,
78
73
  chartWrapper: {
79
74
  ...chartWrapper,
80
75
  dataTable: dataTable,
@@ -86,10 +81,9 @@ async function loadChartData(mysqlConnection, chart, queryObject, customDataSour
86
81
  export async function loadDataTableAndProcessedFormatting(mysqlConnection, { query: queryObject, multiSeries, formatting, chartType, cumulative = false, table = {}, customDataSource }) {
87
82
  let results = [];
88
83
  let fields = {};
89
- let jsonOverride = undefined;
90
84
  if (typeof customDataSource === 'function') {
91
85
  ;
92
- ({ results, fields, jsonOverride } = await customDataSource(queryObject.sql, queryObject.values));
86
+ ({ results, fields } = await customDataSource(queryObject.sql, queryObject.values));
93
87
  }
94
88
  else if (queryObject?.sql) {
95
89
  ;
@@ -107,52 +101,41 @@ export async function loadDataTableAndProcessedFormatting(mysqlConnection, { que
107
101
  }
108
102
  const processedFormatting = handleFormattingTemplates(formatting);
109
103
  if (chartType?.toLowerCase() === 'table') {
110
- return {
111
- dataTable: getSvelteDataTableFormat(data, fields, processedFormatting, table?.style),
112
- processedFormatting,
113
- fields,
114
- jsonOverride,
115
- };
104
+ return { dataTable: getRactiveTableDataFormat(data, fields, processedFormatting, table?.style), processedFormatting, fields };
116
105
  }
117
106
  let dataTable = getDataTableFormat(data, fields, multiSeries);
118
107
  if (cumulative || chartType === 'AreaChart') {
119
108
  dataTable = makeDataCumulative(dataTable, cumulative);
120
109
  }
121
- return {
122
- dataTable,
123
- processedFormatting,
124
- fields,
125
- jsonOverride,
126
- };
110
+ return { dataTable, processedFormatting, fields };
127
111
  }
128
112
  export async function loadDataTable(mysqlConnection, { query: queryObject, multiSeries, formatting, chartType }) {
129
113
  const { dataTable } = await loadDataTableAndProcessedFormatting(mysqlConnection, { query: queryObject, multiSeries, formatting, chartType });
130
114
  return dataTable;
131
115
  }
132
116
  const loadOptionList = async (mysqlConnection, optionListQuery, optionList = []) => {
133
- const optionsFromQuery = (optionListQuery && (await query(mysqlConnection, optionListQuery))) || [];
117
+ const optionsFromQuery = (optionListQuery && (await mysqlConnection.query({ sql: optionListQuery }))) || [];
134
118
  return [...optionList, ...optionsFromQuery.map((option) => ({ ...option, fromQuery: true }))];
135
119
  };
136
120
  const isValidDateRangeValue = (value) => {
137
- return (!!value &&
138
- [
139
- 'Always',
140
- 'Today',
141
- 'Yesterday',
142
- 'Last 7 Days',
143
- 'Last 30 Days',
144
- 'Last 90 Days',
145
- 'Last 365 Days',
146
- 'This Week',
147
- 'This Month',
148
- 'This Quarter',
149
- 'This Year',
150
- 'Previous Week',
151
- 'Previous Month',
152
- 'Previous Quarter',
153
- 'Previous Year',
154
- 'Custom',
155
- ].includes(value));
121
+ return [
122
+ 'Always',
123
+ 'Today',
124
+ 'Yesterday',
125
+ 'Last 7 Days',
126
+ 'Last 30 Days',
127
+ 'Last 90 Days',
128
+ 'Last 365 Days',
129
+ 'This Week',
130
+ 'This Month',
131
+ 'This Quarter',
132
+ 'This Year',
133
+ 'Previous Week',
134
+ 'Previous Month',
135
+ 'Previous Quarter',
136
+ 'Previous Year',
137
+ 'Custom',
138
+ ].includes(value);
156
139
  };
157
140
  export async function loadOutputParameterValues(mysqlConnection, { definitionList = [], selectionList = [], forClient = false, session, site = 'store', siteIdColumn, siteNameColumn }) {
158
141
  if (!(definitionList instanceof Array) || !definitionList.length) {
@@ -161,26 +144,17 @@ export async function loadOutputParameterValues(mysqlConnection, { definitionLis
161
144
  const parameterValues = [];
162
145
  for (const definition of definitionList) {
163
146
  const matchingParameterSelection = selectionList.find(param => param.name === definition.name);
164
- let typedParameter = definition.type === 'dateRange'
165
- ? {
166
- ...definition,
167
- title: definition.title || definition.name,
168
- queryValues: {},
169
- value: null,
170
- dates: { from: '', to: '' },
171
- }
172
- : {
173
- ...definition,
174
- title: definition.title || definition.name,
175
- queryValues: {},
176
- value: null,
177
- };
147
+ let typedParameter = {
148
+ ...definition,
149
+ title: definition.title || definition.name,
150
+ queryValues: {},
151
+ };
178
152
  const value = matchingParameterSelection?.value ?? definition.default;
179
153
  if (typedParameter.type !== 'dateRange') {
180
154
  typedParameter.value = value;
181
155
  }
182
156
  if (typedParameter.type === 'dateRange') {
183
- const validDateRangeValue = value && isValidDateRangeValue(value) ? value : definition.default && isValidDateRangeValue(definition.default) ? definition.default : 'Last 30 Days';
157
+ const validDateRangeValue = isValidDateRangeValue(value) ? value : 'Last 30 Days';
184
158
  typedParameter = {
185
159
  ...typedParameter,
186
160
  value: validDateRangeValue,
@@ -219,26 +193,25 @@ export async function loadOutputParameterValues(mysqlConnection, { definitionLis
219
193
  permission: definition?.permission,
220
194
  optionList: [],
221
195
  };
222
- typedParameter.value = typedParameter.value ?? session.siteId?.toString() ?? session[`${site}Id`]?.toString() ?? null;
196
+ typedParameter.value = typedParameter.value ?? session.siteId ?? session[`${site}Id`];
223
197
  siteIdColumn = siteIdColumn ? mysqlConnection.escapeId(siteIdColumn) : mysqlConnection.escapeId(`${site}id`);
224
198
  siteNameColumn = siteNameColumn ? mysqlConnection.escapeId(siteNameColumn) : 'name';
225
199
  const siteTableName = mysqlConnection.escapeId(site);
226
200
  if (typedParameter.permission) {
227
- typedParameter.optionList = await query(mysqlConnection, {
201
+ typedParameter.optionList = await mysqlConnection.query({
228
202
  sql: `SELECT ${siteIdColumn} AS id, ${siteNameColumn} AS \`name\` FROM ${siteTableName} WHERE f_check_user_permission(?, ?, ${siteIdColumn})`,
229
203
  values: [session.userAccountId, definition.permission],
230
204
  });
231
205
  }
232
206
  else {
233
- typedParameter.optionList = await query(mysqlConnection, {
207
+ typedParameter.optionList = await mysqlConnection.query({
234
208
  sql: `SELECT ${siteIdColumn} AS id, ${siteNameColumn} AS \`name\` FROM ${siteTableName} WHERE f_useraccount_has_site_access(?, ${siteIdColumn})`,
235
209
  values: [session.userAccountId],
236
210
  });
237
211
  }
238
- typedParameter.optionList = typedParameter.optionList.map(option => ({ id: option.id?.toString(), name: option.name }));
239
212
  if (typedParameter.optionList.length > 1) {
240
213
  typedParameter.optionList = typedParameter.optionList.map(option => ({ ...option, fromQuery: true }));
241
- typedParameter.optionList.unshift({ id: '0', name: 'All', fromQuery: true });
214
+ typedParameter.optionList.unshift({ id: 0, name: 'All', fromQuery: true });
242
215
  }
243
216
  if (!typedParameter.optionList.some(option => option.id?.toString() === typedParameter.value?.toString())) {
244
217
  typedParameter.value = typedParameter.optionList?.[0]?.id.toString();
@@ -346,9 +319,6 @@ export async function formatChartDataForReport(mysqlConnection, { reportParamete
346
319
  reportChart.jsonOverride.chartWrapper = chartWrapper;
347
320
  }
348
321
  const combinedChart = deepmerge(chart, reportChart.jsonOverride ?? {});
349
- if (combinedChart.supertype === 'embed' && combinedChart.url) {
350
- combinedChart.formattedUrl = parameterizeUrl(combinedChart.url, parameterValues);
351
- }
352
322
  return await loadChartData(mysqlConnection, {
353
323
  ...combinedChart,
354
324
  rank: reportChart.rank,
@@ -361,4 +331,4 @@ export async function formatChartDataForReport(mysqlConnection, { reportParamete
361
331
  throw err;
362
332
  }
363
333
  }
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzdDLE9BQU8sRUFDTixrQkFBa0IsRUFDbEIsNkJBQTZCLEVBQzdCLGdCQUFnQixFQUNoQix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsd0JBQXdCLEdBRXhCLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdELE9BQU8sRUFBRSxNQUFNLElBQUksVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQy9DLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBT2pDLE9BQU8sS0FBSyxrQkFBa0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQWdCN0QsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLFNBQWlCLEVBQUUsU0FBMEIsRUFBRSxFQUFFO0lBQ3ZGLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLFFBQVEsU0FBUyxFQUFFLENBQUM7WUFDbkIsS0FBSyxVQUFVO2dCQUVkLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDcEQsTUFBSztZQUNOLEtBQUssU0FBUztnQkFFYixTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNOLGtCQUFrQixFQUNsQiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQix5QkFBeUIsR0FFekIsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDN0QsT0FBTyxFQUFFLE1BQU0sSUFBSSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDL0MsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQU1qQyxPQUFPLEtBQUssa0JBQWtCLE1BQU0sMkJBQTJCLENBQUE7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFNN0QsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLFNBQWlCLEVBQUUsU0FBMEIsRUFBRSxFQUFFO0lBQ3ZGLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLFFBQVEsU0FBUyxFQUFFLENBQUM7WUFDbkIsS0FBSyxVQUFVO2dCQUVkLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDcEQsTUFBSztZQUNOLEtBQUssU0FBUztnQkFFYixTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtnQkFDckUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM1QixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQTtnQkFDNUIsQ0FBQztnQkFD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
@@ -1,4 +1,4 @@
1
- import type { RowDataPacket } from 'mysql';
2
- import type { TableStyleTemplateObject } from './types/chart.js';
1
+ import type { RowDataPacket } from '@isoftdata/utility-db';
2
+ import type { TableStyleTemplateObject } from './types/chart';
3
3
  declare function styleRow(row: RowDataPacket, templates: TableStyleTemplateObject): RowDataPacket;
4
4
  export default styleRow;
@@ -1,23 +1,15 @@
1
1
  import { create, all } from 'mathjs';
2
- import toSnakeCase from 'to-snake-case';
2
+ import snakecaseKeys from 'snakecase-keys';
3
+ import { klona } from 'klona';
3
4
  const math = create(all);
4
5
  math.import({
5
6
  locale: (value) => value.toLocaleString(),
6
7
  includes: (value, search) => value.includes(search),
7
- icon: (icon, text) => {
8
- if (!/fa\w+/.test(icon)) {
9
- icon = `fas ${icon}`;
10
- }
11
- return `<i class="${icon}"></i> ${text}`;
12
- },
13
- link: (link, text, target = 'dashboard-link') => {
14
- return `<a target="${target}" href="${link}">${text}</a>`;
15
- },
16
8
  });
17
9
  function handleMathJsCellStyleTemplate(row, columnToStyle, templates) {
18
10
  const outCell = { value: row[columnToStyle] };
19
11
  if (columnToStyle in templates) {
20
- const scope = getScopeObject(row, outCell.value);
12
+ const scope = snakecaseKeys(klona({ ...row, value: outCell.value }), { deep: true });
21
13
  for (const key in templates[columnToStyle]) {
22
14
  try {
23
15
  const expression = templates[columnToStyle][key] ?? '';
@@ -25,15 +17,11 @@ function handleMathJsCellStyleTemplate(row, columnToStyle, templates) {
25
17
  }
26
18
  catch (err) {
27
19
  console.error(`Error evaluating expression: '${templates[columnToStyle][key]}'\n`, err);
28
- outCell.error = err.message;
29
20
  }
30
21
  }
31
22
  }
32
23
  return outCell;
33
24
  }
34
- function getScopeObject(row, cellValue) {
35
- return Object.fromEntries(Object.entries({ ...row, value: cellValue }).map(([key, value]) => [toSnakeCase(key), value ?? '']));
36
- }
37
25
  function styleRow(row, templates) {
38
26
  const outRow = {};
39
27
  for (const columnName in row) {
@@ -42,4 +30,4 @@ function styleRow(row, templates) {
42
30
  return outRow;
43
31
  }
44
32
  export default styleRow;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtdGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0eWxlLXRlbXBsYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNwQyxPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUE7QUFFdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDWCxNQUFNLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7SUFDakQsUUFBUSxFQUFFLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbkUsSUFBSSxFQUFFLENBQUMsSUFBWSxFQUFFLElBQWEsRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFDckIsQ0FBQztRQUNELE9BQU8sYUFBYSxJQUFJLFVBQVUsSUFBSSxFQUFFLENBQUE7SUFDekMsQ0FBQztJQUNELElBQUksRUFBRSxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsTUFBTSxHQUFHLGdCQUFnQixFQUFFLEVBQUU7UUFDL0QsT0FBTyxjQUFjLE1BQU0sV0FBVyxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUE7SUFDMUQsQ0FBQztDQUNELENBQUMsQ0FBQTtBQUVGLFNBQVMsNkJBQTZCLENBQUMsR0FBa0IsRUFBRSxhQUFxQixFQUFFLFNBQW1DO0lBQ3BILE1BQU0sT0FBTyxHQUFvQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQTtJQUM5RSxJQUFJLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQztnQkFDSixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDaEQsQ0FBQztZQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUV2RixPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUE7WUFDNUIsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDZixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsR0FBa0IsRUFBRSxTQUEwQjtJQUVyRSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQy9ILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFrQixFQUFFLFNBQW1DO0lBQ3hFLE1BQU0sTUFBTSxHQUFHLEVBQW1CLENBQUE7SUFDbEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsNkJBQTZCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUMvRSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZCxDQUFDO0FBRUQsZUFBZSxRQUFRLENBQUEifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtdGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0eWxlLXRlbXBsYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUVwQyxPQUFPLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRTdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ1gsTUFBTSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFO0lBQ2pELFFBQVEsRUFBRSxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0NBQ25FLENBQUMsQ0FBQTtBQUVGLFNBQVMsNkJBQTZCLENBQUMsR0FBa0IsRUFBRSxhQUFxQixFQUFFLFNBQW1DO0lBQ3BILE1BQU0sT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBcUMsQ0FBQTtJQUNoRixJQUFJLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUVoQyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDcEYsS0FBSyxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUM7Z0JBQ0osTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2hELENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUdkLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ3hGLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2YsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEdBQWtCLEVBQUUsU0FBbUM7SUFDeEUsTUFBTSxNQUFNLEdBQUcsRUFBbUIsQ0FBQTtJQUNsQyxLQUFLLE1BQU0sVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQy9FLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNkLENBQUM7QUFFRCxlQUFlLFFBQVEsQ0FBQSJ9
@@ -1,5 +1,4 @@
1
- import type { MergeDeep } from 'type-fest';
2
- import type { NumberFormatOptions, MediumDateFormatOptions, LongDateFormatOptions } from '../formatting-templates.js';
1
+ import type { NumberFormatOptions, MediumDateFormatOptions, LongDateFormatOptions } from "../formatting-templates";
3
2
  export type GoogleDataTableCell = {
4
3
  v?: unknown;
5
4
  f?: string | undefined;
@@ -28,71 +27,71 @@ interface WidthAndHeight {
28
27
  export type ChartWrapper = {
29
28
  options: google.visualization.TreeMapOptions & WidthAndHeight;
30
29
  dataTable?: GoogleDataTable;
31
- chartType: 'TreeMap';
30
+ chartType: "TreeMap";
32
31
  } | {
33
32
  options: google.visualization.GeoChartOptions & WidthAndHeight;
34
33
  dataTable?: GoogleDataTable;
35
- chartType: 'GeoChart';
34
+ chartType: "GeoChart";
36
35
  } | {
37
36
  options: google.visualization.ScatterChartOptions & WidthAndHeight;
38
37
  dataTable?: GoogleDataTable;
39
- chartType: 'ScatterChart';
38
+ chartType: "ScatterChart";
40
39
  } | {
41
40
  options: google.visualization.ColumnChartOptions & WidthAndHeight;
42
41
  dataTable?: GoogleDataTable;
43
- chartType: 'ColumnChart';
42
+ chartType: "ColumnChart";
44
43
  } | {
45
44
  options: google.visualization.HistogramOptions & WidthAndHeight;
46
45
  dataTable?: GoogleDataTable;
47
- chartType: 'Histogram';
46
+ chartType: "HistogramOptions";
48
47
  } | {
49
48
  options: google.visualization.BarChartOptions & WidthAndHeight;
50
49
  dataTable?: GoogleDataTable;
51
- chartType: 'BarChart';
50
+ chartType: "BarChart";
52
51
  } | {
53
52
  options: google.visualization.ComboChartOptions & WidthAndHeight;
54
53
  dataTable?: GoogleDataTable;
55
- chartType: 'ComboChart';
54
+ chartType: "ComboChart";
56
55
  } | {
57
56
  options: google.visualization.AreaChartOptions & WidthAndHeight;
58
57
  dataTable?: GoogleDataTable;
59
- chartType: 'AreaChart';
58
+ chartType: "AreaChart";
60
59
  } | {
61
60
  options: google.visualization.SteppedAreaChartOptions & WidthAndHeight;
62
61
  dataTable?: GoogleDataTable;
63
- chartType: 'SteppedAreaChart';
62
+ chartType: "SteppedAreaChart";
64
63
  } | {
65
64
  options: google.visualization.LineChartOptions & WidthAndHeight;
66
65
  dataTable?: GoogleDataTable;
67
- chartType: 'LineChart';
66
+ chartType: "LineChart";
68
67
  } | {
69
68
  options: google.visualization.PieChartOptions & WidthAndHeight;
70
69
  dataTable?: GoogleDataTable;
71
- chartType: 'PieChart';
70
+ chartType: "PieChart";
72
71
  } | {
73
72
  options: google.visualization.BubbleChartOptions & WidthAndHeight;
74
73
  dataTable?: GoogleDataTable;
75
- chartType: 'BubbleChart';
74
+ chartType: "BubbleChart";
76
75
  } | {
77
76
  options: google.visualization.OrgChartOptions & WidthAndHeight;
78
77
  dataTable?: GoogleDataTable;
79
- chartType: 'OrgChart';
78
+ chartType: "OrgChart";
80
79
  } | {
81
80
  options: google.visualization.TimelineOptions & WidthAndHeight;
82
81
  dataTable?: GoogleDataTable;
83
- chartType: 'Timeline';
82
+ chartType: "Timeline";
84
83
  } | {
85
84
  options: google.visualization.GaugeChartOptions & WidthAndHeight;
86
85
  dataTable?: GoogleDataTable;
87
- chartType: 'Gauge';
86
+ chartType: "GaugeChart";
88
87
  } | {
89
88
  options: google.visualization.CandlestickChartOptions & WidthAndHeight;
90
89
  dataTable?: GoogleDataTable;
91
- chartType: 'CandlestickChart';
90
+ chartType: "CandlestickChart";
92
91
  } | {
93
92
  options: google.visualization.TableOptions & WidthAndHeight;
94
93
  dataTable?: GoogleDataTable;
95
- chartType: 'Table';
94
+ chartType: "Table";
96
95
  };
97
96
  export type MultiSeriesOptions = {
98
97
  value: string;
@@ -100,12 +99,12 @@ export type MultiSeriesOptions = {
100
99
  groupXAxisBy: string;
101
100
  tooltip?: string;
102
101
  };
103
- export type FormattingType = 'DateFormat' | 'NumberFormat';
102
+ export type FormattingType = "DateFormat" | "NumberFormat";
104
103
  export type FormattingRule = {
105
- type: 'DateFormat';
104
+ type: "DateFormat";
106
105
  format: LongDateFormatOptions | MediumDateFormatOptions;
107
106
  } | {
108
- type: 'NumberFormat';
107
+ type: "NumberFormat";
109
108
  format: NumberFormatOptions;
110
109
  };
111
110
  export type Formatting = Record<string, FormattingRule>;
@@ -131,7 +130,6 @@ export type TableRow = {
131
130
  value: string | number;
132
131
  class?: string;
133
132
  html?: string;
134
- error?: string;
135
133
  };
136
134
  };
137
135
  export type Table = {
@@ -149,9 +147,18 @@ export type TableStyleTemplate = {
149
147
  html?: string;
150
148
  [key: string]: string | undefined;
151
149
  };
152
- export type ChartSuperType = 'google' | 'table' | 'embed';
153
- export interface ChartBase extends ChartJson {
150
+ export type ChartSuperType = "google" | "table" | "embed";
151
+ export type ChartBase = {
154
152
  chartId: number;
153
+ query: string;
154
+ multiSeries?: MultiSeriesOptions;
155
+ formatting?: Formatting;
156
+ chartWrapper: ChartWrapper;
157
+ table?: Table;
158
+ cumulative?: boolean;
159
+ greedyHeight?: boolean;
160
+ greedyWidth?: boolean;
161
+ hideTitle?: boolean;
155
162
  name: string;
156
163
  showChart: boolean;
157
164
  supertype: ChartSuperType;
@@ -160,40 +167,18 @@ export interface ChartBase extends ChartJson {
160
167
  dataSourceName?: string;
161
168
  rank?: number;
162
169
  reportChartId?: number;
163
- }
164
- export interface ChartJson {
165
- allowExport?: boolean;
166
- chartWrapper: MergeDeep<ChartWrapper, {
167
- options: {
168
- width: number;
169
- height: number;
170
- };
171
- }>;
172
- cumulative?: boolean;
173
- formatting?: Formatting;
174
- greedyHeight?: boolean;
175
- greedyWidth?: boolean;
176
- hideTitle?: boolean;
177
- multiSeries?: MultiSeriesOptions;
178
- query?: string;
179
- showFooter?: boolean;
180
- table?: Table;
181
170
  url?: string;
182
- }
183
- interface GoogleChart extends ChartBase {
184
- query: string;
185
- supertype: 'google';
186
- }
187
- interface TableChart extends ChartBase {
188
- query: string;
189
- supertype: 'table';
190
- table: NonNullable<ChartBase['table']>;
191
- }
192
- interface EmbedChart extends ChartBase {
193
- supertype: 'embed';
194
- url: NonNullable<ChartBase['url']>;
195
- formattedUrl?: string;
196
- query?: never;
197
- }
171
+ };
172
+ type GoogleChart = ChartBase & {
173
+ supertype: "google";
174
+ };
175
+ type TableChart = ChartBase & {
176
+ supertype: "table";
177
+ table: NonNullable<ChartBase["table"]>;
178
+ };
179
+ type EmbedChart = ChartBase & {
180
+ supertype: "embed";
181
+ url: string;
182
+ };
198
183
  export type Chart = GoogleChart | TableChart | EmbedChart;
199
184
  export {};
@@ -1,7 +1,6 @@
1
1
  import type { NamedDateRange } from '@isoftdata/utility-date-time';
2
- type MaybeArray<T> = T | T[];
3
2
  export interface OptionListEntry {
4
- id: string;
3
+ id: number | string;
5
4
  name: string;
6
5
  rawSql?: boolean;
7
6
  fromQuery?: boolean;
@@ -10,16 +9,16 @@ export type OptionList = Array<OptionListEntry>;
10
9
  export interface DashboardReportBaseParameter {
11
10
  name: string;
12
11
  title: string;
13
- default: string | null;
14
- value: string | null;
15
- queryValues: Record<string, MaybeArray<string | null>>;
12
+ default: string;
13
+ value: string;
14
+ queryValues: Record<string, string | string[]>;
16
15
  }
17
16
  export interface DashboardReportDateParameter extends DashboardReportBaseParameter {
18
17
  type: 'date';
19
18
  }
20
19
  export interface DashboardReportDateRangeParameter extends DashboardReportBaseParameter {
21
20
  type: 'dateRange';
22
- value: NamedDateRange | 'Custom' | null;
21
+ value: NamedDateRange | 'Custom';
23
22
  dates: {
24
23
  from: string;
25
24
  to: string;
@@ -39,6 +38,3 @@ export interface DashboardReportSessionParameter extends DashboardReportBasePara
39
38
  type: 'session';
40
39
  }
41
40
  export type DashboardReportParameter = DashboardReportDateParameter | DashboardReportSelectionParameter | DashboardReportSiteSelectionParameter | DashboardReportDateRangeParameter | DashboardReportSessionParameter;
42
- type OmitOutputProperties<T extends DashboardReportBaseParameter> = Omit<T, 'value' | 'queryValues' | 'dates'>;
43
- export type DashboardReportParameterInput = OmitOutputProperties<DashboardReportDateParameter> | OmitOutputProperties<DashboardReportSelectionParameter> | OmitOutputProperties<DashboardReportSiteSelectionParameter> | OmitOutputProperties<DashboardReportDateRangeParameter> | OmitOutputProperties<DashboardReportSessionParameter>;
44
- export {};
@@ -1,5 +1,5 @@
1
- import type { Chart } from './chart.js';
2
- import type { DashboardReportParameter } from './parameter.js';
1
+ import type { Chart } from './chart';
2
+ import type { DashboardReportParameter } from './parameter';
3
3
  export interface Report {
4
4
  dashboardReportId: number;
5
5
  name: string;
@@ -7,5 +7,4 @@ export interface Session {
7
7
  userAccountId: number | null;
8
8
  userName: string;
9
9
  companyCode: number;
10
- token?: string;
11
10
  }