{"version":3,"file":"WorkflowUiInterruptContent.mjs","names":["React","useCallback","useEffect","useMemo","useState","useRef","useAxiosGet","makeStyles","PageContainer","useUser","PrimaryActionHeader","Card","useWorkflowStore","apiMutate","WorkflowTaskFlow","orderBy","UnitStateType","LinearProgress","FluentTextFieldAutoComplete","useTranslation","CancelIcon","ForwardIcon","SideSheet","Field","Form","cloneDeep","CircularProgress","ConfigService","useStyles","theme","root","loadingContent","flex","display","flexDirection","alignItems","justifyContent","height","WorkflowUiInterruptContent","props","selectedNode","workflow","reloadWorkflow","users","groups","handleClose","inquiryPageParams","classes","selectedPageId","setSelectedPageId","currentWorkflowStep","setCurrentWorkflowStep","loading","setLoading","loadingTaskData","setLoadingTaskData","reassignSidesheetOpen","setReassignSidesheetOpen","reassigningAssignee","setReassigningAssignee","workflowPageData","setWorkflowPageData","orderedPageData","setOrderedPageData","user","taskDataMap","state","setTaskDataMap","t","formRef","data","pageData","pageLoading","error","pageError","tenantV1ApiUrl","playScene","playSceneLoading","playSceneError","fetchPlayScene","maestroV1ApiUrl","properties","playSceneId","updatePlaySceneData","method","updatePlaySceneState","sceneState","updatePlaySceneAssignee","closeReassignmentSheet","workflowTaskSteps","interruptPages","orderedInterruptPages","steps","reduce","list","ip","step","label","displayName","page","name","pageId","requiredFieldMapping","push","assigneeOptions","formattedUsers","id","unityId","defaultValue","formattedGroups","group","groupId","options","concat","saveCurrentWorkflowData","playSceneData","JSON","stringify","updateWorkflowPageData","console","warn","Initial","Completed","Cancelled","Failed","handleTaskChange","handleTaskSubmit","secondaryButtons","buttons","component","click","Started","handleReassignment","current","form","submit","reassignTask","values","assignee","find","wts","fieldMapping","workflowVariables","variables","Object","keys","forEach","rfmKey","requiredField","value","type","matchedVariable","key","pageWidgetParams","requiredFieldsMap","fieldMap","setSideSheetWidth","setSideSheetButtonLabel","setSideSheetOnSubmit","setSideSheetAdditionalOnClose","setSideSheetProps","closeSideSheet","onCreate","onUpdate","workflowTask","orderedWorkflowPageData","currentAssignee","length","matchingAssignee","pageHeight","prevData","json","parse","orderedData","border","paddingBottom"],"sources":["../../src/workflow/WorkflowUiInterruptContent.jsx"],"sourcesContent":["import React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useState,\n  useRef\n} from 'react';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { useUser } from '../utilities/auth/useUser';\nimport { PrimaryActionHeader } from '../UI/utilityDisplay/utilityHeader/PrimaryActionHeader';\nimport { Card } from '@material-ui/core';\nimport { useWorkflowStore } from '../stores/workflowStore';\nimport { apiMutate } from '../utilities/useAxiosMutate';\nimport { WorkflowTaskFlow } from './components/WorkflowTaskFlow';\nimport { orderBy } from 'lodash-es';\nimport { UnitStateType } from '../enums/workflowEnums';\nimport { LinearProgress } from '../UI/loading/LinearProgress';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { CancelIcon, ForwardIcon } from '@fluentui/react-icons';\nimport { SideSheet } from '../UI/surfaces/SideSheet';\nimport { Field, Form } from '../utilities/form';\nimport { cloneDeep } from 'lodash-es';\nimport { CircularProgress } from '../UI/loading/CircularProgress';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({\n  root: {},\n  loadingContent: {\n    flex: 1,\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    justifyContent: 'center',\n    height: 'calc(100vh - 160px)'\n  }\n}));\n\nexport const WorkflowUiInterruptContent = (props) => {\n  const {\n    selectedNode,\n    workflow,\n    reloadWorkflow,\n    users,\n    groups,\n    handleClose,\n    inquiryPageParams = {}\n  } = props;\n  const classes = useStyles();\n  const [selectedPageId, setSelectedPageId] = useState('');\n  const [currentWorkflowStep, setCurrentWorkflowStep] = useState(0);\n  const [loading, setLoading] = useState(false);\n  const [loadingTaskData, setLoadingTaskData] = useState(true);\n  const [reassignSidesheetOpen, setReassignSidesheetOpen] = useState(false);\n  const [reassigningAssignee, setReassigningAssignee] = useState(false);\n  const [workflowPageData, setWorkflowPageData] = useState(null);\n  const [orderedPageData, setOrderedPageData] = useState([]);\n  const user = useUser();\n  const taskDataMap = useWorkflowStore((state) => state.taskDataMap);\n  const setTaskDataMap = useWorkflowStore((state) => state.setTaskDataMap);\n  const { t } = useTranslation();\n  const formRef = useRef(null);\n\n  const [{ data: pageData, loading: pageLoading, error: pageError }] =\n    useAxiosGet(\n      ConfigService.tenantV1ApiUrl,\n      `page/${selectedPageId}`,\n      {},\n      !!!selectedPageId,\n      false\n    );\n\n  const [\n    { data: playScene, loading: playSceneLoading, error: playSceneError },\n    fetchPlayScene\n  ] = useAxiosGet(\n    ConfigService.maestroV1ApiUrl,\n    `maestro/play/scene/${\n      selectedNode?.properties?.playSceneId || null\n    }?includeData=true`,\n    {},\n    !!!selectedNode?.properties?.playSceneId,\n    false\n  );\n\n  const updatePlaySceneData = useCallback(\n    async (data = '') =>\n      apiMutate(\n        ConfigService.maestroV1ApiUrl,\n        `maestro/play/scene/${\n          selectedNode?.properties?.playSceneId || null\n        }/data`,\n        {\n          method: 'put'\n        },\n        { data: data }\n      ),\n    [selectedNode]\n  );\n\n  const updatePlaySceneState = useCallback(\n    async (data = {}, sceneState) =>\n      apiMutate(\n        ConfigService.maestroV1ApiUrl,\n        `maestro/play/scene/${\n          selectedNode?.properties?.playSceneId || null\n        }/${sceneState}`,\n        {\n          method: 'put'\n        },\n        { data: data }\n      ),\n    [selectedNode]\n  );\n\n  const updatePlaySceneAssignee = useCallback(\n    async (data = '') =>\n      apiMutate(\n        ConfigService.maestroV1ApiUrl,\n        `maestro/play/scene/${\n          selectedNode?.properties?.playSceneId || null\n        }/assignee`,\n        {\n          method: 'put'\n        },\n        { data: data }\n      ),\n    [selectedNode]\n  );\n\n  const closeReassignmentSheet = useCallback(() => {\n    setReassignSidesheetOpen(false);\n  }, []);\n\n  const workflowTaskSteps = useMemo(() => {\n    if (!selectedNode?.properties?.interruptPages) {\n      return [];\n    }\n    const orderedInterruptPages = orderBy(\n      selectedNode.properties.interruptPages,\n      ['sequenceNo'],\n      ['asc']\n    );\n    const steps = orderedInterruptPages.reduce((list, ip) => {\n      const step = {\n        label: ip.displayName || ip.page?.name,\n        pageId: ip.page?.pageId,\n        requiredFieldMapping: ip.requiredFieldMapping\n      };\n      list.push(step);\n      return list;\n    }, []);\n    return steps;\n  }, [selectedNode]);\n\n  const assigneeOptions = useMemo(() => {\n    const formattedUsers =\n      users?.reduce((list, user) => {\n        list.push({\n          id: user?.unityId || '',\n          name:\n            t('workflow.interrupt.assigneeOptionUser', {\n              defaultValue: '{{name}} - (User)',\n              name: user?.displayName\n            }) || ''\n        });\n        return list;\n      }, []) || [];\n    const formattedGroups =\n      groups.reduce((list, group) => {\n        list.push({\n          id: group?.groupId || '',\n          name:\n            t('workflow.interrupt.assigneeOptionGroup', {\n              defaultValue: '{{name}} - (Group)',\n              name: group?.name\n            }) || ''\n        });\n        return list;\n      }, []) || [];\n    const options = formattedUsers.concat(formattedGroups);\n    return options;\n  }, [users, groups, t]);\n\n  const saveCurrentWorkflowData = useCallback(async () => {\n    let playSceneData = null;\n    if (selectedNode?.properties?.playSceneId) {\n      playSceneData = taskDataMap[selectedNode.properties.playSceneId];\n    }\n    if (playSceneData) {\n      await updatePlaySceneData({\n        data: JSON.stringify(playSceneData)\n      });\n      await fetchPlayScene();\n    }\n  }, [taskDataMap, fetchPlayScene, updatePlaySceneData, selectedNode]);\n\n  const updateWorkflowPageData = useCallback(\n    async (data, pageId) => {\n      if (!selectedNode?.properties?.playSceneId || !pageId) {\n        console.warn('No TaskId or PageId availble to save Workflow Page Data');\n        return;\n      }\n      if (\n        selectedNode?.properties?.state === UnitStateType.Initial ||\n        selectedNode?.properties?.state === UnitStateType.Completed ||\n        selectedNode?.properties?.state === UnitStateType.Cancelled ||\n        selectedNode?.properties?.state === UnitStateType.Failed\n      ) {\n        return;\n      }\n\n      let playSceneData = null;\n      if (selectedNode?.properties?.playSceneId) {\n        playSceneData = taskDataMap[selectedNode.properties.playSceneId];\n        if (playSceneData) {\n          playSceneData[pageId] = data;\n        }\n      }\n      if (playSceneData) {\n        await updatePlaySceneData({\n          data: JSON.stringify(playSceneData)\n        });\n        await fetchPlayScene();\n      }\n    },\n    [selectedNode, fetchPlayScene, taskDataMap, updatePlaySceneData]\n  );\n\n  const handleTaskChange = useCallback(async (step) => {\n    setCurrentWorkflowStep(step);\n  }, []);\n\n  const handleTaskSubmit = useCallback(async () => {\n    setLoading(true);\n    await saveCurrentWorkflowData();\n    await updatePlaySceneState('', 2);\n    await reloadWorkflow();\n    setLoading(false);\n  }, [updatePlaySceneState, reloadWorkflow, saveCurrentWorkflowData]);\n\n  const secondaryButtons = useMemo(() => {\n    const buttons = [];\n    if (handleClose) {\n      buttons.push({\n        label: t('common.close', { defaultValue: 'Close' }),\n        component: CancelIcon,\n        click: () => handleClose()\n      });\n    }\n    if (selectedNode?.properties?.state !== UnitStateType.Started) {\n      return buttons;\n    }\n    buttons.push({\n      label: t('workflow.interrupt.reassign', { defaultValue: 'Reassign' }),\n      component: ForwardIcon,\n      click: () => setReassignSidesheetOpen(true)\n    });\n    return buttons;\n  }, [t, selectedNode, handleClose]);\n\n  const handleReassignment = useCallback(() => {\n    formRef?.current.form.submit();\n  }, []);\n\n  const reassignTask = useCallback(\n    async (values) => {\n      setReassigningAssignee(true);\n      await updatePlaySceneAssignee({\n        data: values?.assignee?.id || ''\n      });\n      await fetchPlayScene();\n      setReassigningAssignee(false);\n      closeReassignmentSheet();\n    },\n    [updatePlaySceneAssignee, fetchPlayScene, closeReassignmentSheet]\n  );\n\n  const requiredFieldMapping = useMemo(() => {\n    const step = workflowTaskSteps?.find(\n      (wts) => wts.pageId === pageData?.pageId\n    );\n    let fieldMapping = step?.requiredFieldMapping\n      ? cloneDeep(step.requiredFieldMapping)\n      : {};\n    const workflowVariables = selectedNode?.properties?.variables || null;\n    if (!!fieldMapping && !!workflowVariables) {\n      Object.keys(fieldMapping)?.forEach((rfmKey) => {\n        const requiredField = fieldMapping[rfmKey];\n        if (!!requiredField?.value) {\n          if (requiredField?.type === 'workflowVariable') {\n            let matchedVariable = false;\n            Object.keys(workflowVariables).forEach((key) => {\n              if (requiredField.value === key) {\n                requiredField.value = workflowVariables[key] || '';\n                matchedVariable = true;\n                return;\n              }\n            });\n            if (!matchedVariable) {\n              requiredField.value = null;\n            }\n          }\n        }\n      });\n    }\n    return fieldMapping || {};\n  }, [pageData?.pageId, selectedNode, workflowTaskSteps]);\n\n  const pageWidgetParams = useMemo(() => {\n    const requiredFieldsMap = Object.keys(requiredFieldMapping).reduce(\n      (fieldMap, key) => {\n        fieldMap[key] = requiredFieldMapping[key]?.value || '';\n        return fieldMap;\n      },\n      {}\n    );\n\n    // have to pass in unimplemented parameters because certain pages\n    // are used in action sheets/screens\n    return {\n      setSideSheetWidth: () => {\n        console.warn('setSideSheetWidth Not implemented');\n      },\n      setSideSheetButtonLabel: () => {\n        console.warn('setSideSheetButtonLabel Not implemented');\n      },\n      setSideSheetOnSubmit: () => {\n        console.warn('setSideSheetOnSubmit Not implemented');\n      },\n      setSideSheetAdditionalOnClose: () => {\n        console.warn('setSideSheetAdditionalOnClose Not implemented');\n      },\n      setSideSheetProps: () => {\n        console.warn('setSideSheetProps Not implemented');\n      },\n      closeSideSheet: () => {\n        console.warn('closeSideSheet Not implemented');\n      },\n      onCreate: () => {\n        console.warn('onCreate Not implemented');\n      },\n      onUpdate: () => {\n        console.warn('onUpdate Not implemented');\n      },\n      ...inquiryPageParams,\n      pageId: pageData?.pageId,\n      updateWorkflowPageData: (data) =>\n        updateWorkflowPageData(data, pageData?.pageId),\n      workflowTask: selectedNode,\n      workflowPageData: { ...requiredFieldsMap, ...workflowPageData }, // workflowPageData will overwrite the requiredField values\n      requiredFieldsMap: requiredFieldMapping || null,\n      currentWorkflowStep,\n      orderedWorkflowPageData: orderedPageData\n    };\n  }, [\n    pageData?.pageId,\n    selectedNode,\n    workflowPageData,\n    updateWorkflowPageData,\n    requiredFieldMapping,\n    inquiryPageParams,\n    currentWorkflowStep,\n    orderedPageData\n  ]);\n\n  const currentAssignee = useMemo(() => {\n    if (!playScene?.assignee || !assigneeOptions?.length) {\n      return '';\n    }\n    const matchingAssignee = assigneeOptions.find(\n      (assignee) => assignee.id === playScene.assignee\n    );\n    return matchingAssignee || '';\n  }, [playScene, assigneeOptions]);\n\n  const pageHeight = useMemo(() => 'calc(100vh - 162px)', []);\n\n  useEffect(() => {\n    if (\n      !selectedNode?.properties?.playSceneId ||\n      !selectedPageId ||\n      loadingTaskData\n    ) {\n      setWorkflowPageData(null);\n      return;\n    }\n    if (\n      taskDataMap?.[selectedNode.properties.playSceneId] &&\n      taskDataMap[selectedNode.properties.playSceneId][selectedPageId]\n    ) {\n      setWorkflowPageData(\n        taskDataMap[selectedNode.properties.playSceneId][selectedPageId]\n      );\n      return;\n    }\n    // Use this condition for making sure workflowPageData is resolved before\n    // returning value so that PageContainer will render\n    if (\n      Object.keys(taskDataMap).length &&\n      selectedNode?.properties?.playSceneId &&\n      selectedPageId &&\n      !playSceneLoading &&\n      !loadingTaskData\n    ) {\n      setWorkflowPageData((prevData) => {\n        if (!prevData) {\n          return {};\n        } else if (!Object.keys(prevData).length) {\n          return prevData;\n        }\n      });\n      return;\n    }\n    setWorkflowPageData(null);\n  }, [\n    selectedNode,\n    selectedPageId,\n    taskDataMap,\n    loadingTaskData,\n    playSceneLoading,\n    workflowTaskSteps\n  ]);\n\n  useEffect(() => {\n    if (workflowTaskSteps?.length) {\n      setSelectedPageId(workflowTaskSteps[currentWorkflowStep]?.pageId);\n    }\n  }, [workflowTaskSteps, currentWorkflowStep]);\n\n  useEffect(() => {\n    setLoadingTaskData(true);\n    if (!playSceneLoading && selectedNode?.properties?.playSceneId) {\n      const json = playScene?.data ? JSON.parse(playScene.data) : {};\n      setTaskDataMap(selectedNode.properties.playSceneId, json);\n    }\n    setLoadingTaskData(false);\n  }, [playScene, playSceneLoading, setTaskDataMap, selectedNode]);\n\n  useEffect(() => {\n    const orderedData = [];\n    if (taskDataMap?.[selectedNode.properties.playSceneId]) {\n      workflowTaskSteps.forEach((step) => {\n        orderedData.push(\n          taskDataMap[selectedNode.properties.playSceneId][step.pageId] || {}\n        );\n      });\n    }\n    setOrderedPageData(orderedData);\n  }, [taskDataMap, workflowTaskSteps, selectedNode]);\n\n  return (\n    <div>\n      <Card\n        variant={'outlined'}\n        style={{\n          border: 'none',\n          paddingBottom: workflowTaskSteps?.length > 1 ? 10 : 0\n        }}\n      >\n        <PrimaryActionHeader\n          single\n          title={workflow?.name}\n          buttonLabel={t('common.submit', { defaultValue: 'Submit' })}\n          handleClick={handleTaskSubmit}\n          pabDisabled={\n            selectedNode?.properties?.state !== UnitStateType.Started\n          }\n          secondaryButtons={secondaryButtons}\n        />\n        {loading && <LinearProgress />}\n      </Card>\n      {workflowTaskSteps?.length > 1 && (\n        <WorkflowTaskFlow\n          steps={workflowTaskSteps}\n          handleClick={handleTaskChange}\n          task={selectedNode}\n        />\n      )}\n      {selectedPageId && workflowPageData ? (\n        <PageContainer\n          user={user}\n          // key={playScene?.playSceneId || selectedNode?.id}\n          key={selectedPageId}\n          pageData={pageData}\n          pageLoading={pageLoading}\n          widgetParams={pageWidgetParams}\n          disableMargins={true}\n          fromMenu={true}\n          height={pageHeight}\n        />\n      ) : (\n        <div className={classes.loadingContent}>\n          <CircularProgress size={64} />\n        </div>\n      )}\n      <SideSheet\n        open={reassignSidesheetOpen}\n        buttonLabel={t('workflow.interrupt.reassign', {\n          defaultValue: 'Reassign'\n        })}\n        onClose={closeReassignmentSheet}\n        onSubmit={handleReassignment}\n        title={t('workflow.interrupt.reassignTask', {\n          defaultValue: 'Reassign Task'\n        })}\n        width={'25%'}\n        progress={reassigningAssignee}\n        variant='indeterminate'\n      >\n        <Form onSubmit={reassignTask} ref={formRef}>\n          <Field\n            component={FluentTextFieldAutoComplete}\n            name='assignee'\n            id='assignee'\n            label={t('workflow.interrupt.assignee', {\n              defaultValue: 'Assignee'\n            })}\n            initialValue={currentAssignee || ''}\n            options={assigneeOptions || []}\n            optionKey={'name'}\n            variant='outlined'\n            margin='dense'\n          />\n        </Form>\n      </SideSheet>\n    </div>\n  );\n};\n"],"mappings":"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"}