datastake-daf 0.6.366 → 0.6.367

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.
@@ -47000,7 +47000,6 @@ const filterParams = value => {
47000
47000
  };
47001
47001
  };
47002
47002
 
47003
- const NEW_PAGINATION_TITLES = ["nashiriki"];
47004
47003
  const useFilters = ({
47005
47004
  view,
47006
47005
  module,
@@ -47014,8 +47013,6 @@ const useFilters = ({
47014
47013
  doPagination = true,
47015
47014
  getRedirectLink
47016
47015
  }) => {
47017
- const PAGE = NEW_PAGINATION_TITLES.includes(module) ? "skip" : "page";
47018
- const PAGE_SIZE = NEW_PAGINATION_TITLES.includes(module) ? "take" : "pageSize";
47019
47016
  const params = React.useMemo(() => new URLSearchParams(location.search), [location.search]);
47020
47017
  const [activeFilters, setActiveFilters] = React.useState(defaultActiveFilters || getDefaultActiveFilters(params, selectFiltersConfig, defaultPageSize, defaultUrlParams, doPagination));
47021
47018
  const [pagination, setPagination] = React.useState(defaultActiveFilters ? {
@@ -47023,8 +47020,8 @@ const useFilters = ({
47023
47020
  pageSize: defaultActiveFilters.pageSize || defaultPageSize,
47024
47021
  showSizeChanger: true
47025
47022
  } : {
47026
- current: !isNaN(Number(params.get(PAGE))) ? Number(params.get(PAGE)) || 1 : 1,
47027
- pageSize: !isNaN(Number(params.get(PAGE_SIZE))) ? Number(params.get(PAGE_SIZE)) || defaultPageSize : defaultPageSize,
47023
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
47024
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
47028
47025
  showSizeChanger: true
47029
47026
  });
47030
47027
  React.useEffect(() => {
@@ -47039,32 +47036,32 @@ const useFilters = ({
47039
47036
  }
47040
47037
  setPagination(prev => ({
47041
47038
  ...prev,
47042
- current: !isNaN(Number(params.get(PAGE))) ? Number(params.get(PAGE)) || 1 : 1,
47043
- pageSize: !isNaN(Number(params.get(PAGE_SIZE))) ? Number(params.get(PAGE_SIZE)) || defaultPageSize : defaultPageSize,
47039
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
47040
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
47044
47041
  showSizeChanger: true
47045
47042
  }));
47046
47043
  }, []);
47047
47044
  const updateQuery = React.useCallback((filters, page) => {
47048
47045
  const qs = Object.keys(filters).filter(key => {
47049
47046
  if (!doPagination) {
47050
- return !!filters[key] && key !== PAGE && key !== PAGE_SIZE;
47047
+ return !!filters[key] && key !== 'page' && key !== 'pageSize';
47051
47048
  }
47052
47049
  return !!filters[key];
47053
47050
  }).map(key => {
47054
- if (filters[key] && typeof filters[key] === "object") {
47051
+ if (filters[key] && typeof filters[key] === 'object') {
47055
47052
  return `${key}=${JSON.stringify(filters[key])}`;
47056
47053
  }
47057
47054
  return `${key}=${filters[key]}`;
47058
- }).join("&");
47055
+ }).join('&');
47059
47056
  if (view) {
47060
- if (typeof getRedirectLink === "function") {
47061
- goTo(getRedirectLink(view === "mine-monitoring" ? qs !== "" ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?${PAGE}=${page}` : location.pathname : qs !== "" ? `${`/app/${view}`}?${qs}` : doPagination ? `${`/app/${view}`}?${PAGE}=${page}` : `${`/app/${view}`}`));
47057
+ if (typeof getRedirectLink === 'function') {
47058
+ goTo(getRedirectLink(view === 'mine-monitoring' ? qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname : qs !== '' ? `${`/app/${view}`}?${qs}` : doPagination ? `${`/app/${view}`}?page=${page}` : `${`/app/${view}`}`));
47062
47059
  return;
47063
47060
  }
47064
- if (view === "mine-monitoring") {
47065
- goTo(qs !== "" ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?${PAGE}=${page}` : location.pathname);
47061
+ if (view === 'mine-monitoring') {
47062
+ goTo(qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname);
47066
47063
  } else {
47067
- goTo(qs !== "" ? `${`/app/${module}/${view}`}?${qs}` : doPagination ? `${`/app/${module}/${view}`}?${PAGE}=${page}` : `${`/app/${module}/${view}`}`);
47064
+ goTo(qs !== '' ? `${`/app/${module}/${view}`}?${qs}` : doPagination ? `${`/app/${module}/${view}`}?page=${page}` : `${`/app/${module}/${view}`}`);
47068
47065
  }
47069
47066
  }
47070
47067
  }, [module, view, location.pathname]); // Updated dependency array
@@ -47110,7 +47107,7 @@ const useFilters = ({
47110
47107
  const {
47111
47108
  show
47112
47109
  } = conf;
47113
- if (typeof show === "function") {
47110
+ if (typeof show === 'function') {
47114
47111
  if (show(filters)) {
47115
47112
  return all;
47116
47113
  }
@@ -47128,7 +47125,7 @@ const useFilters = ({
47128
47125
  ...prev
47129
47126
  };
47130
47127
  Object.keys(o).forEach(k => {
47131
- if (Object.keys(selectFiltersConfig).includes(k) || k === "authorId") {
47128
+ if (Object.keys(selectFiltersConfig).includes(k) || k === 'authorId') {
47132
47129
  delete o[k];
47133
47130
  }
47134
47131
  });
@@ -47170,8 +47167,8 @@ const useFilters = ({
47170
47167
  };
47171
47168
  } else if (sortBy || sortDir) {
47172
47169
  fs = Object.keys(fs).reduce((all, key) => {
47173
- if (key !== "sortDir" && key !== "sortBy") {
47174
- if (key === PAGE || key === PAGE_SIZE) {
47170
+ if (key !== 'sortDir' && key !== 'sortBy') {
47171
+ if (key === 'page' || key === 'pageSize') {
47175
47172
  all[key] = fs[key];
47176
47173
  } else {
47177
47174
  all[key] = activeFilters[key];
@@ -51381,6 +51378,7 @@ function NameNode({
51381
51378
  token
51382
51379
  } = useToken$7();
51383
51380
  const translateFN = typeof data?.t === "function" ? data.t : key => key;
51381
+ const isPdf = data?.isPdf;
51384
51382
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
51385
51383
  children: [/*#__PURE__*/jsxRuntime.jsx(react.Handle, {
51386
51384
  type: "source",
@@ -51399,6 +51397,7 @@ function NameNode({
51399
51397
  opacity: 0
51400
51398
  }
51401
51399
  }), /*#__PURE__*/jsxRuntime.jsxs(Style$d, {
51400
+ $isPdf: isPdf,
51402
51401
  style: {
51403
51402
  opacity: data.isEmpty ? 0.5 : 1
51404
51403
  },
@@ -51449,7 +51448,7 @@ function NameNode({
51449
51448
  }
51450
51449
  })
51451
51450
  }) : null]
51452
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
51451
+ }), !isPdf && /*#__PURE__*/jsxRuntime.jsx("div", {
51453
51452
  style: {
51454
51453
  marginLeft: "auto"
51455
51454
  },
@@ -51486,27 +51485,32 @@ function NameNode({
51486
51485
  });
51487
51486
  }
51488
51487
  const Style$d = dt.div`
51489
- width: ${NAME_CARD_WIDTH}px;
51490
- display: flex;
51491
- background: white;
51492
- border-radius: 8px;
51493
- box-shadow: 0px 3.76px 10.03px 0px #00000014;
51494
- box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
51495
- overflow: hidden;
51496
- box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
51488
+ width: ${NAME_CARD_WIDTH}px;
51489
+ display: flex;
51490
+ background: white;
51491
+ border-radius: 8px;
51492
+ /* Box-shadows for screen */
51493
+ box-shadow: 0px 3.76px 10.03px 0px #00000014;
51494
+ box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
51495
+ overflow: hidden;
51496
+ box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
51497
+ /* Ensure borders/colors survive PDF rendering */
51498
+ border: ${props => props.$isPdf ? '1px solid var(--base-gray-30)' : 'none'};
51499
+ -webkit-print-color-adjust: exact;
51500
+ print-color-adjust: exact;
51497
51501
 
51498
- .left {
51499
- width: 32px;
51500
- background: red;
51501
- border-top-left-radius: 12px;
51502
- border-bottom-left-radius: 12px;
51503
- }
51502
+ .left {
51503
+ width: 32px;
51504
+ background: red;
51505
+ border-top-left-radius: 12px;
51506
+ border-bottom-left-radius: 12px;
51507
+ }
51504
51508
 
51505
- .right {
51506
- padding: 16px 12px;
51507
- width: 100%
51508
- border-bottom: 1px solid var(--base-gray-30);
51509
- }
51509
+ .right {
51510
+ padding: 16px 12px;
51511
+ width: 100%;
51512
+ border-bottom: 1px solid var(--base-gray-30);
51513
+ }
51510
51514
  `;
51511
51515
 
51512
51516
  const Style$c = dt.div`
@@ -52081,6 +52085,7 @@ const BaseGraph = /*#__PURE__*/React.forwardRef(function BaseGraph({
52081
52085
  t,
52082
52086
  withDuration = true,
52083
52087
  onFilterChange,
52088
+ isPdf,
52084
52089
  ...props
52085
52090
  }, ref) {
52086
52091
  const {
@@ -52137,7 +52142,7 @@ const BaseGraph = /*#__PURE__*/React.forwardRef(function BaseGraph({
52137
52142
  duration: withDuration ? 300 : undefined
52138
52143
  },
52139
52144
  ...props,
52140
- children: /*#__PURE__*/jsxRuntime.jsxs(react.Controls, {
52145
+ children: !isPdf && /*#__PURE__*/jsxRuntime.jsxs(react.Controls, {
52141
52146
  position: "bottom-right",
52142
52147
  showFitView: false,
52143
52148
  showInteractive: false,
@@ -52654,7 +52659,8 @@ function positionDataNodes(_ref2) {
52654
52659
  total,
52655
52660
  mainNode,
52656
52661
  type,
52657
- hasContent
52662
+ hasContent,
52663
+ isPdf
52658
52664
  } = _ref2;
52659
52665
  const DATA_NODE_WIDTH = DATA_NODE_SIZE[type].width;
52660
52666
  const DATA_NODE_HEIGHT = DATA_NODE_SIZE[type].height;
@@ -52871,6 +52877,7 @@ function StakeholderMappings(_ref3) {
52871
52877
  isLeftSide: node.data.order % 2 !== 0,
52872
52878
  isAboveMainNode: node.data.order <= 2,
52873
52879
  iconNode: node,
52880
+ isPdf: true,
52874
52881
  index: 0,
52875
52882
  total: 1,
52876
52883
  mainNode,
@@ -52969,7 +52976,8 @@ function StakeholderMappings(_ref3) {
52969
52976
  duration: 300
52970
52977
  });
52971
52978
  },
52972
- ref: reactFlowWrapper
52979
+ ref: reactFlowWrapper,
52980
+ isPdf: isPdf
52973
52981
  });
52974
52982
  }
52975
52983
  var index$1 = withProvider(StakeholderMappings);
@@ -200,7 +200,6 @@ class StorageManager {
200
200
  }
201
201
  }
202
202
 
203
- const NEW_PAGINATION_TITLES = ["nashiriki"];
204
203
  const useFilters = ({
205
204
  view,
206
205
  module,
@@ -214,8 +213,6 @@ const useFilters = ({
214
213
  doPagination = true,
215
214
  getRedirectLink
216
215
  }) => {
217
- const PAGE = NEW_PAGINATION_TITLES.includes(module) ? "skip" : "page";
218
- const PAGE_SIZE = NEW_PAGINATION_TITLES.includes(module) ? "take" : "pageSize";
219
216
  const params = React.useMemo(() => new URLSearchParams(location.search), [location.search]);
220
217
  const [activeFilters, setActiveFilters] = React.useState(defaultActiveFilters || getDefaultActiveFilters(params, selectFiltersConfig, defaultPageSize, defaultUrlParams, doPagination));
221
218
  const [pagination, setPagination] = React.useState(defaultActiveFilters ? {
@@ -223,8 +220,8 @@ const useFilters = ({
223
220
  pageSize: defaultActiveFilters.pageSize || defaultPageSize,
224
221
  showSizeChanger: true
225
222
  } : {
226
- current: !isNaN(Number(params.get(PAGE))) ? Number(params.get(PAGE)) || 1 : 1,
227
- pageSize: !isNaN(Number(params.get(PAGE_SIZE))) ? Number(params.get(PAGE_SIZE)) || defaultPageSize : defaultPageSize,
223
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
224
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
228
225
  showSizeChanger: true
229
226
  });
230
227
  React.useEffect(() => {
@@ -239,32 +236,32 @@ const useFilters = ({
239
236
  }
240
237
  setPagination(prev => ({
241
238
  ...prev,
242
- current: !isNaN(Number(params.get(PAGE))) ? Number(params.get(PAGE)) || 1 : 1,
243
- pageSize: !isNaN(Number(params.get(PAGE_SIZE))) ? Number(params.get(PAGE_SIZE)) || defaultPageSize : defaultPageSize,
239
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
240
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
244
241
  showSizeChanger: true
245
242
  }));
246
243
  }, []);
247
244
  const updateQuery = React.useCallback((filters, page) => {
248
245
  const qs = Object.keys(filters).filter(key => {
249
246
  if (!doPagination) {
250
- return !!filters[key] && key !== PAGE && key !== PAGE_SIZE;
247
+ return !!filters[key] && key !== 'page' && key !== 'pageSize';
251
248
  }
252
249
  return !!filters[key];
253
250
  }).map(key => {
254
- if (filters[key] && typeof filters[key] === "object") {
251
+ if (filters[key] && typeof filters[key] === 'object') {
255
252
  return `${key}=${JSON.stringify(filters[key])}`;
256
253
  }
257
254
  return `${key}=${filters[key]}`;
258
- }).join("&");
255
+ }).join('&');
259
256
  if (view) {
260
- if (typeof getRedirectLink === "function") {
261
- goTo(getRedirectLink(view === "mine-monitoring" ? qs !== "" ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?${PAGE}=${page}` : location.pathname : qs !== "" ? `${`/app/${view}`}?${qs}` : doPagination ? `${`/app/${view}`}?${PAGE}=${page}` : `${`/app/${view}`}`));
257
+ if (typeof getRedirectLink === 'function') {
258
+ goTo(getRedirectLink(view === 'mine-monitoring' ? qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname : qs !== '' ? `${`/app/${view}`}?${qs}` : doPagination ? `${`/app/${view}`}?page=${page}` : `${`/app/${view}`}`));
262
259
  return;
263
260
  }
264
- if (view === "mine-monitoring") {
265
- goTo(qs !== "" ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?${PAGE}=${page}` : location.pathname);
261
+ if (view === 'mine-monitoring') {
262
+ goTo(qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname);
266
263
  } else {
267
- goTo(qs !== "" ? `${`/app/${module}/${view}`}?${qs}` : doPagination ? `${`/app/${module}/${view}`}?${PAGE}=${page}` : `${`/app/${module}/${view}`}`);
264
+ goTo(qs !== '' ? `${`/app/${module}/${view}`}?${qs}` : doPagination ? `${`/app/${module}/${view}`}?page=${page}` : `${`/app/${module}/${view}`}`);
268
265
  }
269
266
  }
270
267
  }, [module, view, location.pathname]); // Updated dependency array
@@ -310,7 +307,7 @@ const useFilters = ({
310
307
  const {
311
308
  show
312
309
  } = conf;
313
- if (typeof show === "function") {
310
+ if (typeof show === 'function') {
314
311
  if (show(filters)) {
315
312
  return all;
316
313
  }
@@ -328,7 +325,7 @@ const useFilters = ({
328
325
  ...prev
329
326
  };
330
327
  Object.keys(o).forEach(k => {
331
- if (Object.keys(selectFiltersConfig).includes(k) || k === "authorId") {
328
+ if (Object.keys(selectFiltersConfig).includes(k) || k === 'authorId') {
332
329
  delete o[k];
333
330
  }
334
331
  });
@@ -370,8 +367,8 @@ const useFilters = ({
370
367
  };
371
368
  } else if (sortBy || sortDir) {
372
369
  fs = Object.keys(fs).reduce((all, key) => {
373
- if (key !== "sortDir" && key !== "sortBy") {
374
- if (key === PAGE || key === PAGE_SIZE) {
370
+ if (key !== 'sortDir' && key !== 'sortBy') {
371
+ if (key === 'page' || key === 'pageSize') {
375
372
  all[key] = fs[key];
376
373
  } else {
377
374
  all[key] = activeFilters[key];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datastake-daf",
3
- "version": "0.6.366",
3
+ "version": "0.6.367",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^5.2.5",
6
6
  "@antv/g2": "^5.1.1",
@@ -457,6 +457,34 @@ export const Pdf = {
457
457
  showBackground: true,
458
458
  isPercentage: true,
459
459
  shouldSeperateLegendName: true,
460
+ formattedXAxis: (s) => {
461
+ if (!s) return "";
462
+
463
+ const limit = 20;
464
+ let result = "";
465
+ let line = "";
466
+
467
+ for (let word of s.split(" ")) {
468
+ if ((line + word).length <= limit) {
469
+ line += (line ? " " : "") + word;
470
+ } else if (word.length > limit) {
471
+ // break long word with hyphen
472
+ while (word.length > limit) {
473
+ result += word.slice(0, limit - 1) + "-\n";
474
+ word = word.slice(limit - 1);
475
+ }
476
+ line = word;
477
+ } else {
478
+ // move current line into result
479
+ if (line) result += line + "\n";
480
+ line = word;
481
+ }
482
+ }
483
+
484
+ if (line) result += line;
485
+
486
+ return result;
487
+ },
460
488
  },
461
489
  render: (args) => {
462
490
  return <Widget title="Pdf Column Chart" className={"with-border-header"}>
@@ -72,6 +72,7 @@ function positionDataNodes({
72
72
  mainNode,
73
73
  type,
74
74
  hasContent,
75
+ isPdf,
75
76
  }) {
76
77
  const DATA_NODE_WIDTH = DATA_NODE_SIZE[type].width;
77
78
  const DATA_NODE_HEIGHT = DATA_NODE_SIZE[type].height;
@@ -325,6 +326,7 @@ function StakeholderMappings({
325
326
  isLeftSide: node.data.order % 2 !== 0,
326
327
  isAboveMainNode: node.data.order <= 2,
327
328
  iconNode: node,
329
+ isPdf: true,
328
330
  index: 0,
329
331
  total: 1,
330
332
  mainNode,
@@ -444,6 +446,7 @@ function StakeholderMappings({
444
446
  });
445
447
  }}
446
448
  ref={reactFlowWrapper}
449
+ isPdf={isPdf}
447
450
  />
448
451
  );
449
452
  }
@@ -32,6 +32,7 @@ const BaseGraph = forwardRef(function BaseGraph(
32
32
  t,
33
33
  withDuration = true,
34
34
  onFilterChange,
35
+ isPdf,
35
36
  ...props
36
37
  },
37
38
  ref,
@@ -87,43 +88,45 @@ const BaseGraph = forwardRef(function BaseGraph(
87
88
  }}
88
89
  {...props}
89
90
  >
90
- <Controls position="bottom-right" showFitView={false} showInteractive={false}>
91
- <ControlButton
92
- onClick={() => {
93
- fitView({
94
- padding: 0.1,
95
- nodes: [...nodesToFit],
96
- duration: withDuration ? 300 : undefined,
97
- });
98
- }}
99
- >
100
- <AimOutlined height={20} width={20} />
101
- </ControlButton>
102
- <ControlButton
103
- onClick={() => {
104
- const viewport = getViewport();
105
- setViewport({
106
- x: viewport.x,
107
- y: viewport.y + 20,
108
- zoom: viewport.zoom,
109
- });
110
- }}
111
- >
112
- <UpOutlined height={20} width={20}></UpOutlined>
113
- </ControlButton>
114
- <ControlButton
115
- onClick={() => {
116
- const viewport = getViewport();
117
- setViewport({
118
- x: viewport.x,
119
- y: viewport.y - 20,
120
- zoom: viewport.zoom,
121
- });
122
- }}
123
- >
124
- <DownOutlined height={20} width={20}></DownOutlined>
125
- </ControlButton>
126
- </Controls>
91
+ {!isPdf && (
92
+ <Controls position="bottom-right" showFitView={false} showInteractive={false}>
93
+ <ControlButton
94
+ onClick={() => {
95
+ fitView({
96
+ padding: 0.1,
97
+ nodes: [...nodesToFit],
98
+ duration: withDuration ? 300 : undefined,
99
+ });
100
+ }}
101
+ >
102
+ <AimOutlined height={20} width={20} />
103
+ </ControlButton>
104
+ <ControlButton
105
+ onClick={() => {
106
+ const viewport = getViewport();
107
+ setViewport({
108
+ x: viewport.x,
109
+ y: viewport.y + 20,
110
+ zoom: viewport.zoom,
111
+ });
112
+ }}
113
+ >
114
+ <UpOutlined height={20} width={20}></UpOutlined>
115
+ </ControlButton>
116
+ <ControlButton
117
+ onClick={() => {
118
+ const viewport = getViewport();
119
+ setViewport({
120
+ x: viewport.x,
121
+ y: viewport.y - 20,
122
+ zoom: viewport.zoom,
123
+ });
124
+ }}
125
+ >
126
+ <DownOutlined height={20} width={20}></DownOutlined>
127
+ </ControlButton>
128
+ </Controls>
129
+ )}
127
130
  </ReactFlow>
128
131
  </div>
129
132
  </ComponentWithFocus>
@@ -13,6 +13,8 @@ const { useToken } = theme;
13
13
  export default function NameNode({ data }) {
14
14
  const { token } = useToken();
15
15
  const translateFN = typeof data?.t === "function" ? data.t : (key) => key;
16
+ const isPdf = data?.isPdf;
17
+
16
18
  return (
17
19
  <>
18
20
  <Handle
@@ -34,6 +36,7 @@ export default function NameNode({ data }) {
34
36
  }}
35
37
  />
36
38
  <Style
39
+ $isPdf={isPdf}
37
40
  style={{
38
41
  opacity: data.isEmpty ? 0.5 : 1,
39
42
  }}
@@ -95,19 +98,21 @@ export default function NameNode({ data }) {
95
98
  ) : null}
96
99
  </div>
97
100
 
98
- <div
99
- style={{
100
- marginLeft: "auto",
101
- }}
102
- className="go-to"
103
- onClick={() => {
104
- if (typeof data.onClick === "function") {
105
- data.onClick();
106
- }
107
- }}
108
- >
109
- <CustomIcon height={14} width={14} name="LinkNewTab" />
110
- </div>
101
+ {!isPdf && (
102
+ <div
103
+ style={{
104
+ marginLeft: "auto",
105
+ }}
106
+ className="go-to"
107
+ onClick={() => {
108
+ if (typeof data.onClick === "function") {
109
+ data.onClick();
110
+ }
111
+ }}
112
+ >
113
+ <CustomIcon height={14} width={14} name="LinkNewTab" />
114
+ </div>
115
+ )}
111
116
  </div>
112
117
  </Style>
113
118
  <Handle
@@ -129,25 +134,30 @@ export default function NameNode({ data }) {
129
134
  }
130
135
 
131
136
  const Style = styled.div`
132
- width: ${NAME_CARD_WIDTH}px;
133
- display: flex;
134
- background: white;
135
- border-radius: 8px;
136
- box-shadow: 0px 3.76px 10.03px 0px #00000014;
137
- box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
138
- overflow: hidden;
139
- box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
137
+ width: ${NAME_CARD_WIDTH}px;
138
+ display: flex;
139
+ background: white;
140
+ border-radius: 8px;
141
+ /* Box-shadows for screen */
142
+ box-shadow: 0px 3.76px 10.03px 0px #00000014;
143
+ box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
144
+ overflow: hidden;
145
+ box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
146
+ /* Ensure borders/colors survive PDF rendering */
147
+ border: ${(props) => (props.$isPdf ? '1px solid var(--base-gray-30)' : 'none')};
148
+ -webkit-print-color-adjust: exact;
149
+ print-color-adjust: exact;
140
150
 
141
- .left {
142
- width: 32px;
143
- background: red;
144
- border-top-left-radius: 12px;
145
- border-bottom-left-radius: 12px;
146
- }
151
+ .left {
152
+ width: 32px;
153
+ background: red;
154
+ border-top-left-radius: 12px;
155
+ border-bottom-left-radius: 12px;
156
+ }
147
157
 
148
- .right {
149
- padding: 16px 12px;
150
- width: 100%
151
- border-bottom: 1px solid var(--base-gray-30);
152
- }
158
+ .right {
159
+ padding: 16px 12px;
160
+ width: 100%;
161
+ border-bottom: 1px solid var(--base-gray-30);
162
+ }
153
163
  `;
@@ -1,323 +1,281 @@
1
- import { useCallback, useEffect, useMemo, useState } from "react";
2
- import { getDefaultActiveFilters } from "../utils/filters";
3
- import { StorageManager } from "../../helpers/StorageManager";
4
-
5
- const NEW_PAGINATION_TITLES = ["nashiriki"];
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { getDefaultActiveFilters } from '../utils/filters';
3
+ import { StorageManager } from '../../helpers/StorageManager';
6
4
 
7
5
  export const useFilters = ({
8
- view,
9
- module,
10
- filtersConfig,
11
- goTo,
12
- location,
13
- selectFiltersConfig,
14
- defaultPageSize = 20,
15
- defaultActiveFilters,
16
- defaultUrlParams = {},
17
- doPagination = true,
18
- getRedirectLink,
6
+ view,
7
+ module,
8
+ filtersConfig,
9
+ goTo,
10
+ location,
11
+ selectFiltersConfig,
12
+ defaultPageSize = 20,
13
+ defaultActiveFilters,
14
+ defaultUrlParams = {},
15
+ doPagination = true,
16
+ getRedirectLink,
19
17
  }) => {
20
- const PAGE = NEW_PAGINATION_TITLES.includes(module) ? "skip" : "page";
21
- const PAGE_SIZE = NEW_PAGINATION_TITLES.includes(module) ? "take" : "pageSize";
22
-
23
- const params = useMemo(() => new URLSearchParams(location.search), [location.search]);
24
- const [activeFilters, setActiveFilters] = useState(
25
- defaultActiveFilters ||
26
- getDefaultActiveFilters(
27
- params,
28
- selectFiltersConfig,
29
- defaultPageSize,
30
- defaultUrlParams,
31
- doPagination,
32
- ),
33
- );
34
- const [pagination, setPagination] = useState(
35
- defaultActiveFilters
36
- ? {
37
- current: defaultActiveFilters.page || 1,
38
- pageSize: defaultActiveFilters.pageSize || defaultPageSize,
39
- showSizeChanger: true,
40
- }
41
- : {
42
- current: !isNaN(Number(params.get(PAGE)))
43
- ? Number(params.get(PAGE)) || 1
44
- : 1,
45
- pageSize: !isNaN(Number(params.get(PAGE_SIZE)))
46
- ? Number(params.get(PAGE_SIZE)) || defaultPageSize
47
- : defaultPageSize,
48
- showSizeChanger: true,
49
- },
50
- );
51
-
52
- useEffect(() => {
53
- if (defaultActiveFilters) {
54
- setPagination((prev) => ({
55
- ...prev,
56
- current: defaultActiveFilters.page || 1,
57
- pageSize: defaultActiveFilters.pageSize || defaultPageSize,
58
- showSizeChanger: true,
59
- }));
60
- return;
61
- }
62
- setPagination((prev) => ({
63
- ...prev,
64
- current: !isNaN(Number(params.get(PAGE))) ? Number(params.get(PAGE)) || 1 : 1,
65
- pageSize: !isNaN(Number(params.get(PAGE_SIZE)))
66
- ? Number(params.get(PAGE_SIZE)) || defaultPageSize
67
- : defaultPageSize,
68
- showSizeChanger: true,
69
- }));
70
- }, []);
71
-
72
- const updateQuery = useCallback(
73
- (filters, page) => {
74
- const qs = Object.keys(filters)
75
- .filter((key) => {
76
- if (!doPagination) {
77
- return !!filters[key] && key !== PAGE && key !== PAGE_SIZE;
78
- }
79
-
80
- return !!filters[key];
81
- })
82
- .map((key) => {
83
- if (filters[key] && typeof filters[key] === "object") {
84
- return `${key}=${JSON.stringify(filters[key])}`;
85
- }
86
- return `${key}=${filters[key]}`;
87
- })
88
- .join("&");
89
-
90
- if (view) {
91
- if (typeof getRedirectLink === "function") {
92
- goTo(
93
- getRedirectLink(
94
- view === "mine-monitoring"
95
- ? qs !== ""
96
- ? `${location.pathname}?${qs}`
97
- : doPagination
98
- ? `${location.pathname}?${PAGE}=${page}`
99
- : location.pathname
100
- : qs !== ""
101
- ? `${`/app/${view}`}?${qs}`
102
- : doPagination
103
- ? `${`/app/${view}`}?${PAGE}=${page}`
104
- : `${`/app/${view}`}`,
105
- ),
106
- );
107
- return;
108
- }
109
-
110
- if (view === "mine-monitoring") {
111
- goTo(
112
- qs !== ""
113
- ? `${location.pathname}?${qs}`
114
- : doPagination
115
- ? `${location.pathname}?${PAGE}=${page}`
116
- : location.pathname,
117
- );
118
- } else {
119
- goTo(
120
- qs !== ""
121
- ? `${`/app/${module}/${view}`}?${qs}`
122
- : doPagination
123
- ? `${`/app/${module}/${view}`}?${PAGE}=${page}`
124
- : `${`/app/${module}/${view}`}`,
125
- );
126
- }
127
- }
128
- },
129
- [module, view, location.pathname],
130
- ); // Updated dependency array
131
-
132
- const defaultFilters = useMemo(() => {
133
- const def = {};
134
- Object.keys(selectFiltersConfig).forEach((key) => {
135
- if (activeFilters[key]) {
136
- def[key] = activeFilters[key];
137
- }
138
- });
139
- return def;
140
- }, [activeFilters, selectFiltersConfig]);
141
-
142
- const newFiltersConfig = useMemo(() => {
143
- const o = filtersConfig;
144
- Object.keys(filtersConfig).forEach((key) => {
145
- if (params.has(key)) {
146
- o[key] = params.get(key);
147
- }
148
- });
149
- return o;
150
- }, [params, filtersConfig]);
151
-
152
- useEffect(() => {
153
- const filteredFilters = Object.keys(activeFilters).reduce((all, key) => {
154
- if (activeFilters[key]) {
155
- all[key] = activeFilters[key];
156
- }
157
- return all;
158
- }, {});
159
-
160
- const filters = StorageManager.saveFilters(module, view, { ...filteredFilters });
161
-
162
- if (!filters.pageSize) {
163
- filters.page = 1;
164
- filters.pageSize = pagination.pageSize;
165
- }
166
-
167
- updateQuery(filters, 1);
168
- }, [activeFilters]);
169
-
170
- const onFiltersChange = useCallback(
171
- (filters) => {
172
- const filteredFilters = Object.keys(filters).reduce((all, key) => {
173
- const conf = selectFiltersConfig[key];
174
- if (conf) {
175
- const { show } = conf;
176
- if (typeof show === "function") {
177
- if (show(filters)) {
178
- return all;
179
- }
180
- }
181
- }
182
-
183
- if (Array.isArray(filters[key]) && !filters[key].length) {
184
- all[key] = undefined;
185
- return all;
186
- }
187
-
188
- all[key] = filters[key];
189
- return all;
190
- }, {});
191
-
192
- setActiveFilters((prev) => {
193
- const o = { ...prev };
194
- Object.keys(o).forEach((k) => {
195
- if (Object.keys(selectFiltersConfig).includes(k) || k === "authorId") {
196
- delete o[k];
197
- }
198
- });
199
- Object.entries(filteredFilters).forEach(([k, v]) => {
200
- o[k] = v;
201
- });
202
-
203
- if (doPagination) {
204
- o.page = 1;
205
- }
206
-
207
- return o;
208
- });
209
- setPagination((prev) => ({ ...prev, current: 1 }));
210
- },
211
- [selectFiltersConfig],
212
- );
213
-
214
- const onTableChange = (page, f, sorter) => {
215
- const { sortBy, sortDir } = activeFilters;
216
- const { columnKey, order } = sorter || {};
217
-
218
- let fs = {
219
- ...activeFilters,
220
- page: page.pageSize !== activeFilters.pageSize ? 1 : page.current,
221
- pageSize: page.pageSize || defaultPageSize,
222
- };
223
-
224
- if (sorter && (columnKey !== sortBy || order !== sortDir)) {
225
- fs.page = 1;
226
- }
227
-
228
- if (order) {
229
- fs = { ...fs, sortDir: order, sortBy: columnKey };
230
- } else if (sortBy || sortDir) {
231
- fs = Object.keys(fs).reduce((all, key) => {
232
- if (key !== "sortDir" && key !== "sortBy") {
233
- if (key === PAGE || key === PAGE_SIZE) {
234
- all[key] = fs[key];
235
- } else {
236
- all[key] = activeFilters[key];
237
- }
238
- }
239
- return all;
240
- }, {});
241
- }
242
-
243
- setActiveFilters(fs);
244
-
245
- if (isNaN(page.current)) {
246
- page.current = 1;
247
- }
248
-
249
- const filters = StorageManager.saveFilters(module, view, { page: page.current }, true);
250
-
251
- updateQuery(filters, page.current);
252
- setPagination((prev) => ({
253
- ...prev,
254
- current: fs.page,
255
- pageSize: fs.pageSize || defaultPageSize,
256
- }));
257
- };
258
-
259
- const onSearch = useCallback((activeFilter, value) => {
260
- setActiveFilters((prev) => ({
261
- ...prev,
262
- page: 1,
263
- searchParams: activeFilter,
264
- search: value,
265
- }));
266
- setPagination((prev) => ({ ...prev, current: 1 }));
267
- }, []);
268
-
269
- const totalPages = useMemo(() => {
270
- return Math.ceil(pagination.total / pagination.pageSize);
271
- }, [pagination]);
272
-
273
- const canGoPrev = useMemo(() => pagination.current !== 1, [pagination]);
274
- const canGoNext = useMemo(
275
- () => pagination.current !== totalPages && totalPages,
276
- [pagination, totalPages],
277
- );
278
-
279
- const goPrev = () => {
280
- if (!canGoPrev) {
281
- return;
282
- }
283
-
284
- const { sortDir, sortBy } = activeFilters;
285
-
286
- onTableChange(
287
- { ...pagination, current: pagination.current - 1 },
288
- undefined,
289
- sortBy && sortDir ? { sortBy, sortDir } : undefined,
290
- );
291
- };
292
-
293
- const goNext = () => {
294
- if (!canGoNext) {
295
- return;
296
- }
297
-
298
- const { sortDir, sortBy } = activeFilters;
299
-
300
- onTableChange(
301
- { ...pagination, current: pagination.current + 1 },
302
- undefined,
303
- sortBy && sortDir ? { columnKey: sortBy, order: sortDir } : undefined,
304
- );
305
- };
306
-
307
- return {
308
- newFiltersConfig,
309
- totalPages,
310
- canGoNext,
311
- canGoPrev,
312
- goPrev,
313
- goNext,
314
- pagination,
315
- activeFilters,
316
- onSearch,
317
- defaultFilters,
318
- onTableChange,
319
- setPagination,
320
- onFiltersChange,
321
- setActiveFilters,
322
- };
18
+ const params = useMemo(() => new URLSearchParams(location.search), [location.search]);
19
+ const [activeFilters, setActiveFilters] = useState(
20
+ defaultActiveFilters || getDefaultActiveFilters(params, selectFiltersConfig, defaultPageSize, defaultUrlParams, doPagination)
21
+ );
22
+ const [pagination, setPagination] = useState(
23
+ defaultActiveFilters ? {
24
+ current: defaultActiveFilters.page || 1,
25
+ pageSize: defaultActiveFilters.pageSize || defaultPageSize,
26
+ showSizeChanger: true,
27
+ } : {
28
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
29
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
30
+ showSizeChanger: true,
31
+ });
32
+
33
+ useEffect(() => {
34
+ if (defaultActiveFilters) {
35
+ setPagination((prev) => ({
36
+ ...prev,
37
+ current: defaultActiveFilters.page || 1,
38
+ pageSize: defaultActiveFilters.pageSize || defaultPageSize,
39
+ showSizeChanger: true,
40
+ }));
41
+ return;
42
+ }
43
+ setPagination((prev) => ({
44
+ ...prev,
45
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
46
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
47
+ showSizeChanger: true,
48
+ }));
49
+ }, []);
50
+
51
+ const updateQuery = useCallback((filters, page) => {
52
+ const qs = Object.keys(filters)
53
+ .filter((key) => {
54
+ if (!doPagination) {
55
+ return !!filters[key] && key !== 'page' && key !== 'pageSize';
56
+ }
57
+
58
+ return !!filters[key];
59
+ })
60
+ .map(key => {
61
+ if (filters[key] && typeof filters[key] === 'object') {
62
+ return `${key}=${JSON.stringify(filters[key])}`;
63
+ }
64
+ return `${key}=${filters[key]}`;
65
+ })
66
+ .join('&');
67
+
68
+ if (view) {
69
+ if (typeof getRedirectLink === 'function') {
70
+ goTo(getRedirectLink(
71
+ view === 'mine-monitoring'
72
+ ? (qs !== '' ? `${location.pathname}?${qs}`
73
+ : doPagination ? `${location.pathname}?page=${page}`
74
+ : location.pathname)
75
+ : (qs !== '' ? `${`/app/${view}`}?${qs}`
76
+ : doPagination ? `${`/app/${view}`}?page=${page}`
77
+ : `${`/app/${view}`}`)
78
+ ));
79
+ return;
80
+ }
81
+
82
+ if (view === 'mine-monitoring') {
83
+ goTo(
84
+ qs !== '' ? `${location.pathname}?${qs}`
85
+ : doPagination ? `${location.pathname}?page=${page}`
86
+ : location.pathname);
87
+ } else {
88
+ goTo(
89
+ qs !== '' ? `${`/app/${module}/${view}`}?${qs}`
90
+ : doPagination ? `${`/app/${module}/${view}`}?page=${page}`
91
+ : `${`/app/${module}/${view}`}`);
92
+ }
93
+ }
94
+ }, [module, view, location.pathname]); // Updated dependency array
95
+
96
+ const defaultFilters = useMemo(() => {
97
+ const def = {};
98
+ Object.keys(selectFiltersConfig).forEach((key) => {
99
+ if (activeFilters[key]) {
100
+ def[key] = activeFilters[key];
101
+ }
102
+ });
103
+ return def;
104
+ }, [activeFilters, selectFiltersConfig]);
105
+
106
+ const newFiltersConfig = useMemo(() => {
107
+ const o = filtersConfig;
108
+ Object.keys(filtersConfig).forEach((key) => {
109
+ if (params.has(key)) {
110
+ o[key] = params.get(key);
111
+ }
112
+ });
113
+ return o;
114
+ }, [params, filtersConfig]);
115
+
116
+ useEffect(() => {
117
+ const filteredFilters = Object.keys(activeFilters).reduce((all, key) => {
118
+ if (activeFilters[key]) {
119
+ all[key] = activeFilters[key];
120
+ }
121
+ return all;
122
+ }, {});
123
+
124
+ const filters = StorageManager.saveFilters(module, view, { ...filteredFilters });
125
+
126
+ if (!filters.pageSize) {
127
+ filters.page = 1;
128
+ filters.pageSize = pagination.pageSize;
129
+ }
130
+
131
+ updateQuery(filters, 1);
132
+ }, [activeFilters]);
133
+
134
+ const onFiltersChange = useCallback((filters) => {
135
+ const filteredFilters = Object.keys(filters).reduce((all, key) => {
136
+ const conf = selectFiltersConfig[key];
137
+ if (conf) {
138
+ const { show } = conf;
139
+ if (typeof show === 'function') {
140
+ if (show(filters)) {
141
+ return all;
142
+ }
143
+ }
144
+ }
145
+
146
+ if (Array.isArray(filters[key]) && !filters[key].length) {
147
+ all[key] = undefined;
148
+ return all;
149
+ }
150
+
151
+ all[key] = filters[key];
152
+ return all;
153
+ }, {});
154
+
155
+ setActiveFilters((prev) => {
156
+ const o = { ...prev };
157
+ Object.keys(o).forEach((k) => {
158
+ if (Object.keys(selectFiltersConfig).includes(k) || k === 'authorId') {
159
+ delete o[k];
160
+ }
161
+ });
162
+ Object.entries(filteredFilters).forEach(([k, v]) => {
163
+ o[k] = v;
164
+ });
165
+
166
+ if (doPagination) {
167
+ o.page = 1;
168
+ }
169
+
170
+ return o;
171
+ });
172
+ setPagination((prev) => ({ ...prev, current: 1 }));
173
+ }, [selectFiltersConfig]);
174
+
175
+ const onTableChange = (page, f, sorter) => {
176
+ const { sortBy, sortDir } = activeFilters;
177
+ const { columnKey, order } = sorter || {};
178
+
179
+ let fs = {
180
+ ...activeFilters,
181
+ page: page.pageSize !== activeFilters.pageSize ? 1 : page.current,
182
+ pageSize: page.pageSize || defaultPageSize,
183
+ };
184
+
185
+ if (sorter && (columnKey !== sortBy || order !== sortDir)) {
186
+ fs.page = 1;
187
+ }
188
+
189
+ if (order) {
190
+ fs = { ...fs, sortDir: order, sortBy: columnKey };
191
+ } else if (sortBy || sortDir) {
192
+ fs = Object.keys(fs).reduce((all, key) => {
193
+ if (key !== 'sortDir' && key !== 'sortBy') {
194
+ if (key === 'page' || key === 'pageSize') {
195
+ all[key] = fs[key];
196
+ } else {
197
+ all[key] = activeFilters[key];
198
+ }
199
+ }
200
+ return all;
201
+ }, {});
202
+ }
203
+
204
+ setActiveFilters(fs);
205
+
206
+ if (isNaN(page.current)) {
207
+ page.current = 1;
208
+ }
209
+
210
+ const filters = StorageManager.saveFilters(module, view, { page: page.current }, true);
211
+
212
+ updateQuery(filters, page.current);
213
+ setPagination((prev) => ({
214
+ ...prev,
215
+ current: fs.page,
216
+ pageSize: fs.pageSize || defaultPageSize
217
+ }));
218
+ };
219
+
220
+ const onSearch = useCallback((activeFilter, value) => {
221
+ setActiveFilters((prev) => ({
222
+ ...prev,
223
+ page: 1,
224
+ searchParams: activeFilter,
225
+ search: value,
226
+ }));
227
+ setPagination((prev) => ({ ...prev, current: 1 }));
228
+ }, []);
229
+
230
+ const totalPages = useMemo(() => {
231
+ return Math.ceil(pagination.total / pagination.pageSize);
232
+ }, [pagination]);
233
+
234
+ const canGoPrev = useMemo(() => pagination.current !== 1, [pagination]);
235
+ const canGoNext = useMemo(() => pagination.current !== totalPages && totalPages, [pagination, totalPages]);
236
+
237
+ const goPrev = () => {
238
+ if (!canGoPrev) {
239
+ return;
240
+ }
241
+
242
+ const { sortDir, sortBy } = activeFilters;
243
+
244
+ onTableChange(
245
+ { ...pagination, current: pagination.current - 1 },
246
+ undefined,
247
+ sortBy && sortDir ? { sortBy, sortDir } : undefined
248
+ );
249
+ };
250
+
251
+ const goNext = () => {
252
+ if (!canGoNext) {
253
+ return;
254
+ }
255
+
256
+ const { sortDir, sortBy } = activeFilters;
257
+
258
+ onTableChange(
259
+ { ...pagination, current: pagination.current + 1 },
260
+ undefined,
261
+ sortBy && sortDir ? { columnKey: sortBy, order: sortDir } : undefined
262
+ );
263
+ };
264
+
265
+ return {
266
+ newFiltersConfig,
267
+ totalPages,
268
+ canGoNext,
269
+ canGoPrev,
270
+ goPrev,
271
+ goNext,
272
+ pagination,
273
+ activeFilters,
274
+ onSearch,
275
+ defaultFilters,
276
+ onTableChange,
277
+ setPagination,
278
+ onFiltersChange,
279
+ setActiveFilters,
280
+ };
323
281
  };
package/.env DELETED
@@ -1,8 +0,0 @@
1
- REACT_APP_API_KEY=
2
- REACT_APP_AUTH_DOMAIN=
3
- REACT_APP_PROJECT_ID=
4
- REACT_APP_STORAGE_BUCKED=
5
- REACT_APP_SENDER_ID=
6
- REACT_APP_APP_ID=
7
- REACT_APP_MEASUREMENT_ID=
8
- REACT_APP_VAPID_KEY=
@@ -1,13 +0,0 @@
1
- {
2
- "cSpell.words": ["cukura"],
3
- "files.autoSave": "afterDelay",
4
- "editor.wordWrap": "on",
5
- "editor.autoClosingBrackets": "always",
6
- "editor.autoClosingComments": "always",
7
- "editor.autoClosingQuotes": "always",
8
- "editor.defaultFormatter": "esbenp.prettier-vscode",
9
- "editor.formatOnPaste": true,
10
- "editor.formatOnSave": true,
11
- "notebook.defaultFormatter": "esbenp.prettier-vscode",
12
- "javascript.format.semicolons": "insert"
13
- }