datastake-daf 0.6.783 → 0.6.785

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 (59) hide show
  1. package/dist/components/index.js +78 -70
  2. package/dist/hooks/index.js +3 -1
  3. package/dist/pages/index.js +1082 -270
  4. package/dist/style/datastake/mapbox-gl.css +330 -0
  5. package/dist/utils/index.js +67 -0
  6. package/package.json +1 -1
  7. package/src/@daf/core/components/Charts/BarChart/index.jsx +1 -1
  8. package/src/@daf/core/components/Dashboard/Map/ChainIcon/utils.js +2 -2
  9. package/src/@daf/core/components/Screens/BaseScreen/index.jsx +1 -0
  10. package/src/@daf/core/components/Select/MultiSelect/index.jsx +4 -2
  11. package/src/@daf/core/components/Select/MultiSelect/style.js +15 -0
  12. package/src/@daf/hooks/useGetQueryParams.js +3 -1
  13. package/src/@daf/pages/Dashboards/UserDashboard/components/ContributionsGraph/hook.js +6 -7
  14. package/src/@daf/pages/Dashboards/UserDashboard/components/ContributionsGraph/index.jsx +1 -1
  15. package/src/@daf/pages/Documents/config.js +5 -5
  16. package/src/@daf/pages/Events/Activities/columns.js +5 -0
  17. package/src/@daf/pages/Events/Activities/config.js +21 -17
  18. package/src/@daf/pages/Events/Incidents/columns.js +5 -0
  19. package/src/@daf/pages/Events/Incidents/config.js +14 -11
  20. package/src/@daf/pages/Events/columns.js +6 -0
  21. package/src/@daf/pages/Events/config.js +0 -16
  22. package/src/@daf/pages/Locations/MineSite/columns.js +5 -1
  23. package/src/@daf/pages/Locations/MineSite/config.js +21 -24
  24. package/src/@daf/pages/Partners/columns.js +3 -1
  25. package/src/@daf/pages/Partners/config.js +13 -9
  26. package/src/@daf/pages/Partners/create.jsx +5 -2
  27. package/src/@daf/pages/Partners/edit.jsx +4 -2
  28. package/src/@daf/pages/Stakeholders/Operators/columns.js +6 -0
  29. package/src/@daf/pages/Stakeholders/Operators/config.js +8 -8
  30. package/src/@daf/pages/Stakeholders/Workers/columns.js +19 -13
  31. package/src/@daf/pages/Stakeholders/Workers/config.js +8 -23
  32. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/components/KeyInformation/index.jsx +48 -0
  33. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/components/MangroveGrowth/PlantedSpecies.jsx +73 -0
  34. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/components/MangroveGrowth/SeedlingsHeight.jsx +44 -0
  35. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/components/MangroveGrowth/Stats.jsx +86 -0
  36. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/components/MangroveGrowth/VegetationHealth.jsx +73 -0
  37. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/components/MangroveGrowth/index.jsx +92 -0
  38. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/components/MonitoringScopeAndFindings/index.jsx +348 -0
  39. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/config.js +35 -0
  40. package/src/@daf/pages/Summary/Activities/MonitoringCampaign/index.jsx +30 -0
  41. package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CommunityParticipation/CommunityStats/helper.js +1 -1
  42. package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CycleIndicators/index.jsx +1 -1
  43. package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CycleOutcomes/index.jsx +1 -1
  44. package/src/@daf/pages/Summary/Activities/PlantingCycle/helper.js +0 -56
  45. package/src/@daf/pages/Summary/Minesite/index.jsx +6 -4
  46. package/src/@daf/pages/Summary/Operator/components/TradeRelationships/index.js +2 -0
  47. package/src/@daf/pages/Summary/Operator/index.jsx +6 -3
  48. package/src/@daf/pages/TablePage/index.jsx +8 -2
  49. package/src/@daf/pages/Template/components/LinkingTemplate/config.js +14 -1
  50. package/src/@daf/pages/Template/components/LinkingTemplate/index.jsx +4 -2
  51. package/src/@daf/pages/Template/index.jsx +1 -10
  52. package/src/@daf/pages/View/hooks/usePrepareForm.js +4 -4
  53. package/src/@daf/pages/View/index.jsx +2 -1
  54. package/src/@daf/utils/numbers.js +57 -0
  55. package/src/constants/locales/en/translation.js +3 -0
  56. package/src/constants/locales/fr/translation.js +3 -0
  57. package/src/constants/locales/sp/translation.js +3 -0
  58. package/src/pages.js +1 -0
  59. package/src/utils.js +1 -1
@@ -0,0 +1,330 @@
1
+ /* Isolated Mapbox GL CSS - Scoped to prevent Leaflet conflicts */
2
+
3
+ /* Mapbox GL Core Styles - Scoped with .mapbox-gl-scope */
4
+ .mapbox-gl-scope .mapboxgl-map {
5
+ font: 12px/20px Helvetica Neue, Arial, Helvetica, sans-serif;
6
+ overflow: hidden;
7
+ position: relative;
8
+ -webkit-tap-highlight-color: rgb(0 0 0/0);
9
+ }
10
+
11
+ .mapbox-gl-scope .mapboxgl-canvas {
12
+ left: 0;
13
+ position: absolute;
14
+ top: 0;
15
+ }
16
+
17
+ .mapbox-gl-scope .mapboxgl-map:-webkit-full-screen {
18
+ height: 100%;
19
+ width: 100%;
20
+ }
21
+
22
+ .mapbox-gl-scope .mapboxgl-canary {
23
+ background-color: salmon;
24
+ }
25
+
26
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive,
27
+ .mapbox-gl-scope .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass {
28
+ cursor: grab;
29
+ -webkit-user-select: none;
30
+ user-select: none;
31
+ }
32
+
33
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer {
34
+ cursor: pointer;
35
+ }
36
+
37
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive:active,
38
+ .mapbox-gl-scope .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active {
39
+ cursor: grabbing;
40
+ }
41
+
42
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,
43
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas {
44
+ touch-action: pan-x pan-y;
45
+ }
46
+
47
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-drag-pan,
48
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas {
49
+ touch-action: pinch-zoom;
50
+ }
51
+
52
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,
53
+ .mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas {
54
+ touch-action: none;
55
+ }
56
+
57
+ /* Control positioning */
58
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom,
59
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom-left,
60
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom-right,
61
+ .mapbox-gl-scope .mapboxgl-ctrl-left,
62
+ .mapbox-gl-scope .mapboxgl-ctrl-right,
63
+ .mapbox-gl-scope .mapboxgl-ctrl-top,
64
+ .mapbox-gl-scope .mapboxgl-ctrl-top-left,
65
+ .mapbox-gl-scope .mapboxgl-ctrl-top-right {
66
+ pointer-events: none;
67
+ position: absolute;
68
+ z-index: 2;
69
+ }
70
+
71
+ .mapbox-gl-scope .mapboxgl-ctrl-top-left {
72
+ left: 0;
73
+ top: 0;
74
+ }
75
+
76
+ .mapbox-gl-scope .mapboxgl-ctrl-top {
77
+ left: 50%;
78
+ top: 0;
79
+ transform: translateX(-50%);
80
+ }
81
+
82
+ .mapbox-gl-scope .mapboxgl-ctrl-top-right {
83
+ right: 0;
84
+ top: 0;
85
+ }
86
+
87
+ .mapbox-gl-scope .mapboxgl-ctrl-right {
88
+ right: 0;
89
+ top: 50%;
90
+ transform: translateY(-50%);
91
+ }
92
+
93
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom-right {
94
+ bottom: 0;
95
+ right: 0;
96
+ }
97
+
98
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom {
99
+ bottom: 0;
100
+ left: 50%;
101
+ transform: translateX(-50%);
102
+ }
103
+
104
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom-left {
105
+ bottom: 0;
106
+ left: 0;
107
+ }
108
+
109
+ .mapbox-gl-scope .mapboxgl-ctrl-left {
110
+ left: 0;
111
+ top: 50%;
112
+ transform: translateY(-50%);
113
+ }
114
+
115
+ .mapbox-gl-scope .mapboxgl-ctrl {
116
+ clear: both;
117
+ pointer-events: auto;
118
+ transform: translate(0);
119
+ }
120
+
121
+ .mapbox-gl-scope .mapboxgl-ctrl-top-left .mapboxgl-ctrl {
122
+ float: left;
123
+ margin: 10px 0 0 10px;
124
+ }
125
+
126
+ .mapbox-gl-scope .mapboxgl-ctrl-top .mapboxgl-ctrl {
127
+ float: left;
128
+ margin: 10px 0;
129
+ }
130
+
131
+ .mapbox-gl-scope .mapboxgl-ctrl-top-right .mapboxgl-ctrl {
132
+ float: right;
133
+ margin: 10px 10px 0 0;
134
+ }
135
+
136
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom-right .mapboxgl-ctrl,
137
+ .mapbox-gl-scope .mapboxgl-ctrl-right .mapboxgl-ctrl {
138
+ float: right;
139
+ margin: 0 10px 10px 0;
140
+ }
141
+
142
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom .mapboxgl-ctrl {
143
+ float: left;
144
+ margin: 10px 0;
145
+ }
146
+
147
+ .mapbox-gl-scope .mapboxgl-ctrl-bottom-left .mapboxgl-ctrl,
148
+ .mapbox-gl-scope .mapboxgl-ctrl-left .mapboxgl-ctrl {
149
+ float: left;
150
+ margin: 0 0 10px 10px;
151
+ }
152
+
153
+ /* Control group styling */
154
+ .mapbox-gl-scope .mapboxgl-ctrl-group {
155
+ background: #fff;
156
+ border-radius: 4px;
157
+ }
158
+
159
+ .mapbox-gl-scope .mapboxgl-ctrl-group:not(:empty) {
160
+ box-shadow: 0 0 0 2px #0000001a;
161
+ }
162
+
163
+ .mapbox-gl-scope .mapboxgl-ctrl-group button {
164
+ background-color: initial;
165
+ border: 0;
166
+ box-sizing: border-box;
167
+ cursor: pointer;
168
+ display: block;
169
+ height: 29px;
170
+ outline: none;
171
+ overflow: hidden;
172
+ padding: 0;
173
+ width: 29px;
174
+ }
175
+
176
+ .mapbox-gl-scope .mapboxgl-ctrl-group button+button {
177
+ border-top: 1px solid #ddd;
178
+ }
179
+
180
+ .mapbox-gl-scope .mapboxgl-ctrl button .mapboxgl-ctrl-icon {
181
+ background-position: 50%;
182
+ background-repeat: no-repeat;
183
+ display: block;
184
+ height: 100%;
185
+ width: 100%;
186
+ }
187
+
188
+ .mapbox-gl-scope .mapboxgl-ctrl-attrib-button:focus,
189
+ .mapbox-gl-scope .mapboxgl-ctrl-group button:focus {
190
+ box-shadow: 0 0 2px 2px #0096ff;
191
+ }
192
+
193
+ .mapbox-gl-scope .mapboxgl-ctrl button:disabled {
194
+ cursor: not-allowed;
195
+ }
196
+
197
+ .mapbox-gl-scope .mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon {
198
+ opacity: .25;
199
+ }
200
+
201
+ .mapbox-gl-scope .mapboxgl-ctrl-group button:first-child {
202
+ border-radius: 4px 4px 0 0;
203
+ }
204
+
205
+ .mapbox-gl-scope .mapboxgl-ctrl-group button:last-child {
206
+ border-radius: 0 0 4px 4px;
207
+ }
208
+
209
+ .mapbox-gl-scope .mapboxgl-ctrl-group button:only-child {
210
+ border-radius: inherit;
211
+ }
212
+
213
+ .mapbox-gl-scope .mapboxgl-ctrl button:not(:disabled):hover {
214
+ background-color: #0000000d;
215
+ }
216
+
217
+ /* Marker styles */
218
+ .mapbox-gl-scope .mapboxgl-marker {
219
+ position: absolute;
220
+ z-index: 1;
221
+ }
222
+
223
+ .mapbox-gl-scope .mapboxgl-marker svg {
224
+ display: block;
225
+ }
226
+
227
+ /* Popup styles */
228
+ .mapbox-gl-scope .mapboxgl-popup {
229
+ position: absolute;
230
+ text-align: center;
231
+ margin-bottom: 20px;
232
+ }
233
+
234
+ .mapbox-gl-scope .mapboxgl-popup-content-wrapper {
235
+ padding: 1px;
236
+ text-align: left;
237
+ border-radius: 12px;
238
+ }
239
+
240
+ .mapbox-gl-scope .mapboxgl-popup-content {
241
+ margin: 13px 24px 13px 20px;
242
+ line-height: 1.3;
243
+ font-size: 13px;
244
+ min-height: 1px;
245
+ }
246
+
247
+ .mapbox-gl-scope .mapboxgl-popup-content p {
248
+ margin: 17px 0;
249
+ }
250
+
251
+ .mapbox-gl-scope .mapboxgl-popup-tip-container {
252
+ width: 40px;
253
+ height: 20px;
254
+ position: absolute;
255
+ left: 50%;
256
+ margin-top: -1px;
257
+ margin-left: -20px;
258
+ overflow: hidden;
259
+ pointer-events: none;
260
+ }
261
+
262
+ .mapbox-gl-scope .mapboxgl-popup-tip {
263
+ width: 17px;
264
+ height: 17px;
265
+ padding: 1px;
266
+ margin: -10px auto 0;
267
+ pointer-events: auto;
268
+ -webkit-transform: rotate(45deg);
269
+ -moz-transform: rotate(45deg);
270
+ -ms-transform: rotate(45deg);
271
+ transform: rotate(45deg);
272
+ }
273
+
274
+ .mapbox-gl-scope .mapboxgl-popup-content-wrapper,
275
+ .mapbox-gl-scope .mapboxgl-popup-tip {
276
+ background: white;
277
+ color: #333;
278
+ box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4);
279
+ }
280
+
281
+ .mapbox-gl-scope .mapboxgl-popup-close-button {
282
+ position: absolute;
283
+ top: 0;
284
+ right: 0;
285
+ border: none;
286
+ text-align: center;
287
+ width: 24px;
288
+ height: 24px;
289
+ font: 16px/24px Tahoma, Verdana, sans-serif;
290
+ color: #757575;
291
+ text-decoration: none;
292
+ background: transparent;
293
+ }
294
+
295
+ .mapbox-gl-scope .mapboxgl-popup-close-button:hover,
296
+ .mapbox-gl-scope .mapboxgl-popup-close-button:focus {
297
+ color: #585858;
298
+ }
299
+
300
+ /* Attribution */
301
+ .mapbox-gl-scope .mapboxgl-ctrl-attribution {
302
+ background: #fff;
303
+ background: rgba(255, 255, 255, 0.8);
304
+ margin: 0;
305
+ }
306
+
307
+ .mapbox-gl-scope .mapboxgl-ctrl-attribution,
308
+ .mapbox-gl-scope .mapboxgl-ctrl-scale-line {
309
+ padding: 0 5px;
310
+ color: #333;
311
+ line-height: 1.4;
312
+ }
313
+
314
+ .mapbox-gl-scope .mapboxgl-ctrl-attribution a {
315
+ text-decoration: none;
316
+ }
317
+
318
+ .mapbox-gl-scope .mapboxgl-ctrl-attribution a:hover,
319
+ .mapbox-gl-scope .mapboxgl-ctrl-attribution a:focus {
320
+ text-decoration: underline;
321
+ }
322
+
323
+ /* Hide attribution by default */
324
+ .mapbox-gl-scope .mapboxgl-ctrl-attribution {
325
+ display: none !important;
326
+ }
327
+
328
+ .mapbox-gl-scope .mapboxgl-ctrl-logo {
329
+ display: none !important;
330
+ }
@@ -7752,6 +7752,9 @@ function getRedirectPath(user, fallback = '', app, isDatastake) {
7752
7752
  }
7753
7753
 
7754
7754
  const en = {
7755
+ "Site": "Site",
7756
+ "Production Sites": "Production Sites",
7757
+ "Type of account": "Type of account",
7755
7758
  "accounts": "Accounts",
7756
7759
  "users": "Users",
7757
7760
  "subjects": "Subjects",
@@ -9070,6 +9073,9 @@ const en = {
9070
9073
  };
9071
9074
 
9072
9075
  const fr = {
9076
+ "Site": "Site",
9077
+ "Production Sites": "Sites de production",
9078
+ "Type of account": "Type de compte",
9073
9079
  "accounts": "Comptes",
9074
9080
  "users": "Utilisateurs",
9075
9081
  "subjects": "Sujets",
@@ -11022,6 +11028,9 @@ const fr = {
11022
11028
  };
11023
11029
 
11024
11030
  const sp = {
11031
+ "Site": "Sitio",
11032
+ "Production Sites": "Centros de producción",
11033
+ "Type of account": "Tipo de cuenta",
11025
11034
  "Identified Customers": "Clientes identificados",
11026
11035
  "Identified Suppliers": "Proveedores identificados",
11027
11036
  "Associated Mine Sites": "Sitios mineros asociados",
@@ -13125,6 +13134,63 @@ const renderPercentage = val => {
13125
13134
  return val + "%";
13126
13135
  };
13127
13136
 
13137
+ /**
13138
+ * Calculates stat change object for StatCard component based on current and previous values
13139
+ * @param {Object} data - Object with current and previous values
13140
+ * @param {number} data.current - Current value
13141
+ * @param {number} data.previous - Previous value
13142
+ * @param {Object} options - Optional configuration
13143
+ * @param {string} options.tooltipText - Custom tooltip text
13144
+ * @param {string} options.format - Format type: 'percentage' (default) or 'absolute'
13145
+ * @param {number} options.decimalPlaces - Number of decimal places for percentage (default: 1)
13146
+ * @returns {Object|null} Change object for StatCard or null if data is invalid
13147
+ */
13148
+ const calculateStatChange = (data, options = {}) => {
13149
+ if (!data || typeof data !== 'object') {
13150
+ return null;
13151
+ }
13152
+ const {
13153
+ current,
13154
+ previous
13155
+ } = data;
13156
+
13157
+ // Validate that both values are numbers
13158
+ if (typeof current !== 'number' || typeof previous !== 'number') {
13159
+ return null;
13160
+ }
13161
+
13162
+ // If previous is 0, we can't calculate percentage change
13163
+ if (previous === 0) {
13164
+ return null;
13165
+ }
13166
+ const {
13167
+ tooltipText,
13168
+ format = 'percentage',
13169
+ decimalPlaces = 1
13170
+ } = options;
13171
+
13172
+ // Calculate the difference
13173
+ const difference = current - previous;
13174
+ const isPositive = difference >= 0;
13175
+ const direction = isPositive ? 'up' : 'down';
13176
+
13177
+ // Format the value
13178
+ let value;
13179
+ if (format === 'absolute') {
13180
+ // Show absolute difference
13181
+ value = Math.abs(difference).toLocaleString();
13182
+ } else {
13183
+ // Show percentage change
13184
+ const percentageChange = Math.abs(difference) / previous * 100;
13185
+ value = `${percentageChange.toFixed(decimalPlaces)}%`;
13186
+ }
13187
+ return {
13188
+ value,
13189
+ direction,
13190
+ tooltipText: tooltipText || undefined
13191
+ };
13192
+ };
13193
+
13128
13194
  /**
13129
13195
  * Enum for message types used with Ant Design message component
13130
13196
  * @enum {string}
@@ -14899,6 +14965,7 @@ exports.buildBreadCrumbsHelper = buildBreadCrumbs;
14899
14965
  exports.buildBreadcrumbs = buildBreadcrumbs;
14900
14966
  exports.buildKeyIndicatorsConfig = buildKeyIndicatorsConfig;
14901
14967
  exports.buildQueryString = buildQueryString;
14968
+ exports.calculateStatChange = calculateStatChange;
14902
14969
  exports.camelCaseToTitle = camelCaseToTitle;
14903
14970
  exports.capitalize = capitalize;
14904
14971
  exports.capitalizeAll = capitalizeAll;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datastake-daf",
3
- "version": "0.6.783",
3
+ "version": "0.6.785",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^5.2.5",
6
6
  "@antv/g2": "^5.1.1",
@@ -123,7 +123,7 @@ export default function BarChart({
123
123
  },
124
124
  }
125
125
  : {}),
126
- ...xAxisConfig,
126
+ ...(Object.keys(xAxisConfig).length > 0 ? xAxisConfig : {}),
127
127
  label: {
128
128
  formatter: isPercentage
129
129
  ? (v) => `${v}`.replace(/\d{1,3}(?=(\d{3})+$)/g, (s) => `${s},`) + " %"
@@ -117,13 +117,13 @@ export function getStakeholderPosition({ zoom, totalMarkers, markerIndex }) {
117
117
  return { x, y, center, radius, angleDeg };
118
118
  }
119
119
 
120
- function applyAnimationDirect(el, isShortLink) {
120
+ function applyAnimationDirect(el, isShortLink, lineFlow = "downstream") {
121
121
  if (!(el instanceof SVGElement) || isShortLink) return;
122
122
 
123
123
  el.style.strokeDasharray = "10, 10";
124
124
  el.style.strokeDashoffset = "0";
125
125
 
126
- el.style.animation = "dash-flow 1.2s linear infinite";
126
+ el.style.animation = `dash-flow 1.2s linear infinite ${lineFlow === "upstream" && "reverse"}`;
127
127
 
128
128
  el.classList.add('animated-polyline');
129
129
  }
@@ -150,6 +150,7 @@ const BaseScreen = ({
150
150
  showFilters={showFilters}
151
151
  defaultFilters={defaultFilters}
152
152
  onChange={onTableChange}
153
+ t={t}
153
154
  {...rest}
154
155
  />
155
156
  <Pagination
@@ -4,6 +4,7 @@ import PropTypes from "prop-types";
4
4
  import { Avatar, Checkbox } from "antd";
5
5
  import { theme } from "antd";
6
6
  import React from "react";
7
+ import MultiSelectStyled from "./style";
7
8
  const { useToken } = theme;
8
9
 
9
10
  /**
@@ -163,7 +164,7 @@ export default function Multiselect({
163
164
  };
164
165
 
165
166
  return (
166
- <Select
167
+ <MultiSelectStyled
167
168
  mode={isSingle ? undefined : "multiple"}
168
169
  value={selectValue}
169
170
  onChange={onSelectChange}
@@ -231,6 +232,7 @@ export default function Multiselect({
231
232
  display: "flex",
232
233
  alignItems: "center",
233
234
  justifyContent: "center",
235
+ padding: 0,
234
236
  }}
235
237
  >
236
238
  {option?.avatar || getFirstChar(option?.label)}
@@ -289,7 +291,7 @@ export default function Multiselect({
289
291
  }
290
292
  }}
291
293
  {...restProps}
292
- ></Select>
294
+ ></MultiSelectStyled>
293
295
  );
294
296
  }
295
297
 
@@ -0,0 +1,15 @@
1
+ import styled from 'styled-components';
2
+ import { Select } from 'antd';
3
+
4
+ const MultiSelectStyled = styled(Select)`
5
+ &.ant-select-single {
6
+ .ant-select-selector {
7
+ padding-inline-end: 24px !important;
8
+ padding: 0 !important;
9
+ max-width: 56px !important;
10
+ width: 56px !important;
11
+ }
12
+ }
13
+ `;
14
+
15
+ export default MultiSelectStyled;
@@ -18,7 +18,9 @@ export const useGetQueryParams = ({location}) => {
18
18
  },
19
19
  otherParams: {
20
20
  ...rest,
21
- }
21
+ },
22
+ sortBy,
23
+ sortDir,
22
24
  };
23
25
  }, [queryParams]);
24
26
 
@@ -12,6 +12,7 @@ export const useContributionsGraph = ({
12
12
  }, [data, t]);
13
13
 
14
14
  const isEmpty = useMemo(() => _data?.length === 0, [_data]);
15
+ console.log({_data, isEmpty})
15
16
 
16
17
  const chartConfig = useMemo(() => {
17
18
  return {
@@ -20,13 +21,11 @@ export const useContributionsGraph = ({
20
21
  yFieldKey: "category",
21
22
  seriesField: "type",
22
23
  isGroup: true,
23
- ...(isEmpty && {
24
- xAxisConfig: {
25
- min: 0,
26
- max: 10,
27
- tickCount: 5,
28
- }
29
- }),
24
+ xAxisConfig: isEmpty ? {
25
+ min: 0,
26
+ max: 10,
27
+ tickCount: 5,
28
+ } : {},
30
29
  renderTooltipContent: (title, items) => {
31
30
  const tooltipItems = items.map((item) => ({
32
31
  label: item.name,
@@ -41,7 +41,7 @@ function ContributionsGraph({
41
41
  title={t("Contributions")}
42
42
  className="with-border-header h-w-btn-header no-px-body"
43
43
  >
44
- <BarChart {...chartConfig} height="400px" t={t} />
44
+ <BarChart {...chartConfig} height="400px" t={t} key={data?.length} />
45
45
  </Widget>
46
46
  )
47
47
  }
@@ -1,10 +1,10 @@
1
1
  export const getFiltersConfig = ({t}) => {
2
2
  return {
3
- timeframe: {
4
- type: "timeframe",
5
- label: "Timeframe",
6
- style: { flex: 1 },
7
- },
3
+ timeframe: {
4
+ type: "timeframe",
5
+ label: "Timeframe",
6
+ style: { flex: 1 },
7
+ },
8
8
  }
9
9
  }
10
10
 
@@ -14,6 +14,8 @@ export const getColumns = ({t, goTo, user, options, activeTab, getRedirectLink,
14
14
  title: t('ID'),
15
15
  ellipsis: true,
16
16
  show: true,
17
+ key: "datastakeId",
18
+ sorter: () => 0 + 0,
17
19
  render: (v, all) => {
18
20
  if (all.empty) {
19
21
  return <div className="daf-default-cell" />
@@ -27,6 +29,8 @@ export const getColumns = ({t, goTo, user, options, activeTab, getRedirectLink,
27
29
  title: t('Title'),
28
30
  ellipsis: true,
29
31
  show: true,
32
+ key: "name",
33
+ sorter: () => 0 + 0,
30
34
  render: (v, all) => {
31
35
  if (all.empty) {
32
36
  return <div className="daf-default-cell" />
@@ -39,6 +43,7 @@ export const getColumns = ({t, goTo, user, options, activeTab, getRedirectLink,
39
43
  title: t("Date"),
40
44
  dataIndex: "date",
41
45
  key: "date",
46
+ sorter: () => 0 + 0,
42
47
  render: (date, all) => {
43
48
  if (all.empty) {
44
49
  return <div className="daf-default-cell" />;