@agilemotion/oui-react-js 1.8.14 → 1.8.16

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.
@@ -56,12 +56,31 @@ const DashboardCard = props => {
56
56
  if (path && displayType) {
57
57
  if (displayType === 'VIEW') {
58
58
  (0, _RestUtils.sendRequest)(path, data => {
59
- setview(/*#__PURE__*/_react.default.createElement(_View.View, {
59
+ let dashboardView = {};
60
+ let defaultModel = {};
61
+ dashboardView.config = data;
62
+ dashboardView.parent = false;
63
+ dashboardView.popUp = false;
64
+ dashboardView.window = false;
65
+ dashboardView.config.window = false;
66
+ dashboardView.handle = {
67
+ api: {
68
+ get id() {
69
+ return data.id;
70
+ },
71
+ loaded: () => {
72
+ return false;
73
+ }
74
+ }
75
+ };
76
+ _ApplicationManager.default.addView(dashboardView, path, true);
77
+ let element = /*#__PURE__*/_react.default.createElement(_View.View, {
60
78
  key: data.id + "-" + keyCounter.current++,
61
79
  config: data,
62
80
  parameters: [],
63
- handle: handle
64
- }));
81
+ handle: dashboardView.handle
82
+ });
83
+ setview(element);
65
84
  });
66
85
  } else {
67
86
  let fetchConfig = {
@@ -154,16 +173,17 @@ const DashboardCard = props => {
154
173
  };
155
174
  return /*#__PURE__*/_react.default.createElement(_Paper.default, {
156
175
  style: {
157
- minWidth: '200px',
158
- marginLeft: settings.first ? '0' : '16px',
159
- minHeight: '40vh'
176
+ minWidth: '200px'
160
177
  },
161
178
  className: 'col',
162
179
  ref: ref
163
180
  }, /*#__PURE__*/_react.default.createElement("div", {
164
181
  className: 'row'
165
182
  }, /*#__PURE__*/_react.default.createElement("div", {
166
- className: 'col-*-*'
183
+ className: 'col-*-*',
184
+ style: {
185
+ height: '64px'
186
+ }
167
187
  }, /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledDropdown, null, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownToggle, {
168
188
  color: "default",
169
189
  "data-toggle": "dropdown",
@@ -220,10 +240,9 @@ const DashboardCard = props => {
220
240
  }, name))), /*#__PURE__*/_react.default.createElement("div", {
221
241
  className: 'row',
222
242
  style: {
223
- margin: '16px',
224
243
  width: '100%',
225
- height: '32vh',
226
- padding: '8px 32px 0 0'
244
+ height: 'calc(100% - 64px)',
245
+ padding: '8px 0 32px 32px'
227
246
  }
228
247
  }, !_Utils.default.isNull(path) && !_Utils.default.isNull(displayType) && displayType !== 'VIEW' && /*#__PURE__*/_react.default.createElement("object", {
229
248
  data: path,
@@ -307,9 +326,9 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
307
326
  const [settings] = _react.default.useState(_ApplicationManager.default.getDashboardSettings());
308
327
  const [taskSummary, setTaskSummary] = _react.default.useState(null);
309
328
  const [menuItems, setMenuItems] = _react.default.useState(null);
310
- const [cardRows, setCardRows] = _react.default.useState(null);
311
- const [cardsPerRow, setCardsPerRow] = _react.default.useState(null);
312
- let dashboardCardCounter = 0;
329
+ const [cardCols, setCardCols] = _react.default.useState(null);
330
+ const [columnHeights, setColumnHeights] = _react.default.useState([]);
331
+ let numCols = 2;
313
332
  const api = {
314
333
  get id() {
315
334
  return '_sys_dashboard';
@@ -327,31 +346,6 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
327
346
  const handle = {
328
347
  'api': api
329
348
  };
330
- function setupCardRows(exclusion, defaultCardsPerRow) {
331
- let row = null;
332
- let gridRows = [];
333
- dashboardCardCounter = 0;
334
- let i = cardsPerRow ? cardsPerRow : defaultCardsPerRow;
335
- for (const userDashboard of userDashboards) {
336
- if (dashboardCardCounter++ % i === 0) {
337
- row = [];
338
- gridRows.push(row);
339
- }
340
- if (userDashboard !== exclusion) {
341
- row.push(userDashboard);
342
- }
343
- }
344
- let populatedRows = [];
345
- for (const gridRow of gridRows) {
346
- if (gridRow.length > 0) {
347
- populatedRows.push(gridRow);
348
- }
349
- }
350
- for (const gridRow of populatedRows) {
351
- gridRow[0].first = true;
352
- }
353
- setCardRows(populatedRows);
354
- }
355
349
  const getDashboardMenu = path => {
356
350
  return new Promise(resolve => {
357
351
  let service = {
@@ -403,18 +397,40 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
403
397
  setMenuItems(dashboardMenuitems);
404
398
  }
405
399
  }
406
- _react.default.useEffect(() => {
407
- /*let rpcConfig = {
408
- "type": "rpc",
409
- "procedureName": "getWorkFlowSummary",
410
- "serviceId": "BPM.WorkFlow"
411
- };*/
400
+ const setupCardCols = () => {
401
+ const totalItems = userDashboards.length;
412
402
 
413
- let cardsPerRow = 2;
414
- if (window.innerWidth < 400) {
415
- cardsPerRow = 1;
403
+ // Special case: 1 or 2 cards — full height
404
+ if (totalItems <= 2) {
405
+ const cols = Array.from({
406
+ length: totalItems
407
+ }, (_, i) => [userDashboards[i]]);
408
+ setCardCols(cols);
409
+ setColumnHeights(Array.from({
410
+ length: totalItems
411
+ }, () => '100%'));
412
+ return;
416
413
  }
417
- setCardsPerRow(cardsPerRow);
414
+
415
+ // Distribute round-robin into columns
416
+ const cols = Array.from({
417
+ length: numCols
418
+ }, () => []);
419
+ userDashboards.forEach((item, index) => {
420
+ cols[index % numCols].push(item);
421
+ });
422
+ setCardCols(cols);
423
+
424
+ // Determine max card count across all columns
425
+ const maxItems = Math.max(...cols.map(col => col.length));
426
+ const baseHeightPerCard = 40; // in vh
427
+ const totalTargetHeight = maxItems * baseHeightPerCard; // total height per column in vh
428
+
429
+ // Calculate target height per card in each column
430
+ const heights = cols.map(col => col.length > 0 ? `${(totalTargetHeight / col.length).toFixed(2)}vh` : '0vh');
431
+ setColumnHeights(heights);
432
+ };
433
+ _react.default.useEffect(() => {
418
434
  if (_Utils.default.isNull(taskSummary)) {
419
435
  (0, _RestUtils.sendRequest)(`${location + _ApplicationManager.default.getContextRoot()}/bpm/api/v1/summary`, result => {
420
436
  if (!_Utils.default.isNull(result)) {
@@ -430,15 +446,15 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
430
446
  for (const dashboard of dashboards) {
431
447
  userDashboards.push(dashboard);
432
448
  }
433
- setupCardRows(null, cardsPerRow);
449
+ setupCardCols();
434
450
  }
435
451
  }, e => {
436
452
  console.error(e);
437
453
  // TODO : Show error message
438
454
  }, true, true);
439
455
  loadMenus();
440
- if (!_Utils.default.isNull(settings) && !_Utils.default.isNull(userDashboards) && _Utils.default.isNull(cardRows) && !_Utils.default.isNull(cardsPerRow)) {
441
- setupCardRows();
456
+ if (!_Utils.default.isNull(settings) && !_Utils.default.isNull(userDashboards) && _Utils.default.isNull(cardCols)) {
457
+ setupCardCols();
442
458
  }
443
459
  _ApplicationManager.default.setDashboardView({
444
460
  handle: handle
@@ -450,31 +466,31 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
450
466
  settings.path = path;
451
467
  settings.parameters = {};
452
468
  userDashboards.push(settings);
453
- setupCardRows();
469
+ setupCardCols();
454
470
  };
455
471
  return /*#__PURE__*/_react.default.createElement("div", {
456
472
  ref: ref,
457
473
  style: {
458
- margin: '4px 0 0 0'
474
+ height: '100%'
459
475
  }
460
- }, !_Utils.default.isNull(settings) && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
461
- className: 'row'
462
- }, /*#__PURE__*/_react.default.createElement("div", {
463
- className: 'col-*-*',
476
+ }, !_Utils.default.isNull(settings) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
464
477
  style: {
465
- padding: '14px',
466
- width: '136px'
478
+ width: '100%',
479
+ display: 'flex',
480
+ justifyContent: 'space-between'
467
481
  }
468
- }, /*#__PURE__*/_react.default.createElement("p", {
482
+ }, /*#__PURE__*/_react.default.createElement("div", {
469
483
  style: {
470
- fontSize: '24px'
484
+ display: 'flex',
485
+ alignItems: 'center',
486
+ gap: '4px'
471
487
  }
472
- }, "Dashboard")), /*#__PURE__*/_react.default.createElement("div", {
473
- className: 'col-*-*',
488
+ }, /*#__PURE__*/_react.default.createElement("p", {
474
489
  style: {
475
- marginTop: "4px"
490
+ fontSize: '24px',
491
+ margin: 0
476
492
  }
477
- }, /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledDropdown, null, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownToggle, {
493
+ }, "Dashboard"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledDropdown, null, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownToggle, {
478
494
  color: "default",
479
495
  "data-toggle": "dropdown",
480
496
  nav: true
@@ -495,11 +511,16 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
495
511
  onClick: () => {
496
512
  addDashboardCard(item);
497
513
  }
498
- }, item.attributes.label, ' '), ' '))) : null), ' ')), /*#__PURE__*/_react.default.createElement("div", {
514
+ }, item.attributes.label, ' '), ' '))) : null), ' '))), /*#__PURE__*/_react.default.createElement("div", {
499
515
  style: {
500
- overflowY: 'auto',
516
+ height: 'calc(100% - 58px)',
517
+ overflowY: 'auto'
518
+ }
519
+ }, /*#__PURE__*/_react.default.createElement("div", {
520
+ style: {
521
+ overflowY: 'hidden',
501
522
  overflowX: 'hidden',
502
- maxHeight: 'calc(85vh - 4px)',
523
+ height: '100%',
503
524
  padding: '0 4px 64px 0'
504
525
  }
505
526
  }, /*#__PURE__*/_react.default.createElement(_AlertBar.default, {
@@ -512,37 +533,64 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
512
533
  className: 'row',
513
534
  style: {
514
535
  paddingRight: '16px',
515
- overflow: 'hidden'
536
+ overflow: 'hidden',
537
+ height: '168px'
516
538
  }
517
539
  }, /*#__PURE__*/_react.default.createElement(WorkFlowCard, {
518
- margin: '0 0 16px 16px',
540
+ margin: '0 0 16px 8px',
519
541
  title: 'Assigned to Me',
520
542
  itemCount: taskSummary.personalWorkItemCount,
521
543
  path: '/workflow/views/personal-work-items.json'
522
544
  }), /*#__PURE__*/_react.default.createElement(WorkFlowCard, {
523
- margin: '0 0 16px 16px',
545
+ margin: '0 0 16px 8px',
524
546
  title: 'Available',
525
547
  itemCount: taskSummary.groupWorkItemCount,
526
548
  path: '/workflow/views/group-work-items.json'
527
549
  }), /*#__PURE__*/_react.default.createElement(WorkFlowCard, {
528
- margin: '0 0 16px 16px',
550
+ margin: '0 0 16px 8px',
529
551
  title: 'Due Today',
530
552
  itemCount: taskSummary.dueTodayItemCount,
531
553
  path: '/workflow/views/due-today-work-items.json'
532
- })), /*#__PURE__*/_react.default.createElement("div", null, !_Utils.default.isNull(cardRows) ? cardRows.map((row, i) => /*#__PURE__*/_react.default.createElement("div", {
533
- className: 'row',
554
+ })), /*#__PURE__*/_react.default.createElement("div", {
534
555
  style: {
535
- margin: '0 0 16px 0'
536
- },
537
- key: i
538
- }, row.map((userDashboard, j) => /*#__PURE__*/_react.default.createElement(DashboardCard, {
539
- settings: userDashboard,
540
- index: dashboardCardCounter,
541
- key: i + j,
556
+ overflowY: 'auto',
557
+ overflowX: 'hidden',
558
+ maxHeight: '100%',
559
+ height: 'calc(100% - 104px)'
560
+ }
561
+ }, cardCols && /*#__PURE__*/_react.default.createElement("div", {
562
+ style: {
563
+ display: 'flex',
564
+ width: '100%',
565
+ height: userDashboards.length <= 2 ? '100%' : 'auto'
566
+ }
567
+ }, cardCols.map((col, colIndex) => /*#__PURE__*/_react.default.createElement("div", {
568
+ key: colIndex,
569
+ style: {
570
+ flex: 1,
571
+ boxSizing: 'border-box',
572
+ display: 'flex',
573
+ flexDirection: 'column',
574
+ gap: '12px',
575
+ width: '50%',
576
+ marginLeft: colIndex % numCols ? '4px' : null,
577
+ marginRight: cardCols.length > 1 && !(colIndex % numCols) ? '4px' : null
578
+ }
579
+ }, col.map((dashboard, index) => /*#__PURE__*/_react.default.createElement("div", {
580
+ key: index,
581
+ style: {
582
+ height: columnHeights[colIndex],
583
+ borderRadius: '6px',
584
+ display: 'flex'
585
+ }
586
+ }, /*#__PURE__*/_react.default.createElement(DashboardCard, {
587
+ settings: dashboard,
588
+ index: colIndex + index,
589
+ key: index,
542
590
  onDelete: () => {
543
- userDashboards.splice(userDashboards.indexOf(userDashboard), 1);
544
- setupCardRows(userDashboard);
591
+ userDashboards.splice(userDashboards.indexOf(dashboard), 1);
592
+ setupCardCols();
545
593
  }
546
- })))) : null))));
594
+ })))))))))));
547
595
  }));
548
596
  var _default = exports.default = Dashboard;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilemotion/oui-react-js",
3
- "version": "1.8.14",
3
+ "version": "1.8.16",
4
4
  "files": [
5
5
  "dist"
6
6
  ],