{"version":3,"file":"MttSummary.mjs","names":["React","useCallback","useEffect","useMemo","useState","apiMutate","IconRenderer","LayoutUnit","createTimeline","SummaryToken","CardContent","LinearProgress","Typography","makeStyles","Skeleton","TimelineTopRowFilter","DateWrapper","CircleButton","RedEyeIcon","Link","formatDataWithTimelineCategoryName","MttYearTag","PropTypes","v4","uuid","ConfigService","useStyles","theme","root","wrapper","background","palette","common","white","borderRadius","spacing","overflow","launch","marginLeft","MttSummary","props","timelineApiMethodInstanceId","insightPath","params","data","setData","timelineThreads","setTimelineThreads","timeline","setTimeline","loading","setLoading","filters","setFilters","allFilters","setAllFilters","compact","setCompact","filterListGroup","setFilterListGroup","filterKey","setFilterKey","classes","preloadLength","executeQueryInstance","apiMethodInstanceId","integrationV1ApiUrl","method","summaryThreads","threads","length","filter","thread","inSummary","summaryEvents","map","st","events","flat","filterItems","item","push","name","addFilter","includes","updatedFilter","e","clearFilters","fetchTimelineThreads","timelineResponse","status","pageList","fetchThreadEvents","promises","threadList","forEach","queryID","Promise","all","p","catch","then","responses","response","index","timelineThread","evt","threadId","filterList","icon","color","key","arrayUniqueByKey","Map","values","mappedToDetails","dates","details","summaryLength","getMembers","members","mem","m","concat","dataConvertedFilter","groupByMonth","object","finalObject","el","foundFlag","foEl","month","date","split","year","SkeletonLoading","marginRight","display","justifyContent","preLoading","Array","keys","slice","dataToSort","sorted","sort","a","b","getYears","uniqueYears","Set","position","flex","type","pathname","state","direction","uniqueYear","Number","id","hex","data1","toString","trim","data2","transactionType","shortDescription","charAt","data3","data4","propTypes","string","isRequired"],"sources":["../../../../src/componentSystems/multiThreadTimeline/mttSummary/MttSummary.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { IconRenderer } from '../../../UI/templates/ui/renderers/IconRenderer';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { createTimeline } from '../timeline.ts';\nimport { SummaryToken } from '../ui/SummaryToken';\nimport {\n  CardContent,\n  LinearProgress,\n  Typography,\n  makeStyles\n} from '@material-ui/core';\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport { TimelineTopRowFilter } from '../ui/TimelineTopRowFilter';\nimport { DateWrapper } from '../ui/DateWrapper';\nimport { CircleButton } from '../ui/CircleButton';\nimport { RedEyeIcon } from '@fluentui/react-icons';\nimport { Link } from 'react-router-dom';\nimport { formatDataWithTimelineCategoryName } from '../functions/mttFunctions';\nimport { MttYearTag } from '../ui/MttYearTag';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { ConfigService } from '../../../configService';\n\nconst useStyles = makeStyles((theme) => ({\n  root: {},\n  wrapper: {\n    background: theme.palette.common.white,\n    borderRadius: theme.spacing(0.5),\n    overflow: 'hidden'\n  },\n  launch: {\n    marginLeft: theme.spacing(8)\n  }\n}));\n\nexport const MttSummary = (props) => {\n  const {\n    timelineApiMethodInstanceId,\n    insightPath = '/mtt-main',\n    params\n  } = props;\n  const [data, setData] = useState([]);\n  const [timelineThreads, setTimelineThreads] = useState(null);\n  const [timeline, setTimeline] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const [filters, setFilters] = useState([]);\n  const [allFilters, setAllFilters] = useState([]);\n  const [compact, setCompact] = useState(true);\n  const [filterListGroup, setFilterListGroup] = useState();\n  const [filterKey, setFilterKey] = useState(uuid());\n\n  const classes = useStyles();\n  const preloadLength = 11;\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  const summaryThreads = useMemo(() => {\n    if (!timeline?.threads?.length) {\n      return [];\n    }\n\n    setData(\n      formatDataWithTimelineCategoryName(\n        timeline.threads.filter((thread) => thread.inSummary)\n      )\n    );\n    return timeline.threads.filter((thread) => thread.inSummary);\n  }, [timeline]);\n\n  const summaryEvents = useMemo(() => {\n    if (!summaryThreads.length) {\n      return [];\n    }\n    return summaryThreads.map((st) => st.events).flat();\n  }, [summaryThreads]);\n\n  // Get Filter Array\n  let filterItems = [];\n  summaryThreads &&\n    summaryThreads.map((item) => {\n      filterItems.push(item.name);\n    });\n\n  const addFilter = (filter) => {\n    if (filters.includes(filter)) {\n      const updatedFilter = filters.filter((e) => e !== filter);\n      setFilters(updatedFilter);\n    } else {\n      setFilters([...filters, filter]);\n    }\n  };\n\n  const clearFilters = useCallback(() => {\n    setFilters([]);\n  }, []);\n\n  useEffect(() => {\n    const fetchTimelineThreads = async () => {\n      const timelineResponse = await executeQueryInstance(\n        timelineApiMethodInstanceId\n      );\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      setTimeline(createTimeline(threadList));\n      // setData(formatDataWithTimelineCategoryName(threadList))\n    };\n    fetchThreadEvents();\n  }, [executeQueryInstance, timelineThreads, params]);\n\n  useEffect(() => {\n    const filterList =\n      summaryEvents &&\n      summaryEvents.map((item) => {\n        return item.threadId;\n      });\n    setAllFilters(filterList);\n    setFilters(filterList);\n  }, [summaryEvents]);\n\n  useEffect(() => {\n    const filterListGroup = [];\n    summaryEvents &&\n      summaryEvents.map((item) => {\n        filterListGroup.push({\n          name: item.threadId,\n          icon: item.icon,\n          color: item.color\n        });\n      });\n\n    const key = 'name';\n\n    const arrayUniqueByKey = [\n      ...new Map(filterListGroup.map((item) => [item[key], item])).values()\n    ];\n\n    setFilterKey(uuid());\n    setFilterListGroup(arrayUniqueByKey);\n  }, [summaryEvents]);\n\n  const mappedToDetails =\n    data &&\n    data\n      .map((item) => item.dates)\n      .flat()\n      .map((item) => item.details)\n      .flat();\n\n  // for Skeleton preloading\n  const summaryLength = summaryThreads.length || preloadLength;\n\n  const getMembers = (members) => {\n    let events = [];\n\n    return members\n      .map((mem) => {\n        const m = { ...mem };\n        if (m.events && m.events.length) {\n          events = [...events, ...m.events];\n        }\n        delete m.events;\n        return m;\n      })\n      .concat(events.length ? getMembers(events) : events);\n  };\n\n  getMembers(summaryThreads);\n\n  const dataConvertedFilter =\n    mappedToDetails &&\n    mappedToDetails.filter((item) => filters?.includes(item.threadId));\n\n  // Feed dataConvertedFilter into the grouping function (this should filter the array of objects before they are grouped)\n\n  function groupByMonth(object) {\n    let finalObject = [];\n    object.forEach((el) => {\n      let foundFlag = false;\n      finalObject.forEach((foEl) => {\n        if (\n          foEl.month === el.date.split('/')[0] &&\n          foEl.year === el.date.split('/')[2]\n        ) {\n          foEl.details.push(el);\n          foundFlag = true;\n        }\n      });\n      if (!foundFlag) {\n        finalObject.push({\n          month: el.date.split('/')[0],\n          year: el.date.split('/')[2],\n          details: [el]\n        });\n      }\n    });\n\n    return finalObject;\n  }\n\n  const SkeletonLoading = () => {\n    return (\n      <div style={{ marginRight: 48 }}>\n        <LayoutUnit unit='nudge' />\n        <div style={{ display: 'flex', justifyContent: 'center' }}>\n          <Skeleton variant='circle' width={30} height={30} />\n        </div>\n        <LayoutUnit unit='nudge' />\n        <div style={{ display: 'flex', justifyContent: 'center' }}>\n          <Skeleton variant='rect' width={1} height={25} />\n        </div>\n        <Skeleton variant='text' />\n        <Skeleton variant='text' />\n        <LayoutUnit unit='sm' />\n        <Skeleton variant='rect' width={80} height={6} />\n      </div>\n    );\n  };\n\n  const preLoading = [...Array(summaryLength).keys()].slice(1);\n\n  const dataToSort = data && groupByMonth(dataConvertedFilter);\n\n  const sorted = dataToSort.sort(\n    (a, b) => a.year - b.year || a.month - b.month\n  );\n\n  const getYears = [];\n  data &&\n    dataToSort.map((item) => {\n      getYears.push({ year: item.year });\n    });\n\n  const uniqueYears = [...new Set(getYears.map((item) => item.year))];\n\n  return (\n    <div>\n      <div className={classes.wrapper}>\n        {loading && <LinearProgress color='secondary' />}\n        <CardContent>\n          <div\n            style={{\n              display: 'flex',\n              position: 'relative'\n            }}\n          >\n            <div style={{ flex: 1 }}>\n              <Typography variant='h6'>Timeline Summary</Typography>\n              <LayoutUnit unit='md' />\n            </div>\n\n            <div style={{ display: 'flex' }}>\n              <div key={filterKey}>\n                <TimelineTopRowFilter\n                  compact={compact}\n                  setCompact={setCompact}\n                  onClose={() => setCompact(!compact)}\n                  filterCall={(type) => addFilter(type)}\n                  clear={clearFilters}\n                  filterList={filterItems && filterItems}\n                  filterListGroup={filterListGroup && filterListGroup}\n                />\n              </div>\n              <div className={classes.launch}>\n                <CircleButton\n                  component={Link}\n                  to={{\n                    pathname: insightPath,\n                    state: {\n                      timelineApiMethodInstanceId: timelineApiMethodInstanceId\n                    }\n                  }}\n                >\n                  <RedEyeIcon />\n                </CircleButton>\n              </div>\n            </div>\n          </div>\n          <div\n            style={{ display: 'flex', overflow: 'scroll', direction: 'rtl' }}\n          >\n            <div style={{ direction: 'ltr', display: 'flex' }}>\n              {loading &&\n                preLoading.map((item) => {\n                  return <SkeletonLoading key={item} />;\n                })}\n\n              {uniqueYears.map((uniqueYear, index) => (\n                <div style={{ display: 'flex' }}>\n                  {!loading && (\n                    <MttYearTag year count={12}>\n                      {uniqueYear}\n                    </MttYearTag>\n                  )}\n                  {summaryEvents &&\n                    data &&\n                    sorted.map((item) => {\n                      if (item.year === uniqueYears[index]) {\n                        return (\n                          <DateWrapper\n                            months={Number(item.month)}\n                            count={item.details.length}\n                          >\n                            {item.details.map((item) => {\n                              return (\n                                <div key={item.id}>\n                                  <SummaryToken\n                                    showMonth\n                                    months={[item.date]}\n                                    summary\n                                    icon={\n                                      <IconRenderer\n                                        //noBorder\n                                        removeMargin\n                                        value={{\n                                          color: { hex: '#' + item.color },\n                                          //name: item.icon ? item.icon : 'MessageIcon',\n                                          name: item.icon\n                                        }}\n                                      />\n                                    }\n                                    showToken\n                                    status={\n                                      item.data1 &&\n                                      item.data1.toString().trim() !== ''\n                                        ? null\n                                        : Number(item.data2)\n                                    }\n                                    timelineItem={item.transactionType}\n                                    title={item.shortDescription}\n                                    date={item.date}\n                                    dot={false}\n                                    relative\n                                    amount={item.data1}\n                                    month={Number(item.date.charAt(0))}\n                                    user={item.data3}\n                                    balance={item.data4}\n                                    hidebackground\n                                  />\n                                </div>\n                              );\n                            })}\n                          </DateWrapper>\n                        );\n                      } else return null;\n                    })}\n                </div>\n              ))}\n            </div>\n          </div>\n        </CardContent>\n      </div>\n    </div>\n  );\n};\n\nMttSummary.propTypes = {\n  timelineApiMethodInstanceId: PropTypes.string.isRequired\n};\n"],"mappings":"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"}