MOON
Server: Apache
System: Linux vps.erhabenn.com.br 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64
User: machen (1008)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: /disk001/machen/www/_wildcard_.machen.ai/static/js/3.d013e46e.chunk.js.map
{"version":3,"sources":["components/Dashboards/Widgets/Timesheet copy.jsx"],"names":["connect","store","cards","db","timeline","dispatch","bindActionCreators","reduxActions","props","reduxStore","getState","startDate","setStartDate","React","useState","moment","Date","tz","subtract","format","endDate","setEndDate","exportTimers","setExport","selectedUsers","setSelectedUsers","setCards","loading","setLoading","timeSheetData","setTimeSheetData","totalSecondsRef","useRef","usersRef","hashs","window","location","hash","split","replace","nodeId","useEffect","init","iniCards","planCards","async","ncards","getChildrens","loadTimeline","fnIdentification","ids","type","reqChildrens","e","timeSheet","users","timeSheetTotal","totalSeconds","Object","keys","filter","a","tm","length","forEach","deleted","ts","_toUser","userId","user","_id","su","parseInt","ini","unix","fin","time","totalTimer","diff","diffText","diffTextMini","translate","hours","Math","trunc","minutes","seconds","timerText","timerTextMini","_times","cardId","current","convertSecondsToText","mini","arguments","undefined","TimeSheetData","createElement","style","width","marginBottom","display","alignItems","data","name","Fragment","Tooltip","title","Avatar","alt","src","image","height","substr","marginLeft","fontWeight","color","customApp","minWidth","ViewportChecker","inViewport","UiCard","marginTop","overflow","edit","borderBottom","backgroundColor","styles","Icon","size","alignSelf","margin","fontSize","onMouseEnter","target","onMouseLeave","onClick","handleRemoveObject","id","cursor","position","right","top","border","padding","className","HeaderWithIcon","icon","background","borderRadius","customButtons","left","bottom","justifyContent","zIndex","PreLoader","TextField","label","variant","marginRight","InputLabelProps","shrink","inputProps","max","InputProps","autoComplete","onChange","d","value","min","Accordion","AccordionSummary","expandIcon","aria-controls","AvatarGroup","map","i","key","AccordionDetails","FormGroup","pr","FormControlLabel","control","Checkbox","checked","selectUser","ExportTimer","CustomButton","text","textColor","UiCardHeader","ResponsivePie","sort","b","textMini","valueFormat","enableArcLabels","colors","scheme","activeOuterRadiusOffset","arcLabelsTextColor","from","modifiers","borderWidth","cornerRadius","enableArcLinkLabels","innerRadius","leavesOnly","theme","padAngle","sortByValue","wordWrap","textAlign","UiCardBody","GridContainer"],"mappings":"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","file":"static/js/3.d013e46e.chunk.js","sourcesContent":["import React, { useState, useEffect, useRef } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { ResponsivePie } from \"@nivo/pie\";\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store/\"\r\n\r\n//COMPONENTS\r\nimport Checkbox from \"components/Checkbox\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport ExportTimer from \"components/Timer/exportAll\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport Icon from \"components/Icon\"\r\nimport TextField from \"components/TextField\"\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport UiCardHeader from \"components/Card/CardHeader\"\r\nimport PreLoader from \"components/PreLoader\"\r\nimport ViewportChecker from \"componentsV3/ViewerportCheck/ViewrportCheck\";\r\n\r\n//@MATERIAL\r\nimport Accordion from \"@material-ui/core/Accordion\"\r\nimport AccordionDetails from \"@material-ui/core/AccordionDetails\"\r\nimport AccordionSummary from \"@material-ui/core/AccordionSummary\"\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\"\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\"\r\nimport FormGroup from \"@material-ui/core/FormGroup\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions\"\r\nimport { loadTimeline } from \"functions/chat\"\r\nimport { getChildrens } from \"functions/cards\"\r\n\r\n\r\n\r\nfunction Timesheet(props) {\r\n    const { db, timeline } = reduxStore.getState()\r\n    const [startDate, setStartDate] = React.useState(moment(new Date()).tz(\"America/Sao_Paulo\").subtract(8000, \"d\").format(\"YYYY-MM-DD\"))\r\n    const [endDate, setEndDate] = React.useState(moment(new Date()).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\"))\r\n    const [exportTimers, setExport] = React.useState(false)\r\n    const [selectedUsers, setSelectedUsers] = React.useState({})\r\n    const [cards, setCards] = React.useState({})\r\n    const [loading, setLoading] = React.useState(true)\r\n    const [timeSheetData, setTimeSheetData] = useState({})\r\n\r\n    const totalSecondsRef = useRef(0)\r\n    const usersRef = useRef({})\r\n\r\n\r\n    let hashs = window.location.hash.split(\"/\")\r\n    hashs[0] = hashs[0].replace('#', '')\r\n    let nodeId = hashs[0]\r\n\r\n    React.useEffect(() => {\r\n        init()\r\n        return () => {\r\n\r\n        }\r\n        // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    }, []) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n    React.useEffect(() => {\r\n        iniCards()\r\n    }, [props.planCards])// eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n    const iniCards = async () => {\r\n        let ncards = await getChildrens(nodeId)\r\n        setCards(ncards)\r\n    }\r\n\r\n    const init = async () => {\r\n        try {\r\n            let lt = await loadTimeline(\r\n                {\r\n                    ...props,\r\n                    fnIdentification: \"StrategyAndPlans/Dashboard/Widgers/timeSheet/init()\"\r\n                },\r\n                {\r\n                    ids: [nodeId],\r\n                    db: \"cards\",\r\n                    type: \"timer\",\r\n                    reqChildrens: true\r\n                })\r\n            if (lt) {\r\n                setLoading(false)\r\n            }\r\n        } catch (e) {\r\n            setLoading(false)\r\n        }\r\n    }\r\n\r\n\r\n\r\n    useEffect(() => {\r\n\r\n        let timeSheet = {}\r\n        let users = {}\r\n        let timeSheetTotal = 0\r\n        let totalSeconds = 0\r\n\r\n        Object.keys(cards).filter(a =>\r\n            timeline[a]\r\n            && (\r\n                Object.keys(timeline[a]).filter(tm => timeline[a][tm].type === \"timer\").length > 0\r\n            )\r\n        ).forEach(a => {\r\n            Object.keys(timeline[a]).filter(tm =>\r\n                timeline[a][tm].type === \"timer\"\r\n                && !timeline[a][tm].deleted\r\n            ).forEach(ts => {\r\n\r\n                if (timeline[a][ts]._toUser && Object.keys(timeline[a][ts]._toUser).length > 0) {\r\n                    Object.keys(timeline[a][ts]._toUser).forEach(userId => {\r\n                        users = {\r\n                            ...users,\r\n                            [userId]: {\r\n                                ...timeline[a][ts]._toUser[userId] ? timeline[a][ts]._toUser[userId] : {},\r\n                            }\r\n                        }\r\n                    })\r\n                } else {\r\n                    users = {\r\n                        ...users,\r\n                        [timeline[a][ts].user._id]: {\r\n                            ...timeline[a][ts].user,\r\n                        }\r\n                    }\r\n                }\r\n\r\n            })\r\n\r\n            Object.keys(timeline[a]).filter(tm =>\r\n                timeline[a]\r\n                && timeline[a][tm]\r\n                && timeline[a][tm].type === \"timer\"\r\n                && !timeline[a][tm].deleted\r\n                &&\r\n                (\r\n                    Object.keys(selectedUsers).length === 0\r\n                    ||\r\n                    (\r\n                        Object.keys(selectedUsers).length > 0\r\n                        && Object.keys(selectedUsers).filter(su =>\r\n                            timeline[a]\r\n                            && timeline[a][tm]\r\n                            && timeline[a][tm].type\r\n                            && timeline[a][tm].type === \"timer\"\r\n                            && selectedUsers[su]\r\n                            && timeline[a][tm].user\r\n                            &&\r\n                            (\r\n                                (\r\n                                    timeline[a]\r\n                                    && timeline[a][tm]\r\n                                    && timeline[a][tm].user\r\n                                    && (\r\n                                        !timeline[a][tm]._toUser\r\n                                        || (\r\n                                            timeline[a][tm]._toUser\r\n                                            && !timeline[a][tm]._toUser[su]\r\n                                        )\r\n                                    )\r\n                                    && timeline[a][tm].user._id === su\r\n                                )\r\n                                ||\r\n                                (\r\n                                    timeline[a]\r\n                                    && timeline[a][tm]\r\n                                    && timeline[a][tm]._toUser\r\n                                    && timeline[a][tm]._toUser[su]\r\n                                    && timeline[a][tm]._toUser[su] !== timeline[a][tm].user._id\r\n                                )\r\n                            )\r\n                        ).length > 0\r\n                    )\r\n                )\r\n            ).forEach(ts => {\r\n                Object.keys(users).forEach(userId => {\r\n                    if (\r\n                        userId\r\n                        && timeline[a]\r\n                        && timeline[a][ts]\r\n                        && timeline[a][ts].type === \"timer\"\r\n                        && !timeline[a][ts].deleted\r\n                        && (\r\n                            parseInt(timeline[a][ts].ini) >= moment(`${startDate} 00:00:01`).unix(\"X\")\r\n                            || parseInt(timeline[a][ts].ini) === 0\r\n                        )\r\n                        &&\r\n                        (\r\n                            parseInt(timeline[a][ts].fin) <= moment(`${endDate} 23:59:59`).unix(\"X\")\r\n                        )\r\n                        && (\r\n                            (\r\n                                timeline[a][ts].user\r\n                                && (\r\n                                    timeline[a][ts].user._id === userId\r\n                                    && (\r\n                                        timeline[a][ts]._toUser\r\n                                        && Object.keys(timeline[a][ts]._toUser).length === 0\r\n                                    )\r\n                                )\r\n                            )\r\n                            || (\r\n                                timeline[a][ts]._toUser\r\n                                && Object.keys(timeline[a][ts]._toUser).length > 0\r\n                                && timeline[a][ts]._toUser[userId]\r\n                            )\r\n                        )\r\n                        // && (\r\n                        //     !timeline[a][ts]._toUser\r\n                        //     || timeline[a][ts]._toUser && Object.keys(timeline[a][ts]._toUser).length === 0\r\n                        //     || (\r\n                        //         timeline[a][ts]._toUser\r\n                        //         && timeline[a][ts]._toUser[userId]\r\n                        //     )\r\n                        // )\r\n                    ) {\r\n                        totalSeconds = totalSeconds + (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini))\r\n                        let time = (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini))\r\n\r\n                        if (timeSheet && timeSheet[userId] && timeSheet[userId].totalTimer) {\r\n                            time = parseInt(timeSheet[userId].totalTimer) + (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini))\r\n                        } else {\r\n                            time = parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini)\r\n                        }\r\n\r\n                        let diff = time\r\n                        let diffText = ``\r\n                        let diffTextMini = ``\r\n                        if (time < 60) {\r\n                            diffText = `${diff} ${translate(\"$__seconds\", 1)}`\r\n                            diffText = `${diff}s`\r\n                        } else if (time > 3600) {\r\n                            let hours = Math.trunc(diff / 3600)\r\n                            diff = diff - (hours * 3600)\r\n                            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\r\n                            diff = diff - (minutes * 60)\r\n                            let seconds = diff > 0 ? diff : 0\r\n                            diffText = `${hours} ${translate(\"$__hour\", 1)}${hours > 1 ? \"s\" : \"\"} ${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\r\n                            diffTextMini = `${hours}H ${minutes}M ${seconds} S`\r\n                        } else {\r\n                            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\r\n                            diff = diff - (minutes * 60)\r\n                            let seconds = diff > 0 ? diff : 0\r\n                            diffText = `${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\r\n                            diffTextMini = `${minutes}M ${seconds} S`\r\n                        }\r\n\r\n                        timeSheet = {\r\n                            ...timeSheet,\r\n                            [userId]: {\r\n                                ...timeSheet[userId] ? timeSheet[userId] : {},\r\n                                ...users[userId] ? users[userId] : {},\r\n                                ...timeSheet && timeSheet[userId] && timeSheet[userId].totalTimer ?\r\n                                    { totalTimer: parseInt(timeSheet[userId].totalTimer) + (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini)) }\r\n                                    : { totalTimer: parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini) },\r\n                                timerText: diffText,\r\n                                timerTextMini: diffTextMini,\r\n                                _times: {\r\n                                    ...timeSheet[userId] && timeSheet[userId]._times ? timeSheet[userId]._times : {},\r\n                                    [ts]: {\r\n                                        ...timeline[a][ts],\r\n                                        cardId: a\r\n                                    }\r\n                                }\r\n                            }\r\n                            // }\r\n                        }\r\n\r\n\r\n                    }\r\n\r\n                    totalSecondsRef.current = totalSeconds\r\n                    timeSheetTotal = timeSheetTotal + 1\r\n                })\r\n            })\r\n        })\r\n\r\n        usersRef.current = users\r\n        setTimeSheetData(timeSheet)\r\n        // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    }, [cards, loading, selectedUsers]);\r\n\r\n\r\n    const convertSecondsToText = (diff, mini = false) => {\r\n        let diffText = ``\r\n        let diffTextMini = ``\r\n        if (diff < 60) {\r\n            diffText = `${diff} ${translate(\"$__seconds\", 1)}`\r\n            diffText = `${diff}s`\r\n        } else if (diff > 3600) {\r\n            let hours = Math.trunc(diff / 3600)\r\n            diff = diff - (hours * 3600)\r\n            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\r\n            diff = diff - (minutes * 60)\r\n            let seconds = diff > 0 ? diff : 0\r\n            diffText = `${hours} ${translate(\"$__hour\", 1)}${hours > 1 ? \"s\" : \"\"} ${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\r\n            diffTextMini = `${hours}H ${minutes}M ${seconds} S`\r\n        } else {\r\n            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\r\n            diff = diff - (minutes * 60)\r\n            let seconds = diff > 0 ? diff : 0\r\n            diffText = `${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\r\n            diffTextMini = `${minutes}M ${seconds} S`\r\n        }\r\n        if (mini) return diffTextMini\r\n        return diffText\r\n    }\r\n\r\n\r\n\r\n\r\n\r\n    const TimeSheetData = (props) => {\r\n        return (\r\n            <div style={{ width: \"100%\", marginBottom: \"10px\", display: \"flex\", alignItems: \"center\" }}>\r\n                {props.data && props.data.name &&\r\n                    <React.Fragment>\r\n                        <div\r\n                            style={{ width: \"33px\" }}\r\n                        >\r\n                            <Tooltip\r\n                                title={props.data.name}\r\n                            >\r\n                                <Avatar alt={props.data.name} src={props.data.image || null} style={{ width: \"33px\", height: \"33px\" }}>\r\n                                    {props.data.name.substr(0, 1)}\r\n                                </Avatar>\r\n                            </Tooltip>\r\n                        </div>\r\n                        <div style={{ marginLeft: \"10px\", fontWeight: \"bold\", color: customApp(\"menu\"), width: \"33%\", minWidth: \"150px\" }}>{props.data.name}</div>\r\n                    </React.Fragment>\r\n                }\r\n                <div style={{ marginLeft: \"10px\", fontWeight: \"bold\", color: customApp(\"menu\") }}>{props.data.timerText}</div>\r\n            </div>\r\n        )\r\n    }\r\n\r\n    const selectUser = (pr) => {\r\n        if (selectedUsers[pr] && Object.keys(selectedUsers).filter(a => selectedUsers[a]).length <= 1) {\r\n            setSelectedUsers({})\r\n        } else {\r\n            setSelectedUsers({\r\n                ...selectedUsers,\r\n                [pr]: !selectedUsers[pr],\r\n            })\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div style={{ height: '100%', width: '100%' }}>\r\n            <ViewportChecker>\r\n                {(inViewport) => (\r\n                    <UiCard style={{ width: '100%', height: '100%', marginTop: '0px', overflow: \"scroll\" }}>\r\n                        {(props.edit && inViewport) ? <div style={{ width: '100%', height: '52px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n                            <Icon size={24} style={{ alignSelf: 'center', marginLeft: '20px', color: props.styles.color ? props.styles.color : 'grey', marginTop: '3px' }}>update</Icon>\r\n                            <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', marginTop: '2px', color: props.styles.color ? props.styles.color : 'grey', fontSize: '16px' }}>{translate(`$__timeSheet`, 1)}</p>\r\n                            <div onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\r\n                                onMouseLeave={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0)' }}>\r\n                                <Icon onClick={() => props.handleRemoveObject(props.id)} style={{ height: '25px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', cursor: 'pointer', position: 'absolute', right: '20px', top: '8px', border: '1px solid  #D3D3D3', padding: '14px' }}>\r\n                                    close\r\n                                </Icon>\r\n                            </div>\r\n                            <div onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\r\n                                onMouseLeave={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0)' }}>\r\n                                <Icon className='drag-handle' style={{ height: '25px', cursor: 'move', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', position: 'absolute', right: '62px', top: '8px', border: '1px solid  #D3D3D3', padding: '14px' }}>\r\n                                    open_with\r\n                                </Icon>\r\n                            </div>\r\n                        </div> :\r\n                            <HeaderWithIcon\r\n                                title={translate(`$__timeSheet`, 1)}\r\n                                icon={\"update\"}\r\n                                color={props.styles.color ? props.styles.color : 'grey'}\r\n                                style={{\r\n                                    background: props.styles.backgroundColor ? props.styles.backgroundColor : 'white',\r\n                                    padding: '12.4px',\r\n                                    borderRadius: '5px 5px 0px 0px ',\r\n                                    fontWeight: 'normal',\r\n                                    borderBottom: '1px solid #D3D3D3'\r\n                                }}\r\n                                customButtons={[\r\n                                    !exportTimers &&\r\n                                    {\r\n                                        title: \"$__timeSheetExport\",\r\n                                        icon: \"file_download\",\r\n                                        color: customApp(\"colorText\"),\r\n                                        onClick: () => {\r\n                                            setExport(!exportTimers)\r\n                                        },\r\n                                    },\r\n                                ]}\r\n                            />}\r\n                        {loading ?\r\n                            <div\r\n                                style={{\r\n                                    position: \"absolute\",\r\n                                    top: 0,\r\n                                    left: 0,\r\n                                    right: 0,\r\n                                    bottom: 0,\r\n                                    backgroundColor: \"rgba(250,250,250,0.7)\",\r\n                                    display: \"flex\",\r\n                                    justifyContent: \"center\",\r\n                                    alignItems: \"center\",\r\n                                    zIndex: 10\r\n                                }}\r\n                            >\r\n                                <PreLoader />\r\n                            </div>\r\n                            : <React.Fragment></React.Fragment>\r\n                        }\r\n                        {(exportTimers && inViewport) &&\r\n                            <div style={{ padding: \"15px\", border: '1px solid black' }}>\r\n                                <fieldset style={{ position: \"relative\", width: \"100%\", marginLeft: \"7px\", display: \"flex\", justifyContent: \"space-between\", marginBottom: \"14px\", marginTop: \"7px\" }}>\r\n                                    <legend>{translate(\"$__timeCourse\", 1)}</legend>\r\n                                    <TextField\r\n                                        label={translate(\"$__initialDate\", 1)}\r\n                                        variant={customApp(\"fieldVariant\", 1)}\r\n                                        name=\"startDate\"\r\n                                        style={{ marginRight: \"15px\" }}\r\n                                        InputLabelProps={{\r\n                                            shrink: true,\r\n                                        }}\r\n                                        type=\"date\"\r\n                                        inputProps={{\r\n                                            max: endDate ? endDate : null,\r\n                                        }}\r\n                                        InputProps={{\r\n                                            autoComplete: \"new-password\",\r\n                                            onChange: (d) => {\r\n                                                setStartDate(d.target.value)\r\n                                            },\r\n                                        }}\r\n                                        value={startDate}\r\n                                    />\r\n                                    <TextField\r\n                                        label={translate(\"$__endDate\", 1)}\r\n                                        variant={customApp(\"fieldVariant\")}\r\n                                        name=\"endDate\"\r\n                                        type=\"date\"\r\n                                        min={startDate ? startDate : null}\r\n                                        InputLabelProps={{\r\n                                            shrink: true,\r\n                                        }}\r\n                                        inputProps={{\r\n                                            min: startDate ? startDate : null,\r\n                                        }}\r\n                                        InputProps={{\r\n                                            autoComplete: \"new-password\",\r\n                                            onChange: (d) => {\r\n                                                setEndDate(d.target.value)\r\n                                            },\r\n                                        }}\r\n                                        value={endDate}\r\n                                    />\r\n\r\n                                </fieldset>\r\n                                {/* FILTER BY USER */}\r\n                                {(db.users && Object.keys(db.users).length > 0 && inViewport) &&\r\n                                    <Accordion style={{ width: \"100%\" }}>\r\n                                        <AccordionSummary\r\n                                            style={{ minWidth: \"100%\" }}\r\n                                            expandIcon={\r\n                                                <Icon>expand_more</Icon>\r\n                                            }\r\n                                            aria-controls=\"panel1a-content\"\r\n                                            id=\"panel1a-header\"\r\n                                        ><div style={{ color: customApp(\"color\"), fontSize: \"12px\" }}>\r\n                                                {translate(\"$__users\")}\r\n                                                <AvatarGroup max={6}>\r\n                                                    {Object.keys(selectedUsers).length > 0 && Object.keys(selectedUsers).map((a, i) => (\r\n                                                        <Tooltip\r\n                                                            title={db.users[a].name}\r\n                                                            key={i}\r\n                                                        >\r\n                                                            <Avatar alt={db.users[a].name} src={db.users[a].image || null} >\r\n                                                                {db.users[a].name.substr(0, 1)}\r\n                                                            </Avatar>\r\n                                                        </Tooltip>\r\n                                                    ))}\r\n                                                </AvatarGroup>\r\n                                            </div>\r\n                                        </AccordionSummary>\r\n                                        <AccordionDetails\r\n                                            style={{ minWidth: \"100%\" }}\r\n                                        >\r\n                                            <FormGroup>\r\n                                                {Object.keys(usersRef.current).map(pr => {\r\n                                                    return (\r\n                                                        db.users && db.users[pr] && db.users[pr]._id &&\r\n                                                        <React.Fragment key={pr}>\r\n                                                            <FormControlLabel\r\n                                                                key={pr}\r\n                                                                style={{ minWidth: \"100%\" }}\r\n                                                                control={\r\n                                                                    <React.Fragment>\r\n                                                                        <Avatar alt={db.users[pr].name.substr(0, 1)} src={db.users[pr].image || null} >\r\n                                                                            {db.users[pr].name.substr(0, 1)}\r\n                                                                        </Avatar>\r\n                                                                        <Checkbox\r\n                                                                            checked={selectedUsers && selectedUsers[pr] ? true : false}\r\n                                                                            onChange={() => {\r\n                                                                                selectUser(pr)\r\n                                                                            }}\r\n                                                                            color=\"default\"\r\n                                                                        />\r\n                                                                    </React.Fragment>\r\n                                                                }\r\n                                                                label={db.users[pr].name || db.users[pr].name}\r\n                                                            />\r\n                                                        </React.Fragment>\r\n                                                    )\r\n                                                }\r\n                                                )}\r\n                                            </FormGroup>\r\n                                        </AccordionDetails>\r\n                                    </Accordion>\r\n                                }\r\n                                <div style={{ display: \"flex\", justifyContent: \"center\", marginTop: \"7px\" }}>\r\n                                    <ExportTimer data={timeSheetData} />\r\n                                    <CustomButton\r\n                                        title={translate(\"$__closeFilter\")}\r\n                                        text={translate(\"$__closeFilter\")}\r\n                                        color={\"lightgrey\"}\r\n                                        textColor={\"lightgrey\"}\r\n                                        icon={\"cancel\"}\r\n                                        onClick={() => { setExport(!exportTimers) }}\r\n                                        size={\"25px\"}\r\n                                    />\r\n                                </div>\r\n                            </div>\r\n                        }\r\n                        <UiCardHeader style={{ height: \"333px\", position: 'relative', backgroundColor: '#f5f5f5' }}>\r\n                            {inViewport && <ResponsivePie\r\n                                data={[\r\n                                    ...Object.keys(timeSheetData).sort((a, b) => {\r\n                                        if (parseInt(timeSheetData[a].totalTimer) > parseInt(timeSheetData[b].totalTimer)) {\r\n                                            return -1\r\n                                        } else if (parseInt(timeSheetData[a].totalTimer) < parseInt(timeSheetData[b].totalTimer)) {\r\n                                            return 1\r\n                                        } else {\r\n                                            return 0\r\n                                        }\r\n                                    }).map((ts, i) => {\r\n                                        return {\r\n                                            id: timeSheetData[ts].name,\r\n                                            label: timeSheetData[ts].name,\r\n                                            value: timeSheetData[ts].totalTimer,\r\n                                            color: \"#929497\",\r\n                                            textMini: timeSheetData[ts].timerText,\r\n                                        }\r\n                                    }\r\n                                    )\r\n                                ]}\r\n                                valueFormat={value => {\r\n                                    convertSecondsToText(value, true)\r\n                                    return convertSecondsToText(value)\r\n                                }}\r\n                                enableArcLabels={false}\r\n                                colors={{ scheme: \"purpleRed_green\" }}\r\n                                activeOuterRadiusOffset={8}\r\n                                arcLabelsTextColor={{ from: \"color\", modifiers: [[\"brighter\", 3]] }}\r\n                                borderWidth={1}\r\n                                cornerRadius={3}\r\n                                enableArcLinkLabels={false}\r\n                                innerRadius={0.5}\r\n                                leavesOnly={true}\r\n                                theme={{\r\n                                    background: 'transparent'\r\n                                }}\r\n                                margin={{ top: 10, right: 0, bottom: 10, left: 0 }}\r\n                                padAngle={1.3}\r\n                                sortByValue={true}\r\n                            />}\r\n                            <div style={{\r\n                                width: \"100px\",\r\n                                wordWrap: \"break-word\",\r\n                                position: \"absolute\",\r\n                                top: \"50%\",\r\n                                left: \"calc(50% - 50px)\",\r\n                                fontWeight: \"bold\",\r\n                                color: customApp(\"menu\"),\r\n                                textAlign: \"center\",\r\n                            }}>\r\n                                {convertSecondsToText(totalSecondsRef.current, true)}\r\n                            </div>\r\n                        </UiCardHeader>\r\n                        {inViewport && <UiCardBody>\r\n                            <GridContainer>\r\n                                {Object.keys(timeSheetData).sort((a, b) => {\r\n                                    if (parseInt(timeSheetData[a].totalTimer) > parseInt(timeSheetData[b].totalTimer)) {\r\n                                        return -1\r\n                                    } else if (parseInt(timeSheetData[a].totalTimer) < parseInt(timeSheetData[b].totalTimer)) {\r\n                                        return 1\r\n                                    } else {\r\n                                        return 0\r\n                                    }\r\n                                }).map((ts, i) =>\r\n                                    <TimeSheetData data={timeSheetData[ts]} key={ts} />\r\n                                )}\r\n                                <TimeSheetData data={{ name: translate(\"$__total\"), timerText: convertSecondsToText(totalSecondsRef.current) }} />\r\n                            </GridContainer>\r\n                        </UiCardBody>}\r\n                        <div style={{\r\n                            color: \"#CCCCCC\",\r\n                            fontSize: \"12px\",\r\n                            padding: \"15px\",\r\n                            textAlign: \"center\"\r\n                        }}>\r\n                            {db.cards[nodeId] && db.cards[nodeId].type === 'plan' ?\r\n                                translate(\"$__timeSheetShowingAllTimesRegisteredInAllActivitiesOfPlan\")\r\n                                :\r\n                                translate(\"$__timeSheetShowingAllTimesRegisteredInActivityAndLinkedActivities\")\r\n                            }\r\n                        </div>\r\n                    </UiCard>\r\n                )}\r\n            </ViewportChecker>\r\n        </div>\r\n    );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n    cards: store.db.cards,\r\n    timeline: store.timeline\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n    bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps,\r\n    mapDispatchToProps\r\n)(Timesheet);"],"sourceRoot":""}