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/public_html/WC/static/js/3.c842e58a.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","_objectSpread","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","concat","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.c842e58a.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":""}