udp-react-enterprise-component-library 25.14.1-beta.7 → 25.14.1-beta.9

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 (170) hide show
  1. package/dist/{Accordion-Cd6gzd60.js → Accordion-DL61AM6M.js} +2 -2
  2. package/dist/{Accordion-Cd6gzd60.js.map → Accordion-DL61AM6M.js.map} +1 -1
  3. package/dist/{ActionProvider-BPuiwxd4.js → ActionProvider-DL5qMp-u.js} +2 -2
  4. package/dist/{ActionProvider-BPuiwxd4.js.map → ActionProvider-DL5qMp-u.js.map} +1 -1
  5. package/dist/{ActionSplitScreen-Cym0gCOb.js → ActionSplitScreen-x0Bh5GEF.js} +3 -3
  6. package/dist/{ActionSplitScreen-Cym0gCOb.js.map → ActionSplitScreen-x0Bh5GEF.js.map} +1 -1
  7. package/dist/{ActionWrapper-CoP91vel.js → ActionWrapper-BRzh3vn0.js} +3 -3
  8. package/dist/{ActionWrapper-CoP91vel.js.map → ActionWrapper-BRzh3vn0.js.map} +1 -1
  9. package/dist/{BaseTreeMenu-DmsrGSdA.js → BaseTreeMenu-DHEMztjA.js} +7 -3
  10. package/dist/BaseTreeMenu-DHEMztjA.js.map +1 -0
  11. package/dist/{CircleButton-BFASpo5t.js → CircleButton-DBPFjNl1.js} +2 -2
  12. package/dist/{CircleButton-BFASpo5t.js.map → CircleButton-DBPFjNl1.js.map} +1 -1
  13. package/dist/{CrudBrowserContainer-Dpgwjt7c.js → CrudBrowserContainer-B8AKH7kQ.js} +9 -4
  14. package/dist/CrudBrowserContainer-B8AKH7kQ.js.map +1 -0
  15. package/dist/{EntityHeader-Buq_r4IE.js → EntityHeader-DOoeCEj3.js} +2 -2
  16. package/dist/{EntityHeader-Buq_r4IE.js.map → EntityHeader-DOoeCEj3.js.map} +1 -1
  17. package/dist/{FileViewer-C1eQoTDj.js → FileViewer-Bhubf4Uv.js} +2 -2
  18. package/dist/{FileViewer-C1eQoTDj.js.map → FileViewer-Bhubf4Uv.js.map} +1 -1
  19. package/dist/{FluentCell-DZ5pFjdC.js → FluentCell-C7lb2y4Z.js} +2 -2
  20. package/dist/{FluentCell-DZ5pFjdC.js.map → FluentCell-C7lb2y4Z.js.map} +1 -1
  21. package/dist/{FluentDataTable-C7Ng6Eh3.js → FluentDataTable-C3A36z2b.js} +2 -2
  22. package/dist/{FluentDataTable-C7Ng6Eh3.js.map → FluentDataTable-C3A36z2b.js.map} +1 -1
  23. package/dist/{FluentTimeline-ChthjfxZ.js → FluentTimeline-B0VjMqsq.js} +2 -2
  24. package/dist/{FluentTimeline-ChthjfxZ.js.map → FluentTimeline-B0VjMqsq.js.map} +1 -1
  25. package/dist/{IconRenderer-8w6JVRET.js → IconRenderer-DiwGfDul.js} +2 -2
  26. package/dist/{IconRenderer-8w6JVRET.js.map → IconRenderer-DiwGfDul.js.map} +1 -1
  27. package/dist/{Inquiry-DJ-yrELW.js → Inquiry-UnnTFapw.js} +6 -6
  28. package/dist/{Inquiry-DJ-yrELW.js.map → Inquiry-UnnTFapw.js.map} +1 -1
  29. package/dist/{MenuPage-BJsOWc5e.js → MenuPage-D4tvTXC3.js} +4 -4
  30. package/dist/{MenuPage-0qeyA5lF.js → MenuPage-DJGGAhH5.js} +11 -6
  31. package/dist/MenuPage-DJGGAhH5.js.map +1 -0
  32. package/dist/{MttMainTimeline-au5xi1SZ.js → MttMainTimeline-Bme6LQZO.js} +2 -2
  33. package/dist/{MttMainTimeline-au5xi1SZ.js.map → MttMainTimeline-Bme6LQZO.js.map} +1 -1
  34. package/dist/{MttSummary-DHB1AW_0.js → MttSummary-CTETqPbU.js} +3 -3
  35. package/dist/{MttSummary-DHB1AW_0.js.map → MttSummary-CTETqPbU.js.map} +1 -1
  36. package/dist/{NotesScreen-moR3WUoq.js → NotesScreen-CmMz3GTR.js} +2 -2
  37. package/dist/{NotesScreen-moR3WUoq.js.map → NotesScreen-CmMz3GTR.js.map} +1 -1
  38. package/dist/{PageActionWrapper-KtNGraWi.js → PageActionWrapper-HgV0I8Km.js} +2 -2
  39. package/dist/{PageActionWrapper-KtNGraWi.js.map → PageActionWrapper-HgV0I8Km.js.map} +1 -1
  40. package/dist/{RecentlyLoadedNodesTable-B5KlS1HR.js → RecentlyLoadedNodesTable-BRxssq07.js} +2 -2
  41. package/dist/{RecentlyLoadedNodesTable-B5KlS1HR.js.map → RecentlyLoadedNodesTable-BRxssq07.js.map} +1 -1
  42. package/dist/{RemindersCard-CRstZlRF.js → RemindersCard-BrjYmZVz.js} +2 -2
  43. package/dist/{RemindersCard-CRstZlRF.js.map → RemindersCard-BrjYmZVz.js.map} +1 -1
  44. package/dist/{RemindersScreen-C2hcBWnk.js → RemindersScreen-CVTHY97W.js} +2 -2
  45. package/dist/{RemindersScreen-C2hcBWnk.js.map → RemindersScreen-CVTHY97W.js.map} +1 -1
  46. package/dist/{Shell-CuYfQQKW.js → Shell-CZIS-LvO.js} +4 -4
  47. package/dist/{Shell-CuYfQQKW.js.map → Shell-CZIS-LvO.js.map} +1 -1
  48. package/dist/{TreeUtilities-DVY-2md6.js → TreeUtilities-XLrXtUeL.js} +9 -8
  49. package/dist/{TreeUtilities-DVY-2md6.js.map → TreeUtilities-XLrXtUeL.js.map} +1 -1
  50. package/dist/UI/accordion/index.js +2 -2
  51. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +2 -2
  52. package/dist/UI/dataDisplay/FluentDataTable/index.js +3 -3
  53. package/dist/UI/dataDisplay/entityHeader/index.js +3 -3
  54. package/dist/UI/dataDisplay/index.js +5 -5
  55. package/dist/UI/fileViewer/index.js +2 -2
  56. package/dist/UI/index.js +9 -9
  57. package/dist/UI/timeline/fluentTimeline/index.js +2 -2
  58. package/dist/UI/timeline/index.js +2 -2
  59. package/dist/UI/utilityDisplay/index.js +1 -1
  60. package/dist/{UdpMaintenanceConfigPage-CC_gwu35.js → UdpMaintenanceConfigPage-DfKk0PmB.js} +1 -1
  61. package/dist/{UdpMaintenanceConfigPage-yuotrI0g.js → UdpMaintenanceConfigPage-mJ4AkDYp.js} +3 -2
  62. package/dist/UdpMaintenanceConfigPage-mJ4AkDYp.js.map +1 -0
  63. package/dist/{UdpMaintenanceEnginePage-o40sezly.js → UdpMaintenanceEnginePage-DAioIeSf.js} +8 -3
  64. package/dist/UdpMaintenanceEnginePage-DAioIeSf.js.map +1 -0
  65. package/dist/{UdpMaintenanceEnginePage-b5cm6uW2.js → UdpMaintenanceEnginePage-M0RbzSTX.js} +2 -2
  66. package/dist/{UdpRoutes-BVVsyngj.js → UdpRoutes-Bjfl5no0.js} +5 -5
  67. package/dist/{UdpRoutes-BVVsyngj.js.map → UdpRoutes-Bjfl5no0.js.map} +1 -1
  68. package/dist/{UtilitySideBar-DlCvljVV.js → UtilitySideBar-otYqGPhu.js} +2 -2
  69. package/dist/UtilitySideBar-otYqGPhu.js.map +1 -0
  70. package/dist/{WorkflowContainer-DasTFSlY.js → WorkflowContainer-C5zXxhJE.js} +3 -3
  71. package/dist/{WorkflowContainer-DasTFSlY.js.map → WorkflowContainer-C5zXxhJE.js.map} +1 -1
  72. package/dist/{WorkflowContainer-C6QfVid-.js → WorkflowContainer-D0Od__D5.js} +4 -4
  73. package/dist/{WorkflowTreeMenu-Dc9l7jEY.js → WorkflowTreeMenu-BtolZKVF.js} +2 -2
  74. package/dist/{WorkflowTreeMenu-Dc9l7jEY.js.map → WorkflowTreeMenu-BtolZKVF.js.map} +1 -1
  75. package/dist/actions/index.js +6 -6
  76. package/dist/componentSystems/multiThreadTimeline/index.js +5 -5
  77. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +3 -3
  78. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +4 -4
  79. package/dist/componentSystems/multiThreadTimeline/ui/index.js +3 -3
  80. package/dist/index.js +146 -62
  81. package/dist/index.js.map +1 -1
  82. package/dist/inquiry/dashboard/index.js +3 -3
  83. package/dist/inquiry/index.js +10 -10
  84. package/dist/maintenanceEngine/crudBrowser/index.js +1 -1
  85. package/dist/maintenanceEngine/index.js +1 -1
  86. package/dist/menuPage/index.js +4 -4
  87. package/dist/notes/index.js +2 -2
  88. package/dist/reminders/index.js +3 -3
  89. package/dist/routes/index.js +1 -1
  90. package/dist/shell/index.js +12 -12
  91. package/dist/shell/ui/addUser/index.js +1 -1
  92. package/dist/shell/ui/appSwitcher/index.js +1 -1
  93. package/dist/shell/ui/index.js +3 -3
  94. package/dist/treeMenu/index.js +2 -2
  95. package/dist/types/UI/charts/types.d.ts +1 -0
  96. package/dist/types/index.d.ts +2 -0
  97. package/dist/types/menuPage/CustomMenuPage.d.ts +22 -0
  98. package/dist/types/tsconfig.tsbuildinfo +1 -1
  99. package/dist/types/utilities/iconLibrary/index.d.ts +5 -1
  100. package/dist/types/utilities/tree/TreeUtilities.d.ts +2 -0
  101. package/dist/udp/pages/index.js +10 -10
  102. package/dist/{udpPages-WbvmyuOa.js → udpPages-D6t7REhp.js} +7 -7
  103. package/dist/{udpPages-WbvmyuOa.js.map → udpPages-D6t7REhp.js.map} +1 -1
  104. package/dist/utilities/DemoJuly/index.js +1 -1
  105. package/dist/utilities/aggrid/index.js +1 -1
  106. package/dist/utilities/auth/index.js +1 -1
  107. package/dist/utilities/catalog/index.js +1 -1
  108. package/dist/utilities/chatBot/index.js +1 -1
  109. package/dist/utilities/crud/index.js +1 -1
  110. package/dist/utilities/customIcons/index.js +1 -1
  111. package/dist/utilities/entities/index.js +1 -1
  112. package/dist/utilities/floorplanFunctions/index.js +1 -1
  113. package/dist/utilities/iconLibrary/index.js +5 -5
  114. package/dist/utilities/index.js +35 -35
  115. package/dist/utilities/input/index.js +1 -1
  116. package/dist/utilities/maintenanceEngine/index.js +1 -1
  117. package/dist/utilities/menus/index.js +1 -1
  118. package/dist/utilities/page/index.js +1 -1
  119. package/dist/utilities/provider/index.js +7 -7
  120. package/dist/utilities/redirect/index.js +1 -1
  121. package/dist/utilities/rules/index.js +1 -1
  122. package/dist/utilities/search/index.js +1 -1
  123. package/dist/utilities/storage/index.js +1 -1
  124. package/dist/utilities/style/index.js +1 -1
  125. package/dist/utilities/tenant/index.js +1 -1
  126. package/dist/utilities/tree/index.js +2 -2
  127. package/dist/utilities/uploader/index.js +1 -1
  128. package/dist/utilities/utilityBar/index.js +1 -1
  129. package/dist/utilities/workflow/index.js +1 -1
  130. package/dist/workflow/components/index.js +1 -1
  131. package/dist/workflow/index.js +6 -6
  132. package/dist/workflow/menus/index.js +3 -3
  133. package/export-map.json +7 -5
  134. package/package.json +2 -2
  135. package/dist/BaseTreeMenu-DmsrGSdA.js.map +0 -1
  136. package/dist/CrudBrowserContainer-Dpgwjt7c.js.map +0 -1
  137. package/dist/MenuPage-0qeyA5lF.js.map +0 -1
  138. package/dist/UdpMaintenanceConfigPage-yuotrI0g.js.map +0 -1
  139. package/dist/UdpMaintenanceEnginePage-o40sezly.js.map +0 -1
  140. package/dist/UtilitySideBar-DlCvljVV.js.map +0 -1
  141. /package/dist/{DemoJuly-HEFpRiJ1.js → DemoJuly-D7RhIRiO.js} +0 -0
  142. /package/dist/{addUser-CDUgX71C.js → addUser-CS0LS9_W.js} +0 -0
  143. /package/dist/{aggrid-D_aCbevC.js → aggrid-C3KMLJBL.js} +0 -0
  144. /package/dist/{appSwitcher-BXsn0Y7P.js → appSwitcher-DqliMkfh.js} +0 -0
  145. /package/dist/{auth-DWPlnjpI.js → auth-DLdDsXt6.js} +0 -0
  146. /package/dist/{catalog-DMuLXcCK.js → catalog-DLo7sqLU.js} +0 -0
  147. /package/dist/{chatBot-CESOMewn.js → chatBot-dEV9kiqk.js} +0 -0
  148. /package/dist/{components-DaFrTvLa.js → components-CnnFIob2.js} +0 -0
  149. /package/dist/{crud-tnZ9W8IE.js → crud-C_ERd-Ed.js} +0 -0
  150. /package/dist/{customIcons-DbLvDHvX.js → customIcons-BzKpDhOz.js} +0 -0
  151. /package/dist/{entities-Hs88OmOI.js → entities-Z3wHDYPc.js} +0 -0
  152. /package/dist/{floorplanFunctions-DI9Q0N4y.js → floorplanFunctions-CyG-A6Ho.js} +0 -0
  153. /package/dist/{iconLibrary-BzBDlfKa.js → iconLibrary-DkiwUTn0.js} +0 -0
  154. /package/dist/{input-DVo_b6i8.js → input-Bd3pOKUF.js} +0 -0
  155. /package/dist/{maintenanceEngine-BbFlaLMV.js → maintenanceEngine-BiIXrgHI.js} +0 -0
  156. /package/dist/{menus-BZI70wR2.js → menus-CreZRf8_.js} +0 -0
  157. /package/dist/{menus-DN6GDDqx.js → menus-lneAs-ot.js} +0 -0
  158. /package/dist/{page-BQMQ1JlA.js → page-DF9Cce_a.js} +0 -0
  159. /package/dist/{provider-CwOhsp5M.js → provider-CDMCgVZv.js} +0 -0
  160. /package/dist/{redirect-B0_sESdf.js → redirect-DXdJsOUE.js} +0 -0
  161. /package/dist/{rules-cVxJYdGG.js → rules-vy1m9JZd.js} +0 -0
  162. /package/dist/{search-6zyJ3P-2.js → search-By3X_wDu.js} +0 -0
  163. /package/dist/{storage-ZisRFPrn.js → storage-Dzx9lS99.js} +0 -0
  164. /package/dist/{style-B_j5O3ww.js → style-DCetPHEb.js} +0 -0
  165. /package/dist/{tenant-CMcPr3w4.js → tenant-9yY-GOUj.js} +0 -0
  166. /package/dist/{tree-BLeqwXve.js → tree-n0-Yv6Oq.js} +0 -0
  167. /package/dist/{ui-CQsw5PPh.js → ui-C4SYLrHn.js} +0 -0
  168. /package/dist/{uploader-nV12FZ_U.js → uploader-DSBUHOEF.js} +0 -0
  169. /package/dist/{utilityBar-BCRqW4jk.js → utilityBar-BgOu4S_x.js} +0 -0
  170. /package/dist/{workflow-Cou_j4_8.js → workflow-Cy4leS9X.js} +0 -0
@@ -17,7 +17,7 @@ import "./colorConverter-sleh0lAZ.js";
17
17
  import "./Typography-6jelcyoY.js";
18
18
  import "./SearchUtilities-CzmJ6hI2.js";
19
19
  import "./GroupNode-Bms_Opmb.js";
20
- import "./TreeUtilities-DVY-2md6.js";
20
+ import "./TreeUtilities-XLrXtUeL.js";
21
21
  import "./UnityIconLibrary-DnCuEr5M.js";
22
22
  import "./teleporterStore-hSgRrvso.js";
23
23
  import "./AmbientPopoverMenuItem-Dy3rQ7sp.js";
@@ -49,8 +49,8 @@ import "./NumberOperator-CDToRW8i.js";
49
49
  import "./aggregateUtils-DpHy5K9p.js";
50
50
  import "./AggregateChip-EN9-abal.js";
51
51
  import "./UtilityBarInport-BZbPE650.js";
52
- import "./UtilitySideBar-DlCvljVV.js";
53
- import "./BaseTreeMenu-DmsrGSdA.js";
54
- import { MenuPage_default } from "./MenuPage-0qeyA5lF.js";
52
+ import "./UtilitySideBar-otYqGPhu.js";
53
+ import "./BaseTreeMenu-DHEMztjA.js";
54
+ import { MenuPage_default } from "./MenuPage-DJGGAhH5.js";
55
55
 
56
56
  export { MenuPage_default as default };
@@ -1,14 +1,14 @@
1
1
  import { useUser } from "./useUser-Cn88hlN_.js";
2
2
  import { TreeViewModeEnums } from "./unitySystemEnums-BIMR5AWe.js";
3
3
  import { useShellStore } from "./shellStore-Bqwtbs_K.js";
4
- import { transformMenuPageTree } from "./TreeUtilities-DVY-2md6.js";
4
+ import { transformMenuPageTree } from "./TreeUtilities-XLrXtUeL.js";
5
5
  import { useAxiosGet } from "./useAxiosGet-VY6m2qeW.js";
6
6
  import { PageContainer } from "./PageContainer-Cvw3n3k2.js";
7
7
  import { useSetLocationState } from "./useSetLocationState-BGgFvNVh.js";
8
8
  import { APP_RIBBON_SPACE, useBuildEnvironment } from "./EnvironmentRibbon-CPm8YnJ4.js";
9
9
  import { NodeLoader } from "./NodeLoader-DRIIc46w.js";
10
- import { UtilitySideBar } from "./UtilitySideBar-DlCvljVV.js";
11
- import { BaseTreeMenu } from "./BaseTreeMenu-DmsrGSdA.js";
10
+ import { UtilitySideBar } from "./UtilitySideBar-otYqGPhu.js";
11
+ import { BaseTreeMenu } from "./BaseTreeMenu-DHEMztjA.js";
12
12
  import React, { useCallback, useEffect, useRef, useState } from "react";
13
13
  import { makeStyles } from "@material-ui/core";
14
14
  import { ConfigService } from "udp-react-stencil-component-library";
@@ -68,13 +68,15 @@ const MenuPage = (props) => {
68
68
  const user = useUser();
69
69
  const { t } = useTranslation();
70
70
  const setLocationState = useSetLocationState();
71
+ const { innerMenuOverride, mainContent } = props;
71
72
  const [menuItemsList, setMenuItemsList] = useState([]);
72
73
  const [selectedNode, setSelectedNode] = useState(null);
73
74
  const [sidebarExpanded, setSidebarExpanded] = useState(true);
74
75
  const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
75
76
  const innerMenuId = location.pathname.replace("/menupage/", "");
76
77
  const prevInnerMenuId = useRef(innerMenuId);
77
- const [{ data: innerMenu, loading: menuLoading }] = useAxiosGet(ConfigService.tenantV1ApiUrl, `menus/${innerMenuId}`, {}, !innerMenuId, false);
78
+ const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(ConfigService.tenantV1ApiUrl, `menus/${innerMenuId}`, {}, !innerMenuId, false);
79
+ const innerMenu = innerMenuOverride ?? fetchedInnerMenu;
78
80
  const { setSubHeaderActionHasChildren, setNavigationExpanded } = useShellStore();
79
81
  const [{ data: pageData, loading: pageLoading, error: pageError }] = useAxiosGet(ConfigService.tenantV1ApiUrl, `page/${selectedNode?.properties?.page?.id}`, {}, !selectedNode?.properties?.page?.id, false);
80
82
  const handleSelectedNode = useCallback((node, menuIndex) => {
@@ -196,7 +198,10 @@ const MenuPage = (props) => {
196
198
  selectedNodeParentId: selectedNode?.parentId,
197
199
  sidebarExpanded,
198
200
  treeViewMode: TreeViewModeEnums.Classic
199
- }))), menuLoading && /* @__PURE__ */ React.createElement("div", { className: classes.loader }, /* @__PURE__ */ React.createElement(NodeLoader, { loading: menuLoading }))))), /* @__PURE__ */ React.createElement("div", { className: classes.content }, selectedNode?.properties?.page?.id && /* @__PURE__ */ React.createElement(PageContainer, {
201
+ }))), menuLoading && /* @__PURE__ */ React.createElement("div", { className: classes.loader }, /* @__PURE__ */ React.createElement(NodeLoader, { loading: menuLoading }))))), /* @__PURE__ */ React.createElement("div", { className: classes.content }, mainContent ? typeof mainContent === "function" ? mainContent({
202
+ selectedNode,
203
+ menuItemsList
204
+ }) : mainContent : selectedNode?.properties?.page?.id && /* @__PURE__ */ React.createElement(PageContainer, {
200
205
  user,
201
206
  key: selectedNode?.id,
202
207
  pageData,
@@ -219,4 +224,4 @@ var MenuPage_default = MenuPage;
219
224
 
220
225
  //#endregion
221
226
  export { MenuPage_default };
222
- //# sourceMappingURL=MenuPage-0qeyA5lF.js.map
227
+ //# sourceMappingURL=MenuPage-DJGGAhH5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuPage-DJGGAhH5.js","names":[],"sources":["../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useHistory, useLocation, Prompt } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { transformMenuPageTree } from '../utilities/tree/TreeUtilities';\nimport { BaseTreeMenu } from '../treeMenu/BaseTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n APP_RIBBON_SPACE,\n useBuildEnvironment\n} from '../shell/ui/EnvironmentRibbon';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n minHeight: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n display: 'grid',\n gridTemplateAreas: ['sidebar content'].map((line) => `\"${line}\"`).join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n sidebar: {\n gridArea: 'sidebar',\n marginRight: theme.spacing(1)\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n overflowY: 'auto'\n },\n menuContent: {\n marginTop: theme.spacing(1),\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 116}px)`,\n overflowX: 'hidden'\n },\n loader: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n }\n}));\n\nconst MenuPage = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const history = useHistory();\n const location = useLocation();\n const user = useUser();\n const { t } = useTranslation();\n const setLocationState = useSetLocationState();\n // Allow callers to provide an innerMenu directly (CustomMenuPage wrapper)\n const { innerMenuOverride, mainContent } = props;\n\n const [menuItemsList, setMenuItemsList] = useState([]); // holds a list of trees\n const [selectedNode, setSelectedNode] = useState(null);\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n // Just the menuInstanceId for an inner menu\n const innerMenuId = location.pathname.replace('/menupage/', '');\n\n const prevInnerMenuId = useRef(innerMenuId);\n\n const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n {},\n !innerMenuId,\n false\n );\n\n const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n const { setSubHeaderActionHasChildren, setNavigationExpanded } =\n useShellStore();\n\n const [{ data: pageData, loading: pageLoading, error: pageError }] =\n useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${selectedNode?.properties?.page?.id}`,\n {},\n !selectedNode?.properties?.page?.id,\n false\n );\n\n const handleSelectedNode = useCallback(\n (node, menuIndex) => {\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', node.id);\n\n history.push({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n },\n [history, location]\n );\n\n const handleDropNode = useCallback(\n (sourceNode, targetNode, sourceNodeMenuIndex, targetNodeMenuIndex) => {\n // TODO: Implement if we need to for next Phase\n },\n []\n );\n\n const handleSidebarExpandClick = useCallback(() => {\n setSidebarExpanded((expanded) => !expanded);\n }, []);\n\n const findNodeById = useCallback((node, id) => {\n if (!node) return null;\n if (node.id.toString() === id) return node;\n if (node.children) {\n for (const child of node.children) {\n const found = findNodeById(child, id);\n if (found) return found;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n if (pageId && menuItemsList.length > 0) {\n // Search all root menu trees for the node\n let node = null;\n for (const tree of menuItemsList) {\n node = findNodeById(tree, pageId);\n if (node) break;\n }\n if (node && node.id !== selectedNode?.id) {\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n }\n }\n }, [location.search, menuItemsList, findNodeById, selectedNode]);\n\n useEffect(() => {\n const mainPageIdChanged = prevInnerMenuId.current !== innerMenuId;\n\n if (innerMenu) {\n const list = [];\n innerMenu.menuItemInstanceStructureViews.forEach((menuInstance) => {\n const updatedMenu = transformMenuPageTree(menuInstance);\n if (updatedMenu) {\n list.push(updatedMenu);\n }\n });\n setMenuItemsList(list);\n\n // Find the node matching the current page param\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n let nodeToSelect = null;\n\n if (pageId && list.length > 0) {\n // Try to find the node with this id\n for (const tree of list) {\n nodeToSelect = findNodeById(tree, pageId);\n if (nodeToSelect) break;\n }\n }\n\n // If we found a node, select it. If not, select the first node.\n if (nodeToSelect) {\n setSelectedNode(nodeToSelect);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n } else if (list.length > 0) {\n // No valid page param, select first node and update URL\n const firstNode = list[0];\n searchParams.set('page', firstNode.id);\n history.replace({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(firstNode);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n }\n }\n prevInnerMenuId.current = innerMenuId;\n }, [\n innerMenu,\n setNavigationExpanded,\n history,\n location,\n innerMenuId,\n findNodeById\n ]);\n\n useEffect(() => {\n setSubHeaderActionHasChildren(false);\n }, [setSubHeaderActionHasChildren]);\n\n // Setting location state label so that if this page was saved to favorites\n // we can determine the bread crumb\n useEffect(() => {\n if (innerMenu) {\n setLocationState({ label: t(innerMenu?.name) });\n }\n }, [setLocationState, t, innerMenu]);\n\n return (\n <DndProvider backend={HTML5Backend}>\n <Prompt\n when={hasUnsavedChanges}\n message='You have unsaved changes. Are you sure you want to leave this page?'\n />\n <div className={classes.root}>\n <div className={classes.sidebar}>\n <UtilitySideBar\n title={innerMenu?.name}\n isUsingChildren={true}\n resizable={true}\n removePadding={true}\n removeTopLayoutUnit={true}\n onUtilitySidebarToggleExpandClick={handleSidebarExpandClick}\n collapsedWidth={64}\n >\n <div className={classes.menuContent} key={innerMenuId}>\n {menuItemsList?.length > 0 &&\n !menuLoading &&\n menuItemsList.map((menuItems, index) => (\n <div key={menuItems.id} className={classes.nodeContainer}>\n <BaseTreeMenu\n menuItems={menuItems}\n onSelectNode={handleSelectedNode}\n onDropNode={handleDropNode}\n menuIndex={index}\n selectedNodeId={selectedNode?.id}\n selectedNodeParentId={selectedNode?.parentId}\n sidebarExpanded={sidebarExpanded}\n treeViewMode={TreeViewModeEnums.Classic}\n />\n </div>\n ))}\n {menuLoading && (\n <div className={classes.loader}>\n <NodeLoader loading={menuLoading} />\n </div>\n )}\n </div>\n </UtilitySideBar>\n </div>\n <div className={classes.content}>\n {mainContent ? (\n typeof mainContent === 'function'\n ? mainContent({ selectedNode, menuItemsList })\n : mainContent\n ) : (\n selectedNode?.properties?.page?.id && (\n <PageContainer\n user={user}\n key={selectedNode?.id}\n pageData={pageData}\n pageLoading={pageLoading}\n widgetParams={{\n pageId: pageData?.pageId,\n entityName: selectedNode?.properties?.page?.entity?.entityName,\n pbiReportCode: selectedNode?.properties?.page?.pbiReportCode,\n requiredFieldsMap:\n selectedNode?.properties?.page?.requiredFieldMapping,\n udpTagId: selectedNode?.properties?.page?.udpTagId,\n queryId: selectedNode?.properties?.page?.queryId,\n inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId,\n setHasUnsavedChanges: setHasUnsavedChanges\n }}\n disableMargins={true}\n fromMenu={true}\n />\n )\n )}\n </div>\n </div>\n </DndProvider>\n );\n};\n\nexport default MenuPage;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM;EACJ,MAAM;EACN,YAAY,EAAE,qBAAqB,gBAAgB,iBAAiB,GAAG;EACvE,SAAS;EACT,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI;EAC3E,qBAAqB;EACrB,kBAAkB;EACnB;CACD,SAAS;EACP,UAAU;EACV,aAAa,MAAM,QAAQ,EAAE;EAC9B;CACD,SAAS;EACP,UAAU;EACV,SAAS;EACT,eAAe;EACf,UAAU;EACV,QAAQ;EACR,SAAS,EAAE,qBAAqB,gBAAgB,iBAAiB,GAAG;EACpE,WAAW;EACZ;CACD,aAAa;EACX,WAAW,MAAM,QAAQ,EAAE;EAC3B,SAAS,EAAE,qBAAqB,gBAAgB,iBAAiB,IAAI;EACrE,WAAW;EACZ;CACD,QAAQ;EACN,aAAa,MAAM,QAAQ,EAAE;EAC7B,YAAY,MAAM,QAAQ,EAAE;EAC7B;CACD,gBAAgB;EACd,MAAM;EACN,SAAS;EACT,eAAe;EACf,YAAY;EACZ,gBAAgB;EACjB;CACF,EAAE;AAEH,MAAM,YAAY,UAAU;CAC1B,MAAM,WAAW,qBAAqB;CACtC,MAAM,UAAU,UAAU;EACxB,GAAG;EACH,gBAAgB,WAAW,mBAAmB;EAC/C,CAAC;CACF,MAAM,UAAU,YAAY;CAC5B,MAAM,WAAW,aAAa;CAC9B,MAAM,OAAO,SAAS;CACtB,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,mBAAmB,qBAAqB;CAE9C,MAAM,EAAE,mBAAmB,gBAAgB;CAE3C,MAAM,CAAC,eAAe,oBAAoB,SAAS,EAAE,CAAC;CACtD,MAAM,CAAC,cAAc,mBAAmB,SAAS,KAAK;CACtD,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,KAAK;CAC5D,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,MAAM;CAEjE,MAAM,cAAc,SAAS,SAAS,QAAQ,cAAc,GAAG;CAE/D,MAAM,kBAAkB,OAAO,YAAY;CAE3C,MAAM,CAAC,EAAE,MAAM,kBAAkB,SAAS,iBAAiB,YACzD,cAAc,gBACd,SAAS,eACT,EAAE,EACF,CAAC,aACD,MACD;CAED,MAAM,YAAY,qBAAqB;CAEvC,MAAM,EAAE,+BAA+B,0BACrC,eAAe;CAEjB,MAAM,CAAC,EAAE,MAAM,UAAU,SAAS,aAAa,OAAO,eACpD,YACE,cAAc,gBACd,QAAQ,cAAc,YAAY,MAAM,MACxC,EAAE,EACF,CAAC,cAAc,YAAY,MAAM,IACjC,MACD;CAEH,MAAM,qBAAqB,aACxB,MAAM,cAAc;EACnB,MAAM,eAAe,IAAI,gBAAgB,SAAS,OAAO;AACzD,eAAa,IAAI,QAAQ,KAAK,GAAG;AAEjC,UAAQ,KAAK;GACX,UAAU,SAAS;GACnB,QAAQ,aAAa,UAAU;GAChC,CAAC;AACF,kBAAgB,KAAK;AACrB,uBAAqB,MAAM;IAE7B,CAAC,SAAS,SAAS,CACpB;CAED,MAAM,iBAAiB,aACpB,YAAY,YAAY,qBAAqB,wBAAwB,IAGtE,EAAE,CACH;CAED,MAAM,2BAA2B,kBAAkB;AACjD,sBAAoB,aAAa,CAAC,SAAS;IAC1C,EAAE,CAAC;CAEN,MAAM,eAAe,aAAa,MAAM,OAAO;AAC7C,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,KAAK,GAAG,UAAU,KAAK,GAAI,QAAO;AACtC,MAAI,KAAK,SACP,MAAK,MAAM,SAAS,KAAK,UAAU;GACjC,MAAM,QAAQ,aAAa,OAAO,GAAG;AACrC,OAAI,MAAO,QAAO;;AAGtB,SAAO;IACN,EAAE,CAAC;AAEN,iBAAgB;EAEd,MAAM,SADe,IAAI,gBAAgB,SAAS,OAAO,CAC7B,IAAI,OAAO;AACvC,MAAI,UAAU,cAAc,SAAS,GAAG;GAEtC,IAAI,OAAO;AACX,QAAK,MAAM,QAAQ,eAAe;AAChC,WAAO,aAAa,MAAM,OAAO;AACjC,QAAI,KAAM;;AAEZ,OAAI,QAAQ,KAAK,OAAO,cAAc,IAAI;AACxC,oBAAgB,KAAK;AACrB,yBAAqB,MAAM;;;IAG9B;EAAC,SAAS;EAAQ;EAAe;EAAc;EAAa,CAAC;AAEhE,iBAAgB;AACY,kBAAgB;AAE1C,MAAI,WAAW;GACb,MAAM,OAAO,EAAE;AACf,aAAU,+BAA+B,SAAS,iBAAiB;IACjE,MAAM,cAAc,sBAAsB,aAAa;AACvD,QAAI,YACF,MAAK,KAAK,YAAY;KAExB;AACF,oBAAiB,KAAK;GAGtB,MAAM,eAAe,IAAI,gBAAgB,SAAS,OAAO;GACzD,MAAM,SAAS,aAAa,IAAI,OAAO;GACvC,IAAI,eAAe;AAEnB,OAAI,UAAU,KAAK,SAAS,EAE1B,MAAK,MAAM,QAAQ,MAAM;AACvB,mBAAe,aAAa,MAAM,OAAO;AACzC,QAAI,aAAc;;AAKtB,OAAI,cAAc;AAChB,oBAAgB,aAAa;AAC7B,yBAAqB,MAAM;AAC3B,0BAAsB,MAAM;cACnB,KAAK,SAAS,GAAG;IAE1B,MAAM,YAAY,KAAK;AACvB,iBAAa,IAAI,QAAQ,UAAU,GAAG;AACtC,YAAQ,QAAQ;KACd,UAAU,SAAS;KACnB,QAAQ,aAAa,UAAU;KAChC,CAAC;AACF,oBAAgB,UAAU;AAC1B,yBAAqB,MAAM;AAC3B,0BAAsB,MAAM;;;AAGhC,kBAAgB,UAAU;IACzB;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,iBAAgB;AACd,gCAA8B,MAAM;IACnC,CAAC,8BAA8B,CAAC;AAInC,iBAAgB;AACd,MAAI,UACF,kBAAiB,EAAE,OAAO,EAAE,WAAW,KAAK,EAAE,CAAC;IAEhD;EAAC;EAAkB;EAAG;EAAU,CAAC;AAEpC,QACE,oCAAC,eAAY,SAAS,gBACpB,oCAAC;EACC,MAAM;EACN,SAAQ;GACR,EACF,oCAAC,SAAI,WAAW,QAAQ,QACtB,oCAAC,SAAI,WAAW,QAAQ,WACtB,oCAAC;EACC,OAAO,WAAW;EAClB,iBAAiB;EACjB,WAAW;EACX,eAAe;EACf,qBAAqB;EACrB,mCAAmC;EACnC,gBAAgB;IAEhB,oCAAC;EAAI,WAAW,QAAQ;EAAa,KAAK;IACvC,eAAe,SAAS,KACvB,CAAC,eACD,cAAc,KAAK,WAAW,UAC5B,oCAAC;EAAI,KAAK,UAAU;EAAI,WAAW,QAAQ;IACzC,oCAAC;EACY;EACX,cAAc;EACd,YAAY;EACZ,WAAW;EACX,gBAAgB,cAAc;EAC9B,sBAAsB,cAAc;EACnB;EACjB,cAAc,kBAAkB;GAChC,CACE,CACN,EACH,eACC,oCAAC,SAAI,WAAW,QAAQ,UACtB,oCAAC,cAAW,SAAS,cAAe,CAChC,CAEJ,CACS,CACb,EACN,oCAAC,SAAI,WAAW,QAAQ,WACrB,cACC,OAAO,gBAAgB,aACnB,YAAY;EAAE;EAAc;EAAe,CAAC,GAC5C,cAEJ,cAAc,YAAY,MAAM,MAC9B,oCAAC;EACO;EACN,KAAK,cAAc;EACT;EACG;EACb,cAAc;GACZ,QAAQ,UAAU;GAClB,YAAY,cAAc,YAAY,MAAM,QAAQ;GACpD,eAAe,cAAc,YAAY,MAAM;GAC/C,mBACE,cAAc,YAAY,MAAM;GAClC,UAAU,cAAc,YAAY,MAAM;GAC1C,SAAS,cAAc,YAAY,MAAM;GACzC,eAAe,cAAc,YAAY,MAAM;GACzB;GACvB;EACD,gBAAgB;EAChB,UAAU;GACV,CAGF,CACF,CACM;;AAIlB,uBAAe"}
@@ -1,6 +1,6 @@
1
1
  import { apiMutate as apiMutate$1 } from "./useAxiosMutate-BNEb4J04.js";
2
2
  import { formatDataWithTimelineCategoryNameOrderedByDate } from "./mttFunctions-BFUthekm.js";
3
- import { IconRenderer } from "./IconRenderer-8w6JVRET.js";
3
+ import { IconRenderer } from "./IconRenderer-DiwGfDul.js";
4
4
  import { MttYearTag } from "./MttYearTag-Cb_oIUNq.js";
5
5
  import { DynamicRangeSlider, MultiDot, TimelineNode, TimelinePreloaderNode, TimelineWrapper, VisualizationDot } from "./DynamicRangeSlider-D8UVBHSs.js";
6
6
  import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -891,4 +891,4 @@ const MttMainTimeline = (props) => {
891
891
 
892
892
  //#endregion
893
893
  export { HeightAdjuster, MttMainTimeline, MttTimeline };
894
- //# sourceMappingURL=MttMainTimeline-au5xi1SZ.js.map
894
+ //# sourceMappingURL=MttMainTimeline-Bme6LQZO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MttMainTimeline-au5xi1SZ.js","names":["years","uniqueYears","plots","demoDates","unique","startDate","endDate","item","filteredByDate","dates","data","apiMutate","data"],"sources":["../src/componentSystems/multiThreadTimeline/mttMainTimeline/HeightAdjust.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttTimeline.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttMainTimeline.jsx"],"sourcesContent":["import React from 'react';\nimport { Slider, IconButton } from '@material-ui/core';\nimport { LineSpacingIcon, MinimumValueIcon } from '@fluentui/react-icons';\n\nexport const HeightAdjuster = ({ verticalAdjuster, setVerticalAdjuster }) => {\n const handleAdjusterChange = (event, newValue) => {\n setVerticalAdjuster(newValue);\n };\n const handleDecreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster - 1);\n };\n const handleIncreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster + 1);\n };\n return (\n <div style={{ display: 'flex' }}>\n <IconButton onClick={handleDecreaseClick}>\n <div style={{ fontSize: 18 }}>\n <LineSpacingIcon />\n </div>\n </IconButton>\n <Slider\n value={verticalAdjuster}\n min={0}\n max={10}\n step={0.1}\n onChange={handleAdjusterChange}\n />\n <IconButton onClick={handleIncreaseClick}>\n <div style={{ rotate: '90deg', fontSize: 24 }}>\n <MinimumValueIcon />\n </div>\n </IconButton>\n </div>\n );\n};\n","import React, {\n useState,\n useEffect,\n useRef,\n memo,\n useCallback,\n useMemo\n} from 'react';\nimport {\n makeStyles,\n Typography,\n useTheme,\n Fade,\n lighten,\n Button\n} from '@material-ui/core';\nimport { IconRenderer } from '../../../UI/templates/ui/renderers/IconRenderer';\nimport { TimelineNode } from '../ui/TimelineNode';\nimport { TimelineWrapper } from '../ui/TimelineWrapper';\nimport { MultiDot } from '../ui/MultiDot';\nimport { VisualizationDot } from '../ui/VisualizationDot';\nimport { TimelinePreloaderNode } from '../ui/TimelinePreloaderNode';\nimport 'react-range-slider-input/dist/style.css';\nimport { MttYearTag } from '../ui/MttYearTag';\nimport { DynamicRangeSlider } from '../ui/DynamicRangeSlider';\nimport { HeightAdjuster } from './HeightAdjust';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n horizontalDash: {\n backgroundImage:\n 'linear-gradient(to right, grey 33%, rgba(255,255,255,0) 0%)',\n backgroundPosition: 'bottom',\n backgroundSize: '16px 1px',\n backgroundRepeat: 'repeat-x'\n },\n slider: {\n height: 600\n },\n categoryBar: {\n background: lighten(theme.palette.common.black, 0.5),\n color: theme.palette.common.white,\n display: 'flex',\n alignItems: 'center'\n },\n categoryBarPlacement: {\n position: 'absolute',\n left: 0\n },\n categoryLabel: {\n transform: 'rotate(90deg)',\n width: 28\n },\n button: {\n '&:hover': {\n textDecoration: 'line-through'\n }\n }\n}));\n// eslint-disable-next-line react/display-name\nexport const MttTimeline = memo((props) => {\n const [showAllDetails] = useState(false);\n const [startRange, setStartRange] = useState(10);\n const [endRange, setEndRange] = useState();\n const [startDate, setStartDate] = useState();\n const [endDate, setEndDate] = useState();\n const [displayRangeFilter, setDisplayRangeFilter] = useState(true);\n const [threadHeight, setThreadHeight] = useState(92);\n const [recordLength, setRecordLength] = useState();\n const [containerWidth, setContainerWidth] = useState();\n const [showMonthMarkers, setShowMonthMarkers] = useState(false);\n const [showYearMarkers, setShowYearMarkers] = useState(false);\n const [verticalAdjuster, setVerticalAdjuster] = useState(4.5);\n const [uniqueTimelines, setUniqueTimelines] = useState(0);\n\n const classes = useStyles(props);\n const { data, loading } = props;\n const theme = useTheme();\n\n const visualizationYScale = 40;\n\n useEffect(() => {\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)].sort();\n\n data && setStartDate(uniqueYears[0] + '-01-01');\n data && setEndDate(uniqueYears[uniqueYears.length - 1] + '-12-31');\n }, [data]);\n\n const mainContainer = useRef(null);\n\n useEffect(() => {\n setContainerWidth(\n mainContainer.current ? mainContainer.current.offsetWidth : 0\n );\n }, []);\n\n let movement_timer = null;\n const RESET_TIMEOUT = 10;\n\n const set_dimensions = () => {\n if (mainContainer.current) {\n setContainerWidth(mainContainer.current.offsetWidth);\n }\n };\n\n window.addEventListener('resize', () => {\n clearInterval(movement_timer);\n movement_timer = setTimeout(set_dimensions, RESET_TIMEOUT);\n });\n\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)];\n\n let demoApiConfigDate = [];\n\n uniqueYears.map((item) => {\n demoApiConfigDate.push('01/01/' + item);\n });\n\n let yearsInRange = [];\n\n yearsInRange.push(Number(demoApiConfigDate[1]?.slice(-4)) + 1);\n\n let yearsToDisplay = [];\n\n yearsInRange.map((item) => {\n yearsToDisplay.push('01/01/' + item);\n });\n\n demoApiConfigDate.map((item) => {\n yearsToDisplay.unshift(item);\n });\n\n const yearRange = yearsToDisplay.sort();\n\n // could change plotting on range change by switching data with filteredByDate\n\n const getSingleGroupedData = useCallback(() => {\n const flatOne = data && data.map((item) => item.dates).flat();\n const flatTwo =\n data &&\n flatOne &&\n flatOne.map((item) => {\n return item.details;\n });\n return flatTwo;\n }, [data]);\n\n // Sort date\n\n const sortDate =\n data &&\n getSingleGroupedData().sort(function (a, b) {\n const c = new Date(a.date);\n const d = new Date(b.date);\n return c - d;\n });\n\n // Convert date format\n\n let dataConvertedDate =\n data &&\n sortDate.map((item) => ({\n ...item,\n date: new Date(item.date).toLocaleDateString()\n }));\n\n function formatDate(date) {\n return new Date(date).toLocaleDateString('en-US');\n }\n\n const getPositionFromDate = useCallback(\n (initDate) => {\n const start = new Date(yearRange[1]);\n const end = new Date(yearRange[2]);\n\n const rangeStart = [initDate];\n\n const dateList = [new Date(start).toLocaleDateString()];\n\n let loop = new Date(start);\n while (loop <= end) {\n const newDate = loop.setDate(loop.getDate() + 1);\n loop = new Date(newDate);\n dateList.push(loop.toLocaleDateString());\n }\n\n const mappedToObjects = dateList.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= dateList.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ date }) => rangeStart.includes(date))\n .map(({ plots }) => plots)\n .toString();\n return startDate;\n },\n [yearRange]\n );\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n useEffect(() => {\n setEndRange(\n unique && Number(getPositionFromDate(unique.slice(-1).pop())) + 66\n );\n }, []);\n\n const getDatesFromRangeSelectionCompact = useCallback(\n (left, right) => {\n const rangeStart = [Math.round(left)];\n const rangeEnd = [Math.round(right)];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n const getNextDay = () => {\n const dateString = unique[unique.length - 1];\n const date = new Date(dateString);\n date.setDate(date.getDate() + 1);\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const year = date.getFullYear();\n return `${month}/${day}/${year}`;\n };\n\n const nextDay = getNextDay();\n unique.push(nextDay);\n\n const mappedToObjects = unique.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i * 10);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ plots }) => rangeStart.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n const endDate = mergePlots\n .filter(({ plots }) => rangeEnd.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n setStartDate(startDate);\n setEndDate(endDate);\n },\n [dataConvertedDate]\n );\n\n const getRangeValues = useCallback((rangeValue) => {\n const left = rangeValue[0];\n const right = rangeValue[1];\n setStartRange(Math.round(left));\n setEndRange(Math.round(right));\n }, []);\n\n const processRangeValues = () => {\n endRange && getDatesFromRangeSelectionCompact(startRange, endRange);\n };\n\n // Plot YV\n const plotYV = useCallback(\n (item) => {\n const plotDate = [item];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n data &&\n data.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res = mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order = res.map((item) => {\n return item;\n });\n\n const plot = order;\n\n return plot;\n },\n [data, dataConvertedDate]\n );\n\n function compareDate(date1, date2, comparison) {\n const date1Month = Number(date1.split('/')[0]);\n const date2Month = Number(date2.split('/')[0]);\n const date1Day = Number(date1.split('/')[1]);\n const date2Day = Number(date2.split('/')[1]);\n const date1Year = Number(date1.split('/')[2]);\n const date2Year = Number(date2.split('/')[2]);\n if (comparison === '>') {\n if (date1Year > date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month > date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day > date2Day) {\n return true;\n }\n }\n }\n return false;\n } else {\n if (date1Year < date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month < date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day < date2Day) {\n return true;\n }\n }\n }\n return false;\n }\n }\n\n function minnifyTimelineObject(object) {\n let cleanObject = [];\n let notUsed = false;\n object.forEach((obj, i) => {\n if (cleanObject.length === 0) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n } else {\n notUsed = true;\n cleanObject.forEach((clnObj) => {\n if (\n obj.timeline === clnObj.timeline &&\n obj.subThread === clnObj.subThread\n ) {\n if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.firstDate),\n '<'\n )\n ) {\n clnObj.firstDate = formatDate(obj.date);\n } else if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.lastDate),\n '>'\n )\n ) {\n clnObj.lastDate = formatDate(obj.date);\n }\n notUsed = false;\n }\n });\n }\n if (notUsed) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n }\n });\n return cleanObject;\n }\n\n let dates = [];\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n dates.push(item.date);\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n const startDateSet = useMemo(() => new Date(startDate), [startDate]);\n const endDateSet = useMemo(() => new Date(endDate), [endDate]);\n\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date < endDateSet;\n });\n\n const buildCategoryLines = useCallback(() => {\n const xLine =\n data &&\n filteredByDate?.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n return unique;\n }, [filteredByDate, data]);\n\n const minnifiedResult = data && minnifyTimelineObject(filteredByDate);\n\n const detailedComponentSize = 130;\n const summaryComponentSize = 73;\n //const overviewComponentSize = 50;\n\n //const detailBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const summaryBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const overviewBreakpoint = Math.round(containerWidth / summaryComponentSize);\n\n useEffect(() => {\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date <= endDateSet;\n });\n\n setRecordLength(filteredByDate?.length);\n }, [data, endDateSet, startDateSet]);\n\n const checkLinearLength = [];\n\n filteredByDate?.forEach((item) => {\n checkLinearLength.push(item.date);\n });\n\n let uniqueNodeScaleAmount = [...new Set(checkLinearLength)].length;\n\n const getScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getXScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getYScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 130;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const topMargin = uniqueNodeScaleAmount >= summaryBreakpoint ? 48 : 0;\n\n // Plot XV\n const plotXV = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n data.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const sortedRowIndex = rowIndex.sort((a, b) =>\n a.thread > b.thread ? 1 : -1\n );\n\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n const xplot = results[0] && results[0].sortedRowIndex * 50;\n return xplot - topMargin;\n },\n [data, topMargin]\n );\n\n const plotY = useCallback(\n (item) => {\n const plotDate = [item];\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n dataConvertedDate &&\n filteredByDate.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res =\n mergePlots &&\n mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order =\n mergePlots &&\n res.map((item) => {\n return item;\n });\n\n const plot = order * getYScale();\n\n return plot - getYScale() + (getYScale() === 130 ? 32 : 8);\n },\n [dataConvertedDate, getYScale, filteredByDate]\n );\n\n const plotX = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n // const sortedRowIndex = rowIndex.sort((a, b) =>\n // a.thread > b.thread ? 1 : -1\n // );\n\n const orderByThread = (unordered) => {\n let maxElement = 0;\n unordered.forEach((value) => {\n if (value.thread.split('.')[0] > maxElement) {\n maxElement = value.thread.split('.')[0];\n }\n });\n let sortArray = [...Array(+maxElement)].map((e) => (e = []));\n unordered.forEach((value) => {\n sortArray[+value.thread.split('.')[0] - 1].push(value);\n });\n sortArray.forEach((value) => {\n value.sort((a, b) => {\n return +a.thread.split('.')[1] - +b.thread.split('.')[1];\n });\n });\n return sortArray.flat();\n };\n\n const sortedRowIndex = orderByThread(rowIndex);\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n const xplot = results[0] && results[0].sortedRowIndex * getXScale();\n return xplot + topMargin;\n },\n [data, getXScale, topMargin, filteredByDate]\n );\n\n // Map to named months\n const MONTHS = {\n 1: 'Jan',\n 2: 'Feb',\n 3: 'March',\n 4: 'Apr',\n 5: 'May',\n 6: 'June',\n 7: 'July',\n 8: 'Aug',\n 9: 'Sept',\n 10: 'Oct',\n 11: 'Nov',\n 12: 'Dec'\n };\n\n const convertNumberToMonths = (months) => {\n // Convert months to order\n const orderedMonths = months;\n orderedMonths.sort(function (a, b) {\n return a - b;\n });\n\n // Map to named months\n const output = orderedMonths.map(function (i) {\n return MONTHS[i];\n });\n\n return output;\n };\n\n function lastDayOfMonthArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n const returnObject = dates.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n useEffect(() => {\n const timelineSet = new Set();\n data &&\n data.forEach((item) => {\n const timelineKey = `${item.timeline}-${item.subThread}`;\n timelineSet.add(timelineKey);\n });\n setUniqueTimelines(timelineSet.size);\n }, [data]);\n\n function lastDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '00/00/00';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay > Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '00/00/00') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(a) - new Date(b));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n function firstDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(b) - new Date(a));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n dateArr.sort((a, b) => new Date(a) - new Date(b));\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n const Today = (object) => {\n const dateList = [];\n object &&\n object.map((item) => {\n dateList.push(item.date);\n });\n\n let unique = [...new Set(dateList)];\n\n const today = new Date().toLocaleDateString('en-US');\n\n //const todaysDate = unique.filter(date => date.includes('7/29/2022'));\n const todaysDate = unique.filter((date) => date.includes(today));\n\n return todaysDate;\n };\n\n const getInverseProportionalNumber = (inputNumber) => {\n const reciprocal = 1 / inputNumber;\n const wholeNumber = Math.round(reciprocal * 400);\n return wholeNumber;\n };\n\n const visualizationSmall = 10;\n const visualizationLarge = 30;\n const rangeHandles = 18;\n const adjusterHeight = 100;\n\n // Plot category lines\n const GuideLinesShort = () => {\n const xLines = buildCategoryLines().map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n zIndex: 0,\n top: 186 * index\n }}\n >\n <div\n className={classes.horizontalDash}\n style={{ height: threadHeight }}\n />\n <div\n style={{\n //width: 'calc(100vw * 1.7)',\n width:\n // dataConvertedDate &&\n // mergePlots.slice(-1).pop().plots * nodeWidth,\n filteredByDate &&\n uniqueNodeScaleAmount * getXScale() + getXScale(),\n height: threadHeight,\n borderBottom: `${theme.palette.divider} 1px solid`\n }}\n />\n </div>\n );\n });\n\n return xLines;\n };\n\n const preloadArray = [...Array(7).keys()];\n\n //Format visualization hover card\n const VisualizationCard = ({ title, data, date, user }) => {\n return (\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n const VisualizationCardMulti = ({ title, data, date, user }) => {\n return (\n <div\n style={{\n width: 130,\n borderRadius: 4,\n marginBottom: 16,\n padding: 8\n }}\n >\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n // Plot Legend\n\n const categoryList = [];\n data &&\n filteredByDate.map((item) => {\n categoryList.push({\n label: item.timelineCategoryName,\n color: item.color,\n timeline: item.timeline\n });\n });\n\n const uniqueCategoryLegend = [\n ...new Map(categoryList.map((item) => [item['label'], item])).values()\n ];\n\n const uniqueCategoryLegendSorted = uniqueCategoryLegend.sort((a, b) =>\n a.timeline > b.timeline ? 1 : -1\n );\n\n const LegendDot = ({ background }) => {\n return (\n <div\n style={{\n width: 30,\n height: 15,\n background: lighten(background, 0.5),\n borderRadius: theme.spacing(6)\n }}\n />\n );\n };\n\n const LegendItem = ({ label, color }) => {\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center'\n }}\n >\n <LegendDot background={'#' + color} />\n <div style={{ marginLeft: theme.spacing(1) }}>\n <Typography variant='caption'>{label} </Typography>\n </div>\n </div>\n );\n };\n\n const legend =\n data &&\n uniqueCategoryLegendSorted.map((item, index) => {\n return <LegendItem key={index} color={item.color} label={item.label} />;\n });\n\n // Plot category bar\n const plotCategoryBar = (timelineNumber, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n\n const uniqueSorted = unique.sort(function (a, b) {\n return a.localeCompare(b);\n });\n\n const rowIndex = uniqueSorted.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const concatIndex = timelineNumber + '.' + subThread;\n\n const result = rowIndex.map((v, index) => ({ ...v, rowIndex: index + 1 }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n //const xplot = results[0].rowIndex * threadHeight;\n const xplot =\n (results[0] && results[0].rowIndex * getXScale()) - getXScale();\n return xplot;\n\n // const plot = (timelineNumber * threadHeight - threadHeight) * subThread;\n // return plot;\n };\n\n const CategoryBar = ({ label, height }) => {\n return (\n <div className={classes.categoryBar} style={{ height: height }}>\n <div className={classes.categoryLabel}>\n <Typography variant='subtitle2'> {label} </Typography>\n </div>\n </div>\n );\n };\n\n const DateMarkers = (\n <div>\n {filteredByDate &&\n showYearMarkers &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n firstDayOfYearArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag year>{item.date.split('/')[2]}</MttYearTag>\n </div>\n );\n })}\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n showMonthMarkers &&\n lastDayOfMonthArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag>\n {convertNumberToMonths([item.date.split('/')[0]])}\n </MttYearTag>\n </div>\n );\n })}\n\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n Today(filteredByDate).map((item) => {\n return (\n <div\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item)\n }}\n >\n <MttYearTag year today>\n <Typography variant='caption'> TODAY </Typography>\n </MttYearTag>\n </div>\n );\n })}\n </div>\n );\n\n // timeline render\n return (\n <div>\n <div\n ref={mainContainer}\n style={{\n position: 'relative',\n // top: 45,\n height: '75vh',\n overflow: 'scroll'\n }}\n >\n {/* CategoryBar */}\n {!loading && (\n <>\n <div style={{ zIndex: 99999999, position: 'absolute', bottom: 0 }}>\n {DateMarkers}\n </div>\n\n {data &&\n data &&\n uniqueNodeScaleAmount < summaryBreakpoint &&\n filteredByDate.map((item, index) => {\n return (\n <div\n key={index}\n className={classes.categoryBarPlacement}\n style={{\n top:\n plotCategoryBar(\n Number(item.timeline),\n Number(item.subThread)\n ) + 0\n }}\n >\n <CategoryBar\n key={item.id}\n label={item.timelineCategoryName}\n height={data && getXScale()}\n />\n </div>\n );\n })}\n\n {data &&\n filteredByDate.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ),\n top: plotX(item.timeline, item.subThread),\n //top: 0,\n zIndex:\n 999999 -\n plotY(new Date(item.date).toLocaleDateString('en-US')) -\n item.subThread\n //zIndex: 9999999 - index * index,\n }}\n >\n <TimelineNode\n icon={\n <IconRenderer\n noBorder\n value={{\n color: { hex: '#' + item.color },\n name: item.iconID\n }}\n />\n }\n dot={data && uniqueNodeScaleAmount <= overviewBreakpoint}\n dotColor={'#' + item.color}\n data={item.dates}\n details={\n data && uniqueNodeScaleAmount < summaryBreakpoint\n }\n height={\n (data &&\n uniqueNodeScaleAmount <= summaryBreakpoint &&\n 183) ||\n (data &&\n uniqueNodeScaleAmount <= overviewBreakpoint &&\n 30)\n }\n width={\n data && uniqueNodeScaleAmount < summaryBreakpoint && 130\n }\n boxStyle\n show={showAllDetails}\n iconColor={'#' + item.color}\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) + 4,\n top: plotX(item.timeline, item.subThread),\n zIndex:\n 999999 -\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) -\n item.timeline\n }}\n >\n <MultiDot map={item.dates} number={item.dates.length} />\n </div>\n </div>\n );\n })}\n\n <Fade in={data && uniqueNodeScaleAmount >= summaryBreakpoint}>\n <div>\n {data &&\n minnifiedResult.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n //zIndex: 0,\n left: plotY(item.firstDate) + 2,\n top:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 14 + plotX(item.timeline, item.subThread)\n : 4 + plotX(item.timeline, item.subThread)\n }}\n >\n <TimelineWrapper\n timeline={item.timeline}\n style={{\n width:\n plotY(item.lastDate) - plotY(item.firstDate) + 45,\n height:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 20\n : 40,\n backgroundColor: lighten('#' + item.color, 0.7)\n }}\n />\n </div>\n );\n })}\n </div>\n </Fade>\n {/* <Fade in={data && filteredByDate.length < mttBreakpointMd}> */}\n {data && uniqueNodeScaleAmount < summaryBreakpoint && (\n <div>\n <GuideLinesShort />\n </div>\n )}\n </>\n )}\n {/* </Fade> */}\n </div>\n\n {/* lower Section //////////////////////////////////////////////////////////////////////////////////////////////// */}\n <div style={{ width: 250 }}>\n <HeightAdjuster\n verticalAdjuster={verticalAdjuster}\n setVerticalAdjuster={setVerticalAdjuster}\n />\n </div>\n\n {!loading && (\n <div\n style={{\n position: 'relative',\n borderTop: '1px solid lightgrey',\n overflow: 'scroll'\n }}\n >\n <div>\n {data && displayRangeFilter && (\n <div\n style={{\n overflow: 'scroll'\n }}\n >\n <div key={data}>\n <DynamicRangeSlider\n id='range-slider'\n step={10}\n threads={10 * uniqueTimelines}\n width={containerWidth - rangeHandles}\n margin={\n topMargin +\n getInverseProportionalNumber(verticalAdjuster) * 3\n }\n defaultValue={[10, unique.length * 10]}\n max={unique.length * 10}\n min={10}\n onThumbDragEnd={processRangeValues}\n onRangeDragEnd={processRangeValues}\n onInput={(e) => getRangeValues(e)}\n />\n </div>\n </div>\n )}\n\n <div>\n {data &&\n data.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n type={item.dates[0].details.shortDescription}\n hover={\n <VisualizationCard\n title={item.dates[0].details.shortDescription}\n data={item.dates[0].details.data1}\n date={item.dates[0].details.date}\n //user={item.dates[0].details.data2}\n />\n }\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n hover={\n <div style={{ color: 'black' }}>\n {item.dates.map((item) => {\n return (\n <VisualizationCardMulti\n title={item.details.description}\n date={item.details.date}\n key={item.id}\n />\n );\n })}\n </div>\n }\n multi\n >\n {item.dates.length}\n </VisualizationDot>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n )}\n\n {/* Preloading */}\n <div style={{ position: 'absolute', top: 0, left: 0, zIndex: 10 }}>\n {loading &&\n preloadArray.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: Math.floor(Math.random() * 11) * 60 + 40,\n top: (index + 1) * 80\n }}\n >\n <TimelinePreloaderNode longView loading={loading} />\n </div>\n );\n })}\n </div>\n {/* Preloading End */}\n\n {/* Legend */}\n {uniqueNodeScaleAmount >= summaryBreakpoint && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4\n }}\n >\n <div\n style={{\n display: 'flex',\n padding: theme.spacing(1),\n gap: theme.spacing(3)\n }}\n >\n {legend}\n\n <Button\n className={classes.button}\n onClick={() => setShowMonthMarkers(!showMonthMarkers)}\n >\n <span\n style={{ textDecoration: !showMonthMarkers && 'line-through' }}\n >\n M\n </span>\n </Button>\n <Button\n className={classes.button}\n onClick={() => setShowYearMarkers(!showYearMarkers)}\n >\n <span\n style={{ textDecoration: !showYearMarkers && 'line-through' }}\n >\n Y\n </span>\n </Button>\n </div>\n </div>\n )}\n {/* Breakpoint testing */}\n {/* <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4,\n }}\n >\n <Typography variant=\"caption\">\n Data nodes:\n <span style={{ fontWeight: 700 }}>\n {filteredByDate.length} ::::::::::\n </span>\n <span style={{ fontWeight: 700 }}>\n {uniqueNodeScaleAmount} ::::::::::\n </span>\n Summary Breakpoint:\n <span style={{ fontWeight: 700 }}>\n {summaryBreakpoint} ::::::::::\n </span>\n Overview Breakpoint:\n <span style={{ fontWeight: 700 }}>{overviewBreakpoint} ::::::::</span>\n Container Width:\n <span style={{ fontWeight: 700 }}>{containerWidth} :::::::::</span>\n Summary Width: Circle\n <span style={{ fontWeight: 700 }}>\n {summaryComponentSize} ::::::::\n </span>\n Overview width: Dot\n <span style={{ fontWeight: 700 }}>\n {overviewComponentSize} :::::::\n </span>\n </Typography>\n </div> */}\n </div>\n );\n});\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { formatDataWithTimelineCategoryNameOrderedByDate } from '../functions/mttFunctions';\nimport { MttTimeline } from './MttTimeline';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const MttMainTimeline = (props) => {\n const { timelineApiMethodInstanceId, params = {} } = props;\n const [timelineThreads, setTimelineThreads] = useState(null);\n const [data, setData] = useState();\n const [loading, setLoading] = useState(false);\n\n const executeQueryInstance = useCallback(\n async (apiMethodInstanceId, data = {}) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}`,\n {\n method: 'post'\n },\n { data: data }\n ),\n []\n );\n\n useEffect(() => {\n const fetchTimelineThreads = async () => {\n const timelineResponse = await executeQueryInstance(\n timelineApiMethodInstanceId\n ).catch((e) => e);\n\n if (timelineResponse?.status === 200) {\n setTimelineThreads(timelineResponse?.data?.pageList || []);\n }\n };\n fetchTimelineThreads();\n }, [executeQueryInstance, timelineApiMethodInstanceId]);\n\n useEffect(() => {\n const fetchThreadEvents = async () => {\n if (!timelineThreads) {\n return null;\n }\n setLoading(true);\n const promises = [];\n const threadList = [];\n timelineThreads.forEach((thread) => {\n promises.push(executeQueryInstance(thread.queryID, { ...params }));\n });\n await Promise.all(\n promises.map((p) =>\n p.catch((e) => {\n setLoading(false);\n return e;\n })\n )\n ).then((responses) => {\n responses.forEach((response, index) => {\n if (response.status === 200) {\n const timelineThread = timelineThreads[index];\n if (response?.data?.pageList) {\n response.data.pageList.forEach(\n (evt) => (evt.threadId = timelineThread.name)\n );\n const thread = {\n ...timelineThread,\n events: response.data.pageList\n };\n threadList.push(thread);\n }\n }\n });\n setLoading(false);\n });\n setData(formatDataWithTimelineCategoryNameOrderedByDate(threadList));\n };\n fetchThreadEvents();\n }, [executeQueryInstance, timelineThreads, params]);\n\n return <MttTimeline data={data} loading={loading} />;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MttMainTimeline-Bme6LQZO.js","names":["years","uniqueYears","plots","demoDates","unique","startDate","endDate","item","filteredByDate","dates","data","apiMutate","data"],"sources":["../src/componentSystems/multiThreadTimeline/mttMainTimeline/HeightAdjust.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttTimeline.jsx","../src/componentSystems/multiThreadTimeline/mttMainTimeline/MttMainTimeline.jsx"],"sourcesContent":["import React from 'react';\nimport { Slider, IconButton } from '@material-ui/core';\nimport { LineSpacingIcon, MinimumValueIcon } from '@fluentui/react-icons';\n\nexport const HeightAdjuster = ({ verticalAdjuster, setVerticalAdjuster }) => {\n const handleAdjusterChange = (event, newValue) => {\n setVerticalAdjuster(newValue);\n };\n const handleDecreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster - 1);\n };\n const handleIncreaseClick = () => {\n setVerticalAdjuster(verticalAdjuster + 1);\n };\n return (\n <div style={{ display: 'flex' }}>\n <IconButton onClick={handleDecreaseClick}>\n <div style={{ fontSize: 18 }}>\n <LineSpacingIcon />\n </div>\n </IconButton>\n <Slider\n value={verticalAdjuster}\n min={0}\n max={10}\n step={0.1}\n onChange={handleAdjusterChange}\n />\n <IconButton onClick={handleIncreaseClick}>\n <div style={{ rotate: '90deg', fontSize: 24 }}>\n <MinimumValueIcon />\n </div>\n </IconButton>\n </div>\n );\n};\n","import React, {\n useState,\n useEffect,\n useRef,\n memo,\n useCallback,\n useMemo\n} from 'react';\nimport {\n makeStyles,\n Typography,\n useTheme,\n Fade,\n lighten,\n Button\n} from '@material-ui/core';\nimport { IconRenderer } from '../../../UI/templates/ui/renderers/IconRenderer';\nimport { TimelineNode } from '../ui/TimelineNode';\nimport { TimelineWrapper } from '../ui/TimelineWrapper';\nimport { MultiDot } from '../ui/MultiDot';\nimport { VisualizationDot } from '../ui/VisualizationDot';\nimport { TimelinePreloaderNode } from '../ui/TimelinePreloaderNode';\nimport 'react-range-slider-input/dist/style.css';\nimport { MttYearTag } from '../ui/MttYearTag';\nimport { DynamicRangeSlider } from '../ui/DynamicRangeSlider';\nimport { HeightAdjuster } from './HeightAdjust';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n horizontalDash: {\n backgroundImage:\n 'linear-gradient(to right, grey 33%, rgba(255,255,255,0) 0%)',\n backgroundPosition: 'bottom',\n backgroundSize: '16px 1px',\n backgroundRepeat: 'repeat-x'\n },\n slider: {\n height: 600\n },\n categoryBar: {\n background: lighten(theme.palette.common.black, 0.5),\n color: theme.palette.common.white,\n display: 'flex',\n alignItems: 'center'\n },\n categoryBarPlacement: {\n position: 'absolute',\n left: 0\n },\n categoryLabel: {\n transform: 'rotate(90deg)',\n width: 28\n },\n button: {\n '&:hover': {\n textDecoration: 'line-through'\n }\n }\n}));\n// eslint-disable-next-line react/display-name\nexport const MttTimeline = memo((props) => {\n const [showAllDetails] = useState(false);\n const [startRange, setStartRange] = useState(10);\n const [endRange, setEndRange] = useState();\n const [startDate, setStartDate] = useState();\n const [endDate, setEndDate] = useState();\n const [displayRangeFilter, setDisplayRangeFilter] = useState(true);\n const [threadHeight, setThreadHeight] = useState(92);\n const [recordLength, setRecordLength] = useState();\n const [containerWidth, setContainerWidth] = useState();\n const [showMonthMarkers, setShowMonthMarkers] = useState(false);\n const [showYearMarkers, setShowYearMarkers] = useState(false);\n const [verticalAdjuster, setVerticalAdjuster] = useState(4.5);\n const [uniqueTimelines, setUniqueTimelines] = useState(0);\n\n const classes = useStyles(props);\n const { data, loading } = props;\n const theme = useTheme();\n\n const visualizationYScale = 40;\n\n useEffect(() => {\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)].sort();\n\n data && setStartDate(uniqueYears[0] + '-01-01');\n data && setEndDate(uniqueYears[uniqueYears.length - 1] + '-12-31');\n }, [data]);\n\n const mainContainer = useRef(null);\n\n useEffect(() => {\n setContainerWidth(\n mainContainer.current ? mainContainer.current.offsetWidth : 0\n );\n }, []);\n\n let movement_timer = null;\n const RESET_TIMEOUT = 10;\n\n const set_dimensions = () => {\n if (mainContainer.current) {\n setContainerWidth(mainContainer.current.offsetWidth);\n }\n };\n\n window.addEventListener('resize', () => {\n clearInterval(movement_timer);\n movement_timer = setTimeout(set_dimensions, RESET_TIMEOUT);\n });\n\n const years = [];\n data &&\n data.map((item) => {\n years.push(item.date.slice(-4));\n });\n\n //unique years\n const uniqueYears = [...new Set(years)];\n\n let demoApiConfigDate = [];\n\n uniqueYears.map((item) => {\n demoApiConfigDate.push('01/01/' + item);\n });\n\n let yearsInRange = [];\n\n yearsInRange.push(Number(demoApiConfigDate[1]?.slice(-4)) + 1);\n\n let yearsToDisplay = [];\n\n yearsInRange.map((item) => {\n yearsToDisplay.push('01/01/' + item);\n });\n\n demoApiConfigDate.map((item) => {\n yearsToDisplay.unshift(item);\n });\n\n const yearRange = yearsToDisplay.sort();\n\n // could change plotting on range change by switching data with filteredByDate\n\n const getSingleGroupedData = useCallback(() => {\n const flatOne = data && data.map((item) => item.dates).flat();\n const flatTwo =\n data &&\n flatOne &&\n flatOne.map((item) => {\n return item.details;\n });\n return flatTwo;\n }, [data]);\n\n // Sort date\n\n const sortDate =\n data &&\n getSingleGroupedData().sort(function (a, b) {\n const c = new Date(a.date);\n const d = new Date(b.date);\n return c - d;\n });\n\n // Convert date format\n\n let dataConvertedDate =\n data &&\n sortDate.map((item) => ({\n ...item,\n date: new Date(item.date).toLocaleDateString()\n }));\n\n function formatDate(date) {\n return new Date(date).toLocaleDateString('en-US');\n }\n\n const getPositionFromDate = useCallback(\n (initDate) => {\n const start = new Date(yearRange[1]);\n const end = new Date(yearRange[2]);\n\n const rangeStart = [initDate];\n\n const dateList = [new Date(start).toLocaleDateString()];\n\n let loop = new Date(start);\n while (loop <= end) {\n const newDate = loop.setDate(loop.getDate() + 1);\n loop = new Date(newDate);\n dateList.push(loop.toLocaleDateString());\n }\n\n const mappedToObjects = dateList.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= dateList.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ date }) => rangeStart.includes(date))\n .map(({ plots }) => plots)\n .toString();\n return startDate;\n },\n [yearRange]\n );\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n useEffect(() => {\n setEndRange(\n unique && Number(getPositionFromDate(unique.slice(-1).pop())) + 66\n );\n }, []);\n\n const getDatesFromRangeSelectionCompact = useCallback(\n (left, right) => {\n const rangeStart = [Math.round(left)];\n const rangeEnd = [Math.round(right)];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let unique = [...new Set(demoDates)];\n\n const getNextDay = () => {\n const dateString = unique[unique.length - 1];\n const date = new Date(dateString);\n date.setDate(date.getDate() + 1);\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const year = date.getFullYear();\n return `${month}/${day}/${year}`;\n };\n\n const nextDay = getNextDay();\n unique.push(nextDay);\n\n const mappedToObjects = unique.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i * 10);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const startDate = mergePlots\n .filter(({ plots }) => rangeStart.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n const endDate = mergePlots\n .filter(({ plots }) => rangeEnd.includes(plots))\n .map(({ date }) => date)\n .toString();\n\n setStartDate(startDate);\n setEndDate(endDate);\n },\n [dataConvertedDate]\n );\n\n const getRangeValues = useCallback((rangeValue) => {\n const left = rangeValue[0];\n const right = rangeValue[1];\n setStartRange(Math.round(left));\n setEndRange(Math.round(right));\n }, []);\n\n const processRangeValues = () => {\n endRange && getDatesFromRangeSelectionCompact(startRange, endRange);\n };\n\n // Plot YV\n const plotYV = useCallback(\n (item) => {\n const plotDate = [item];\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n data &&\n data.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res = mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order = res.map((item) => {\n return item;\n });\n\n const plot = order;\n\n return plot;\n },\n [data, dataConvertedDate]\n );\n\n function compareDate(date1, date2, comparison) {\n const date1Month = Number(date1.split('/')[0]);\n const date2Month = Number(date2.split('/')[0]);\n const date1Day = Number(date1.split('/')[1]);\n const date2Day = Number(date2.split('/')[1]);\n const date1Year = Number(date1.split('/')[2]);\n const date2Year = Number(date2.split('/')[2]);\n if (comparison === '>') {\n if (date1Year > date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month > date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day > date2Day) {\n return true;\n }\n }\n }\n return false;\n } else {\n if (date1Year < date2Year) {\n return true;\n } else if (date1Year === date2Year) {\n if (date1Month < date2Month) {\n return true;\n } else if (date1Month === date2Month) {\n if (date1Day < date2Day) {\n return true;\n }\n }\n }\n return false;\n }\n }\n\n function minnifyTimelineObject(object) {\n let cleanObject = [];\n let notUsed = false;\n object.forEach((obj, i) => {\n if (cleanObject.length === 0) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n } else {\n notUsed = true;\n cleanObject.forEach((clnObj) => {\n if (\n obj.timeline === clnObj.timeline &&\n obj.subThread === clnObj.subThread\n ) {\n if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.firstDate),\n '<'\n )\n ) {\n clnObj.firstDate = formatDate(obj.date);\n } else if (\n compareDate(\n formatDate(obj.date),\n formatDate(clnObj.lastDate),\n '>'\n )\n ) {\n clnObj.lastDate = formatDate(obj.date);\n }\n notUsed = false;\n }\n });\n }\n if (notUsed) {\n cleanObject.push({\n timeline: obj.timeline,\n subThread: obj.subThread,\n firstDate: formatDate(obj.date),\n lastDate: formatDate(obj.date),\n color: obj.color,\n icon: obj.iconID\n });\n }\n });\n return cleanObject;\n }\n\n let dates = [];\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n dates.push(item.date);\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n const startDateSet = useMemo(() => new Date(startDate), [startDate]);\n const endDateSet = useMemo(() => new Date(endDate), [endDate]);\n\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date < endDateSet;\n });\n\n const buildCategoryLines = useCallback(() => {\n const xLine =\n data &&\n filteredByDate?.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n return unique;\n }, [filteredByDate, data]);\n\n const minnifiedResult = data && minnifyTimelineObject(filteredByDate);\n\n const detailedComponentSize = 130;\n const summaryComponentSize = 73;\n //const overviewComponentSize = 50;\n\n //const detailBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const summaryBreakpoint = Math.round(containerWidth / detailedComponentSize);\n const overviewBreakpoint = Math.round(containerWidth / summaryComponentSize);\n\n useEffect(() => {\n const filteredByDate =\n data &&\n data.filter((item) => {\n const date = new Date(item.date);\n return date >= startDateSet && date <= endDateSet;\n });\n\n setRecordLength(filteredByDate?.length);\n }, [data, endDateSet, startDateSet]);\n\n const checkLinearLength = [];\n\n filteredByDate?.forEach((item) => {\n checkLinearLength.push(item.date);\n });\n\n let uniqueNodeScaleAmount = [...new Set(checkLinearLength)].length;\n\n const getScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getXScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 186;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const getYScale = useCallback(() => {\n if (uniqueNodeScaleAmount > overviewBreakpoint) {\n return 50;\n } else if (uniqueNodeScaleAmount >= summaryBreakpoint) {\n return summaryComponentSize;\n } else {\n return 130;\n }\n }, [uniqueNodeScaleAmount, summaryBreakpoint, overviewBreakpoint]);\n\n const topMargin = uniqueNodeScaleAmount >= summaryBreakpoint ? 48 : 0;\n\n // Plot XV\n const plotXV = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n data.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const sortedRowIndex = rowIndex.sort((a, b) =>\n a.thread > b.thread ? 1 : -1\n );\n\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n const xplot = results[0] && results[0].sortedRowIndex * 50;\n return xplot - topMargin;\n },\n [data, topMargin]\n );\n\n const plotY = useCallback(\n (item) => {\n const plotDate = [item];\n\n let demoDates = [];\n\n dataConvertedDate &&\n dataConvertedDate.map((item) => {\n demoDates.push(item.date);\n });\n\n let demoDatesTwo = [];\n\n dataConvertedDate &&\n filteredByDate.map((item) => {\n demoDatesTwo.push(item.date);\n });\n\n let unique = [...new Set(demoDatesTwo)];\n\n let results = unique.map((date) => new Date(date));\n\n const resultsSorted = results.sort((a, b) => a.getTime() - b.getTime());\n\n const dtest = resultsSorted.map((date) => date.toLocaleDateString());\n\n const mappedToObjects = dtest.map(function (value) {\n return { date: value };\n });\n\n const plots = [];\n for (let i = 1; i <= unique.length; i++) {\n plots.push(i);\n }\n\n let mergePlots = mappedToObjects.map((o, i) => ({\n ...o,\n plots: plots[i] || null\n }));\n\n const res =\n mergePlots &&\n mergePlots\n .filter(({ date }) => plotDate.includes(date))\n .map(({ plots }) => plots);\n\n const order =\n mergePlots &&\n res.map((item) => {\n return item;\n });\n\n const plot = order * getYScale();\n\n return plot - getYScale() + (getYScale() === 130 ? 32 : 8);\n },\n [dataConvertedDate, getYScale, filteredByDate]\n );\n\n const plotX = useCallback(\n (timeline, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline + '.' + item.subThread;\n });\n\n let unique = [...new Set(xLine)];\n\n const rowIndex = unique.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n // const sortedRowIndex = rowIndex.sort((a, b) =>\n // a.thread > b.thread ? 1 : -1\n // );\n\n const orderByThread = (unordered) => {\n let maxElement = 0;\n unordered.forEach((value) => {\n if (value.thread.split('.')[0] > maxElement) {\n maxElement = value.thread.split('.')[0];\n }\n });\n let sortArray = [...Array(+maxElement)].map((e) => (e = []));\n unordered.forEach((value) => {\n sortArray[+value.thread.split('.')[0] - 1].push(value);\n });\n sortArray.forEach((value) => {\n value.sort((a, b) => {\n return +a.thread.split('.')[1] - +b.thread.split('.')[1];\n });\n });\n return sortArray.flat();\n };\n\n const sortedRowIndex = orderByThread(rowIndex);\n const concatIndex = timeline + '.' + subThread;\n const result = sortedRowIndex.map((v, index) => ({\n ...v,\n sortedRowIndex: index\n }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n const xplot = results[0] && results[0].sortedRowIndex * getXScale();\n return xplot + topMargin;\n },\n [data, getXScale, topMargin, filteredByDate]\n );\n\n // Map to named months\n const MONTHS = {\n 1: 'Jan',\n 2: 'Feb',\n 3: 'March',\n 4: 'Apr',\n 5: 'May',\n 6: 'June',\n 7: 'July',\n 8: 'Aug',\n 9: 'Sept',\n 10: 'Oct',\n 11: 'Nov',\n 12: 'Dec'\n };\n\n const convertNumberToMonths = (months) => {\n // Convert months to order\n const orderedMonths = months;\n orderedMonths.sort(function (a, b) {\n return a - b;\n });\n\n // Map to named months\n const output = orderedMonths.map(function (i) {\n return MONTHS[i];\n });\n\n return output;\n };\n\n function lastDayOfMonthArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n const returnObject = dates.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n useEffect(() => {\n const timelineSet = new Set();\n data &&\n data.forEach((item) => {\n const timelineKey = `${item.timeline}-${item.subThread}`;\n timelineSet.add(timelineKey);\n });\n setUniqueTimelines(timelineSet.size);\n }, [data]);\n\n function lastDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '00/00/00';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay > Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '00/00/00') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(a) - new Date(b));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n function firstDayOfYearArray(object) {\n let tempDates = [];\n let dates = [];\n object.forEach((obj) => {\n if (!tempDates.find((date) => date === formatDate(obj.date))) {\n tempDates.push(formatDate(obj.date));\n }\n });\n tempDates.forEach((date) => {\n const dateMonth = Number(date.split('/')[0]);\n const dateYear = Number(date.split('/')[2]);\n let pushDate = '12/31/9999';\n tempDates.forEach((fDate) => {\n const fDateMonth = Number(fDate.split('/')[0]);\n const fDateDay = Number(fDate.split('/')[1]);\n const fDateYear = Number(fDate.split('/')[2]);\n if (\n fDateYear === dateYear &&\n fDateMonth === dateMonth &&\n fDateDay < Number(pushDate.split('/')[1])\n ) {\n pushDate = fDate;\n }\n });\n if (pushDate !== '12/31/9999') {\n dates.push(pushDate);\n }\n });\n dates = [...new Set(dates)];\n dates.sort((a, b) => new Date(b) - new Date(a));\n let dateArr = [];\n for (let x = 0; x < dates.length; x++) {\n if (\n x === dates.length - 1 ||\n Number(dates[x].split('/')[2]) !== Number(dates[x + 1].split('/')[2])\n ) {\n dateArr.push(dates[x]);\n }\n }\n dateArr.sort((a, b) => new Date(a) - new Date(b));\n const returnObject = dateArr.map((date) => {\n let timelines = [];\n let subThreads = [];\n object.forEach((obj) => {\n if (formatDate(obj.date) === formatDate(date)) {\n timelines.push(obj.timeline);\n subThreads.push(obj.subThread);\n }\n });\n return {\n date: date,\n timelines: timelines,\n subThread: subThreads\n };\n });\n return returnObject;\n }\n\n const Today = (object) => {\n const dateList = [];\n object &&\n object.map((item) => {\n dateList.push(item.date);\n });\n\n let unique = [...new Set(dateList)];\n\n const today = new Date().toLocaleDateString('en-US');\n\n //const todaysDate = unique.filter(date => date.includes('7/29/2022'));\n const todaysDate = unique.filter((date) => date.includes(today));\n\n return todaysDate;\n };\n\n const getInverseProportionalNumber = (inputNumber) => {\n const reciprocal = 1 / inputNumber;\n const wholeNumber = Math.round(reciprocal * 400);\n return wholeNumber;\n };\n\n const visualizationSmall = 10;\n const visualizationLarge = 30;\n const rangeHandles = 18;\n const adjusterHeight = 100;\n\n // Plot category lines\n const GuideLinesShort = () => {\n const xLines = buildCategoryLines().map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n zIndex: 0,\n top: 186 * index\n }}\n >\n <div\n className={classes.horizontalDash}\n style={{ height: threadHeight }}\n />\n <div\n style={{\n //width: 'calc(100vw * 1.7)',\n width:\n // dataConvertedDate &&\n // mergePlots.slice(-1).pop().plots * nodeWidth,\n filteredByDate &&\n uniqueNodeScaleAmount * getXScale() + getXScale(),\n height: threadHeight,\n borderBottom: `${theme.palette.divider} 1px solid`\n }}\n />\n </div>\n );\n });\n\n return xLines;\n };\n\n const preloadArray = [...Array(7).keys()];\n\n //Format visualization hover card\n const VisualizationCard = ({ title, data, date, user }) => {\n return (\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n const VisualizationCardMulti = ({ title, data, date, user }) => {\n return (\n <div\n style={{\n width: 130,\n borderRadius: 4,\n marginBottom: 16,\n padding: 8\n }}\n >\n <div>\n <Typography variant='subtitle2'> {title} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {data} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {date} </Typography>\n </div>\n <div>\n <Typography variant='caption'> {user} </Typography>\n </div>\n </div>\n );\n };\n\n // Plot Legend\n\n const categoryList = [];\n data &&\n filteredByDate.map((item) => {\n categoryList.push({\n label: item.timelineCategoryName,\n color: item.color,\n timeline: item.timeline\n });\n });\n\n const uniqueCategoryLegend = [\n ...new Map(categoryList.map((item) => [item['label'], item])).values()\n ];\n\n const uniqueCategoryLegendSorted = uniqueCategoryLegend.sort((a, b) =>\n a.timeline > b.timeline ? 1 : -1\n );\n\n const LegendDot = ({ background }) => {\n return (\n <div\n style={{\n width: 30,\n height: 15,\n background: lighten(background, 0.5),\n borderRadius: theme.spacing(6)\n }}\n />\n );\n };\n\n const LegendItem = ({ label, color }) => {\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center'\n }}\n >\n <LegendDot background={'#' + color} />\n <div style={{ marginLeft: theme.spacing(1) }}>\n <Typography variant='caption'>{label} </Typography>\n </div>\n </div>\n );\n };\n\n const legend =\n data &&\n uniqueCategoryLegendSorted.map((item, index) => {\n return <LegendItem key={index} color={item.color} label={item.label} />;\n });\n\n // Plot category bar\n const plotCategoryBar = (timelineNumber, subThread) => {\n const xLine =\n data &&\n filteredByDate.map((item) => {\n return item.timeline.toString() + '.' + item.subThread.toString();\n });\n\n let unique = [...new Set(xLine)];\n\n const uniqueSorted = unique.sort(function (a, b) {\n return a.localeCompare(b);\n });\n\n const rowIndex = uniqueSorted.reduce(function (s, a) {\n s.push({ thread: a });\n return s;\n }, []);\n\n const concatIndex = timelineNumber + '.' + subThread;\n\n const result = rowIndex.map((v, index) => ({ ...v, rowIndex: index + 1 }));\n const results = result.filter(function (entry) {\n return entry.thread === concatIndex;\n });\n\n //const xplot = results[0].rowIndex * threadHeight;\n const xplot =\n (results[0] && results[0].rowIndex * getXScale()) - getXScale();\n return xplot;\n\n // const plot = (timelineNumber * threadHeight - threadHeight) * subThread;\n // return plot;\n };\n\n const CategoryBar = ({ label, height }) => {\n return (\n <div className={classes.categoryBar} style={{ height: height }}>\n <div className={classes.categoryLabel}>\n <Typography variant='subtitle2'> {label} </Typography>\n </div>\n </div>\n );\n };\n\n const DateMarkers = (\n <div>\n {filteredByDate &&\n showYearMarkers &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n firstDayOfYearArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag year>{item.date.split('/')[2]}</MttYearTag>\n </div>\n );\n })}\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n showMonthMarkers &&\n lastDayOfMonthArray(filteredByDate).map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item.date)\n }}\n >\n <MttYearTag>\n {convertNumberToMonths([item.date.split('/')[0]])}\n </MttYearTag>\n </div>\n );\n })}\n\n {filteredByDate &&\n uniqueNodeScaleAmount >= summaryBreakpoint &&\n Today(filteredByDate).map((item) => {\n return (\n <div\n style={{\n position: 'absolute',\n bottom: 0,\n left: plotY(item)\n }}\n >\n <MttYearTag year today>\n <Typography variant='caption'> TODAY </Typography>\n </MttYearTag>\n </div>\n );\n })}\n </div>\n );\n\n // timeline render\n return (\n <div>\n <div\n ref={mainContainer}\n style={{\n position: 'relative',\n // top: 45,\n height: '75vh',\n overflow: 'scroll'\n }}\n >\n {/* CategoryBar */}\n {!loading && (\n <>\n <div style={{ zIndex: 99999999, position: 'absolute', bottom: 0 }}>\n {DateMarkers}\n </div>\n\n {data &&\n data &&\n uniqueNodeScaleAmount < summaryBreakpoint &&\n filteredByDate.map((item, index) => {\n return (\n <div\n key={index}\n className={classes.categoryBarPlacement}\n style={{\n top:\n plotCategoryBar(\n Number(item.timeline),\n Number(item.subThread)\n ) + 0\n }}\n >\n <CategoryBar\n key={item.id}\n label={item.timelineCategoryName}\n height={data && getXScale()}\n />\n </div>\n );\n })}\n\n {data &&\n filteredByDate.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ),\n top: plotX(item.timeline, item.subThread),\n //top: 0,\n zIndex:\n 999999 -\n plotY(new Date(item.date).toLocaleDateString('en-US')) -\n item.subThread\n //zIndex: 9999999 - index * index,\n }}\n >\n <TimelineNode\n icon={\n <IconRenderer\n noBorder\n value={{\n color: { hex: '#' + item.color },\n name: item.iconID\n }}\n />\n }\n dot={data && uniqueNodeScaleAmount <= overviewBreakpoint}\n dotColor={'#' + item.color}\n data={item.dates}\n details={\n data && uniqueNodeScaleAmount < summaryBreakpoint\n }\n height={\n (data &&\n uniqueNodeScaleAmount <= summaryBreakpoint &&\n 183) ||\n (data &&\n uniqueNodeScaleAmount <= overviewBreakpoint &&\n 30)\n }\n width={\n data && uniqueNodeScaleAmount < summaryBreakpoint && 130\n }\n boxStyle\n show={showAllDetails}\n iconColor={'#' + item.color}\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) + 4,\n top: plotX(item.timeline, item.subThread),\n zIndex:\n 999999 -\n plotY(\n new Date(item.date).toLocaleDateString('en-US')\n ) -\n item.timeline\n }}\n >\n <MultiDot map={item.dates} number={item.dates.length} />\n </div>\n </div>\n );\n })}\n\n <Fade in={data && uniqueNodeScaleAmount >= summaryBreakpoint}>\n <div>\n {data &&\n minnifiedResult.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n //zIndex: 0,\n left: plotY(item.firstDate) + 2,\n top:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 14 + plotX(item.timeline, item.subThread)\n : 4 + plotX(item.timeline, item.subThread)\n }}\n >\n <TimelineWrapper\n timeline={item.timeline}\n style={{\n width:\n plotY(item.lastDate) - plotY(item.firstDate) + 45,\n height:\n data && uniqueNodeScaleAmount > overviewBreakpoint\n ? 20\n : 40,\n backgroundColor: lighten('#' + item.color, 0.7)\n }}\n />\n </div>\n );\n })}\n </div>\n </Fade>\n {/* <Fade in={data && filteredByDate.length < mttBreakpointMd}> */}\n {data && uniqueNodeScaleAmount < summaryBreakpoint && (\n <div>\n <GuideLinesShort />\n </div>\n )}\n </>\n )}\n {/* </Fade> */}\n </div>\n\n {/* lower Section //////////////////////////////////////////////////////////////////////////////////////////////// */}\n <div style={{ width: 250 }}>\n <HeightAdjuster\n verticalAdjuster={verticalAdjuster}\n setVerticalAdjuster={setVerticalAdjuster}\n />\n </div>\n\n {!loading && (\n <div\n style={{\n position: 'relative',\n borderTop: '1px solid lightgrey',\n overflow: 'scroll'\n }}\n >\n <div>\n {data && displayRangeFilter && (\n <div\n style={{\n overflow: 'scroll'\n }}\n >\n <div key={data}>\n <DynamicRangeSlider\n id='range-slider'\n step={10}\n threads={10 * uniqueTimelines}\n width={containerWidth - rangeHandles}\n margin={\n topMargin +\n getInverseProportionalNumber(verticalAdjuster) * 3\n }\n defaultValue={[10, unique.length * 10]}\n max={unique.length * 10}\n min={10}\n onThumbDragEnd={processRangeValues}\n onRangeDragEnd={processRangeValues}\n onInput={(e) => getRangeValues(e)}\n />\n </div>\n </div>\n )}\n\n <div>\n {data &&\n data.map((item, index) => {\n return item.dates.length === 1 ? (\n <div\n key={index}\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n type={item.dates[0].details.shortDescription}\n hover={\n <VisualizationCard\n title={item.dates[0].details.shortDescription}\n data={item.dates[0].details.data1}\n date={item.dates[0].details.date}\n //user={item.dates[0].details.data2}\n />\n }\n />\n </div>\n ) : (\n <div key={item.id}>\n <div\n style={{\n position: 'absolute',\n left:\n dataConvertedDate &&\n plotYV(\n new Date(item.date).toLocaleDateString('en-US')\n ) *\n (containerWidth / unique.length) -\n (visualizationSmall + rangeHandles),\n top:\n plotXV(item.timeline, item.subThread) /\n verticalAdjuster +\n visualizationYScale +\n adjusterHeight\n }}\n >\n <VisualizationDot\n hover={\n <div style={{ color: 'black' }}>\n {item.dates.map((item) => {\n return (\n <VisualizationCardMulti\n title={item.details.description}\n date={item.details.date}\n key={item.id}\n />\n );\n })}\n </div>\n }\n multi\n >\n {item.dates.length}\n </VisualizationDot>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n )}\n\n {/* Preloading */}\n <div style={{ position: 'absolute', top: 0, left: 0, zIndex: 10 }}>\n {loading &&\n preloadArray.map((item, index) => {\n return (\n <div\n key={index}\n style={{\n position: 'absolute',\n left: Math.floor(Math.random() * 11) * 60 + 40,\n top: (index + 1) * 80\n }}\n >\n <TimelinePreloaderNode longView loading={loading} />\n </div>\n );\n })}\n </div>\n {/* Preloading End */}\n\n {/* Legend */}\n {uniqueNodeScaleAmount >= summaryBreakpoint && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4\n }}\n >\n <div\n style={{\n display: 'flex',\n padding: theme.spacing(1),\n gap: theme.spacing(3)\n }}\n >\n {legend}\n\n <Button\n className={classes.button}\n onClick={() => setShowMonthMarkers(!showMonthMarkers)}\n >\n <span\n style={{ textDecoration: !showMonthMarkers && 'line-through' }}\n >\n M\n </span>\n </Button>\n <Button\n className={classes.button}\n onClick={() => setShowYearMarkers(!showYearMarkers)}\n >\n <span\n style={{ textDecoration: !showYearMarkers && 'line-through' }}\n >\n Y\n </span>\n </Button>\n </div>\n </div>\n )}\n {/* Breakpoint testing */}\n {/* <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 999999999,\n background: 'white',\n borderRadius: 4,\n }}\n >\n <Typography variant=\"caption\">\n Data nodes:\n <span style={{ fontWeight: 700 }}>\n {filteredByDate.length} ::::::::::\n </span>\n <span style={{ fontWeight: 700 }}>\n {uniqueNodeScaleAmount} ::::::::::\n </span>\n Summary Breakpoint:\n <span style={{ fontWeight: 700 }}>\n {summaryBreakpoint} ::::::::::\n </span>\n Overview Breakpoint:\n <span style={{ fontWeight: 700 }}>{overviewBreakpoint} ::::::::</span>\n Container Width:\n <span style={{ fontWeight: 700 }}>{containerWidth} :::::::::</span>\n Summary Width: Circle\n <span style={{ fontWeight: 700 }}>\n {summaryComponentSize} ::::::::\n </span>\n Overview width: Dot\n <span style={{ fontWeight: 700 }}>\n {overviewComponentSize} :::::::\n </span>\n </Typography>\n </div> */}\n </div>\n );\n});\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { formatDataWithTimelineCategoryNameOrderedByDate } from '../functions/mttFunctions';\nimport { MttTimeline } from './MttTimeline';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const MttMainTimeline = (props) => {\n const { timelineApiMethodInstanceId, params = {} } = props;\n const [timelineThreads, setTimelineThreads] = useState(null);\n const [data, setData] = useState();\n const [loading, setLoading] = useState(false);\n\n const executeQueryInstance = useCallback(\n async (apiMethodInstanceId, data = {}) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}`,\n {\n method: 'post'\n },\n { data: data }\n ),\n []\n );\n\n useEffect(() => {\n const fetchTimelineThreads = async () => {\n const timelineResponse = await executeQueryInstance(\n timelineApiMethodInstanceId\n ).catch((e) => e);\n\n if (timelineResponse?.status === 200) {\n setTimelineThreads(timelineResponse?.data?.pageList || []);\n }\n };\n fetchTimelineThreads();\n }, [executeQueryInstance, timelineApiMethodInstanceId]);\n\n useEffect(() => {\n const fetchThreadEvents = async () => {\n if (!timelineThreads) {\n return null;\n }\n setLoading(true);\n const promises = [];\n const threadList = [];\n timelineThreads.forEach((thread) => {\n promises.push(executeQueryInstance(thread.queryID, { ...params }));\n });\n await Promise.all(\n promises.map((p) =>\n p.catch((e) => {\n setLoading(false);\n return e;\n })\n )\n ).then((responses) => {\n responses.forEach((response, index) => {\n if (response.status === 200) {\n const timelineThread = timelineThreads[index];\n if (response?.data?.pageList) {\n response.data.pageList.forEach(\n (evt) => (evt.threadId = timelineThread.name)\n );\n const thread = {\n ...timelineThread,\n events: response.data.pageList\n };\n threadList.push(thread);\n }\n }\n });\n setLoading(false);\n });\n setData(formatDataWithTimelineCategoryNameOrderedByDate(threadList));\n };\n fetchThreadEvents();\n }, [executeQueryInstance, timelineThreads, params]);\n\n return <MttTimeline data={data} loading={loading} />;\n};\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { apiMutate as apiMutate$1 } from "./useAxiosMutate-BNEb4J04.js";
2
2
  import { LayoutUnit } from "./LayoutUnit-fGVQwt6Y.js";
3
3
  import { formatDataWithTimelineCategoryName } from "./mttFunctions-BFUthekm.js";
4
- import { IconRenderer } from "./IconRenderer-8w6JVRET.js";
4
+ import { IconRenderer } from "./IconRenderer-DiwGfDul.js";
5
5
  import { MttYearTag } from "./MttYearTag-Cb_oIUNq.js";
6
- import { CircleButton, DateWrapper, SummaryToken, TimelineTopRowFilter } from "./CircleButton-BFASpo5t.js";
6
+ import { CircleButton, DateWrapper, SummaryToken, TimelineTopRowFilter } from "./CircleButton-DBPFjNl1.js";
7
7
  import React, { useCallback, useEffect, useMemo, useState } from "react";
8
8
  import { CardContent, LinearProgress, Typography, makeStyles } from "@material-ui/core";
9
9
  import { ConfigService } from "udp-react-stencil-component-library";
@@ -255,4 +255,4 @@ MttSummary.propTypes = { timelineApiMethodInstanceId: PropTypes.string.isRequire
255
255
 
256
256
  //#endregion
257
257
  export { MttSummary, createTimeline };
258
- //# sourceMappingURL=MttSummary-DHB1AW_0.js.map
258
+ //# sourceMappingURL=MttSummary-CTETqPbU.js.map