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.65aec2d1.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","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":"mGAAA,yRA6nBeA,sBARUC,IAAK,CAC1BC,MAAOD,EAAME,GAAGD,MAChBE,SAAUH,EAAMG,WAGOC,GACvBC,YAAmBC,EAAcF,GAEtBL,EAplBf,SAAmBQ,GACf,MAAM,GAAEL,EAAE,SAAEC,GAAaK,IAAWC,YAC7BC,EAAWC,GAAgBC,IAAMC,SAASC,IAAO,IAAIC,MAAQC,GAAG,qBAAqBC,SAAS,IAAM,KAAKC,OAAO,gBAChHC,EAASC,GAAcR,IAAMC,SAASC,IAAO,IAAIC,MAAQC,GAAG,qBAAqBE,OAAO,gBACxFG,EAAcC,GAAaV,IAAMC,UAAS,IAC1CU,EAAeC,GAAoBZ,IAAMC,SAAS,KAClDZ,EAAOwB,GAAYb,IAAMC,SAAS,KAClCa,EAASC,GAAcf,IAAMC,UAAS,IACtCe,EAAeC,GAAoBhB,mBAAS,IAE7CiB,EAAkBC,iBAAO,GACzBC,EAAWD,iBAAO,IAGxB,IAAIE,EAAQC,OAAOC,SAASC,KAAKC,MAAM,KACvCJ,EAAM,GAAKA,EAAM,GAAGK,QAAQ,IAAK,IACjC,IAAIC,EAASN,EAAM,GAEnBrB,IAAM4B,UAAU,KACZC,IACO,QAIR,IAEH7B,IAAM4B,UAAU,KACZE,KACD,CAACnC,EAAMoC,YAEV,MAAMD,EAAWE,UACb,IAAIC,QAAeC,YAAaP,GAChCd,EAASoB,IAGPJ,EAAOG,UACT,UACmBG,YACX,IACOxC,EACHyC,iBAAkB,uDAEtB,CACIC,IAAK,CAACV,GACNrC,GAAI,QACJgD,KAAM,QACNC,cAAc,KAGlBxB,GAAW,GAEjB,MAAOyB,GACLzB,GAAW,KAMnBa,oBAAU,KAEN,IAAIa,EAAY,GACZC,EAAQ,GACRC,EAAiB,EACjBC,EAAe,EAEnBC,OAAOC,KAAKzD,GAAO0D,OAAOC,GACtBzD,EAASyD,IAELH,OAAOC,KAAKvD,EAASyD,IAAID,OAAOE,GAA+B,UAAzB1D,EAASyD,GAAGC,GAAIX,MAAkBY,OAAS,GAEvFC,QAAQH,IACNH,OAAOC,KAAKvD,EAASyD,IAAID,OAAOE,GACH,UAAzB1D,EAASyD,GAAGC,GAAIX,OACZ/C,EAASyD,GAAGC,GAAIG,SACtBD,QAAQE,IAEF9D,EAASyD,GAAGK,GAAIC,SAAWT,OAAOC,KAAKvD,EAASyD,GAAGK,GAAIC,SAASJ,OAAS,EACzEL,OAAOC,KAAKvD,EAASyD,GAAGK,GAAIC,SAASH,QAAQI,IACzCb,EAAQ,IACDA,EACH,CAACa,GAAS,IACHhE,EAASyD,GAAGK,GAAIC,QAAQC,GAAUhE,EAASyD,GAAGK,GAAIC,QAAQC,GAAU,OAKnFb,EAAQ,IACDA,EACH,CAACnD,EAASyD,GAAGK,GAAIG,KAAKC,KAAM,IACrBlE,EAASyD,GAAGK,GAAIG,SAOnCX,OAAOC,KAAKvD,EAASyD,IAAID,OAAOE,GAC5B1D,EAASyD,IACNzD,EAASyD,GAAGC,IACa,UAAzB1D,EAASyD,GAAGC,GAAIX,OACf/C,EAASyD,GAAGC,GAAIG,UAGsB,IAAtCP,OAAOC,KAAKnC,GAAeuC,QAGvBL,OAAOC,KAAKnC,GAAeuC,OAAS,GACjCL,OAAOC,KAAKnC,GAAeoC,OAAOW,GACjCnE,EAASyD,IACNzD,EAASyD,GAAGC,IACZ1D,EAASyD,GAAGC,GAAIX,MACS,UAAzB/C,EAASyD,GAAGC,GAAIX,MAChB3B,EAAc+C,IACdnE,EAASyD,GAAGC,GAAIO,OAIXjE,EAASyD,IACNzD,EAASyD,GAAGC,IACZ1D,EAASyD,GAAGC,GAAIO,QAEdjE,EAASyD,GAAGC,GAAIK,SAEb/D,EAASyD,GAAGC,GAAIK,UACZ/D,EAASyD,GAAGC,GAAIK,QAAQI,KAGjCnE,EAASyD,GAAGC,GAAIO,KAAKC,MAAQC,GAIhCnE,EAASyD,IACNzD,EAASyD,GAAGC,IACZ1D,EAASyD,GAAGC,GAAIK,SAChB/D,EAASyD,GAAGC,GAAIK,QAAQI,IACxBnE,EAASyD,GAAGC,GAAIK,QAAQI,KAAQnE,EAASyD,GAAGC,GAAIO,KAAKC,MAGlEP,OAAS,IAGrBC,QAAQE,IACNR,OAAOC,KAAKJ,GAAOS,QAAQI,IACvB,GACIA,GACGhE,EAASyD,IACTzD,EAASyD,GAAGK,IACa,UAAzB9D,EAASyD,GAAGK,GAAIf,OACf/C,EAASyD,GAAGK,GAAID,UAEhBO,SAASpE,EAASyD,GAAGK,GAAIO,MAAQ1D,IAAO,GAAD2D,OAAI/D,EAAS,cAAagE,KAAK,MACjC,IAAlCH,SAASpE,EAASyD,GAAGK,GAAIO,OAI5BD,SAASpE,EAASyD,GAAGK,GAAIU,MAAQ7D,IAAO,GAAD2D,OAAItD,EAAO,cAAauD,KAAK,OAIhEvE,EAASyD,GAAGK,GAAIG,MAEZjE,EAASyD,GAAGK,GAAIG,KAAKC,MAAQF,GAEzBhE,EAASyD,GAAGK,GAAIC,SACmC,IAAhDT,OAAOC,KAAKvD,EAASyD,GAAGK,GAAIC,SAASJ,QAKhD3D,EAASyD,GAAGK,GAAIC,SACbT,OAAOC,KAAKvD,EAASyD,GAAGK,GAAIC,SAASJ,OAAS,GAC9C3D,EAASyD,GAAGK,GAAIC,QAAQC,IAWrC,CACEX,GAA+Be,SAASpE,EAASyD,GAAGK,GAAIU,KAAOJ,SAASpE,EAASyD,GAAGK,GAAIO,KACxF,IAAII,EAAQL,SAASpE,EAASyD,GAAGK,GAAIU,KAAOJ,SAASpE,EAASyD,GAAGK,GAAIO,KAGjEI,EADAvB,GAAaA,EAAUc,IAAWd,EAAUc,GAAQU,WAC7CN,SAASlB,EAAUc,GAAQU,aAAeN,SAASpE,EAASyD,GAAGK,GAAIU,KAAOJ,SAASpE,EAASyD,GAAGK,GAAIO,MAEnGD,SAASpE,EAASyD,GAAGK,GAAIU,KAAOJ,SAASpE,EAASyD,GAAGK,GAAIO,KAGpE,IAAIM,EAAOF,EACPG,EAAQ,GACRC,EAAY,GAChB,GAAIJ,EAAO,GACPG,EAAQ,GAAAN,OAAMK,EAAI,KAAAL,OAAIQ,YAAU,aAAc,IAC9CF,EAAQ,GAAAN,OAAMK,EAAI,UACf,GAAIF,EAAO,KAAM,CACpB,IAAIM,EAAQC,KAAKC,MAAMN,EAAO,MAC9BA,GAAuB,KAARI,EACf,IAAIG,EAAUF,KAAKC,MAAMN,EAAO,IAAM,EAAIK,KAAKC,MAAMN,EAAO,IAAM,EAClEA,GAAyB,GAAVO,EACf,IAAIC,EAAUR,EAAO,EAAIA,EAAO,EAChCC,EAAQ,GAAAN,OAAMS,EAAK,KAAAT,OAAIQ,YAAU,UAAW,IAAER,OAAGS,EAAQ,EAAI,IAAM,GAAE,KAAAT,OAAIY,EAAO,KAAAZ,OAAIQ,YAAU,aAAc,GAAE,KAAAR,OAAIa,EAAU,EAAC,GAAAb,OAAMa,EAAO,KAAAb,OAAIQ,YAAU,aAAc,IAAE,IACxKD,EAAY,GAAAP,OAAMS,EAAK,MAAAT,OAAKY,EAAO,MAAAZ,OAAKa,EAAO,UAC5C,CACH,IAAID,EAAUF,KAAKC,MAAMN,EAAO,IAAM,EAAIK,KAAKC,MAAMN,EAAO,IAAM,EAClEA,GAAyB,GAAVO,EACf,IAAIC,EAAUR,EAAO,EAAIA,EAAO,EAChCC,EAAQ,GAAAN,OAAMY,EAAO,KAAAZ,OAAIQ,YAAU,aAAc,GAAE,KAAAR,OAAIa,EAAU,EAAC,GAAAb,OAAMa,EAAO,KAAAb,OAAIQ,YAAU,aAAc,IAAE,IAC7GD,EAAY,GAAAP,OAAMY,EAAO,MAAAZ,OAAKa,EAAO,MAGzCjC,EAAY,IACLA,EACH,CAACc,GAAS,IACHd,EAAUc,GAAUd,EAAUc,GAAU,MACxCb,EAAMa,GAAUb,EAAMa,GAAU,MAChCd,GAAaA,EAAUc,IAAWd,EAAUc,GAAQU,WACnD,CAAEA,WAAYN,SAASlB,EAAUc,GAAQU,aAAeN,SAASpE,EAASyD,GAAGK,GAAIU,KAAOJ,SAASpE,EAASyD,GAAGK,GAAIO,OAC/G,CAAEK,WAAYN,SAASpE,EAASyD,GAAGK,GAAIU,KAAOJ,SAASpE,EAASyD,GAAGK,GAAIO,MAC7Ee,UAAWR,EACXS,cAAeR,EACfS,OAAQ,IACDpC,EAAUc,IAAWd,EAAUc,GAAQsB,OAASpC,EAAUc,GAAQsB,OAAS,GAC9E,CAACxB,GAAK,IACC9D,EAASyD,GAAGK,GACfyB,OAAQ9B,MAU5B9B,EAAgB6D,QAAUnC,EAC1BD,GAAkC,QAK9CvB,EAAS2D,QAAUrC,EACnBzB,EAAiBwB,IAElB,CAACpD,EAAOyB,EAASH,IAGpB,MAAMqE,EAAuB,SAACd,GAAwB,IAAlBe,EAAIC,UAAAhC,OAAA,QAAAiC,IAAAD,UAAA,IAAAA,UAAA,GAChCf,EAAQ,GACRC,EAAY,GAChB,GAAIF,EAAO,GACPC,EAAQ,GAAAN,OAAMK,EAAI,KAAAL,OAAIQ,YAAU,aAAc,IAC9CF,EAAQ,GAAAN,OAAMK,EAAI,UACf,GAAIA,EAAO,KAAM,CACpB,IAAII,EAAQC,KAAKC,MAAMN,EAAO,MAC9BA,GAAuB,KAARI,EACf,IAAIG,EAAUF,KAAKC,MAAMN,EAAO,IAAM,EAAIK,KAAKC,MAAMN,EAAO,IAAM,EAE9DQ,GADJR,GAAyB,GAAVO,GACM,EAAIP,EAAO,EAChCC,EAAQ,GAAAN,OAAMS,EAAK,KAAAT,OAAIQ,YAAU,UAAW,IAAER,OAAGS,EAAQ,EAAI,IAAM,GAAE,KAAAT,OAAIY,EAAO,KAAAZ,OAAIQ,YAAU,aAAc,GAAE,KAAAR,OAAIa,EAAU,EAAC,GAAAb,OAAMa,EAAO,KAAAb,OAAIQ,YAAU,aAAc,IAAE,IACxKD,EAAY,GAAAP,OAAMS,EAAK,MAAAT,OAAKY,EAAO,MAAAZ,OAAKa,EAAO,UAC5C,CACH,IAAID,EAAUF,KAAKC,MAAMN,EAAO,IAAM,EAAIK,KAAKC,MAAMN,EAAO,IAAM,EAE9DQ,GADJR,GAAyB,GAAVO,GACM,EAAIP,EAAO,EAChCC,EAAQ,GAAAN,OAAMY,EAAO,KAAAZ,OAAIQ,YAAU,aAAc,GAAE,KAAAR,OAAIa,EAAU,EAAC,GAAAb,OAAMa,EAAO,KAAAb,OAAIQ,YAAU,aAAc,IAAE,IAC7GD,EAAY,GAAAP,OAAMY,EAAO,MAAAZ,OAAKa,EAAO,MAEzC,OAAIO,EAAab,EACVD,GAOLiB,EAAiBzF,GAEfK,IAAAqF,cAAA,OAAKC,MAAO,CAAEC,MAAO,OAAQC,aAAc,OAAQC,QAAS,OAAQC,WAAY,WAC3E/F,EAAMgG,MAAQhG,EAAMgG,KAAKC,MACtB5F,IAAAqF,cAACrF,IAAM6F,SAAQ,KACX7F,IAAAqF,cAAA,OACIC,MAAO,CAAEC,MAAO,SAEhBvF,IAAAqF,cAACS,IAAO,CACJC,MAAOpG,EAAMgG,KAAKC,MAElB5F,IAAAqF,cAACW,IAAM,CAACC,IAAKtG,EAAMgG,KAAKC,KAAMM,IAAKvG,EAAMgG,KAAKQ,OAAS,KAAMb,MAAO,CAAEC,MAAO,OAAQa,OAAQ,SACxFzG,EAAMgG,KAAKC,KAAKS,OAAO,EAAG,MAIvCrG,IAAAqF,cAAA,OAAKC,MAAO,CAAEgB,WAAY,OAAQC,WAAY,OAAQC,MAAOC,YAAU,QAASlB,MAAO,MAAOmB,SAAU,UAAY/G,EAAMgG,KAAKC,OAGvI5F,IAAAqF,cAAA,OAAKC,MAAO,CAAEgB,WAAY,OAAQC,WAAY,OAAQC,MAAOC,YAAU,UAAY9G,EAAMgG,KAAKhB,YAgB1G,OACI3E,IAAAqF,cAAA,OAAKC,MAAO,CAAEc,OAAQ,OAAQb,MAAO,SACjCvF,IAAAqF,cAACsB,IAAe,KACVC,GACE5G,IAAAqF,cAACwB,IAAM,CAACvB,MAAO,CAAEC,MAAO,OAAQa,OAAQ,OAAQU,UAAW,MAAOC,SAAU,WACtEpH,EAAMqH,MAAQJ,EAAc5G,IAAAqF,cAAA,OAAKC,MAAO,CAAEC,MAAO,OAAQa,OAAQ,OAAQX,QAAS,OAAQwB,aAAc,oBAAqBC,gBAAiBvH,EAAMwH,OAAOD,gBAAkBvH,EAAMwH,OAAOD,gBAAkB,UAC1MlH,IAAAqF,cAAC+B,IAAI,CAACC,KAAM,GAAI/B,MAAO,CAAEgC,UAAW,SAAUhB,WAAY,OAAQE,MAAO7G,EAAMwH,OAAOX,MAAQ7G,EAAMwH,OAAOX,MAAQ,OAAQM,UAAW,QAAS,UAC/I9G,IAAAqF,cAAA,KAAGC,MAAO,CAAEiC,OAAQ,MAAOjB,WAAY,MAAOgB,UAAW,SAAUf,WAAY,OAAQO,UAAW,MAAON,MAAO7G,EAAMwH,OAAOX,MAAQ7G,EAAMwH,OAAOX,MAAQ,OAAQgB,SAAU,SAAWnD,YAAU,eAAgB,IACjNrE,IAAAqF,cAAA,OAAKoC,aAAejF,IAAQA,EAAEkF,OAAOpC,MAAM4B,gBAAkB,uBACzDS,aAAenF,IAAQA,EAAEkF,OAAOpC,MAAM4B,gBAAkB,qBACxDlH,IAAAqF,cAAC+B,IAAI,CAACQ,QAASA,IAAMjI,EAAMkI,mBAAmBlI,EAAMmI,IAAKxC,MAAO,CAAEc,OAAQ,OAAQI,MAAO7G,EAAMwH,OAAOX,MAAQ7G,EAAMwH,OAAOX,MAAQ,sBAAuBuB,OAAQ,UAAWC,SAAU,WAAYC,MAAO,OAAQC,IAAK,MAAOC,OAAQ,qBAAsBC,QAAS,SAAU,UAInRpI,IAAAqF,cAAA,OAAKoC,aAAejF,IAAQA,EAAEkF,OAAOpC,MAAM4B,gBAAkB,uBACzDS,aAAenF,IAAQA,EAAEkF,OAAOpC,MAAM4B,gBAAkB,qBACxDlH,IAAAqF,cAAC+B,IAAI,CAACiB,UAAU,cAAc/C,MAAO,CAAEc,OAAQ,OAAQ2B,OAAQ,OAAQvB,MAAO7G,EAAMwH,OAAOX,MAAQ7G,EAAMwH,OAAOX,MAAQ,sBAAuBwB,SAAU,WAAYC,MAAO,OAAQC,IAAK,MAAOC,OAAQ,qBAAsBC,QAAS,SAAU,eAKrPpI,IAAAqF,cAACiD,IAAc,CACXvC,MAAO1B,YAAU,eAAgB,GACjCkE,KAAM,SACN/B,MAAO7G,EAAMwH,OAAOX,MAAQ7G,EAAMwH,OAAOX,MAAQ,OACjDlB,MAAO,CACHkD,WAAY7I,EAAMwH,OAAOD,gBAAkBvH,EAAMwH,OAAOD,gBAAkB,QAC1EkB,QAAS,SACTK,aAAc,mBACdlC,WAAY,SACZU,aAAc,qBAElByB,cAAe,EACVjI,GACD,CACIsF,MAAO,qBACPwC,KAAM,gBACN/B,MAAOC,YAAU,aACjBmB,QAASA,KACLlH,GAAWD,QAK9BK,EACGd,IAAAqF,cAAA,OACIC,MAAO,CACH0C,SAAU,WACVE,IAAK,EACLS,KAAM,EACNV,MAAO,EACPW,OAAQ,EACR1B,gBAAiB,wBACjBzB,QAAS,OACToD,eAAgB,SAChBnD,WAAY,SACZoD,OAAQ,KAGZ9I,IAAAqF,cAAC0D,IAAS,OAEZ/I,IAAAqF,cAACrF,IAAM6F,SAAQ,MAEnBpF,GAAgBmG,GACd5G,IAAAqF,cAAA,OAAKC,MAAO,CAAE8C,QAAS,OAAQD,OAAQ,oBACnCnI,IAAAqF,cAAA,YAAUC,MAAO,CAAE0C,SAAU,WAAYzC,MAAO,OAAQe,WAAY,MAAOb,QAAS,OAAQoD,eAAgB,gBAAiBrD,aAAc,OAAQsB,UAAW,QAC1J9G,IAAAqF,cAAA,cAAShB,YAAU,gBAAiB,IACpCrE,IAAAqF,cAAC2D,IAAS,CACNC,MAAO5E,YAAU,iBAAkB,GACnC6E,QAASzC,YAAU,eAAgB,GACnCb,KAAK,YACLN,MAAO,CAAE6D,YAAa,QACtBC,gBAAiB,CACbC,QAAQ,GAEZ/G,KAAK,OACLgH,WAAY,CACRC,IAAKhJ,GAAoB,MAE7BiJ,WAAY,CACRC,aAAc,eACdC,SAAWC,IACP5J,EAAa4J,EAAEjC,OAAOkC,SAG9BA,MAAO9J,IAEXE,IAAAqF,cAAC2D,IAAS,CACNC,MAAO5E,YAAU,aAAc,GAC/B6E,QAASzC,YAAU,gBACnBb,KAAK,UACLtD,KAAK,OACLuH,IAAK/J,GAAwB,KAC7BsJ,gBAAiB,CACbC,QAAQ,GAEZC,WAAY,CACRO,IAAK/J,GAAwB,MAEjC0J,WAAY,CACRC,aAAc,eACdC,SAAWC,IACPnJ,EAAWmJ,EAAEjC,OAAOkC,SAG5BA,MAAOrJ,KAKbjB,EAAGoD,OAASG,OAAOC,KAAKxD,EAAGoD,OAAOQ,OAAS,GAAK0D,GAC9C5G,IAAAqF,cAACyE,IAAS,CAACxE,MAAO,CAAEC,MAAO,SACvBvF,IAAAqF,cAAC0E,IAAgB,CACbzE,MAAO,CAAEoB,SAAU,QACnBsD,WACIhK,IAAAqF,cAAC+B,IAAI,KAAC,eAEV6C,gBAAc,kBACdnC,GAAG,kBACN9H,IAAAqF,cAAA,OAAKC,MAAO,CAAEkB,MAAOC,YAAU,SAAUe,SAAU,SAC3CnD,YAAU,YACXrE,IAAAqF,cAAC6E,IAAW,CAACX,IAAK,GACb1G,OAAOC,KAAKnC,GAAeuC,OAAS,GAAKL,OAAOC,KAAKnC,GAAewJ,IAAI,CAACnH,EAAGoH,IACzEpK,IAAAqF,cAACS,IAAO,CACJC,MAAOzG,EAAGoD,MAAMM,GAAG4C,KACnByE,IAAKD,GAELpK,IAAAqF,cAACW,IAAM,CAACC,IAAK3G,EAAGoD,MAAMM,GAAG4C,KAAMM,IAAK5G,EAAGoD,MAAMM,GAAGmD,OAAS,MACpD7G,EAAGoD,MAAMM,GAAG4C,KAAKS,OAAO,EAAG,SAOpDrG,IAAAqF,cAACiF,IAAgB,CACbhF,MAAO,CAAEoB,SAAU,SAEnB1G,IAAAqF,cAACkF,IAAS,KACL1H,OAAOC,KAAK1B,EAAS2D,SAASoF,IAAIK,GAE3BlL,EAAGoD,OAASpD,EAAGoD,MAAM8H,IAAOlL,EAAGoD,MAAM8H,GAAI/G,KACzCzD,IAAAqF,cAACrF,IAAM6F,SAAQ,CAACwE,IAAKG,GACjBxK,IAAAqF,cAACoF,IAAgB,CACbJ,IAAKG,EACLlF,MAAO,CAAEoB,SAAU,QACnBgE,QACI1K,IAAAqF,cAACrF,IAAM6F,SAAQ,KACX7F,IAAAqF,cAACW,IAAM,CAACC,IAAK3G,EAAGoD,MAAM8H,GAAI5E,KAAKS,OAAO,EAAG,GAAIH,IAAK5G,EAAGoD,MAAM8H,GAAIrE,OAAS,MACnE7G,EAAGoD,MAAM8H,GAAI5E,KAAKS,OAAO,EAAG,IAEjCrG,IAAAqF,cAACsF,IAAQ,CACLC,WAASjK,IAAiBA,EAAc6J,IACxCd,SAAUA,KApK9Dc,KACZ7J,EAAc6J,IAAO3H,OAAOC,KAAKnC,GAAeoC,OAAOC,GAAKrC,EAAcqC,IAAIE,QAAU,EACxFtC,EAAiB,IAEjBA,EAAiB,IACVD,EACH,CAAC6J,IAAM7J,EAAc6J,MA+J2CK,CAAWL,IAEfhE,MAAM,aAIlByC,MAAO3J,EAAGoD,MAAM8H,GAAI5E,MAAQtG,EAAGoD,MAAM8H,GAAI5E,YAUzE5F,IAAAqF,cAAA,OAAKC,MAAO,CAAEG,QAAS,OAAQoD,eAAgB,SAAU/B,UAAW,QAChE9G,IAAAqF,cAACyF,IAAW,CAACnF,KAAM3E,IACnBhB,IAAAqF,cAAC0F,IAAY,CACThF,MAAO1B,YAAU,kBACjB2G,KAAM3G,YAAU,kBAChBmC,MAAO,YACPyE,UAAW,YACX1C,KAAM,SACNX,QAASA,KAAQlH,GAAWD,IAC5B4G,KAAM,WAKtBrH,IAAAqF,cAAC6F,IAAY,CAAC5F,MAAO,CAAEc,OAAQ,QAAS4B,SAAU,WAAYd,gBAAiB,YAC1EN,GAAc5G,IAAAqF,cAAC8F,IAAa,CACzBxF,KAAM,IACC9C,OAAOC,KAAK9B,GAAeoK,KAAK,CAACpI,EAAGqI,IAC/B1H,SAAS3C,EAAcgC,GAAGiB,YAAcN,SAAS3C,EAAcqK,GAAGpH,aAC1D,EACDN,SAAS3C,EAAcgC,GAAGiB,YAAcN,SAAS3C,EAAcqK,GAAGpH,YAClE,EAEA,GAEZkG,IAAI,CAAC9G,EAAI+G,KACD,CACHtC,GAAI9G,EAAcqC,GAAIuC,KACtBqD,MAAOjI,EAAcqC,GAAIuC,KACzBgE,MAAO5I,EAAcqC,GAAIY,WACzBuC,MAAO,UACP8E,SAAUtK,EAAcqC,GAAIsB,cAKxC4G,YAAa3B,IACT5E,EAAqB4E,GAAO,GACrB5E,EAAqB4E,IAEhC4B,iBAAiB,EACjBC,OAAQ,CAAEC,OAAQ,mBAClBC,wBAAyB,EACzBC,mBAAoB,CAAEC,KAAM,QAASC,UAAW,CAAC,CAAC,WAAY,KAC9DC,YAAa,EACbC,aAAc,EACdC,qBAAqB,EACrBC,YAAa,GACbC,YAAY,EACZC,MAAO,CACH5D,WAAY,eAEhBjB,OAAQ,CAAEW,IAAK,GAAID,MAAO,EAAGW,OAAQ,GAAID,KAAM,GAC/C0D,SAAU,IACVC,aAAa,IAEjBtM,IAAAqF,cAAA,OAAKC,MAAO,CACRC,MAAO,QACPgH,SAAU,aACVvE,SAAU,WACVE,IAAK,MACLS,KAAM,mBACNpC,WAAY,OACZC,MAAOC,YAAU,QACjB+F,UAAW,WAEVxH,EAAqB9D,EAAgB6D,SAAS,KAGtD6B,GAAc5G,IAAAqF,cAACoH,IAAU,KACtBzM,IAAAqF,cAACqH,IAAa,KACT7J,OAAOC,KAAK9B,GAAeoK,KAAK,CAACpI,EAAGqI,IAC7B1H,SAAS3C,EAAcgC,GAAGiB,YAAcN,SAAS3C,EAAcqK,GAAGpH,aAC1D,EACDN,SAAS3C,EAAcgC,GAAGiB,YAAcN,SAAS3C,EAAcqK,GAAGpH,YAClE,EAEA,GAEZkG,IAAI,CAAC9G,EAAI+G,IACRpK,IAAAqF,cAACD,EAAa,CAACO,KAAM3E,EAAcqC,GAAKgH,IAAKhH,KAEjDrD,IAAAqF,cAACD,EAAa,CAACO,KAAM,CAAEC,KAAMvB,YAAU,YAAaM,UAAWK,EAAqB9D,EAAgB6D,cAG5G/E,IAAAqF,cAAA,OAAKC,MAAO,CACRkB,MAAO,UACPgB,SAAU,OACVY,QAAS,OACToE,UAAW,WAEVlN,EAAGD,MAAMsC,IAAqC,SAA1BrC,EAAGD,MAAMsC,GAAQW,KAClC+B,YAAU,8DAEVA,YAAU","file":"static/js/3.65aec2d1.chunk.js","sourcesContent":["import React, { useState, useEffect, useRef } from \"react\";\nimport moment from \"moment-timezone\";\nimport { ResponsivePie } from \"@nivo/pie\";\n\n//REDUX\nimport { connect } from \"react-redux\"\nimport { bindActionCreators } from \"redux\"\nimport * as reduxActions from \"store/actions\"\nimport reduxStore from \"store/\"\n\n//COMPONENTS\nimport Checkbox from \"components/Checkbox\"\nimport CustomButton from \"components/Buttons/custom\"\nimport ExportTimer from \"components/Timer/exportAll\"\nimport GridContainer from \"components/Grid/GridContainer\"\nimport HeaderWithIcon from \"components/Header/withIcon\"\nimport Icon from \"components/Icon\"\nimport TextField from \"components/TextField\"\nimport UiCard from \"components/Card/Card\"\nimport UiCardBody from \"components/Card/CardBody\"\nimport UiCardHeader from \"components/Card/CardHeader\"\nimport PreLoader from \"components/PreLoader\"\nimport ViewportChecker from \"componentsV3/ViewerportCheck/ViewrportCheck\";\n\n//@MATERIAL\nimport Accordion from \"@material-ui/core/Accordion\"\nimport AccordionDetails from \"@material-ui/core/AccordionDetails\"\nimport AccordionSummary from \"@material-ui/core/AccordionSummary\"\nimport Avatar from \"@material-ui/core/Avatar\"\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\"\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\"\nimport FormGroup from \"@material-ui/core/FormGroup\"\nimport Tooltip from \"@material-ui/core/Tooltip\"\n\n//FUNCTIONS\nimport { translate, customApp } from \"functions\"\nimport { loadTimeline } from \"functions/chat\"\nimport { getChildrens } from \"functions/cards\"\n\n\n\nfunction Timesheet(props) {\n    const { db, timeline } = reduxStore.getState()\n    const [startDate, setStartDate] = React.useState(moment(new Date()).tz(\"America/Sao_Paulo\").subtract(8000, \"d\").format(\"YYYY-MM-DD\"))\n    const [endDate, setEndDate] = React.useState(moment(new Date()).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\"))\n    const [exportTimers, setExport] = React.useState(false)\n    const [selectedUsers, setSelectedUsers] = React.useState({})\n    const [cards, setCards] = React.useState({})\n    const [loading, setLoading] = React.useState(true)\n    const [timeSheetData, setTimeSheetData] = useState({})\n\n    const totalSecondsRef = useRef(0)\n    const usersRef = useRef({})\n\n\n    let hashs = window.location.hash.split(\"/\")\n    hashs[0] = hashs[0].replace('#', '')\n    let nodeId = hashs[0]\n\n    React.useEffect(() => {\n        init()\n        return () => {\n\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n    React.useEffect(() => {\n        iniCards()\n    }, [props.planCards])// eslint-disable-line react-hooks/exhaustive-deps\n\n    const iniCards = async () => {\n        let ncards = await getChildrens(nodeId)\n        setCards(ncards)\n    }\n\n    const init = async () => {\n        try {\n            let lt = await loadTimeline(\n                {\n                    ...props,\n                    fnIdentification: \"StrategyAndPlans/Dashboard/Widgers/timeSheet/init()\"\n                },\n                {\n                    ids: [nodeId],\n                    db: \"cards\",\n                    type: \"timer\",\n                    reqChildrens: true\n                })\n            if (lt) {\n                setLoading(false)\n            }\n        } catch (e) {\n            setLoading(false)\n        }\n    }\n\n\n\n    useEffect(() => {\n\n        let timeSheet = {}\n        let users = {}\n        let timeSheetTotal = 0\n        let totalSeconds = 0\n\n        Object.keys(cards).filter(a =>\n            timeline[a]\n            && (\n                Object.keys(timeline[a]).filter(tm => timeline[a][tm].type === \"timer\").length > 0\n            )\n        ).forEach(a => {\n            Object.keys(timeline[a]).filter(tm =>\n                timeline[a][tm].type === \"timer\"\n                && !timeline[a][tm].deleted\n            ).forEach(ts => {\n\n                if (timeline[a][ts]._toUser && Object.keys(timeline[a][ts]._toUser).length > 0) {\n                    Object.keys(timeline[a][ts]._toUser).forEach(userId => {\n                        users = {\n                            ...users,\n                            [userId]: {\n                                ...timeline[a][ts]._toUser[userId] ? timeline[a][ts]._toUser[userId] : {},\n                            }\n                        }\n                    })\n                } else {\n                    users = {\n                        ...users,\n                        [timeline[a][ts].user._id]: {\n                            ...timeline[a][ts].user,\n                        }\n                    }\n                }\n\n            })\n\n            Object.keys(timeline[a]).filter(tm =>\n                timeline[a]\n                && timeline[a][tm]\n                && timeline[a][tm].type === \"timer\"\n                && !timeline[a][tm].deleted\n                &&\n                (\n                    Object.keys(selectedUsers).length === 0\n                    ||\n                    (\n                        Object.keys(selectedUsers).length > 0\n                        && Object.keys(selectedUsers).filter(su =>\n                            timeline[a]\n                            && timeline[a][tm]\n                            && timeline[a][tm].type\n                            && timeline[a][tm].type === \"timer\"\n                            && selectedUsers[su]\n                            && timeline[a][tm].user\n                            &&\n                            (\n                                (\n                                    timeline[a]\n                                    && timeline[a][tm]\n                                    && timeline[a][tm].user\n                                    && (\n                                        !timeline[a][tm]._toUser\n                                        || (\n                                            timeline[a][tm]._toUser\n                                            && !timeline[a][tm]._toUser[su]\n                                        )\n                                    )\n                                    && timeline[a][tm].user._id === su\n                                )\n                                ||\n                                (\n                                    timeline[a]\n                                    && timeline[a][tm]\n                                    && timeline[a][tm]._toUser\n                                    && timeline[a][tm]._toUser[su]\n                                    && timeline[a][tm]._toUser[su] !== timeline[a][tm].user._id\n                                )\n                            )\n                        ).length > 0\n                    )\n                )\n            ).forEach(ts => {\n                Object.keys(users).forEach(userId => {\n                    if (\n                        userId\n                        && timeline[a]\n                        && timeline[a][ts]\n                        && timeline[a][ts].type === \"timer\"\n                        && !timeline[a][ts].deleted\n                        && (\n                            parseInt(timeline[a][ts].ini) >= moment(`${startDate} 00:00:01`).unix(\"X\")\n                            || parseInt(timeline[a][ts].ini) === 0\n                        )\n                        &&\n                        (\n                            parseInt(timeline[a][ts].fin) <= moment(`${endDate} 23:59:59`).unix(\"X\")\n                        )\n                        && (\n                            (\n                                timeline[a][ts].user\n                                && (\n                                    timeline[a][ts].user._id === userId\n                                    && (\n                                        timeline[a][ts]._toUser\n                                        && Object.keys(timeline[a][ts]._toUser).length === 0\n                                    )\n                                )\n                            )\n                            || (\n                                timeline[a][ts]._toUser\n                                && Object.keys(timeline[a][ts]._toUser).length > 0\n                                && timeline[a][ts]._toUser[userId]\n                            )\n                        )\n                        // && (\n                        //     !timeline[a][ts]._toUser\n                        //     || timeline[a][ts]._toUser && Object.keys(timeline[a][ts]._toUser).length === 0\n                        //     || (\n                        //         timeline[a][ts]._toUser\n                        //         && timeline[a][ts]._toUser[userId]\n                        //     )\n                        // )\n                    ) {\n                        totalSeconds = totalSeconds + (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini))\n                        let time = (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini))\n\n                        if (timeSheet && timeSheet[userId] && timeSheet[userId].totalTimer) {\n                            time = parseInt(timeSheet[userId].totalTimer) + (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini))\n                        } else {\n                            time = parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini)\n                        }\n\n                        let diff = time\n                        let diffText = ``\n                        let diffTextMini = ``\n                        if (time < 60) {\n                            diffText = `${diff} ${translate(\"$__seconds\", 1)}`\n                            diffText = `${diff}s`\n                        } else if (time > 3600) {\n                            let hours = Math.trunc(diff / 3600)\n                            diff = diff - (hours * 3600)\n                            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\n                            diff = diff - (minutes * 60)\n                            let seconds = diff > 0 ? diff : 0\n                            diffText = `${hours} ${translate(\"$__hour\", 1)}${hours > 1 ? \"s\" : \"\"} ${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\n                            diffTextMini = `${hours}H ${minutes}M ${seconds} S`\n                        } else {\n                            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\n                            diff = diff - (minutes * 60)\n                            let seconds = diff > 0 ? diff : 0\n                            diffText = `${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\n                            diffTextMini = `${minutes}M ${seconds} S`\n                        }\n\n                        timeSheet = {\n                            ...timeSheet,\n                            [userId]: {\n                                ...timeSheet[userId] ? timeSheet[userId] : {},\n                                ...users[userId] ? users[userId] : {},\n                                ...timeSheet && timeSheet[userId] && timeSheet[userId].totalTimer ?\n                                    { totalTimer: parseInt(timeSheet[userId].totalTimer) + (parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini)) }\n                                    : { totalTimer: parseInt(timeline[a][ts].fin) - parseInt(timeline[a][ts].ini) },\n                                timerText: diffText,\n                                timerTextMini: diffTextMini,\n                                _times: {\n                                    ...timeSheet[userId] && timeSheet[userId]._times ? timeSheet[userId]._times : {},\n                                    [ts]: {\n                                        ...timeline[a][ts],\n                                        cardId: a\n                                    }\n                                }\n                            }\n                            // }\n                        }\n\n\n                    }\n\n                    totalSecondsRef.current = totalSeconds\n                    timeSheetTotal = timeSheetTotal + 1\n                })\n            })\n        })\n\n        usersRef.current = users\n        setTimeSheetData(timeSheet)\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [cards, loading, selectedUsers]);\n\n\n    const convertSecondsToText = (diff, mini = false) => {\n        let diffText = ``\n        let diffTextMini = ``\n        if (diff < 60) {\n            diffText = `${diff} ${translate(\"$__seconds\", 1)}`\n            diffText = `${diff}s`\n        } else if (diff > 3600) {\n            let hours = Math.trunc(diff / 3600)\n            diff = diff - (hours * 3600)\n            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\n            diff = diff - (minutes * 60)\n            let seconds = diff > 0 ? diff : 0\n            diffText = `${hours} ${translate(\"$__hour\", 1)}${hours > 1 ? \"s\" : \"\"} ${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\n            diffTextMini = `${hours}H ${minutes}M ${seconds} S`\n        } else {\n            let minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\n            diff = diff - (minutes * 60)\n            let seconds = diff > 0 ? diff : 0\n            diffText = `${minutes} ${translate(\"$__minutes\", 1)} ${seconds > 0 ? `${seconds} ${translate(\"$__seconds\", 1)}` : ``}`\n            diffTextMini = `${minutes}M ${seconds} S`\n        }\n        if (mini) return diffTextMini\n        return diffText\n    }\n\n\n\n\n\n    const TimeSheetData = (props) => {\n        return (\n            <div style={{ width: \"100%\", marginBottom: \"10px\", display: \"flex\", alignItems: \"center\" }}>\n                {props.data && props.data.name &&\n                    <React.Fragment>\n                        <div\n                            style={{ width: \"33px\" }}\n                        >\n                            <Tooltip\n                                title={props.data.name}\n                            >\n                                <Avatar alt={props.data.name} src={props.data.image || null} style={{ width: \"33px\", height: \"33px\" }}>\n                                    {props.data.name.substr(0, 1)}\n                                </Avatar>\n                            </Tooltip>\n                        </div>\n                        <div style={{ marginLeft: \"10px\", fontWeight: \"bold\", color: customApp(\"menu\"), width: \"33%\", minWidth: \"150px\" }}>{props.data.name}</div>\n                    </React.Fragment>\n                }\n                <div style={{ marginLeft: \"10px\", fontWeight: \"bold\", color: customApp(\"menu\") }}>{props.data.timerText}</div>\n            </div>\n        )\n    }\n\n    const selectUser = (pr) => {\n        if (selectedUsers[pr] && Object.keys(selectedUsers).filter(a => selectedUsers[a]).length <= 1) {\n            setSelectedUsers({})\n        } else {\n            setSelectedUsers({\n                ...selectedUsers,\n                [pr]: !selectedUsers[pr],\n            })\n        }\n    }\n\n    return (\n        <div style={{ height: '100%', width: '100%' }}>\n            <ViewportChecker>\n                {(inViewport) => (\n                    <UiCard style={{ width: '100%', height: '100%', marginTop: '0px', overflow: \"scroll\" }}>\n                        {(props.edit && inViewport) ? <div style={{ width: '100%', height: '52px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\n                            <Icon size={24} style={{ alignSelf: 'center', marginLeft: '20px', color: props.styles.color ? props.styles.color : 'grey', marginTop: '3px' }}>update</Icon>\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>\n                            <div onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\n                                onMouseLeave={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0)' }}>\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' }}>\n                                    close\n                                </Icon>\n                            </div>\n                            <div onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\n                                onMouseLeave={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0)' }}>\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' }}>\n                                    open_with\n                                </Icon>\n                            </div>\n                        </div> :\n                            <HeaderWithIcon\n                                title={translate(`$__timeSheet`, 1)}\n                                icon={\"update\"}\n                                color={props.styles.color ? props.styles.color : 'grey'}\n                                style={{\n                                    background: props.styles.backgroundColor ? props.styles.backgroundColor : 'white',\n                                    padding: '12.4px',\n                                    borderRadius: '5px 5px 0px 0px ',\n                                    fontWeight: 'normal',\n                                    borderBottom: '1px solid #D3D3D3'\n                                }}\n                                customButtons={[\n                                    !exportTimers &&\n                                    {\n                                        title: \"$__timeSheetExport\",\n                                        icon: \"file_download\",\n                                        color: customApp(\"colorText\"),\n                                        onClick: () => {\n                                            setExport(!exportTimers)\n                                        },\n                                    },\n                                ]}\n                            />}\n                        {loading ?\n                            <div\n                                style={{\n                                    position: \"absolute\",\n                                    top: 0,\n                                    left: 0,\n                                    right: 0,\n                                    bottom: 0,\n                                    backgroundColor: \"rgba(250,250,250,0.7)\",\n                                    display: \"flex\",\n                                    justifyContent: \"center\",\n                                    alignItems: \"center\",\n                                    zIndex: 10\n                                }}\n                            >\n                                <PreLoader />\n                            </div>\n                            : <React.Fragment></React.Fragment>\n                        }\n                        {(exportTimers && inViewport) &&\n                            <div style={{ padding: \"15px\", border: '1px solid black' }}>\n                                <fieldset style={{ position: \"relative\", width: \"100%\", marginLeft: \"7px\", display: \"flex\", justifyContent: \"space-between\", marginBottom: \"14px\", marginTop: \"7px\" }}>\n                                    <legend>{translate(\"$__timeCourse\", 1)}</legend>\n                                    <TextField\n                                        label={translate(\"$__initialDate\", 1)}\n                                        variant={customApp(\"fieldVariant\", 1)}\n                                        name=\"startDate\"\n                                        style={{ marginRight: \"15px\" }}\n                                        InputLabelProps={{\n                                            shrink: true,\n                                        }}\n                                        type=\"date\"\n                                        inputProps={{\n                                            max: endDate ? endDate : null,\n                                        }}\n                                        InputProps={{\n                                            autoComplete: \"new-password\",\n                                            onChange: (d) => {\n                                                setStartDate(d.target.value)\n                                            },\n                                        }}\n                                        value={startDate}\n                                    />\n                                    <TextField\n                                        label={translate(\"$__endDate\", 1)}\n                                        variant={customApp(\"fieldVariant\")}\n                                        name=\"endDate\"\n                                        type=\"date\"\n                                        min={startDate ? startDate : null}\n                                        InputLabelProps={{\n                                            shrink: true,\n                                        }}\n                                        inputProps={{\n                                            min: startDate ? startDate : null,\n                                        }}\n                                        InputProps={{\n                                            autoComplete: \"new-password\",\n                                            onChange: (d) => {\n                                                setEndDate(d.target.value)\n                                            },\n                                        }}\n                                        value={endDate}\n                                    />\n\n                                </fieldset>\n                                {/* FILTER BY USER */}\n                                {(db.users && Object.keys(db.users).length > 0 && inViewport) &&\n                                    <Accordion style={{ width: \"100%\" }}>\n                                        <AccordionSummary\n                                            style={{ minWidth: \"100%\" }}\n                                            expandIcon={\n                                                <Icon>expand_more</Icon>\n                                            }\n                                            aria-controls=\"panel1a-content\"\n                                            id=\"panel1a-header\"\n                                        ><div style={{ color: customApp(\"color\"), fontSize: \"12px\" }}>\n                                                {translate(\"$__users\")}\n                                                <AvatarGroup max={6}>\n                                                    {Object.keys(selectedUsers).length > 0 && Object.keys(selectedUsers).map((a, i) => (\n                                                        <Tooltip\n                                                            title={db.users[a].name}\n                                                            key={i}\n                                                        >\n                                                            <Avatar alt={db.users[a].name} src={db.users[a].image || null} >\n                                                                {db.users[a].name.substr(0, 1)}\n                                                            </Avatar>\n                                                        </Tooltip>\n                                                    ))}\n                                                </AvatarGroup>\n                                            </div>\n                                        </AccordionSummary>\n                                        <AccordionDetails\n                                            style={{ minWidth: \"100%\" }}\n                                        >\n                                            <FormGroup>\n                                                {Object.keys(usersRef.current).map(pr => {\n                                                    return (\n                                                        db.users && db.users[pr] && db.users[pr]._id &&\n                                                        <React.Fragment key={pr}>\n                                                            <FormControlLabel\n                                                                key={pr}\n                                                                style={{ minWidth: \"100%\" }}\n                                                                control={\n                                                                    <React.Fragment>\n                                                                        <Avatar alt={db.users[pr].name.substr(0, 1)} src={db.users[pr].image || null} >\n                                                                            {db.users[pr].name.substr(0, 1)}\n                                                                        </Avatar>\n                                                                        <Checkbox\n                                                                            checked={selectedUsers && selectedUsers[pr] ? true : false}\n                                                                            onChange={() => {\n                                                                                selectUser(pr)\n                                                                            }}\n                                                                            color=\"default\"\n                                                                        />\n                                                                    </React.Fragment>\n                                                                }\n                                                                label={db.users[pr].name || db.users[pr].name}\n                                                            />\n                                                        </React.Fragment>\n                                                    )\n                                                }\n                                                )}\n                                            </FormGroup>\n                                        </AccordionDetails>\n                                    </Accordion>\n                                }\n                                <div style={{ display: \"flex\", justifyContent: \"center\", marginTop: \"7px\" }}>\n                                    <ExportTimer data={timeSheetData} />\n                                    <CustomButton\n                                        title={translate(\"$__closeFilter\")}\n                                        text={translate(\"$__closeFilter\")}\n                                        color={\"lightgrey\"}\n                                        textColor={\"lightgrey\"}\n                                        icon={\"cancel\"}\n                                        onClick={() => { setExport(!exportTimers) }}\n                                        size={\"25px\"}\n                                    />\n                                </div>\n                            </div>\n                        }\n                        <UiCardHeader style={{ height: \"333px\", position: 'relative', backgroundColor: '#f5f5f5' }}>\n                            {inViewport && <ResponsivePie\n                                data={[\n                                    ...Object.keys(timeSheetData).sort((a, b) => {\n                                        if (parseInt(timeSheetData[a].totalTimer) > parseInt(timeSheetData[b].totalTimer)) {\n                                            return -1\n                                        } else if (parseInt(timeSheetData[a].totalTimer) < parseInt(timeSheetData[b].totalTimer)) {\n                                            return 1\n                                        } else {\n                                            return 0\n                                        }\n                                    }).map((ts, i) => {\n                                        return {\n                                            id: timeSheetData[ts].name,\n                                            label: timeSheetData[ts].name,\n                                            value: timeSheetData[ts].totalTimer,\n                                            color: \"#929497\",\n                                            textMini: timeSheetData[ts].timerText,\n                                        }\n                                    }\n                                    )\n                                ]}\n                                valueFormat={value => {\n                                    convertSecondsToText(value, true)\n                                    return convertSecondsToText(value)\n                                }}\n                                enableArcLabels={false}\n                                colors={{ scheme: \"purpleRed_green\" }}\n                                activeOuterRadiusOffset={8}\n                                arcLabelsTextColor={{ from: \"color\", modifiers: [[\"brighter\", 3]] }}\n                                borderWidth={1}\n                                cornerRadius={3}\n                                enableArcLinkLabels={false}\n                                innerRadius={0.5}\n                                leavesOnly={true}\n                                theme={{\n                                    background: 'transparent'\n                                }}\n                                margin={{ top: 10, right: 0, bottom: 10, left: 0 }}\n                                padAngle={1.3}\n                                sortByValue={true}\n                            />}\n                            <div style={{\n                                width: \"100px\",\n                                wordWrap: \"break-word\",\n                                position: \"absolute\",\n                                top: \"50%\",\n                                left: \"calc(50% - 50px)\",\n                                fontWeight: \"bold\",\n                                color: customApp(\"menu\"),\n                                textAlign: \"center\",\n                            }}>\n                                {convertSecondsToText(totalSecondsRef.current, true)}\n                            </div>\n                        </UiCardHeader>\n                        {inViewport && <UiCardBody>\n                            <GridContainer>\n                                {Object.keys(timeSheetData).sort((a, b) => {\n                                    if (parseInt(timeSheetData[a].totalTimer) > parseInt(timeSheetData[b].totalTimer)) {\n                                        return -1\n                                    } else if (parseInt(timeSheetData[a].totalTimer) < parseInt(timeSheetData[b].totalTimer)) {\n                                        return 1\n                                    } else {\n                                        return 0\n                                    }\n                                }).map((ts, i) =>\n                                    <TimeSheetData data={timeSheetData[ts]} key={ts} />\n                                )}\n                                <TimeSheetData data={{ name: translate(\"$__total\"), timerText: convertSecondsToText(totalSecondsRef.current) }} />\n                            </GridContainer>\n                        </UiCardBody>}\n                        <div style={{\n                            color: \"#CCCCCC\",\n                            fontSize: \"12px\",\n                            padding: \"15px\",\n                            textAlign: \"center\"\n                        }}>\n                            {db.cards[nodeId] && db.cards[nodeId].type === 'plan' ?\n                                translate(\"$__timeSheetShowingAllTimesRegisteredInAllActivitiesOfPlan\")\n                                :\n                                translate(\"$__timeSheetShowingAllTimesRegisteredInActivityAndLinkedActivities\")\n                            }\n                        </div>\n                    </UiCard>\n                )}\n            </ViewportChecker>\n        </div>\n    );\n}\n\nconst mapStateToProps = (store) => ({\n    cards: store.db.cards,\n    timeline: store.timeline\n})\n\nconst mapDispatchToProps = dispatch =>\n    bindActionCreators(reduxActions, dispatch);\n\nexport default connect(mapStateToProps,\n    mapDispatchToProps\n)(Timesheet);"],"sourceRoot":""}