@deenruv/dashboard-widgets-plugin 1.0.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.
Files changed (108) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +58 -0
  3. package/dist/plugin-server/constants.d.ts +4 -0
  4. package/dist/plugin-server/constants.js +12 -0
  5. package/dist/plugin-server/controllers/admin-ui-controller.d.ts +4 -0
  6. package/dist/plugin-server/controllers/admin-ui-controller.js +46 -0
  7. package/dist/plugin-server/controllers/refresh-view-controller.d.ts +8 -0
  8. package/dist/plugin-server/controllers/refresh-view-controller.js +41 -0
  9. package/dist/plugin-server/index.d.ts +1 -0
  10. package/dist/plugin-server/index.js +17 -0
  11. package/dist/plugin-server/materialisedViewEntities/order_summary.d.ts +9 -0
  12. package/dist/plugin-server/materialisedViewEntities/order_summary.js +79 -0
  13. package/dist/plugin-server/materialisedViewEntities/orders_summary_with_state.d.ts +10 -0
  14. package/dist/plugin-server/materialisedViewEntities/orders_summary_with_state.js +79 -0
  15. package/dist/plugin-server/materialisedViewEntities/total_products.d.ts +7 -0
  16. package/dist/plugin-server/materialisedViewEntities/total_products.js +62 -0
  17. package/dist/plugin-server/materialisedViewEntities/total_products_with_state.d.ts +9 -0
  18. package/dist/plugin-server/materialisedViewEntities/total_products_with_state.js +62 -0
  19. package/dist/plugin-server/plugin.d.ts +6 -0
  20. package/dist/plugin-server/plugin.js +149 -0
  21. package/dist/plugin-server/raw-sql.d.ts +8 -0
  22. package/dist/plugin-server/raw-sql.js +48 -0
  23. package/dist/plugin-server/resolvers/admin.resolver.d.ts +47 -0
  24. package/dist/plugin-server/resolvers/admin.resolver.js +63 -0
  25. package/dist/plugin-server/services/metrics.service.d.ts +30 -0
  26. package/dist/plugin-server/services/metrics.service.js +272 -0
  27. package/dist/plugin-server/types.d.ts +20 -0
  28. package/dist/plugin-server/types.js +2 -0
  29. package/dist/plugin-server/utils.d.ts +1 -0
  30. package/dist/plugin-server/utils.js +12 -0
  31. package/dist/plugin-server/zeus/const.d.ts +6 -0
  32. package/dist/plugin-server/zeus/const.js +3675 -0
  33. package/dist/plugin-server/zeus/index.d.ts +18709 -0
  34. package/dist/plugin-server/zeus/index.js +1122 -0
  35. package/dist/plugin-server/zeus/typedDocumentNode.d.ts +3 -0
  36. package/dist/plugin-server/zeus/typedDocumentNode.js +16 -0
  37. package/dist/plugin-ui/components/CategoriesChartWidget/dashCaseToSpaces.d.ts +1 -0
  38. package/dist/plugin-ui/components/CategoriesChartWidget/dashCaseToSpaces.js +6 -0
  39. package/dist/plugin-ui/components/CategoriesChartWidget/index.d.ts +2 -0
  40. package/dist/plugin-ui/components/CategoriesChartWidget/index.js +100 -0
  41. package/dist/plugin-ui/components/LatestOrdersWidget/index.d.ts +4 -0
  42. package/dist/plugin-ui/components/LatestOrdersWidget/index.js +96 -0
  43. package/dist/plugin-ui/components/LatestOrdersWidget/paymentMethod.d.ts +6 -0
  44. package/dist/plugin-ui/components/LatestOrdersWidget/paymentMethod.js +7 -0
  45. package/dist/plugin-ui/components/OrdersWidget/CustomTooltip.d.ts +18 -0
  46. package/dist/plugin-ui/components/OrdersWidget/CustomTooltip.js +92 -0
  47. package/dist/plugin-ui/components/OrdersWidget/GroupBySelect.d.ts +8 -0
  48. package/dist/plugin-ui/components/OrdersWidget/GroupBySelect.js +17 -0
  49. package/dist/plugin-ui/components/OrdersWidget/MetricCustomDates.d.ts +9 -0
  50. package/dist/plugin-ui/components/OrdersWidget/MetricCustomDates.js +27 -0
  51. package/dist/plugin-ui/components/OrdersWidget/MetricTypeSelect.d.ts +9 -0
  52. package/dist/plugin-ui/components/OrdersWidget/MetricTypeSelect.js +17 -0
  53. package/dist/plugin-ui/components/OrdersWidget/OrdersChart.d.ts +24 -0
  54. package/dist/plugin-ui/components/OrdersWidget/OrdersChart.js +46 -0
  55. package/dist/plugin-ui/components/OrdersWidget/OrdersSummaryTile.d.ts +13 -0
  56. package/dist/plugin-ui/components/OrdersWidget/OrdersSummaryTile.js +115 -0
  57. package/dist/plugin-ui/components/OrdersWidget/ProductSelector.d.ts +17 -0
  58. package/dist/plugin-ui/components/OrdersWidget/ProductSelector.js +37 -0
  59. package/dist/plugin-ui/components/OrdersWidget/RatioBadge.d.ts +6 -0
  60. package/dist/plugin-ui/components/OrdersWidget/RatioBadge.js +12 -0
  61. package/dist/plugin-ui/components/OrdersWidget/index.d.ts +2 -0
  62. package/dist/plugin-ui/components/OrdersWidget/index.js +229 -0
  63. package/dist/plugin-ui/components/ProductsChartWidget/CustomBarChartTooltip.d.ts +9 -0
  64. package/dist/plugin-ui/components/ProductsChartWidget/CustomBarChartTooltip.js +14 -0
  65. package/dist/plugin-ui/components/ProductsChartWidget/index.d.ts +2 -0
  66. package/dist/plugin-ui/components/ProductsChartWidget/index.js +116 -0
  67. package/dist/plugin-ui/components/index.d.ts +4 -0
  68. package/dist/plugin-ui/components/index.js +4 -0
  69. package/dist/plugin-ui/components/shared/EmptyData.d.ts +6 -0
  70. package/dist/plugin-ui/components/shared/EmptyData.js +8 -0
  71. package/dist/plugin-ui/components/shared/MetricsRangeSelect.d.ts +10 -0
  72. package/dist/plugin-ui/components/shared/MetricsRangeSelect.js +26 -0
  73. package/dist/plugin-ui/components/shared/OrderStatesSelect.d.ts +8 -0
  74. package/dist/plugin-ui/components/shared/OrderStatesSelect.js +28 -0
  75. package/dist/plugin-ui/components/shared/PeriodSelect.d.ts +20 -0
  76. package/dist/plugin-ui/components/shared/PeriodSelect.js +56 -0
  77. package/dist/plugin-ui/components/shared/colors.d.ts +1 -0
  78. package/dist/plugin-ui/components/shared/colors.js +1 -0
  79. package/dist/plugin-ui/components/shared/index.d.ts +3 -0
  80. package/dist/plugin-ui/components/shared/index.js +3 -0
  81. package/dist/plugin-ui/graphql/index.d.ts +2 -0
  82. package/dist/plugin-ui/graphql/index.js +2 -0
  83. package/dist/plugin-ui/graphql/queries.d.ts +425 -0
  84. package/dist/plugin-ui/graphql/queries.js +182 -0
  85. package/dist/plugin-ui/graphql/selectors.d.ts +19 -0
  86. package/dist/plugin-ui/graphql/selectors.js +21 -0
  87. package/dist/plugin-ui/index.d.ts +9 -0
  88. package/dist/plugin-ui/index.js +21 -0
  89. package/dist/plugin-ui/locales/en/index.d.ts +72 -0
  90. package/dist/plugin-ui/locales/en/index.js +2 -0
  91. package/dist/plugin-ui/locales/en/test.json +71 -0
  92. package/dist/plugin-ui/locales/pl/index.d.ts +71 -0
  93. package/dist/plugin-ui/locales/pl/index.js +2 -0
  94. package/dist/plugin-ui/locales/pl/test.json +70 -0
  95. package/dist/plugin-ui/tsconfig.json +18 -0
  96. package/dist/plugin-ui/types.d.ts +64 -0
  97. package/dist/plugin-ui/types.js +14 -0
  98. package/dist/plugin-ui/utils.d.ts +70 -0
  99. package/dist/plugin-ui/utils.js +366 -0
  100. package/dist/plugin-ui/widgets.d.ts +15 -0
  101. package/dist/plugin-ui/widgets.js +36 -0
  102. package/dist/plugin-ui/zeus/const.d.ts +6 -0
  103. package/dist/plugin-ui/zeus/const.js +3672 -0
  104. package/dist/plugin-ui/zeus/index.d.ts +18709 -0
  105. package/dist/plugin-ui/zeus/index.js +1114 -0
  106. package/dist/plugin-ui/zeus/typedDocumentNode.d.ts +3 -0
  107. package/dist/plugin-ui/zeus/typedDocumentNode.js +9 -0
  108. package/package.json +52 -0
@@ -0,0 +1,70 @@
1
+ import { MetricRangeType, ChartMetricType, GraphQLTypes, ModelTypes, MetricIntervalType } from "./zeus";
2
+ import { AdditionalEntryData, GroupByPeriodArgs } from "./types.js";
3
+ export declare const getQuartersForYear: (previous?: boolean) => {
4
+ start: Date;
5
+ end: Date;
6
+ }[];
7
+ export declare const getCustomIntervalDates: (rangeType?: MetricRangeType) => {
8
+ range: {
9
+ start: Date;
10
+ end: Date;
11
+ };
12
+ prevRange: {
13
+ start: Date;
14
+ end: Date;
15
+ };
16
+ };
17
+ interface ConvertBackendDataToChartDataProps {
18
+ type: GraphQLTypes["ChartMetricType"];
19
+ entries: ModelTypes["ChartEntry"][];
20
+ prevEntries: ModelTypes["ChartEntry"][];
21
+ interval: MetricIntervalType;
22
+ language: string;
23
+ start: Date;
24
+ end?: Date;
25
+ }
26
+ export declare const convertBackedDataToChartData: (args: ConvertBackendDataToChartDataProps) => {
27
+ name: string;
28
+ value: number;
29
+ prevValue: number;
30
+ additionalData: {
31
+ id: string;
32
+ name: string;
33
+ quantity: number;
34
+ }[] | undefined;
35
+ type: ChartMetricType;
36
+ }[];
37
+ export declare const generateBrightRandomColor: () => string;
38
+ export declare const sortBySelected: (selectedIds: string[]) => (a: {
39
+ id: string;
40
+ }, b: {
41
+ id: string;
42
+ }) => number;
43
+ export declare const getRandomColor: (colorsArray: string[]) => string;
44
+ export declare const calculatePercentage: (part: number, total: number) => number;
45
+ export declare const giveSummaryMetricsRatio: (metric: ModelTypes["OrderSummaryDataMetric"], prevMetric: ModelTypes["OrderSummaryDataMetric"]) => {
46
+ currencyCode: import("./zeus").CurrencyCode;
47
+ total: number;
48
+ totalWithTax: number;
49
+ orderCount: number;
50
+ averageOrderValue: number;
51
+ averageOrderValueWithTax: number;
52
+ productCount: number;
53
+ };
54
+ export declare const groupByPeriods: (args: GroupByPeriodArgs) => {
55
+ [key: string]: any;
56
+ name: string;
57
+ value?: number | undefined;
58
+ type: ChartMetricType;
59
+ additionalData?: AdditionalEntryData[] | undefined;
60
+ }[] | {
61
+ [key: string]: {
62
+ name: string;
63
+ value: number;
64
+ prevValue: number;
65
+ type: ChartMetricType;
66
+ additionalData?: AdditionalEntryData[] | undefined;
67
+ };
68
+ };
69
+ export declare const parseNameToCurrentLanguage: (name: string, language: string) => string;
70
+ export {};
@@ -0,0 +1,366 @@
1
+ import { addDays, addQuarters, eachDayOfInterval, eachHourOfInterval, endOfMonth, endOfQuarter, endOfToday, endOfWeek, endOfYear, endOfYesterday, format, startOfMonth, startOfQuarter, startOfToday, startOfWeek, startOfYear, startOfYesterday, subDays, subMonths, subWeeks, subYears, parse, isValid, getQuarter, getISOWeek, } from "date-fns";
2
+ import { pl, enGB } from "date-fns/locale";
3
+ import { MetricRangeType, ChartMetricType, MetricIntervalType, } from "./zeus";
4
+ import { fromZonedTime } from "date-fns-tz";
5
+ export const getQuartersForYear = (previous) => {
6
+ const quarters = [];
7
+ // Start of the first quarter
8
+ let currentQuarterStart = previous
9
+ ? subYears(startOfYear(new Date()), 1)
10
+ : startOfYear(new Date());
11
+ for (let i = 0; i < 4; i++) {
12
+ const quarterStart = startOfQuarter(currentQuarterStart);
13
+ const quarterEnd = endOfQuarter(currentQuarterStart);
14
+ quarters.push({
15
+ start: quarterStart,
16
+ end: quarterEnd,
17
+ });
18
+ // Move to the next quarter
19
+ currentQuarterStart = addQuarters(currentQuarterStart, 1);
20
+ }
21
+ return quarters;
22
+ };
23
+ export const getCustomIntervalDates = (rangeType) => {
24
+ const quarters = getQuartersForYear();
25
+ const previousQuarters = getQuartersForYear(true);
26
+ switch (rangeType) {
27
+ case MetricRangeType.Today: {
28
+ return {
29
+ range: { start: startOfToday(), end: endOfToday() },
30
+ prevRange: { start: startOfYesterday(), end: endOfYesterday() },
31
+ };
32
+ }
33
+ case MetricRangeType.Yesterday: {
34
+ return {
35
+ range: { start: startOfYesterday(), end: endOfYesterday() },
36
+ prevRange: {
37
+ start: subDays(startOfYesterday(), 1),
38
+ end: subDays(endOfYesterday(), 1),
39
+ },
40
+ };
41
+ }
42
+ case MetricRangeType.ThisWeek: {
43
+ return {
44
+ range: {
45
+ start: startOfWeek(new Date(), { weekStartsOn: 1 }),
46
+ end: endOfWeek(new Date(), { weekStartsOn: 1 }),
47
+ },
48
+ prevRange: {
49
+ start: startOfWeek(subWeeks(new Date(), 1), { weekStartsOn: 1 }),
50
+ end: endOfWeek(subWeeks(new Date(), 1), { weekStartsOn: 1 }),
51
+ },
52
+ };
53
+ }
54
+ case MetricRangeType.LastWeek:
55
+ return {
56
+ range: {
57
+ start: startOfWeek(subWeeks(new Date(), 1), { weekStartsOn: 1 }),
58
+ end: endOfWeek(subWeeks(new Date(), 1), { weekStartsOn: 1 }),
59
+ },
60
+ prevRange: {
61
+ start: startOfWeek(subWeeks(new Date(), 2), { weekStartsOn: 1 }),
62
+ end: endOfWeek(subWeeks(new Date(), 2), { weekStartsOn: 1 }),
63
+ },
64
+ };
65
+ case MetricRangeType.ThisMonth: {
66
+ return {
67
+ range: { start: startOfMonth(new Date()), end: endOfMonth(new Date()) },
68
+ prevRange: {
69
+ start: startOfMonth(subMonths(new Date(), 1)),
70
+ end: endOfMonth(subMonths(new Date(), 1)),
71
+ },
72
+ };
73
+ }
74
+ case MetricRangeType.LastMonth:
75
+ return {
76
+ range: {
77
+ start: startOfMonth(subMonths(new Date(), 1)),
78
+ end: endOfMonth(subMonths(new Date(), 1)),
79
+ },
80
+ prevRange: {
81
+ start: startOfMonth(subMonths(new Date(), 2)),
82
+ end: endOfMonth(subMonths(new Date(), 2)),
83
+ },
84
+ };
85
+ case MetricRangeType.ThisYear: {
86
+ return {
87
+ range: { start: startOfYear(new Date()), end: endOfYear(new Date()) },
88
+ prevRange: {
89
+ start: startOfYear(subYears(new Date(), 1)),
90
+ end: endOfYear(subYears(new Date(), 1)),
91
+ },
92
+ };
93
+ }
94
+ case MetricRangeType.LastYear: {
95
+ return {
96
+ range: {
97
+ start: startOfYear(subYears(new Date(), 1)),
98
+ end: endOfYear(subYears(new Date(), 1)),
99
+ },
100
+ prevRange: {
101
+ start: startOfYear(subYears(new Date(), 2)),
102
+ end: endOfYear(subYears(new Date(), 2)),
103
+ },
104
+ };
105
+ }
106
+ case MetricRangeType.FirstQuarter:
107
+ return { range: quarters[0], prevRange: previousQuarters[0] };
108
+ case MetricRangeType.SecondQuarter:
109
+ return { range: quarters[1], prevRange: previousQuarters[1] };
110
+ case MetricRangeType.ThirdQuarter:
111
+ return { range: quarters[2], prevRange: previousQuarters[2] };
112
+ case MetricRangeType.FourthQuarter:
113
+ return { range: quarters[3], prevRange: previousQuarters[3] };
114
+ default:
115
+ return {
116
+ range: {
117
+ start: startOfWeek(new Date(), { weekStartsOn: 1 }),
118
+ end: endOfWeek(new Date(), { weekStartsOn: 1 }),
119
+ },
120
+ prevRange: {
121
+ start: startOfWeek(subWeeks(new Date(), 1), { weekStartsOn: 1 }),
122
+ end: endOfWeek(subWeeks(new Date(), 1), { weekStartsOn: 1 }),
123
+ },
124
+ };
125
+ }
126
+ };
127
+ export const convertBackedDataToChartData = (args) => {
128
+ const { entries, prevEntries, interval, language, start, type, end } = args;
129
+ const isDayInteval = interval === MetricIntervalType.Day;
130
+ const lastDay = entries.reduce((acc, curr) => (curr.intervalTick > acc ? curr.intervalTick : acc), 0);
131
+ const prevLastDay = prevEntries.reduce((acc, curr) => (curr.intervalTick > acc ? curr.intervalTick : acc), 0);
132
+ const rangeDays = eachDayOfInterval({
133
+ start,
134
+ end: end ?? addDays(start, Math.max(lastDay, prevLastDay)),
135
+ });
136
+ const entriesMap = new Map(entries.map((entry) => [entry.intervalTick, entry]));
137
+ const prevEntriesMap = new Map(prevEntries.map((entry) => [entry.intervalTick, entry]));
138
+ const rangeHours = eachHourOfInterval({
139
+ start: fromZonedTime(start, "UTC"),
140
+ end: end
141
+ ? fromZonedTime(end, "UTC")
142
+ : addDays(fromZonedTime(start, "UTC"), Math.max(lastDay, prevLastDay)),
143
+ });
144
+ const convertedData = (isDayInteval ? rangeDays : rangeHours).map((intervalTick, i) => {
145
+ const entryFromMap = entriesMap.get(isDayInteval ? i + 1 : i);
146
+ const prevEntryFromMap = prevEntriesMap.get(isDayInteval ? i + 1 : i);
147
+ if (entryFromMap)
148
+ return {
149
+ name: format(intervalTick, isDayInteval ? "PPP" : "HH:mm", {
150
+ locale: language === "pl" ? pl : enGB,
151
+ }),
152
+ value: type === ChartMetricType.AverageOrderValue ||
153
+ type === ChartMetricType.OrderTotal
154
+ ? entryFromMap.value / 100
155
+ : entryFromMap.value,
156
+ prevValue: prevEntryFromMap
157
+ ? type === ChartMetricType.AverageOrderValue ||
158
+ type === ChartMetricType.OrderTotal
159
+ ? prevEntryFromMap.value / 100
160
+ : prevEntryFromMap.value
161
+ : 0,
162
+ additionalData: entryFromMap.additionalData ?? undefined,
163
+ type,
164
+ };
165
+ else
166
+ return {
167
+ name: format(intervalTick, isDayInteval ? "PPP" : "HH:mm", {
168
+ locale: language === "pl" ? pl : enGB,
169
+ }),
170
+ value: 0,
171
+ prevValue: prevEntryFromMap
172
+ ? type === ChartMetricType.AverageOrderValue ||
173
+ type === ChartMetricType.OrderTotal
174
+ ? prevEntryFromMap.value / 100
175
+ : prevEntryFromMap.value
176
+ : 0,
177
+ additionalData: undefined,
178
+ type,
179
+ };
180
+ });
181
+ return convertedData;
182
+ };
183
+ export const generateBrightRandomColor = () => {
184
+ const r = Math.floor(Math.random() * 106) + 150;
185
+ const g = Math.floor(Math.random() * 106) + 150;
186
+ const b = Math.floor(Math.random() * 106) + 150;
187
+ const hexColor = `#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`;
188
+ return hexColor;
189
+ };
190
+ export const sortBySelected = (selectedIds) => (a, b) => {
191
+ const indexA = selectedIds.indexOf(a.id);
192
+ const indexB = selectedIds.indexOf(b.id);
193
+ if (indexA === -1 && indexB === -1)
194
+ return 0;
195
+ if (indexA === -1)
196
+ return 1;
197
+ if (indexB === -1)
198
+ return -1;
199
+ return indexA - indexB;
200
+ };
201
+ export const getRandomColor = (colorsArray) => {
202
+ const randomIndex = Math.floor(Math.random() * colorsArray.length);
203
+ return colorsArray[randomIndex];
204
+ };
205
+ export const calculatePercentage = (part, total) => {
206
+ if (total === 0 && part === 0)
207
+ return 0;
208
+ if (total === 0)
209
+ return 100;
210
+ const percentage = (part / total) * 100;
211
+ return percentage - 100;
212
+ };
213
+ export const giveSummaryMetricsRatio = (metric, prevMetric) => {
214
+ const prevRatio = {
215
+ ...prevMetric,
216
+ averageOrderValue: +calculatePercentage(metric.averageOrderValue, prevMetric.averageOrderValue).toFixed(2),
217
+ averageOrderValueWithTax: +calculatePercentage(metric.averageOrderValueWithTax, prevMetric.averageOrderValueWithTax).toFixed(2),
218
+ orderCount: +calculatePercentage(metric.orderCount, prevMetric.orderCount).toFixed(2),
219
+ productCount: +calculatePercentage(metric.productCount, prevMetric.productCount).toFixed(2),
220
+ total: +calculatePercentage(metric.total, prevMetric.total).toFixed(2),
221
+ totalWithTax: +calculatePercentage(metric.totalWithTax, prevMetric.totalWithTax).toFixed(2),
222
+ };
223
+ return prevRatio;
224
+ };
225
+ const groupByPeriodsInitialValue = (name, type) => ({
226
+ name,
227
+ value: 0,
228
+ prevValue: 0,
229
+ type,
230
+ additionalData: [],
231
+ });
232
+ const quarterMap = { 1: "I", 2: "II", 3: "III", 4: "IV" };
233
+ const monthsMap = {
234
+ stycznia: "Styczeń",
235
+ lutego: "Luty",
236
+ marca: "Marzec",
237
+ kwietnia: "Kwiecień",
238
+ maja: "Maj",
239
+ czerwca: "Czerwiec",
240
+ lipca: "Lipiec",
241
+ sierpnia: "Sierpień",
242
+ września: "Wrzesień",
243
+ października: "Październik",
244
+ listopada: "Listopad",
245
+ grudnia: "Grudzień",
246
+ };
247
+ export const groupByPeriods = (args) => {
248
+ const { data, language, groupBy } = args;
249
+ if (groupBy === "day")
250
+ return data;
251
+ return data.reduce((acc, item) => {
252
+ const safeName = parseNameToCurrentLanguage(item.name, language);
253
+ const date = parse(safeName, "d MMMM yyyy", new Date(), {
254
+ locale: language === "pl" ? pl : enGB,
255
+ });
256
+ switch (groupBy) {
257
+ case "week": {
258
+ const week = `W${getISOWeek(date)}`;
259
+ if (!acc[week])
260
+ acc[week] = groupByPeriodsInitialValue(week, item.type);
261
+ acc[week].value += item?.value ?? 0;
262
+ acc[week].prevValue += item?.prevValue ?? 0;
263
+ item.additionalData?.forEach((data) => {
264
+ const existingRecord = acc[week].additionalData?.find((item) => item.id === data.id);
265
+ if (existingRecord) {
266
+ const withoutExistingRecord = acc[week].additionalData?.filter((item) => item.id !== data.id);
267
+ acc[week].additionalData = [
268
+ ...(withoutExistingRecord ?? []),
269
+ {
270
+ ...existingRecord,
271
+ quantity: existingRecord.quantity + data.quantity,
272
+ },
273
+ ];
274
+ }
275
+ else {
276
+ acc[week].additionalData?.push(data);
277
+ }
278
+ });
279
+ return acc;
280
+ }
281
+ case "month": {
282
+ const monthDate = `${format(date, "MMMM", {
283
+ locale: language === "pl" ? pl : enGB,
284
+ })}`;
285
+ const month = language === "pl"
286
+ ? monthsMap[monthDate]
287
+ : monthDate;
288
+ if (!acc[month])
289
+ acc[month] = groupByPeriodsInitialValue(month, item.type);
290
+ acc[month].value += item?.value ?? 0;
291
+ acc[month].prevValue += item?.prevValue ?? 0;
292
+ item.additionalData?.forEach((data) => {
293
+ const existingRecord = acc[month].additionalData?.find((item) => item.id === data.id);
294
+ if (existingRecord) {
295
+ const withoutExistingRecord = acc[month].additionalData?.filter((item) => item.id !== data.id);
296
+ acc[month].additionalData = [
297
+ ...(withoutExistingRecord ?? []),
298
+ {
299
+ ...existingRecord,
300
+ quantity: existingRecord.quantity + data.quantity,
301
+ },
302
+ ];
303
+ }
304
+ else {
305
+ acc[month].additionalData?.push(data);
306
+ }
307
+ });
308
+ return acc;
309
+ }
310
+ case "quarter": {
311
+ const quarterDesc = language === "pl" ? "kwartał" : "quarter";
312
+ const quarter = `${quarterMap[getQuarter(date)]} ${quarterDesc} ${format(date, "yyyy")}`;
313
+ if (!acc[quarter])
314
+ acc[quarter] = groupByPeriodsInitialValue(quarter, item.type);
315
+ acc[quarter].value += item?.value ?? 0;
316
+ acc[quarter].prevValue += item?.prevValue ?? 0;
317
+ item.additionalData?.forEach((data) => {
318
+ const existingRecord = acc[quarter].additionalData?.find((item) => item.id === data.id);
319
+ if (existingRecord) {
320
+ const withoutExistingRecord = acc[quarter].additionalData?.filter((item) => item.id !== data.id);
321
+ acc[quarter].additionalData = [
322
+ ...(withoutExistingRecord ?? []),
323
+ {
324
+ ...existingRecord,
325
+ quantity: existingRecord.quantity + data.quantity,
326
+ },
327
+ ];
328
+ }
329
+ else {
330
+ acc[quarter].additionalData?.push(data);
331
+ }
332
+ });
333
+ return acc;
334
+ }
335
+ }
336
+ }, {});
337
+ };
338
+ export const parseNameToCurrentLanguage = (name, language) => {
339
+ const namePL = parse(name, "d MMMM yyyy", new Date(), {
340
+ locale: pl,
341
+ });
342
+ const nameEN = parse(name, "d MMMM yyyy", new Date(), {
343
+ locale: enGB,
344
+ });
345
+ if (isValid(namePL)) {
346
+ if (language === "en") {
347
+ const parsedToEn = format(namePL, "d MMMM yyyy", {
348
+ locale: enGB,
349
+ });
350
+ return parsedToEn;
351
+ }
352
+ else
353
+ return name;
354
+ }
355
+ if (isValid(nameEN)) {
356
+ if (language === "pl") {
357
+ const parsedToEn = format(nameEN, "d MMMM yyyy", {
358
+ locale: pl,
359
+ });
360
+ return parsedToEn;
361
+ }
362
+ else
363
+ return name;
364
+ }
365
+ return name;
366
+ };
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ export declare const widgets: {
3
+ id: string;
4
+ name: string;
5
+ component: React.JSX.Element;
6
+ visible: boolean;
7
+ size: {
8
+ width: number;
9
+ height: number;
10
+ };
11
+ sizes: {
12
+ width: number;
13
+ height: number;
14
+ }[];
15
+ }[];
@@ -0,0 +1,36 @@
1
+ import React from "react";
2
+ import { OrdersWidget, ProductsChartWidget, CategoriesChartWidget, LatestOrdersWidget, } from "./components";
3
+ export const widgets = [
4
+ {
5
+ id: "2",
6
+ name: "Orders Widget",
7
+ component: React.createElement(OrdersWidget, null),
8
+ visible: true,
9
+ size: { width: 12, height: 8 },
10
+ sizes: [{ width: 12, height: 8 }],
11
+ },
12
+ {
13
+ id: "3",
14
+ name: "Products Widget",
15
+ component: React.createElement(ProductsChartWidget, null),
16
+ visible: true,
17
+ size: { width: 6, height: 10 },
18
+ sizes: [{ width: 6, height: 10 }],
19
+ },
20
+ {
21
+ id: "4",
22
+ name: "Categories Widget",
23
+ component: React.createElement(CategoriesChartWidget, null),
24
+ visible: true,
25
+ size: { width: 6, height: 10 },
26
+ sizes: [{ width: 6, height: 10 }],
27
+ },
28
+ {
29
+ id: "5",
30
+ name: "Latest Orders Widget",
31
+ component: React.createElement(LatestOrdersWidget, null),
32
+ visible: true,
33
+ size: { width: 6, height: 10 },
34
+ sizes: [{ width: 6, height: 10 }],
35
+ },
36
+ ];
@@ -0,0 +1,6 @@
1
+ export declare const AllTypesProps: Record<string, any>;
2
+ export declare const ReturnTypes: Record<string, any>;
3
+ export declare const Ops: {
4
+ query: "Query";
5
+ mutation: "Mutation";
6
+ };