File: /disk001/machen/www/_wildcard_.machen.ai/static/js/main.181cf891.chunk.js.map
{"version":3,"sources":["functions/index.js","components/Icon/Badge.jsx","components/Tooltip/html.jsx","assets/icons/microsoftWord.svg","assets/icons/microsoftExcel.svg","assets/icons/microsoftPowerpoint.svg","assets/icons/SWOT.js","assets/icons/pdf.svg","assets/img/logoMachen.svg","assets/img/fundoLogin.jpg","componentsV3/Buttons/index.jsx","assets/icons/Matrix.js","assets/img/googlePlay-ptBR.png","assets/img/appleStore-ptBR.png","assets/img/default-avatar.png","store/actions.js","assets/img/dashboard/Mockup_App_WEB.png","assets/img/dashboard/supportMockup.png","components/ImportUsers/sample.xlsx","components/ImportUsers/sampleoptions.xlsx","components/User/select.jsx","assets/sound/notification.mp3","assets/sound/mentionNotification.mp3","components/Dashboards/Legend.jsx","componentsV3/Timeline/message.jsx","components/Progress/circular.jsx","components/MoreMenu/index.jsx","assets/img/fundo-sonne.png","components/Checkbox/index.jsx","assets/jss/material-dashboard-pro-react/components/cardHeaderStyle.js","components/Card/CardHeader.jsx","components/PreLoader/index.jsx","assets/icons/BrigthAndConnected.js","components/Dashboards/Widgets lazy /^/.*/.jsx$/ groupOptions: {} namespace object","functions/upload.js","functions/kanban.js","components/Dashboards/Widgets/Meta.jsx","components/PlataformContracts/PolicyAndTerms.jsx","components/PlataformContracts/LicensingAgreement.jsx","assets/jss/material-dashboard-pro-react/components/footerStyle.js","components/Footer/Footer.jsx","assets/jss/material-dashboard-pro-react/components/LightBox.js","components/LightBox/index.jsx","components/LoaderPage/index.jsx","components/MiroBoard/index.jsx","components/SideModule/closeAndSave.jsx","components/SideModule/sideModule.css.js","assets/jss/material-dashboard-pro-react/components/sideModule-Card.js","components/User/edit.jsx","components/Password/index.jsx","assets/jss/material-dashboard-pro-react/components/sideModule-Users.js","components/User/access.jsx","components/User/TwoFactor.js","components/User/Settings.jsx","components/Account/Settings.jsx","components/User/Mobile.jsx","assets/jss/material-dashboard-pro-react/components/sideModule.js","components/SideModule/MenuButton.jsx","components/CustomButtons/Custom.jsx","components/Card/Delete.jsx","components/Card/approval.jsx","components/TextField/currency.jsx","components/Buttons/grouped.jsx","components/Recurrence/settings.jsx","componentsV3/Tags/input.jsx","components/Card/edit.jsx","assets/jss/material-dashboard-pro-react/components/sideModule-Card-KPI.js","components/Card/kpi.jsx","components/Card/settings.jsx","components/Catenation/index.jsx","components/Tags/input.jsx","functions/files.js","components/Navigation/index.jsx","components/Columns/edit.jsx","components/Columns/settings.jsx","components/Avatar/index.jsx","components/Files/file_V2.jsx","components/Files/list.jsx","components/Recurrence/list.jsx","assets/jss/material-dashboard-pro-react/components/SpeedDial.js","components/SendTo/index.jsx","components/Timer/chart.jsx","assets/jss/material-dashboard-pro-react/components/timerLog.js","components/Timer/log.jsx","components/User/Delete.jsx","components/Radio/index.jsx","assets/jss/material-dashboard-pro-react/components/sideModule-Card-Users.js","components/User/in.jsx","assets/jss/material-dashboard-pro-react/components/sideModule-Feed.js","functions/feeds.js","components/Feed/edit.jsx","components/Link/edit.jsx","components/SideModule/index.jsx","components/Chat/countIcon.jsx","assets/jss/material-dashboard-pro-react/components/buttonStyle.js","components/CustomButtons/Button.jsx","assets/jss/material-dashboard-pro-react/components/cardFooterStyle.js","components/Card/CardFooter.jsx","assets/jss/material-dashboard-pro-react/views/loginPageStyle.js","views/Pages/ActivateUser.jsx","components/BoardModels/index.jsx","assets/jss/material-dashboard-pro-react/components/Backoffice-languages.js","views/BackOffice/languages.jsx","views/BackOffice/input.jsx","views/BackOffice/data.jsx","views/BackOffice/index.jsx","components/Card/loader.jsx","components/Filter/header.jsx","views/BrightAndConnected/InsightBoards.jsx","assets/jss/material-dashboard-pro-react/components/BrightAndConnected-card.js","components/BrightAndConnected/skeletonCard.jsx","views/BrightAndConnected/Radar.jsx","components/BrightAndConnected/card.jsx","components/BrightAndConnected/FeedFakeCard.jsx","components/BrightAndConnected/channel.jsx","components/BrightAndConnected/listLinks.jsx","assets/jss/material-dashboard-pro-react/components/BrightAndConnected.js","views/BrightAndConnected/Feeds.jsx","components/Reactions_V2/index.jsx","components/BrightAndConnected/socialCard.jsx","views/BrightAndConnected/Home.jsx","views/BrightAndConnected/Read.jsx","views/BrightAndConnected/index.jsx","components/Tooltip/transparent.jsx","componentsV3/SelectCardTypes/index.jsx","views/Calendar/Calendar.jsx","views/Dashboard/resumeTasks.jsx","views/Dashboard/resume.jsx","components/User/dayList.jsx","views/Dashboard/daytasks.jsx","views/Dashboard/index.jsx","assets/jss/material-dashboard-pro-react/views/errorPageStyles.js","views/Pages/ErrorPage.jsx","views/Library/index.jsx","assets/jss/material-dashboard-pro-react/components/customInputStyle.js","components/CustomInput/CustomInput.jsx","views/Pages/LoginPage.jsx","views/Pages/MaintenancePage.jsx","views/Pages/OffLinePage.jsx","assets/jss/material-dashboard-pro-react/components/Agile-Column.js","components/AgileV2/Column.jsx","components/AgileV2/status.jsx","componentsV3/Filter/menuFilter.jsx","views/MyTasks/index.jsx","views/MasterAdmin/Resume.jsx","components/Account/exportAll.jsx","views/MasterAdmin/Accounts.jsx","views/MasterAdmin/Languages.jsx","assets/jss/material-dashboard-pro-react/views/dashboard.js","views/MasterAdmin/index.jsx","assets/jss/material-dashboard-pro-react/components/timelineMiniStyle.js","componentsV3/Timeline/Mini.jsx","componentsV3/Notifications/fullCard.jsx","assets/jss/material-dashboard-pro-react/components/sidebarInteractive.js","views/Notifications/index.jsx","components/PreLoader/linear.jsx","assets/jss/material-dashboard-pro-react/customCheckboxRadioSwitch.js","assets/jss/material-dashboard-pro-react/views/registerPageStyle.js","views/Pages/RegisterPage.jsx","components/AgileKanban/Column.jsx","components/AgileKanban/exportAll.jsx","componentsV3/Filter/period.jsx","components/AgileKanban/index.jsx","views/StrategyAndPlans/Actions/index.jsx","components/Dashboards/Preview/DoughDetailedPreview.jsx","components/Dashboards/Preview/GoalsDoughPreview.jsx","components/Dashboards/Preview/TaskByPersonPreview.jsx","components/Dashboards/Preview/TaskDoneByTimePreview.jsx","components/Dashboards/Preview/FunnelPreview.jsx","components/Dashboards/Filter.jsx","components/Dashboards/GetInitialState.js","components/Dashboards/PalleteButton.jsx","componentsV3/FilterDashboard/DisplayFilterOptions.jsx","components/Dashboards/Dashboard.jsx","views/StrategyAndPlans/Dashboard/TagsStatistics/chart.jsx","components/Card/v2.jsx","views/StrategyAndPlans/Dashboard/TagsStatistics/topTags.jsx","views/StrategyAndPlans/Dashboard/TagsStatistics/tagsMap.jsx","views/StrategyAndPlans/Dashboard/tagsStatistics.jsx","assets/jss/material-dashboard-pro-react/components/InsightBoards.js","views/InsightBoards/index.jsx","assets/jss/material-dashboard-pro-react/components/Agile-Card.js","components/Agile/Card.jsx","components/Agile/Column.jsx","components/Agile/status.jsx","components/DialogButtons/index.jsx","components/DragDrop/cards.jsx","components/Agile/swot.jsx","views/StrategyAndPlans/MATRIX/index.jsx","componentsV3/SelectedMenu/EditModal.jsx","componentsV3/SelectedMenu/SelectedMenu.jsx","components/AgileV2/exportAll.jsx","components/AgileV2/overview.jsx","views/StrategyAndPlans/Overview/index.jsx","views/Radar/index.jsx","views/StrategyAndPlans/plans.jsx","components/User/card.jsx","views/StrategyAndPlans/homePlans.jsx","views/StrategyAndPlans/index.jsx","components/Dialog/index.jsx","functions/tags.js","componentsV3/Tags/renderTag.jsx","assets/jss/material-dashboard-pro-react/components/tagsMenu.js","componentsV3/Tags/menu.jsx","views/Tags/index.jsx","components/ErrorPages/index.jsx","assets/jss/material-dashboard-pro-react/views/users.js","components/ImportUsers/DragDrop.jsx","components/ImportUsers/Tablerow.jsx","components/ImportUsers/errorModal.jsx","components/ImportUsers/UserAddList.jsx","components/ImportUsers/ImportUsers.jsx","views/Users/index.jsx","componentsV3/Forms/edit.jsx","views/Forms/index.jsx","components/Account/creditCard.jsx","views/Account/invoices.jsx","views/Account/integrations.jsx","views/Account/profile.jsx","components/Percentual/bar.jsx","components/Account/edit.jsx","components/Account/preffers.jsx","components/Account/SubscriptionDetails.jsx","views/Account/resume.jsx","components/ColorPicker/Gradient.jsx","views/Account/whiteLabel.jsx","views/Account/index.jsx","views/Pages/subscriptionPlan.jsx","views/Pages/deniedAccess.jsx","views/ProfileUser/Approval.jsx","views/ProfileUser/User.jsx","views/ProfileUser/SwitchCheck.jsx","views/ProfileUser/Notifications.jsx","components/MessageEditor/MessageEditor.jsx","views/ProfileUser/Overview.jsx","views/ProfileUser/Historic.jsx","views/ProfileUser/Department.jsx","views/ProfileUser/Profile.jsx","views/Plans/index.jsx","views/ProfileEnterprise/Enterprise.jsx","views/ProfileEnterprise/SwitchAndCheck.jsx","views/ProfileEnterprise/Notifications.jsx","views/ProfileEnterprise/Overview.jsx","views/ProfileEnterprise/TableUsers/Tablerow.jsx","views/ProfileEnterprise/TableUsers/UserAddList.jsx","views/ProfileEnterprise/TableUsers/ListUsers.jsx","views/ProfileEnterprise/TableUsers/User.jsx","views/ProfileEnterprise/Department.jsx","views/ProfileEnterprise/WhiteLabel.jsx","views/ProfileEnterprise/Message.jsx","views/ProfileEnterprise/Integrations.jsx","views/ProfileEnterprise/ProfileEnterprise.jsx","routes.js","assets/jss/material-dashboard-pro-react/components/sidebar-submenu.js","components/Sidebar/subMenu.jsx","components/Sidebar/index.jsx","components/Chat/notifications.jsx","componentsV3/Notifications/myDay.jsx","componentsV3/Notifications/requireApproval.jsx","componentsV3/Notifications/card.jsx","componentsV3/Notifications/index.jsx","components/PlanType/getElements.jsx","components/PlanType/Intro.jsx","components/Quick/functions.jsx","components/PlanType/Plantype.jsx","components/QuickAdd/index.jsx","components/Timer/notifications.jsx","componentsV3/Favorites/index.jsx","components/TopSearch/cards.jsx","components/Files/file.jsx","components/TopSearch/files.jsx","assets/jss/material-dashboard-pro-react/components/SideBarMenuUser.js","components/TopHeader/User.jsx","components/TopHeader/index.jsx","components/Chat/chatsStyles.js","components/Chat/chats.jsx","assets/jss/material-dashboard-pro-react/components/chatMenu2204.js","components/Chat/menu.jsx","components/Chat/Typing.jsx","assets/jss/material-dashboard-pro-react/components/chat.js","components/Chat/ButtonViewOnline.jsx","components/Chat/index.jsx","components/Quick/MoveCards.jsx","components/CardActions/index.jsx","components/AgileKanban/modal.jsx","components/Quick/copy_move.jsx","components/Quick/addCard.jsx","componentsV3/Tour/getSteps.js","componentsV3/Tour/EndTour.jsx","componentsV3/Tour/IntroTour.jsx","componentsV3/Tour/Tour.jsx","functions/socket.js","layouts/adminStyle.js","layouts/authStyle.js","componentsV3/Call/index.jsx","assets/jss/material-dashboard-pro-react/components/authNavbarStyle.js","components/Navbars/AuthNavbar.jsx","layouts/index.jsx","root.jsx","index.jsx","components/Buttons/custom.jsx","components/Cropper/Cropper.css.js","components/Cropper/index.jsx","components/Grid/GridItemV2.jsx","components/DataPicker/index.jsx","functions/cards.js","components/Chip/index.jsx","components/TextField/dark.jsx","components/AutoComplete/multiple.jsx","assets/jss/material-dashboard-pro-react/components/Tags.js","components/Tags/Card.jsx","componentsV3/Filter/RenderOptions.jsx","componentsV3/Filter/index.jsx","components/TextField/index.jsx","componentsV3/Timeline/Messages.css.js","componentsV3/Timeline/newMessages.jsx","componentsV3/Timeline/Search/messages.jsx","componentsV3/Timeline/Search/index.jsx","componentsV3/Timeline/messages.jsx","componentsV3/Timeline/index.jsx","components/Grid/GridItem.jsx","assets/jss/material-dashboard-pro-react/views/search.js","components/Dashboards/Preview/TasksPreview.jsx","components/Badge/user.jsx","components/MultInput/input.jsx","store/search-initialState.js","components/Grid/GridContainer.jsx","components/ErrorBoundary/index.jsx","components/Icons/index.jsx","components/ColorPicker/index.jsx","components/Timer/timer.jsx","assets/jss/material-dashboard-pro-react/components/Card.js","componentsV3/Forms/AnswerForm.jsx","store/alert.js","store/card.js","store/cards.js","store/chat.js","store/chats.js","store/controls.js","store/functions.js","store/forms.js","store/languages.js","store/lightBox.js","store/notifications.js","store/preLoader.js","store/search.js","store/session.js","store/sessionLoads.js","store/sideModule.js","store/timeline.js","store/timelinesLoader.js","store/toLoad.js","store/usersStatus.js","store/chatTyping.js","store/searchs.js","store/overviewNavigations.js","store/sagas.js","store/index.js","assets/jss/material-dashboard-pro-react/components/CardSimple.js","components/Checklist/Card.jsx","components/Checklist/index.jsx","components/Card/Card.css.js","components/Card/fakeCardExpanded.jsx","api/index.js","components/User/quick.jsx","assets/jss/material-dashboard-pro-react/components/iconButtonStyle.js","components/CustomButtons/IconButton.jsx","store/history.js","components/User/avatarList.jsx","assets/jss/material-dashboard-pro-react/components/KPI_change.js","components/ConnectedIn/index.jsx","assets/jss/material-dashboard-pro-react/components/Tags-input.js","assets/jss/material-dashboard-pro-react/components/filter.js","components/Dashboards/Widgets/AboutPlan.jsx","components/Dashboards/Widgets/TaskByPerson.jsx","components/Dashboards/Widgets/TaskDoneByTime.jsx","components/Dashboards/Widgets/TimeLine.jsx","components/Dashboards/Widgets/Timesheet.jsx","components/Card/index.jsx","apims/index.js","components/Dashboards/Widgets/ActionsDough.jsx","components/Dashboards/Widgets/DayTasks.jsx","components/Dashboards/Widgets/Funnel.jsx","components/Dashboards/Widgets/GoalsDough.jsx","components/Dashboards/Widgets/LastCompleted.jsx","components/Dashboards/Widgets/LateTask.jsx","components/Dashboards/Widgets/MatrixDough.jsx","components/Dashboards/Widgets/NextTask.jsx","components/Dashboards/Widgets/Modal.jsx","components/Dashboards/Widgets/TaskByCreator.jsx","components/Dashboards/Widgets/TaskByResponsible.jsx","components/Dashboards/Widgets/ObjetiveDough.jsx","components/KPI/dataSave.jsx","functionsV3/chat.js","assets/jss/material-dashboard-pro-react/components/Card-SWOT.js","components/Card/SWOT.jsx","components/Card/cardExpanded.jsx","components/PopperMenu/index.jsx","components/KPI/change.jsx","components/Switch/index.jsx","components/Filter/period.jsx","assets/jss/material-dashboard-pro-react/components/headerWithIcon.js","components/Header/withIcon.jsx","functions/loadData.js","components/Timer/exportAll.jsx","assets/jss/material-dashboard-pro-react.js","store/db.js","functions/users.js","assets/icons/svg.png","variables/charts.js","components/Card/useTemplate.jsx","components/Progress/linear.jsx","assets/jss/material-dashboard-pro-react/components/timelineStyle.js","assets/jss/material-dashboard-pro-react/components/TextField.js","componentsV3/Notifications/count.jsx","components/Header/card.jsx","components/Dashboards/Widgets/Notes.jsx","assets/img/tour/strategy-pt.png","components/CustomButtons/icon.jsx","assets/jss/material-dashboard-pro-react/components/Mentions-Input.js","assets/jss/material-dashboard-pro-react/components/timelineSending.js","componentsV3/Timeline/sending.jsx","componentsV3/FilterDashboard/RenderOptions.js","componentsV3/FilterDashboard/index.js","assets/img/userCover.jpg","functions/chat.js","components/Dashboards/Header.jsx","components/Card/Card.jsx","assets/jss/material-dashboard-pro-react/components/cardBodyStyle.js","components/Card/CardBody.jsx","components/Dashboards/Widgets/Actions.jsx","components/Dashboards/Widgets/ActionsDetailed.jsx","components/Dashboards/Widgets/Goal.jsx","components/Dashboards/Widgets/GoalsDetailed.jsx","components/Dashboards/Widgets/Guideline.jsx","components/Dashboards/Widgets/MatrixDoughDetailed.jsx","components/Dashboards/Widgets/Objective.jsx","components/Dashboards/Widgets/ObjectiveDetailed.jsx","components/Dashboards/Widgets/TaskDoneBar.jsx","components/Dashboards/Widgets/TaskDoneDoughTable.jsx","components/Dashboards/Widgets/TaskDoneBarMonth.jsx","assets/icons/GuidelineC.js","assets/icons/GuidelineD.js","components/Icon/index.jsx","assets/icons/GuidelineE.js","assets/icons/GuidelineR.js","assets/icons/machen.svg","assets/icons/Ideas.js","componentsV3/ViewerportCheck/ViewrportCheck.js","components/AutoComplete/index.jsx"],"names":["require","config","languageADD","window","location","hostname","indexOf","translate","al","style","words","reduxStore","getState","languages","session","language","newText","split","forEach","a","i","word","replace","trim","toLowerCase","api","post","name","e","console","log","locales","filter","locale","length","concat","result","toUpperCase","substring","nl2br","str","is_xhtml","break1","arguments","undefined","break2","breakTag","hexToRgba","opacity","test","hex","substr","rgb","parseInt","stripHtml","html","tmp","document","createElement","innerHTML","textContent","innerText","customApp","prop","custom","validateEmail","email","appAlert","options","key","MD5","JSON","stringify","toString","content","message","confirm","React","minWidth","display","width","marginTop","justifyContent","CustomButton","shadow","title","text","color","icon","size","onClick","toast","dismiss","marginLeft","buttons","map","b","bi","Object","assign","_objectSpread","marginBottom","toastOptions","toastId","position","POSITION","BOTTOM_RIGHT","persist","autoClose","horizontal","BOTTOM_LEFT","BOTTOM_CENTER","isActive","variant","info","success","warn","error","decimal","val","digits","value","match","nv","parseFloat","replaceAll","String","formatNumber","s","currency","Intl","NumberFormat","setMaximumFractionDigits","format","languageUPD","props","data","newLocales","alias","Array","from","flatMap","lc","push","_id","reduxFunction","deleteNode","async","db","nodeType","cards","users","deleted","removeSeats","seats","newStr","change","Highlighted","highlight","dark","wordBreak","dangerouslySetInnerHTML","__html","parts","RegExp","part","fontWeight","paddingTop","paddingBottom","backgroundColor","links","lines","ln","ppar","lln","par","ybQuery","getAppAccess","AppAccess","_access","favoriteNode","del","delete","put","padZero","textColor","reqColor","bw","light","r","g","colors","slice","stringLength","car","stringToColor","string","hash","charCodeAt","stringAvatar","sx","bgcolor","children","getDate","d","date","low","moment","tz","Date","getTime","xx","numero","Math","round","formatSizeUnits","bytes","toFixed","BytesConvert","decimals","k","dm","sizes","floor","pow","totalTime","time","diff","diffText","hours","minutes","seconds","ceil","trunc","total","useStyles","makeStyles","customColor","alignItems","zIndex","root","HtmlTooltip","withStyles","theme","tooltip","fontSize","typography","pxToRem","border","borderRadius","boxShadow","Tooltip","BadgeComponent","tooltipprops","onClose","count","max","className","disabled","classes","internalBadgeVisible","setInternalBadgeVisible","useState","isBadgeVisible","tooltipOpen","open","handleMouseEnter","handleMouseLeave","textAlign","height","Icon","left","top","cursor","disableFocusListener","disableHoverListener","disableTouchListener","interactive","Badge","overlap","badgeContent","anchorOrigin","vertical","invisible","renderIcon","commonProps","onMouseEnter","onMouseLeave","stopPropagation","module","exports","_interopRequireDefault","defineProperty","default","_react","_default","Fragment","fill","memo","iconButtonStyleTransaparent","padding","margin","iconButtonStyleWhite","active","setOpen","anchorRef","useRef","handleClose","event","target","getElementById","querySelectorAll","setTimeout","handleListKeyDown","preventDefault","pointerEvents","hideText","IconButton","ref","aria-controls","aria-haspopup","aria-label","prevOpen","onOpen","transparent","usePropagation","btColor","horizontalButton","Button","paddingLeft","marginRight","overflow","textOverflow","maxWidth","whiteSpace","popper","Popper","anchorEl","current","transition","_ref","TransitionProps","placement","Grow","transformOrigin","Paper","ClickAwayListener","onClickAway","MenuList","autoFocusItem","id","onKeyDown","hide","MenuItem","render","avatar","Avatar","alt","src","iconColor","type","action","next","preLoader","redirect","connect","dispatch","bindActionCreators","reduxActions","_props$selectedShow","_props$selectedShow2","_props$selectedShow3","_props$selectedShow4","_selectedUser$filter","sideModule","selectedUser","setSelectedUser","selected","searchValue","setSearchValue","showInternal","setShowInternal","selectedShow","internal","showExternal","setShowExternal","external","mounted","useEffect","userList","admins","getAdminList","onlyCard","getUserList","all","allPlataform","CardAccess","getUserAccess","UserMenuItem","pr","u","autoFocus","selectedUsers","multiple","splice","onSelect","selectUser","image","avatarSize","float","_parent","bottom","right","backgroundImage","backgroundSize","backgroundRepeat","permission","access","AvatarGroup","noLimit","flexWrap","uid","selectedUserId","_reduxStore$getState$","_reduxStore$getState$2","_reduxStore$getState$3","_reduxStore$getState$4","displayName","Dialog","contains","TextField","label","InputProps","autoComplete","endAdornment","InputAdornment","onChange","placeholder","prev","maxHeight","overflowY","keys","sort","Legend","legend","customColors","containerRef","legendX","setLegendX","setTooltip","legendReverse","item","foundColorObj","find","colorObj","resizeObserver","ResizeObserver","clientWidth","tooltipData","index","observe","disconnect","alignSelf","_ref2","texto","textoConvertido","charAt","includes","_ref3","styles","storie","useSelector","state","functions","timeline","chat","socket","hideImage","setHideImage","overOptions","setOverOptions","cancelReason","setCancelReason","goCancel","setGoCancel","forward","setForward","saveLoading","setSaveLoading","forwardToId","setForwardToId","messageRef","createRef","sizeRef","_messageRef$current","onResize","clientHeight","timer","filesCount","user","files","overOptionsHandle","mouse","clearTimeout","closeOptionsHandle","reactThis","react","nodeId","idRel","chatId","interact","emit","method","ini","fin","urlPreview","parse","reaction","mentionedUsers","_reactions","re","us","my","cancelConfirm","deleteMessage","deletedReason","cardId","renderFile","file","fileName","ext","img","fileExtensions","viewer","openLightBox","background","onError","SVGIcon","controlsList","ReactAudioPlayer","controls","clear","messageClick","boxStyle","onMouseOver","isReply","showUserName","GlobalData","hideDeletedUsers","approval","created_at","unix","ff","reply","ReplyMessage","replyClick","renderMessage","contentSnippet","GridContainer","GridItem","xs","sm","md","lg","xl","link","site","href","rel","searchText","Card","expanded","ignoreList","newData","positions","listStyle","columns","ai","kpi_type","CardTags","showOptions","onlyOption","notGlobalExpanded","noExpanding","multiline","minRows","_toUser","timeInfo","manualEntry","MoreVert","show","balance","noOptions","valuePositive","valueNegative","stories","lastValue","UserBadge","userId","onMouseOut","like","reactDate","defaultAvatar","nolike","love","approve","attention","noReactions","chats","drafts","readedBy","readedDate","fullWidth","aria-labelledby","HeaderWithIcon","onCancel","SelectUsers","hideSelected","ignoreId","load","forwardMessage","_forwardToId","loading","useStylesFacebook","palette","grey","animationDuration","circle","strokeLinecap","FacebookCircularProgress","CircularProgress","thickness","disableShrink","buttonStyle","componentRef","_componentRef$current","_componentRef$current2","_componentRef$current4","_componentRef$current3","role","forceStopPropagation","Component","Checkbox","cardHeaderStyle","cardHeader","borderBottom","whiteColor","lineHeight","cardHeaderPlain","cardHeaderImage","hexToRgb","blackColor","cardHeaderContact","cardHeaderSignup","cardHeaderStats","cardHeaderIcon","cardHeaderText","warningCardHeader","successCardHeader","dangerCardHeader","infoCardHeader","primaryCardHeader","roseCardHeader","customCardHeader","CardHeader","plain","contact","signup","stats","rest","_objectWithoutProperties","_excluded","cardHeaderClasses","classNames","PreLoaderContent","styled","div","_templateObject","_taggedTemplateLiteral","Escurecer","_templateObject2","CircularIndeterminate","fullScreen","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","Error","code","ids","upload","fileData","fullData","originalName","formData","FormData","returnFile","append","send","reject","onUploadProgress","request","apims","headers","onUploadError","addColumn","_newCards$newId","x","newCards","isResponsible","newId","uuid","_users","reorder","orderBy","n","response","kanbanReorder","card","step","linkCard","automation","to","createdBy","parentCard","dataUpdate","automationDueDateType","endDate","add","automationDueDate","startDate","automationStatusType","status","automationStatus","completed_at","usersToRemove","execAsResponsible","cardsAccess","automationUsers","noNotification","automationTags","_tags","newTags","removeTags","addTags","nt","findIndex","tag","keepUserWhoCreatedActivity","userIds","setResponsible","setIcon","automationExec","destination","getKanbanData","search","columnsOrder","c1","c2","step1","step2","column","items","cid","ca","cb","_b$order","preffers","aSec","orderByCreatedDate","orderByUpdatedDate","updated_at","bSec","pA","priority","pB","orderByName","orderByDesc","orderByPriority","orderA","orderB","_a$order","order","cIndex","filterItems","_a$description","description","tags","fil","tagFilter","form","sf","res","complexity","risk","impact","col","columnOrder","reason","approved","flowCard","moveTo","onConcludedStepMoveTo","c","nextStep","dataMessage","requireApproval","_createdBy","Meta","tittle","ViewportChecker","inViewport","flexFlow","Header","edit","handleRemoveObject","flex","PolicyAndTerms","consent","privacy","setPrivacy","terms","setTerms","setLoading","Backdrop","backdropFilter","innerWidth","onScroll","accepted_at","version","updateConsent","store","AgreeRef","licensingAgreement","onLoad","agree","footerStyle","block","footer","borderTop","grayColor","defaultFont","container","containerFluid","primaryColor","textDecoration","list","inlineBlock","Footer","fluid","white","rtlActive","cx","anchor","center","getYear","backdrop","header","btClose","loader","backgroundPosition","movie","embed","leftButtom","rightButtom","lightbox","lightBox","setLoader","sideChange","setsideChange","activeFile","setActiveFile","path","setPath","pdfLoader","setPDFLoader","addEventListener","interaction","removeEventListener","encodeURIComponent","keyCode","f","changeFile","close","side","downloadPath","newDownloadPath","ErrorBoundary","Swipe","onSwipeMove","y","onSwipeEnd","autoPlay","PreLoader","miro","miroBoard","saveLoader","save","saveClose","headerStyle","lock","modulePopup","moduleExpanded","moduleFullScreen","menu","overflowX","menuButtons_resume","MenuButton","MenuButton_arrow","transform","subTitle","drawer","switch","accessDescription","mapStateToProps","ownProps","userGroup","dataType","iniData","emailError","setEmailError","reqSave","changeData","cl","saveUser","exist","emailExist","disabledFields","userAdmin","userEdit","SideModuleCloseAndSave","ImgCropper","maxWidthOrHeight","avatarIcon","InputLabelProps","shrink","onBlur","fullName","MultInput","values","dbNode","callBack","v","secondaryParent","colorPickerCallBack","groups","LoginPage","setUser","cPassword","password","confirmed","setConfirmed","strength","setStrength","matchedCase","ctr","calcPass","onConfirmed","setReqSave","newPass","setNewPass","passClear","setPassClear","force","saveEdit","saveAccess","admin","isAdmin","saveAdmin","subscriptionPlan","plans","plan","settings","adminLimit","customAdmins","adminUsers","independentAccount","owner","Password","err","savePassword","Switch","checked","enabled","inputProps","flexDirection","history","_token","inviteUser","select","userRead","userInteract","planAdmin","planRead","planEdit","createTemplate","planModerate","master","_isAdmin","feed","feedAdmin","feedEdit","feedModerate","masterAdmin","machenAdmin","tokenData","setTokenData","token","setToken","newToken","disableToken","verify","setData","setLanguage","reload","Autocomplete","getOptionLabel","option","disableClearable","renderInput","params","expiresIn","isResale","_sideModule$data","defaultFeatures","dashboard","brightAndConnected","StrategyAndPlans","myTasks","library","calendar","initialData","features","setIniData","useMemo","useCallback","configurableAreas","toggleFeature","newFeatures","min","Number","expireAccountDate","DataPicker","clearButtonPosition","onChangeStartDate","maxDate","area","AppleStoreQR","GooglePlayQR","notifications","countNotifications","openModule","activeModule","CustomizedButtons","textTransform","borderColor","migrateComplete","setMigrateComplete","Load","SelectedUser","childrensCards","setChildrensCards","countCards","setCountCards","findNameUser","setFindNameUser","countChildrens","hashs","loadUserCards","iniChildrens","getChildrens","deleteThis","deleteCard","pathname","Buttom","deleteAll","fromData","toData","migrate","nameA","nameB","onAction","setReason","preloader","setPreloader","handleApproval","isApproved","rows","adornment","ProgressLinear","reverse","CurrencyTextField","constructor","super","this","getValue","bind","callEventHandler","componentDidMount","_this$props","currencySymbol","others","autonumeric","AutoNumeric","input","preDefined","digitGroupSeparator","decimalCharacter","decimalCharacterAlternative","onFocus","onKeyPress","onKeyUp","watchExternalChanges","UNSAFE_componentWillUnmount","remove","UNSAFE_componentWillReceiveProps","newProps","set","numeric","getNumericString","number","getNumber","outputFormat","eventName","otherProps","inputRef","startAdornment","defaultProps","maximumValue","minimumValue","getPredefinedOptions","SplitButton","selectedIndex","setSelectedIndex","defaultValue","handleToggle","ButtonGroup","aria-expanded","ArrowDropDownIcon","spacing","clearRecurrenceData","recurrence","recurrenceRepeatDays","recurrenceEndDate","recurrenceLimit","recurrenceMyDay","recurrenceOnlyCompleted","recurrenceDuplicateCard","setCompData","isNaN","days","newDate","recurrenceNextDate","calcNextRecurrence","isoWeekday","GroupedButton","recurrenceCopyCatenation","setValues","newValues","ws","filterSelectedOptions","colorPicker","freeSolo","changeTags","groupByParent","_dataType$fieldsTitle","_dataType$fieldsTitle2","_dataType$fieldsTitle3","_dataType$fieldsTitle4","planType","setNewData","setSaveLoader","setDate","setSetDate","setMounted","setStartDate","setEndDate","miroOption","setMiroOption","dateDays","setDateDays","loadingData","setLoadingData","loadUrlContent","reqFullData","_requireApproval","loadCardsV2","ignoreLoader","cardLoad","d2","newDataCD","saveCard","updateCardStatus","cardStatus","url","article","parentData","myDay","myDayOption","isTemplate","verifyTemplate","_planId","planMyAccountVerify","approvalResponsible","hasYoutube","youtube","frameBorder","allow","allowFullScreen","formAsks","formId","forms","elements","formAnswers","Approve","hideFields","_files","aspectRatio","onDelete","swot","MatrixIcon","paddingRight","LinearProgress","ConnectedIn","QuickUsers","_isFavorite","archived","setMyDay","myDayClick","refs","ref1Title","ref1","fieldsTitle","ref2Title","ref2","FormAnswer","client","Timer","isValid","freeChildrenDate","_recurrenceId","RecurrenceSettings","onClear","CustomIconButton","TagsInput","childrenAutoTag","borderLeft","renderOption","inputValue","_ref4","private","privateChildrens","onlyAdminsSendMessages","broadcast","timelineKpiParent","view","setView","kpi_flow","notAllocated","kpi_ini","kpi_fin","pp","kpi_useParent","changeKPI","newValue","totalAllocated","ch","chi","posision","KPIChange","chartShow","ToggleButtonGroup","exclusive","ToggleButton","kpi_currency","setParentKpi","cardAllocated","kpiAccomplished","ResponsiveBullet","minValue","maxValue","titlePosition","titleAlign","titleOffsetX","rangeBorderColor","modifiers","measureBorderColor","measureSize","markerSize","rangeColors","measureColors","markerColors","motionConfig","kpi_reqMessage","Timeline","noSearch","disabledSend","loadTimeline","checklist","unlinkChildrens","unlinkCards","default_currency","Container","setName","setAdd","loadCards","parent","tasksCards","addCard","planId","cardData","_timeline","openCards","completedCards","DragDropContext","onDragEnd","cardsOn","source","draggableId","droppableId","itemOrderIds","onDragStart","onDragUpdate","Droppable","direction","provided","snapshot","innerRef","droppableProps","isDraggingOver","Draggable","draggableProps","dragHandleProps","showCompleteOption","directDeletion","editable","alignContent","navFolders","reqFolders","childrens","types","group","groupEnd","showPrivate","lockPrivate","_props$ignoreCards","_props$ignoreCards2","_props$ignoreCards3","selectedParent","setSelectedParent","folders","setFolders","searchFolder","setSearchFolder","idPlan","ignoreCards","checkSelectedCards","childrenChecked","ignoreChildrens","fds","lf","folder","RenderFolder","nFolders","openFolder","tooltipText","reqSubFolders","AutomationAction","ignoreValues","setOnConcludedStepMoveTo","showSumValues","requireValue","Icons","textSize","Navigation","ignoreTypes","showLegend","customDefine","allowAnonymous","showInPanel","showGroups","shortCutTitle","shortCutDescription","shortCutButtonToAdd","requireDescription","AvatarProps","unlockedPrivates","setFile","setShowPrivate","in","setPrivate","minHeight","textStyle","moreButton","privateTitle","inputStyle","searchTextStyle","onEdit","update","showParent","timelineId","Message","showConnectedIn","setFiles","endLoad","setEndLoad","loadingFiles","setLoadingFiles","page","setPage","lightBoxfiles","init","limit","reqFiles","skip","loadFiles","newFiles","fl","scrollDiv","scrollTop","innerHeight","scrollHeight","scrollFunction","toLocaleLowerCase","File","resume","noShowRecurrenceCard","flexGrow","speedDial","speedDialInvisible","typeFilter","setTypeFilter","selectCard","setSelectCard","myRef","dataTypeOptions","sendTo","cardsResults","sharedIn","copy","attach","shared","dataSave","timelineComment","shareThis","newRel","oldRel","cardMoveTo","subtract","exportTimers","setExport","setSelectedUsers","setCards","iniCards","ncards","fnIdentification","reqChildrens","timeSheet","timeSheetTotal","totalSeconds","convertSecondsToText","mini","diffTextMini","tm","ts","su","totalTimer","timerText","timerTextMini","_times","TimeSheetData","UiCard","customButtons","Accordion","AccordionSummary","expandIcon","AccordionDetails","FormGroup","FormControlLabel","control","ExportTimer","UiCardHeader","ResponsivePie","textMini","valueFormat","enableArcLabels","scheme","activeOuterRadiusOffset","arcLabelsTextColor","borderWidth","cornerRadius","enableArcLinkLabels","innerRadius","leavesOnly","padAngle","sortByValue","wordWrap","UiCardBody","addTimer","setAddTimer","Timesheet","KPITimer","manualAdd","deleteUser","node","outline","outlineOffset","checkedIcon","StyledRadio","Radio","disableRipple","clsx","accessEditing","btActions","cardUsers","_db$cards$card$_planI","userEditing","setUserEditing","setSearch","unSelectedUsers","unSelectedGroups","acc","userData","deleteAccessUser","account","renderGroup","gr","_groups","groupAccess","saveGroup","groupAccessRemove","renderUser","MoreMenu","RadioGroup","adus","addAllUsers","addAllGroups","preview","previewTitle","feedTitle","feedContent","feedFooter","feedDate","feedLink","saveFeed","feeds","loadFeeds","mountFeeds","parents","p","cover","feedLoading","setFeedLoading","_lock","feedValidate","urlToVerify","customTitle","customDescription","feedInsert","font","Moment","pubDate","urlValidate","lk","_sideModule$data2","userModerate","MOD","reqId","CardEdit","closeOption","buttonsCount","template","AnswerForm","FeedEdit","EditUser","Checklist","showProgress","Catenation","Recurrence","LinkEdit","UserAccess","Users","CardKPI","TimerLog","Files","TwoFactor","ownerLock","UserMobile","ColumnEdit","UserDelete","CardDelete","SendTo","AccountSettings","UserSettings","ColumnSettings","CardSettings","rq","modules","sideModuleWindow","borderRight","mod","changeSideModuleWindow","windowType","onChangeIcon","ic","updateCardData","_cardCode","countUnRead","button","letterSpacing","willChange","verticalAlign","touchAction","custom_color","custom_menuColor","custom_mediumColor","primary","infoColor","successColor","warning","warningColor","danger","dangerColor","rose","roseColor","twitter","twitterColor","facebook","facebookColor","google","googleColor","linkedin","linkedinColor","pinterest","pinterestColor","youtubeColor","tumblr","tumblrColor","github","behance","behanceColor","dribbble","dribbbleColor","reddit","redditColor","simple","justIcon","RegularButton","forwardRef","muiClasses","btnClasses","cardFooterStyle","cardFooter","cardFooterProfile","cardFooterPlain","cardFooterPricing","cardFooterTestimonial","cardFooterStats","cardFooterChart","CardFooter","profile","pricing","testimonial","chart","product","cardFooterClasses","loginPageStyle","breakpoints","down","cardTitle","textCenter","justifyContentCenter","customButtonClass","inputAdornment","inputAdornmentIcon","cardHidden","socialLine","ItemList","setId","editor","setEditor","board","setBoard","boards","socketData","_board","_order","saveColumn","boardId","columnData","_columnId","_cardColumn","_columnData","_columnsOrder","saveBoard","boardModels","noList","isDragging","iconTitle","_deleted","deleteColumn","marginBotton","column2","body","chip","onlyEmpty","setOnlyEmpty","setLimit","setFilter","TablePagination","component","onChangePage","newPage","rowsPerPage","onChangeRowsPerPage","labelRowsPerPage","noAutoFocus","updateLanguage","DecimalInput","setState","start","blur","myTasksMenuExpanded","TabPanel","other","hidden","Box","a11yProps","setValue","setVersion","sendSocket","fn","AppBar","Tabs","handleChange","scrollButtons","indicatorColor","Tab","Data","Languages","BoardModels","loaders","sessionLoads","loadingContainer","loadingText","loaderIds","isArray","allKeys","some","validKeys","prototype","hasOwnProperty","call","aria-live","fields","locationPathName","pathName","Routes","tabs","searchFields","initialState","textField","units","end","setEnd","loadInsights","radarCards","cardINNExists","ii","texAlign","Resume","LoadParent","borderTopRightRadius","infos","feedRotate","placeSelf","linkTitle","linkContent","Skeleton","animation","loadLinks","RenderSkeleton","SkeletonCard","ri","setImage","backSize","setBackSize","cardRef","newSize","clickChannel","BrightAndConnectedIco","isoDate","isValidUTF8","utf8","deleteChannel","confirmDeleteChannel","pid","deleteId","caid","setTitle","feedId","visible","changeVisible","_admin","CryptoJS","FeedFakeCard","ended","setEnded","setHashs","setLinks","Nhashs","back","_feeds","l","li","setFeeds","iniFeeds","showHidden","aFeeds","nfeeds","sp","ListLinks","follow","Channel","ReactionComp","primaryIcon","secondaryIcon","hideDisables","Reactions","execRefs","endLinks","reactions","loadLink","CardsLoader","Home","FilterHeader","Read","InsightBoards","Radar","Feeds","SelectCardTypes","ButtonOptions","MachenCalendar","withDragAndDrop","Calendar","messages","allDay","previous","today","month","week","day","agenda","showMore","CustomToolbar","navigate","onNavigate","events","setEvents","selectedDate","setSelectedDate","toLocaleString","showAllEvents","setShowAllEvents","severalDaysActivities","setSeveralDaysActivities","disabledTypes","setDisabledTypes","dow","localizer","momentLocalizer","calendarPreffers","saveCalendarPreffers","CalendarEvents","dt","showCard","uf","toDate","diffDate","CardBody","selectable","defaultDate","onSelectSlot","startAccessor","endAccessor","onView","onSelectEvent","eventPropGetter","isSelected","percent","components","leaveDelay","ActivityCard","toolbar","dateHeader","onEventResize","onEventDrop","showMultiDayTimes","popup","resizable","defaultView","ModernTaskCard","task","onTaskClick","onAddToMyDay","isFromMyDay","isHovered","setIsHovered","isBefore","level","isSame","getTaskPriority","cardStyles","animationDelay","titleSection","WebkitBoxOrient","WebkitLineClamp","taskType","priorityBadge","gap","dateInfo","actionButton","formatDate","timestamp","jsx","SectionHeader","subtitle","onFilterChange","currentFilter","showSuggestions","onToggleSuggestions","WelcomeBanner","timeMessage","onHideBanner","MockupSupport","MockupApp","FavoritePlans","onPlanClick","gridTemplateColumns","currentTarget","hidePrivate","viewSuggestions","setViewSuggestions","nextTasksOrderBy","setNextTasksOrderBy","cookies","setCookie","useCookies","myCards","setMyCards","hideSupportAndAppBanner","handleAddToMyDay","handleTaskClick","handlePlanClick","_users$a","_users$a$_id","hour","getHours","myDayTasksSuggestions","userDay","compareDateA","nextTasks","paramA","paramB","favoritePlans","_a$updated_at","_b$updated_at","updA","banner","scrollbarWidth","scrollbarColor","noChecklist","noDelete","expandedBlocks","setExpandedBlocks","keyId","contentRef","isExpanded","needsExpandButton","setNeedsExpandButton","toggleExpand","checkHeight","rafId","requestAnimationFrame","timeout","cancelAnimationFrame","expandButton","HeaderWithMenu","DashboardSection","sectionStyles","headerContent","dashboardSections","noPagination","Insights","strategicStatement","vocation","legacy","ResumeTasks","Dashboard","ImagePreview","setImagePreview","myDayTasksContent","orderByTitle","orderByTitlePosition","showStatus","userCover","adminViewLoader","setAdminView","adminView","ua","filtered","DayList","renderContent","DayTasks","errorPageStyles","contentCenter","countFiles","setCountFiles","setOrderBy","orderDESC","setorderDESC","setSearchText","asc","navFiles","by","ob","desc","onPageChange","onRowsPerPageChange","fi","customInputStyle","underline","underlineError","underlineSuccess","labelRoot","labelRootError","labelRootSuccess","formControl","whiteUnderline","fontFamily","whiteInput","CustomInput","formControlProps","labelText","labelProps","inputRootCustomClasses","helperText","labelClasses","underlineClasses","inputClasses","formControlClasses","helpTextClasses","FormControl","InputLabel","htmlFor","Input","FormHelperText","reqTwoFactor","loginToken","isLoading","field","showAlert","messageKey","callback","emailLogin","hashedPassword","bcrypt","payload","base64_encode","lp","process","login","handleLoginResponse","_res$data","_res$data2","_res$data3","twoFactor","localStorage","setItem","Email","get","recoveryPassword","_res$data4","cardList","cardAdd","columnStyle","inLine","searchs","agileOrderBy","agileOrderDesc","groupByColor","cardsExpanded","searchID","listRef","rowHeights","rowExpandeds","separators","trackingTreeParents","showCatenation","xc","filterCards","showDeleted","resolveOrder","_a$name","_a$name$trim","_b$name","_b$name$trim","columnName","columnIcon","customColumns","cardbyGroup","Row","separatorTitle","separatorColor","getCardColor","parentId","isDragDisable","_separators$current$c","Item","separator","clone","_separators$current$c2","showOrder","showSelected","showSelectBox","showCheck","selectedCard","selectedCards","locked","viewButton","isDropAnimating","cardColorPicker","manualExpanded","setSelectedCards","_listRef$current","resetAfterIndex","setRowHeight","onExpand","_listRef$current2","setRowExpanded","hasChildrens","getRowHeight","columnId","isDropDisabled","permitIcon","columnsSettings","periodFilter","isCombineEnabled","mode","renderClone","rubric","inLineAdd","AutoSizer","List","itemCount","itemSize","outerRef","itemData","addType","typeAdd","addInitialData","dbcards","newCardsOrder","combine","sourceColumn","destinationColumn","sourceCardIds","newCardsIds","newState","destinationCards","sourceCards","destinationCardIds","_db$cards$a","_db$cards$a2","_db$cards$a2$order","st","_props$cards","theColumn","emptyHide","Column","initialIndicators","notStarted","awaitAction","paused","inProgress","completed","normal","medium","high","_filters$responsible","setSearchId","filters","defaultValues","RenderSelected","borderRadios","guideline","objective","goal","Filter","includeMe","defineResponsible","appliedFilters","showFilters","entries","tagsByText","_props$title","dateKey","responsible","t","viewList","channel","AgileStatus","ExportAll","ExcelFile","ReactExport","ExcelSheet","ExcelColumn","allUsers","deletedUsers","au","filename","element","alignment","wrapText","Accounts","SetAccounts","AccountsExport","SetAccountsExport","viewAccountDetail","setViewAccountDetail","userOrderBy","setUserOrderBy","userOrderASC","setUserOrderASC","ReqAccounts","AE","diskUsed","aa","filesSize","cd","pl","unityDeleted","lastSession","usersCount","u_orderBy","User","unity","A","B","usi","setLanguages","noCancel","dashboardStyle","widgetsContent","sd","setSD","ed","setED","onChangeEndDate","range","timelineStyle","scrollEnd","scrollEndNoEditor","timelineSimple","timelineSimpleWithHeader","timelineBadge","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","timelineSimpleBadge","timelineBadgeInverted","timelineSimpleBadgeInverted","badgeIcon","timelinePanel","timelinePanelInverted","timelineHeading","timelineDate","timelineBody","overflowWrap","timelineLog","timelineFooter","footerUser","footerLine","dropFile","onDropFile","textEditor","textEditorIcon","progressBar","sendingMessage","positive","setStories","userStories","showUnReaded","hideCards","SendingMessage","onSending","readMessages","unReaded","Readed","dbNotify","openChat","dbProps","_loadTimeline","inNode","byUser","readed","showTimeline","sideMudule","MiniTimeline","sidebarStyle","bar","itemButtom","itemButtomActive","themeExample","up","moduleTitle","sidebarWrapperWithPerfectScrollbar","logoImg","viewModule","setViewModule","cardNotifications","cardsNotifications","tmNotifications","tmsNotifications","NotificationCard","route","vm","customCheckboxRadioSwitch","checkRoot","radioRoot","checkboxAndRadio","checkboxAndRadioHorizontal","uncheckedIcon","disabledCheckboxAndRadio","labelHorizontal","labelHorizontalRadioCheckbox","labelLeftHorizontal","labelError","radio","radioChecked","radioUnchecked","inlineChecks","iconCheckbox","borderStyle","iconCheckboxChecked","iconCheckboxIcon","switchBase","switchIcon","switchIconChecked","switchBar","switchChecked","registerPageStyle","cardSignup","socialTitle","textFields","checkboxLabelControl","checkboxLabel","getStyle","draggableStyle","virtualStyle","combined","grid","discount","useLayoutEffect","scrollTo","RowProps","isUsingPlaceholder","VariableSizeList","_column$items$index","discountHeight","setDiscountHeight","ColumnData","columnHeaderRef","sumValues","symbol","arrow","dataCompleted","setDataCompleted","dataSet","setDataSet","userDataSet","setUserDataSet","setcolumns","usersColumns","setusersColumns","mountData","mountUsersData","customFields","cfa","_d$columns$col","_d$columns$col$items","newLine","cf","_card$cf$value","_card$cf$value2","_card$cf$value3","_Object$keys$filter$","_Object$keys$filter$2","_card$_users$a","cardCode","mountDataFn","setAnchorEl","setSelected","Boolean","subtractDays","textWrap","DateRange","Menu","keepMounted","PaperProps","ITEM_HEIGHT","reorderList","startIndex","endIndex","removed","setPreffers","exportBoard","setExportBoard","addColumnActive","setAddColumn","updateCards","filterFields","onBeforeDragStart","_card$_createdBy","newColumnOrder","orderI","cardSource","cardTarget","prevState","cardsOrder","columProps","newColumn","onCompleted","PeriodFilter","completedDays","selectPeriodCards","with","DoughDetailedPreview","random","animate","arcLinkLabelsSkipAngle","arcLinkLabelsThickness","arcLinkLabelsColor","arcLabelsSkipAngle","arcLabel","IconComponent","GoalsDoughPreview","arcLinkLabelsStraightLength","isInteractive","TaskByPersonPreview","sliceConfig","datafilter","ResponsiveBar","indexBy","valueScale","indexScale","enableLabel","yScale","axis","axisTop","axisRight","axisBottom","axisLeft","TaskDoneByTimePreview","ResponsiveLine","responsive","xScale","stacked","yFormat","enableGridX","enableGridY","lineWidth","pointSize","pointColor","pointBorderWidth","enableArea","areaBaselineValue","pointBorderColor","pointLabelYOffset","useMesh","curve","funnelPreview","ResponsiveFunnel","shapeBlending","labelColor","beforeSeparatorLength","beforeSeparatorOffset","afterSeparatorLength","afterSeparatorOffset","currentPartSizeExtension","_filter$users","_filter$users2","_filter$users3","addWidget","selectedPriority","setSelectedPriority","filtrosList","filtros","TaskDoneBar","widget","datagrid","w","h","minW","maxW","minH","Preview","TaskDoneDoughTable","TaskDoneByTime","TaskByPerson","showQuantity","finalIndex","TaskByCreator","TaskByResponsible","TaskDoneBarMonth","TimeLine","TasksPreview","ActionsDetailed","GoalsDetailed","MatrixDoughDetailed","ObjectiveDetailed","ObjetiveDough","ActionsDough","MatrixDough","GoalsDough","Goal","Objective","Guideline","Actions","LastCompleted","LateTask","NextTask","Funnel","AboutPlan","GetHeader","Grid","newName","initialState1","Notes","taskByPerson","taskByCreator","taskByResponsible","taskDoneByTime","initialState2","PalleteButton","handleColorSet","mostrarLista","setMostrarLista","backgroundCor","setBackgroundCor","toggleLista","itemStyle","colorArr","DisplayFilterOptions","handleDateChange","tt","ResponsiveGridLayout","WidthProvider","Responsive","_dashboardConfig$filt","filteredCards","setFilteredCards","setEdit","key1","setKey1","editState","setEditState","setLoad","dashboardConfig","setDashboardConfig","stateRef","filterRef","filterStateRef","dashboardStyles","divRef","getInitialState","localstorage","customDashboard","obj","nameWidget","newGraph","_newGraph$filter","_newGraph$filter2","colorsArr","searchCards","renderComponent","category","ReactDOM","unmountComponentAtNode","pupulateArr","indexarr","elemento","newArr","filterObj","updateCard","FilterDash","indicators","cols","ll","rowHeight","isResizable","onLayoutChange","any","layouts","_layouts$lg","draggableHandle","tableKey","data-grid","_filterStateRef$curre","WrappedComponent","prevArray","handleDatagridTable","newItem","newKey","table","handleDatatGridTable","handleSetFilter","handleFilterData","handleSetTags","tagsColors","mainColorTags","mainColor","handleDashboardConfig","planCards","ChartTagsStatistics","layout","setLayout","groupMode","setGroupMode","defs","stagger","rotation","tickSize","tickPadding","tickRotation","legendPosition","legendOffset","labelSkipWidth","labelSkipHeight","labelTextColor","legends","dataFrom","justify","translateX","translateY","itemsSpacing","itemWidth","itemHeight","itemDirection","itemOpacity","symbolSize","effects","on","ariaLabel","barAriaLabel","formattedValue","indexValue","isCombining","_props$snapshot3","_db$users$data$_creat","_data$_createdBy","_data$_createdBy$name","_data$_createdBy2","_data$_createdBy2$nam","setExpanded","globalExpanded","setGlobalExpanded","useTemplate","setUseTemplate","showPrivateCard","setShowPrivateCard","cardColor","setCardColor","setCombine","_config","attributes","childList","subtree","_observer","MutationObserver","_props$snapshot","_props$snapshot2","combineTargetFor","isMounted","isSubscribed","selectThis","activeCards","_selected","saveMATRIX","selectSWOT","openSideModule","cardClick","openPlan","noExpanded","_expanded","UseTemplate","toTemplate","onComplete","headerData","filType","noShadow","containerNoShadow","parentPrivate","viewAllName","onExpanding","prevExpanded","_kpiTimer","CardExpanded","FakeExpanded","lateDates","dates","dateIco","showTags","indicatorsIcon","recurrenceCreatedDate","usersContent","QuickUsersList","restoreCard","restoreThis","TopTags","tagsChartMount","statusFilter","totalTimes","setOptions","timesInt","TotalCards","tg","_options$toptags$tg","_options$toptags$tg2","_options$toptags$tg3","times","timesByUser","toptags","dateA","dateB","RenderStatisticsTagMap","_db$cards$hashs$","titles","_tags$tag","_tags$tag2","totalStatus","timelines","guidelines","objectives","goals","actions","tagsCards","_tagsCards","_tagsCards2","_tagsCards3","_tagsCards4","tagsChartData","tagsChartData2","tagsChartKeys","allTagsCards","finalDate","initialDate","toISOString","loopDate","loopFinalDate","dateSearch","tagsMount","tc","_db$cards$c","_db$cards$c$completed","_db$cards$c2","_db$cards$c2$updated_","dateStamp","_db$cards$c3","_db$cards$c3$complete","_db$cards$c4","_db$cards$c4$updated_","dateSum","tagsSum","loop","multi","searchButton","unique","insightsCards","progress","dropAnimation","CardList","period","mainPanelWithPerfectScrollbar","navigator","platform","_customColumns$props$","_customColumns$props$2","CardItem","SimpleDialog","DialogTitle","ListItem","ListItemAvatar","ListItemText","selectedValue","setSelectedValue","iconSize","handleClickOpen","defaultName","cardType","selectOption","actionsSize","lockColumns","manualOrder","_actions","backToMatrix","selectedGuideline","selectedObjective","selectedGoal","cardsGuidelineR","cardsGuidelineC","cardsGuidelineE","cardsGuidelineD","swotCards","Hidden","smDown","smUp","Swot","iniModule","actionButtonsStyle","itemAligns","DialogButtons","DragDropCards","hover","setHover","cardsChanged","setCardsChanged","checkedBox","setCheckedBox","searchValues","prioritySelected","statusSelected","cardID","arr","_searchValues$statusS","updateCardv2","handleCardsUpdate","AutocompleteS","ind","ProgressCircular","selectCards","handleState","handleCheckBoxState","deleteCards","sessionId","EditModal","nodeID","exportButton","main","common","exportIcon","noDataMessage","secondary","fontStyle","overviewData","setOverviewData","customColumnNames","setCustomColumnNames","cardTypeMap","createCardRelationMap","ancestors","fillAncestors","depth","parentAncestors","processCardForExport","relationMap","allCards","cardRelation","responsibleName","startsWith","tagsStr","join","parentGuidelineName","parentGuidelineCode","parentObjectiveName","parentObjectiveCode","parentGoalName","parentGoalCode","grandparentGuidelineName","grandparentGuidelineCode","grandparentObjectiveName","grandparentObjectiveCode","greatGrandparentGuidelineName","greatGrandparentGuidelineCode","formatValue","getAccessLevel","levels","processCardsFromProps","columnNames","processedCard","usersData","cardName","processOverviewData","every","wait","ms","trackingTreeChildrens","dbCards","selectedTree","_props$searchs$search","_props$searchs$search2","_props$searchs$search3","_props$searchs$search4","_props$searchs$search5","_props$searchs$search6","_props$searchs$search7","_props$searchs$search8","Migrator","setMigrator","cardsUpdate","setCardsUpdate","MigratorData","setMigratorData","selectedCardState","setSelectedCardState","showExport","setShowExport","selectedTasks","overview","showCompleted","onlyUnReaded","computedCards","updateType","iniMigration","MCards","_goals","_objectives","_childrens","aItem","cardToLink","activeCardsTemp","cancel","prepareDataForExport","exportActiveCards","columnKey","customName","SelectedMenu","cardArr","Id","showColors","_skipGoals","_skipObjectives","finishMigration","viewCompleted","setViewCompleted","viewCatenation","setViewCatenation","viewColors","setViewColors","setOnlyUnReaded","setShowDeleted","loadingDeleted","setLoadingDeleted","setShowCheck","loadDeletedCards","unReadeds","AgileOverview","clients","loaded","tour1","ClientInfo","usersStatus","_data$_access","_data$_access2","dbStatus","imagePreview","hashParts","computedStatus","cardEnd","now","isSameOrBefore","late","computedIndicators","noActions","renderImage","matrixAdmin","_lastAccess","noShowUsers","Client","UserCard","Plans","scrollTimer","_account","planAccountVerify","KanbanBoard","hasFilter","tf","HomePlans","Matrix","Statistics","Overview","BrightAndConnected","Library","tagUpdate","newTagResult","localTagDelete","localTagUnlink","ns","showMoreMenuOpen","setShowMoreMenuOpen","deleteTag","tagDelete","unlinkTag","tagUnlink","_count","editTag","_countOthers","menuExpanded","buttonColor","buttonColorExpanded","showAll","setShowAll","setTags","exportComponent","setExportComponent","showAllTags","setShowAllTags","mountTags","searchLabel","tagLabel","ta","cta","achi","clearEditor","reqReport","exportTagReport","optionsProps","customLabels","fieldsProps","Nestable","collapse","maxDepth","renderItem","RenderTag","newItems","targetPath","dragItem","tagLink","ColorPicker","disablePortal","newColor","saveTag","Preloader","lastChange","setLastChange","filteredItems","setfilteredItems","adminMode","setAdminMode","loadAdmin","searchResult","dbt","onFinish","TagsMenu","positin","filterText","Bright","provisorio","DragDrop","handleData","dragActive","setDragActive","selectedFile","setSelectedFile","formFileUpload","inputFileUpload","labelFileUpload","labelFileUploadDragActive","uploadButton","uploadButtonHover","textDecorationLine","dragFileElement","handleFileUpload","reader","FileReader","onload","workbook","XLSX","sheetName","SheetNames","sheet","Sheets","parsedData","sheet_to_json","readAsBinaryString","handleDrag","onDragEnter","onSubmit","accept","handleBrowseClick","click","onDragLeave","onDragOver","onDrop","dataTransfer","TableRow","usuario","handleCheckboxChange","handleDataChange","dataError","data1","divStyles","InputRender","onMouseUp","focus","defaultChecked","itemIndex","nameError","emailErrorInv","ErrorModal","resetComponent","GetModal","BoxModal","widthSize","GetButton","handleEvent","Griditem","UserAddList","dataUser","addPress","setData1","notSended","setNotSended","setColumns","errorMSG","setErrorMsg","errorScreen","setErrorScreen","columnsFiltered","correctColumsNames","Set","mandatoryNames","checker","prevUsuarios","checkRow","handleResetlist","newData1","fromEntries","sended","getIndex","reduce","objindex","objectMap","onAdding","validation","emailExists","emailExistV2","_data$n","xData","exists","filUser","nomecompleto","nomedeexibição","line","ramal","phone","obs","observações","register","scrollToItem","RenderColumn","_ref5","colunmName","_ref6","FixedSizeList","_ref7","_data1$index","handleRemoveSelected","justifySelf","importUsers","adding","setAdding","headerCellStyle","dataRowStyle","dataCellStyle","justifyContents","archive","download","archiveoptions","borderCollapse","array","lowerCaseArray","newObjAcc","_search$userGroups","_search$tags","userGroups","filteredUsers","ErrorPage","filterUsersGroup","ug","noButton","iconOnEditable","newUserGroupData","saveGroupData","dA","dB","ImportUsers","labelSwitch","SwitchCheck","check","setCheck","colorSwitch","_props$data","_editField$items","setFormId","titleForm","setTitleForm","boardColumns","setBoardColumns","msg","setMsg","setElements","divHover","setDivHover","editField","setEditField","moveElement","updatedElements","move","Arr","_props$data2","_props$data3","_props$data4","_props$data5","saveForm","required","resize","removeElement","newElement","Select","labelId","depends","dependsOn","dependsValue","_dataToSave$items","dataToSave","newElements","saveField","new","Forms","cvc","expiry","Cards","focused","CreditCard","accountData","secretView","setSecretView","reqIntegrationToken","_result$data","ntk","secretKey","clipboard","writeText","editorData","setEditorData","historyEditor","EditorState","createEmpty","htmlToDraft","ContentState","createFromBlockArray","contentBlocks","createWithContent","Editor","inline","inDropdown","editorState","onEditorStateChange","draftToHtml","convertToRaw","getCurrentContent","hashtag","trigger","editorStyle","mp","saveData","PercentualBar","customURL","accountResponsible","invoiceResponsible","expire_at","valid","cpf","cnpj","imageResult","requireToken","requireExpirePassword","passwordExpire","listStyleType","planDetails","upgradeSubscription","customAdminsLimit","customStorageSpace","space","feedDays","radarLimit","insight","planClient","clientAdmin","machenPlan","templates","guidelineLimit","feedLimit","insightLimit","usedSpace","setUsedSpace","AccountData","AccountPreffers","SubscriptionDetails","WrappedColorPicker","alpha","GradientColor","_props$value","_props$value2","css","os","offset","convertLinearToPallet","GradientPickerPopover","showAnglePicker","showGradientTypePicker","paletteHeight","onPaletteChange","colorConstruct","setGradientColor","logo","setLogo","setBackground","fieldsRefresh","setFieldsRefresh","saveDataLoading","setSaveDataLoading","setCustom","customLogo","ignoreAspect","noGuides","viewMode","checkOrientation","loginBackground","ColumnTitleColor","enableAlpha","colorText","menuColor","menuButtonColor","subMenuColor","subMenuTextColor","subMenuTextColorActive","linearProgress","AvatarBackground","avatarIconColor","fieldVariant","resetData","newCustom","backgroundResult","Profile","WhiteLabel","Integrations","Invoices","ApprovalItem","Historic","approvalList","setApprovalList","Approval","paddintTop","Progress","ali","local","approvedIn","_session$GlobalData","_session$groups","_session$groups$filte","objectFit","notificationType","notification","updateData","updateNotifications","updateDataNotification","updateNotification","handleChangeNotifications","LockIcon","notificationName","machen","newNotifications","userNotifications","notificationGlobal","globalNotifications","newNotification","userNotification","blockGlobal","globalNotification","gridTemplateRows","gridRow","MessageEditor","toolbarStyleObject","wrapperClassName","editorClassName","toolbarClassName","toolbarStyle","messageD","readOnly","setPlans","cardsPlans","Department","sgroup","LinkMenu","Notifications","buttonHover","setButtonHover","pageHeader","pageSubtitle","planCard","planTitle","planPrice","planDescription","featuresTitle","featureItem","featureText","featureIcon","divider","enterpriseHighlight","comparePlans","comparisonTable","iconNegative","faqSection","faqQuestion","faqAnswer","contactSection","PlanFeature","available","Check","Close","Typography","handleConsultative","Person","Divider","Business","ArrowForward","Enterprise","checkbox","SwitchAndCheck","setCheckbox","notChange","newObject","newNotificationsObject","setSelectUser","_usuario$prop","handleSelect","orderData","orderColumn","indeterminate","handleCheckAll","allIndexes","_","ListUsers","setColumn","setDirection","dataFilter","matchesFilter","matchesSearch","columnsMap","celular","NameColumn","selectedColumns","setSelectedColumns","selectData","_user$departamentoGr","OutlinedInput","m","displayEmpty","departamento","renderValue","columnSelect","_selectUser$departame","_selectUser$departame2","_selectUser$departame3","_selectUser$departame4","updatedData","addUniqueNumber","nextNumber","newNumber","changeTitle","changeIcon","deleteData","ProfileEnterprise","dashRoutes","auth","subMenu","Ideas","hashId","MyTasks","Tags","BackOffice","MasterAdmin","views","query","URLSearchParams","tokenValidation","setChecked","setEmail","validatingEmail","setValidatingEmail","tokenError","setTokenError","validatingToken","setValidatingToken","termsOpen","setTermsOpen","setPassword","num","currentIndex","newChecked","emailValidate","emailExistDB","emailTokenGenerate","validateEmailToken","validateToken","Modal","aria-describedby","tabIndex","Account","accountHas","buttonExpanded","PlanInfo","planOptions","expandingCards","setExpandingCards","adminViewLoading","setAdminViewLoading","pageBase","expandingAllCards","openPage","subMenuExpanded","platformFeatures","support","blockedItems","blockedMenuItems","determineBlockedItems","blocked","feature","menuItem","commonIconStyle","setSubMenuExpanded","renderPremiumTooltip","renderMenuItem","menuId","activePath","isBlocked","itemClass","getItemClass","handleClick","badgeColor","badgeVisible","logoMini","menuExpand","renderChatItem","chatOpen","ChatCountIcon","renderSupportItem","SubMenu","packageJson","CountIcon","approvals","setApprovals","bu","cardIndex","newApprovals","markAsRead","chatReaded","_notifications","comment","kpi","onRead","cardTimeline","_timeline$data$cardId","_timeline$data$cardId2","_timeline$data$cardId3","_timeline$data$cardId4","_timeline$data$cardId5","_timeline$data$cardId6","tmi","noReply","actualNotificationType","setNotificationType","ntCount","xCount","ntCountLocal","xCountLocal","mentions","xg","note","renderCards","_cards$n","_timeline$n$a","_timeline$n$a2","_timeline$n$a3","_timeline$n$a4","_timeline$n$a5","_timeline$n$a5$messag","na","nb","lna","lnb","createdAt","clearNotifications","newTimeline","lastNotification","firstNotification","_event$target","_event$target$classNa","Notification","handlePrevScreen","buttonBackground","scale","setScale","BoxText","handleItemClick","selectedPlan","setAnimate","handleItemHover","gif","Intro","handleNextScreen","handleName","setDisabled","novoValor","addIds","nameI","setSelectedPlan","screen","setScreen","intro","PlanList","createPlan","newOpen","setNewOpen","pages","Plantype","setCount","iniChatNotification","reqCount","timerCards","viewTimer","FavoriteCards","setFavoriteCards","iniFavorites","newFavoriteCards","myGroups","favoriteCardsContent","searchCompleted","setSearchCompleted","searchDeleted","setSearchDeleted","cardsType","setCardsType","searchCardsOnLine","tp","viewMessage","setViewMessage","timelineData","onDoubleClick","searchFiles","adminNavbarLinksStyle","selectedName","selectedNameText","headerLinksStyle","backgroundColro","logout","chatNotifications","cardsLoader","setCardsLoader","filesLoader","setFilesLoader","searchCardsLoading","setSearchCardsLoading","searchFilesLoading","setSearchFilesLoading","cardsStatusSearch","setCardsStatusSearch","properties","setProperties","sTitle","sIcon","routes","tab","handleInputChange","handleClearSearch","appAccess","moreVertOptions","unlockedCount","topContainerStyle","SearchCards","SearchFiles","QuickAdd","ChatNotifications","Favorites","TimersNotifications","MyRequireApproval","MyDayNotifications","userExtended","userActive","userActiveExtended","lastMessage","lastMessageUnReaded","listChats","setListChats","unReadedCount","myStories","_lastMessage","newListChats","onLine","lastMessageA","lastMessageB","mountChats","lenth","countUnReadsMessages","chatList","setChatList","findName","setFindName","noLabelLight","Chats","chatDb","TypingIndicator","_typing$me","typing","_state$db$cards","_state$db$cards$nodeI","renderTypingAvatars","_typing$nodeId","_users$userId","_user$name","splitName","getUserName","isSelfTyping","me","isOthersTyping","_typing$nodeId2","avatarGroup","setUsersStatus","setOnLine","audio","Audio","NotificationAudio","audioTask","MentionNotificationAudio","showFiles","setShowFiles","socketOn","HEADER_STYLE","timelineTyping","handleTimelineComment","_state$db$cards$data$","play","shouldLoadUser","loadUsers","lastDate","verifyMessages","shouldPlayNotificationAudio","onclick","inverted","hideiconvariant","handleTimelineTyping","typingUser","handleTimelineDeletion","_state$timeline$data$","_state$timeline$idRel","connected","streamVideo","attr","off","newUpdates","closeChat","_state$lightBox","_state$sideModule","isLightBoxOpen","isSideModuleActive","areToastsPresent","getElementsByClassName","areForwardMessagesPresent","canCloseChat","chatData","Sidebar","closeButton","TimelineContainer","confirmRead","FileSection","ChatHeader","ButtonViewOnline","updatedAt","Typing","isLargeScreen","_data$checkSelectedCa","_data$childrenChecked","copyRel","setCopyRel","duplicateLoader","setDuplicateLoader","definePermission","execCards","duplicate","typeArr","copyExec","_oldId","cardReg","old_id","copyResult","copyCards","copyUsers","copyTimeline","copyTags","numberOfHousesJumped","cardChildren","typeChange","resolvedChildrens","reqIds","backClick","toCopyMove","copyName","setCopyName","selectTarget","setSelectTarget","duplicateCard","setParentCard","formError","setFormError","createAnonymously","setCreateAnonymously","descriptionRef","formsRef","valueRef","saveRef","theParentForm","parentForm","formSettings","newRefUsers","createCards","_props$addCard","_props$addCard$initia","_props$addCard2","_props$addCard3","_props$addCard3$initi","_props$addCard4","_props$addCard5","_props$addCard5$initi","_props$addCard6","isAnonymous","placeHolder","explain","TextareaAutosize","which","_props$addCard7","_props$addCard8","_props$addCard8$initi","shiftKey","requires","columnChange","_props$addCard9","_props$addCard0","_props$addCard0$initi","stepsData","fake","buttonId","handleBack","stepsData2","maskValue","last","stepsData3","TextAlign","disabledTour","handleEnd","IntroTour","handleStart","buttonHover1","setButtonHover1","primaryButtonStyle","ReactTour","stepTour","setStepTour","setShow","tourData","setTourData","currentStep","setCurrentStep","setStart","isTourOpen","setIsTourOpen","setInteraction","mask","setMask","forceUpdated","setForceUpdated","maskClassName","setMaskClassName","checkStrategicElement","checkFluxElement","StepContent","checkNextElement","_stepTour","removeEvent","nextElement","processStepTour","handleStepType","checkInterval","setInterval","checkElementsExistence","clearInterval","checkFirstElement","firstElement","addEvent","_stepTour$currentStep","_stepTour$currentStep2","_stepTour$currentStep3","_stepTour$currentStep4","_stepTour$currentStep5","_stepTour$currentStep6","_stepTour$currentStep7","elementButton","endTour","_stepTour$currentStep8","handleDelay","waitElement","interval","Interval","generateSteps","selector","Tour","disableFocusLock","rounded","disableDotsNavigation","showNavigation","showNumber","disableInteraction","closeWithMask","goToStep","steps","isOpen","showButtons","maskSpace","onRequestClose","EndTour","appStyle","wrapper","mainPanel","mainPanelSidebarMini","pagesStyle","fullPage","pagesHeaderStyle","appBar","appResponsive","defaultBoxShadow","listItem","navLink","listItemIcon","listItemText","navLinkActive","drawerPaper","transitionProperty","transitionDuration","transitionTimingFunction","drawerWidth","visibility","sidebarButton","AuthNavbar","appBarClasses","Toolbar","StyledContainer","ToastContainer","_objectDestructuringEmpty","whiteLabel","setWhiteLabel","setAuth","backdropEnabled","setBackdropEnabled","offlineDetected","setOfflineDetected","stylesAdmin","stylesLogin","pageLoads","mainPanelClasses","connection","offline","wl","verifySession","verifyLabel","pageDataRequest","initCompleted","exitTime","interval_id","interval_status","sessionInterval","setStatus","_connection$current","socketStatus","onlyToken","ignoreUsers","actualTokenUser","_token$data4","_token$data4$user","_token$data4$user$Glo","_token$data5","_token$data5$user","_token$data5$user$Glo","_token$data6","_token$data6$user","_token$data6$user$Glo","loadLanguages","_token$data","_token$data$user","_token$data$user$Glob","_token$data2","_token$data2$user","_token$data2$user$Glo","_token$data3","_token$data3$user","_token$data3$user$Glo","requestPermission","initSocket","loadData","loadUsersV2","reqTagsA","reqGroups","initialLoader","reqForms","pageLoadCards","newSocket","socketIOClient","transports","getItem","socketFunctions","getAuthRoutes","CompRender","Route","authCallBack","getRoutes","xsDown","dbUpdateCardSWOT","_sessionId","dbUpdateCard","myDayUpd","dbUpdateCardTimer","dbUpdateCard_V2","cardAccessUpdate","cardAccessDelete","cardAccessRemove","reorderCard","socketUnLinkChildrens","loads","reqMd5","changeParentId","nodeUpdate","updateColumnCards","reorderColumns","columnCards","dbUpdateUser","dbUpdateFeed","notify","chatStatus","backdropTimer","_connection$current2","notThis","LoaderPage","onContextMenu","Redirect","TopHeader","SideModule","LightBox","MiroBoard","Chat","CardActions","CardAdd","CopyMove","MoveCards","KanbanModal","LicensingAgreement","Call","pauseOnFocusLoss","Root","StrictMode","Provider","Router","exact","patch","Layout","iconText","alignItens","iconText_Text","badge","CustomButtom","loadText","cropperStyle","avatarImage","addImage","cropper","circleCropper","CroppedImage","SetCroppedImage","ImageCropDialog","SetImageCropDialog","ImagetoCrop","SetImagetoCrop","fileInput","urltoFile","mimeType","fetch","arrayBuffer","buf","openFile","onloadend","readAsDataURL","handleImageChange","onSave","getCroppedCanvas","toDataURL","nameImg","typeImg","imgResult","imgResizer","Resizer","imageFileResizer","_crop","actionsButtons","Cropper","guides","appearance","DatePickerComponent","registerLocale","pt","DatePicker","placeholderText","selectsStart","timeInputLabel","dateFormat","showTimeInput","customInput","showYearDropdown","selectsEnd","minDate","oldData","responseUPd","kpiTimerStart","startTime","kpiTimerStop","kpiTimerDelete","timerId","kpiTimer","aspects","_aspects","myTask","_loaded","timelineAdd","nData","dbCardsDelete","onlyRedux","childrensDelete","autoSave","forceUpdate","_data$cardData","cardParent","loadNewCard","idCard","as","cardsToReorder","createDate","newCard","localAddCard","_data$childrens","rcc","reqChildrenCards","ci","parentColor","connectInMount","cardAccess","_db$cards$data$_planI","_db$cards$data$_planI3","_db$cards$data$_paren","noInternal","_db$cards$data$_planI2","noPlan","firstId","child","localUpdate","fid","childrenCards","chields","_parentCompleted","xxi","cc","newTotal","setCompleted","CustomChip","Chip","over","setOver","deleteIcon","borderBottomColor","noLabel","labelTop","labelTopLight","_props$options$filter","_props$options$filter2","labelA","labelB","limitTags","groupBy","DarkTextField","renderTags","getTagProps","newTag","userSelect","tagsOver","ShowOptions","setShowTags","showHiddenButton","setshowHiddenButton","_props$customTitles","_props$customTitles2","_props$fieldsProps","_props$fieldsProps2","AccordionExpanded","SetAccordionExpanded","_props$preffers","updateIndicators","indicator","_props$preffers2","_props$preffers2$uniq","indicatorValues","indicatorField","_props$preffers3","customTitles","noAdd","_props$fields","viewSearch","setviewSearch","setForm","ffi","RenderOptions","ignoreSteps","removeFilter","onSearch","linecolor","TF","messagesContainer","ReqMessages","setMessages","loadRef","autoScrolling","messagesList","scrollToBottom","clearMessages","_loadRef$current","_loadRef$current2","messagesLength","unreadeds","cleanMessages","_loadRef$current3","currentLength","visibleStopIndex","visibleStartIndex","messagesHeight","mh","onItemsRendered","overscanCount","_messagesList$current","messageSpace","offsetHeight","newLoadRef","scrollDirection","scrollOffset","reqMessages","timelineEnd","timelineDb","lt","newRef","loadMore","searchMessages","showText","setShowText","SearchMessages","setPreLoader","reqStories","kc","renderMessages","showHeader","Messages","Search","disabledSending","StyledBadge","paper","StyledBadgeAway","BadgeAvatars","_state$usersStatus","_state$usersStatus$us","_state$usersStatus$us2","clearFilter","iniDate","dateStatus","kpiType","iniKpiValue","endKpiValue","hasError","errorInfo","componentDidCatch","_this$props2","ErrorData","stack","componentStack","SUPPORT_ID","origin","box","iconList","showList","setShowList","Comp","setColor","saveColor","onDrag","onDragCapture","onDragEnterCapture","op","SketchPicker","disableAlpha","started","setTimer","cardsWithKpi","setCardsWithKpi","manualTime","setManualTime","manualMinuteEntry","setManualMinuteEntry","manualHourEntry","setManualHourEntry","timerFunction","verifyTimer","kpiCards","calcTimer","kill","ignoreManual","iniTimer","kpiChart","model","series","labels","kpi_total","percent100","meta","plugins","Chartist","tooltipFnc","axisX","showGrid","axisY","onlyInteger","sumKpi","percentKpi","diffCalc","KpiDescription","stopTimer","startTimer","imagePreviewList","Columns","cardA","cardB","refA","refB","verifyForm","dd","di","fieldId","defaultState","activeChats","logoMachen","AvatarIconColor","darkText","fieldRadius","lightText","mediumText","timelineMyMessage","kpiChange","toLoad","callBackFn","generate","sagaMiddleware","createSagaMiddleware","createStore","combineReducers","alert","dismissAll","dismissed","chatTyping","overviewNav","timelineLoader","applyMiddleware","routerMiddleware","run","takeLatest","takeEvery","cardContainer","dragStatus","_hasStep","setDragStatus","setShowCompleted","cardKey","hasBoard","listStepLock","SimpleCard","_parent2","_parent3","dataA","dataB","axios","create","baseURL","defaults","withCredentials","interceptors","use","Authorization","Accept","removeUsers","setRemoveUsers","myDayUsers","setMyDayUsers","selectToMyDay","setSelectToMyDay","setUserList","validateUser","GroupMenuItem","userPermission","setUserParam","param","mdu","_data$_users$a","_data$_users$b","_data$_users$a2","_data$_users$b2","sendToDay","buttonText","iconButton","onlyIcon","btnClassesText","iconBackground","BadgeIcon","createBrowserHistory","AvatarList","avatarBorder","listingStyle","aai","fieldSet","progressPercentage","connectedIn","returnConnections","connectedCardAccess","icons","instruction","picture","searchMobile","logoNormal","pageLink","pageLinkActive","activeArrow","_cards$hashs$","_cards$hashs$2","_cards$hashs$3","_cards$hashs$4","Barchart","keysLabel","dashFilterChart","setDashFilterChart","_props$dashboardConfi","_props$dashboardConfi2","_props$dashboardConfi3","usersUsed","_db$cards$cardId","_db$cards$cardId2","_db$cards$cardId$comp","_db$cards$cardId$upda","_db$cards$cardId$crea","_db$cards$cardId3","_db$cards$cardId4","_db$cards$cardId5","lastDateCard","dateCard","_usersUsed$u","_usersUsed$u2","_usersUsed$u3","_usersUsed$u4","newLabel","handleSetSelected","filterConfig","filterSelect","handleSetoption","point","userID","getNames","higherValue","fakeDataWall","timeTasks","lateTasks","getWeek","weekStart","startOf","endOf","startDateLast","endDateLast","_timeTasks","_timeTasks$data","_timeTasks$data$dateC","_timeTasks2","_timeTasks2$data","_timeTasks2$data$date","_lateTasks","_lateTasks$data","_lateTasks$data$lastD","_lateTasks2","_lateTasks2$data","_lateTasks2$data$last","wdith","timelineParams","setTimelineParams","timeSheetData","setTimeSheetData","totalSecondsRef","usersRef","colorSelectRef","similarColorsRef","_props$filter","_props$filter2","generateSimilarColors","_props$dashboardConfi4","_props$dashboardConfi5","_dashFilterChart$tags","_similarColorsRef$cur","_similarColorsRef$cur2","temp","padStart","_props$dashboardConfi6","_props$dashboardConfi7","_dashFilterChart$tags2","_props$dashboardConfi8","_props$dashboardConfi9","_props$dashboardConfi0","_props$dashboardConfi1","_db$cards$a$completed","_db$cards$a$updated_a","_db$cards$a$created_a","isBetween","_props$dashboardConfi10","_props$dashboardConfi11","_props$dashboardConfi12","_props$dashboardConfi13","_props$dashboardConfi14","_props$dashboardConfi15","_props$dashboardConfi16","_props$dashboardConfi17","_props$dashboardConfi18","datum","showMoreButton","setShowMoreButton","cRef","selectedType","selectThisV2","ignoreStep","suggestion","noLog","at","disableDelete","anonymousMode","_db$cards$fil$complet","_db$cards$fil$updated","_db$cards$fil$created","arcLinkLabelsTextColor","dueActivities_page","setDueActivities_page","taskRef","setHeight","containerItemCount","Pagination","setSteps","setUsers","newSteps","_db$cards$cd$complete","_db$cards$cd$updated_","_db$cards$cd$created_","sst","filterName","rtFilters","onRtFilter","im","currentBorderWidth","_db$cards$fil$complet2","_db$cards$fil$updated2","_db$cards$fil$created2","lastCompletedCards_page","setlastCompletedCards_page","_db$cards$card$comple","_db$cards$card$update","_db$cards$card$create","completeA","completeB","_db$cards$card$comple2","_db$cards$card$update2","_db$cards$card$create2","_db$cards$card$comple3","_db$cards$card$update3","_db$cards$card$create3","filterStructure","nextActivities_page","setNextActivities_page","refArray","_getHeader$","getHeader","renderedData","setRenderedData","setLoaded","cardsList","cellStyle","promisesHours","cellRef","monthIndex","resolveY","getHoursByTag","resolveMap","calcTime","subCards","Xcard","cardTimer","timerTotal","timeText","Hours","hourItem","nestedKey","loadTime","tyle","_db$cards$cardId6","_db$cards$cardId6$_cr","setDescription","PositiveValue","unreadMessages","messageId","isValidMessage","isUnread","aspectsTitle","setAspects","newAspects","internalType","externalType","internalTypeMult","externalTypeMult","stopLoading","setStopLoading","reqParents","vmQuery","allowfullscreen","MachenIco","SWOT","cloneElement","iniKpi","reqData","accomplished","ChartistGraph","listener","kpiInfo","kpii","kpif","PopperMenu","track","headerIcon","headerTitle","actionButtons","cancelButton","saveButton","propIcon","propCustomButtons","editing","setEditing","modMessageOpen","setModMessageOpen","buttonsHover","setButtonsHover","bt","saveName","timelineMessage","PopperProps","setLoadStatus","updatedLoads","prefixNumericKeys","allStatus","searchParams","customIgnoreLoader","requestData","mountedCards","mountCards","ndata","_card$data","prepareUsers","userMap","_myDayUsers$find","myDayUser","prepareGroups","groupMap","formatCardData","_card$createdBy","_card$parentCompleted","_card$updated_at","existingCard","favorite","_myDay","inFlow","parentCompleted","_card$showGroups$filt","_card$showGroups","formattedCard","firstHash","secondHash","isPlanId","resolveLoad","loadConfig","resolvePlanLoad","configs","dataSet1","dataUsers","total_time","total_hours","total_minutes","total_seconds","finalData","calc","total_diff","total_diffText","ds","userName","first","second","primaryBoxShadow","infoBoxShadow","successBoxShadow","warningBoxShadow","dangerBoxShadow","roseBoxShadow","kanban","price","onBoarding","activeLimit","uploadLimit","groupUsersLimit","mobile","addOn","learneng","denkenDiscount","planLimit","groupLimit","GuidelineD","GuidelineR","GuidelineC","GuidelineE","BrightAndConnectedIcon","MicrosoftWord","MicrosoftExcel","MicrosoftPowerpoint","PDF","permissions","read","moderate","requireFields","noId","loadChildrens","SwotIcon","reqUsers","_safety","dbUserUpdate","tokenId","safety","parentUser","groupId","userParam","idu","_db$users$session$_id","_db$users$session$_id2","lineSmooth","Interpolation","cardinal","tension","chartPadding","emailsSubscriptionChart","responsiveOptions","seriesBarDistance","labelInterpolationFnc","draw","begin","dur","easing","completedTasksChart","chartRect","Svg","Easing","easeOutQuint","roundedLineChart","showPoint","straightLinesChart","simpleBarChart","colouredLineChart","multipleBarsChart","colouredLinesChart","pieChart","errorData","setErrorData","installProgress","setInstallProgress","installStep2","installStep3","loadPlan","loadPlanCompleted","dataSend","templateId","installTemplate","iconButtonStyle","contentWithExpand","HeaderComponent","isPrivate","fieldName","hasOptions","NotificationCount","planNote","setPlanNote","planNoteSave","setPlanNoteSave","saveNote","clean","spellcheck","highlighter","boxSizing","suggestions","rootRelative","borderLeftWidth","borderRightWidth","timelineSimplePanel","editorRelative","mentionInput","mentionWrapper","draft","setMessage","sending","setSending","fileDropDrag","setFileDropDrag","fileList","setFileList","fileSend","setFileSend","fileProgress","setFileProgress","fileError","setFileError","setUrlPreview","urlPreviewLoad","setUrlPreviewLoad","urlErrors","setUrlErros","onEmojiPicker","setOnEmojiPicker","inputHeight","refFileDrop","sendingInput","_props$draft","textInput","_props$draft2","inputId","usersMentioned","test1","sendMessage","notifyUsers","replyData","_client","userAccessNew","sendFiles","percentCompleted","sendedList","fileUpload","nFilesSend","fileSizeAlert","usersSuggestion","fs","FileDrop","relative","URL","createObjectURL","deleteFile","valueBuffer","MentionsInput","pattern","dataUrl","urlErrorsArray","verifyText","onPaste","clipboardData","mentionInputStyle","forceSuggestionsAboveCursor","autosize","maxRows","Mention","renderSuggestion","highlightedDisplay","Picker","onEmojiClick","emojiObject","emoji","groupVisibility","recently_used","mi","idUser","lastMessageDate","loadMessages","toId","nodes","reqTimeline","nodesIds","chatOpenId","toUsers","noReg","unReadCount","unReadCountGroup","unReadCountUser","externalGroups","externalUsers","comm","toReplace","forwardedId","_props$indicators","_props$indicators2","_props$indicators3","_props$indicators4","_props$filterConfig","_props$filterConfig2","_props$filterConfig3","_props$filterConfig4","_props$filterConfig5","_props$filterConfig6","_props$filterConfig7","_props$filterConfig8","_props$filterConfig9","_props$filterConfig0","_props$filterConfig1","_props$filterConfig10","_props$filterConfig11","_props$filterConfig12","_props$filterConfig13","_props$filterConfig14","_props$filterConfig15","_props$filterConfig16","_props$filterConfig17","_props$filterConfig18","handleModal","blog","raised","cardClasses","cardBodyStyle","cardBody","WebkitBoxFlex","cardBodyBackground","cardBodyPlain","cardBodyFormHorizontal","cardPricing","cardBodyColor","cardBodyProfile","cardBodyCalendar","formHorizontal","cardBodyClasses","preData","newPredata","_titles","_titles$actions","_titles2","_titles2$actions","_db$cards$fil$complet3","_db$cards$fil$updated3","_db$cards$fil$created3","_db$cards$fil$complet4","_db$cards$fil$updated4","_db$cards$fil$created4","_db$cards$fil$complet5","_db$cards$fil$updated5","_db$cards$fil$created5","_titles$goals","_titles2$goals","_titles$guidelines","_titles2$guidelines","_titles$objectives","_titles2$objectives","filterChart","dataStructure","setTable","generateColor","_filterChart$tagsColo","_similarColorsRef$cur3","nameLength","modalData","keysLabelArr","weekStructure","checkWeekStructure","updateTaskInfo","_timeTasks$label","_modalData$label2","_modalData$label3","_modalData$label4","_modalData$label4$sta","_modalData$label5","cardDate","monthKey","startOfMonth","endOfMonth","weekEnd","weekKey","getWeeks","firstWeek","lastWeek","_modalData$label","_filterChart$users","_db$cards$planCard","_db$cards$planCard2","filterUser","_db$cards$planCard$co","_filterChart$tags","getLeftValue","hihgherLabel","tooltipFormat","filterProps","keysRef","keysColors","keysColorsArr","keysRefArr","dateFilterStart","dateFilterEnd","_filter$tags","_timeTasks$monthKey","_timeTasks$monthKey2","finalArr","static","isStatic","nRest","tooltipTitle","computedColor","commonStyle","iconStyle","setInViewport","elementRef","observer","IntersectionObserver","entry","isIntersecting","threshold","unobserve","autoCompleteProps","newArray","valueSelect","returnArray","changeGroups"],"mappings":"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CAClBz6C,gBAAiB3G,YAAU,UAC3B4L,UACE,eACA5L,YAAU,SAAU,KACpB,oBACAA,YAAU,SAAU,IACpB,sBACAA,YAAU,SAAU,KACtB,kBAAmB,CACjB2G,gBAAiB3G,YAAU,UAC3B4L,UACE,qBACA5L,YAAU,SAAU,KACpB,oBACAA,YAAU,SAAU,KACpB,0BACAA,YAAU,SAAU,MAG1BqhD,QAAS,CACP16C,gBAAiBsqB,IAAa,GAC9BrlB,UACE,oBACAgZ,YAASqM,IAAa,IACtB,gCACArM,YAASqM,IAAa,IACtB,4BACArM,YAASqM,IAAa,IACtB,UACF,kBAAmB,CACjBtqB,gBAAiBsqB,IAAa,GAC9BrlB,UACE,0BACAgZ,YAASqM,IAAa,IACtB,gCACArM,YAASC,KACT,iCACAD,YAASqM,IAAa,IACtB,WAGN7tB,KAAM,CACJuD,gBAAiB26C,IAAU,GAC3B11C,UACE,oBACAgZ,YAAS08B,IAAU,IACnB,gCACA18B,YAAS08B,IAAU,IACnB,4BACA18B,YAAS08B,IAAU,IACnB,UACF,kBAAmB,CACjB36C,gBAAiB26C,IAAU,GAC3B11C,UACE,0BACAgZ,YAAS08B,IAAU,IACnB,gCACA18B,YAASC,KACT,iCACAD,YAAS08B,IAAU,IACnB,WAGNj+C,QAAS,CACPsD,gBAAiB46C,IAAa,GAC9B31C,UACE,oBACAgZ,YAAS28B,IAAa,IACtB,gCACA38B,YAAS28B,IAAa,IACtB,4BACA38B,YAAS28B,IAAa,IACtB,UACF,kBAAmB,CACjB56C,gBAAiB46C,IAAa,GAC9B31C,UACE,0BACAgZ,YAAS28B,IAAa,IACtB,gCACA38B,YAASC,KACT,iCACAD,YAAS28B,IAAa,IACtB,WAGNC,QAAS,CACP76C,gBAAiB86C,IAAa,GAC9B71C,UACE,oBACAgZ,YAAS68B,IAAa,IACtB,gCACA78B,YAAS68B,IAAa,IACtB,4BACA78B,YAAS68B,IAAa,IACtB,UACF,kBAAmB,CACjB96C,gBAAiB86C,IAAa,GAC9B71C,UACE,0BACAgZ,YAAS68B,IAAa,IACtB,gCACA78B,YAASC,KACT,iCACAD,YAAS68B,IAAa,IACtB,WAGNC,OAAQ,CACN/6C,gBAAiBg7C,IAAY,GAC7B/1C,UACE,oBACAgZ,YAAS+8B,IAAY,IACrB,gCACA/8B,YAAS+8B,IAAY,IACrB,4BACA/8B,YAAS+8B,IAAY,IACrB,UACF,kBAAmB,CACjBh7C,gBAAiBg7C,IAAY,GAC7B/1C,UACE,0BACAgZ,YAAS+8B,IAAY,IACrB,gCACA/8B,YAASC,KACT,iCACAD,YAAS+8B,IAAY,IACrB,WAGNC,KAAM,CACJj7C,gBAAiBk7C,IAAU,GAC3Bj2C,UACE,oBACAgZ,YAASi9B,IAAU,IACnB,gCACAj9B,YAASi9B,IAAU,IACnB,4BACAj9B,YAASi9B,IAAU,IACnB,UACF,kBAAmB,CACjBl7C,gBAAiBk7C,IAAU,GAC3Bj2C,UACE,0BACAgZ,YAASi9B,IAAU,IACnB,gCACAj9B,YAASC,KACT,iCACAD,YAASi9B,IAAU,IACnB,WAGNtwB,MAAO,CACL,oBAAqB,CACnB5qB,gBAAiB6d,IACjB/iB,MAAOovB,IAAU,KAGrBixB,QAAS,CACPn7C,gBAAiBo7C,IACjBtgD,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAASm9B,KACT,gCACAn9B,YAASm9B,KACT,4BACAn9B,YAASm9B,KACT,UACF,4BAA6B,CAC3Bp7C,gBAAiBo7C,IACjBtgD,MAAO+iB,IACP5Y,UACE,0BACAgZ,YAASm9B,KACT,gCACAn9B,YAASC,KACT,iCACAD,YAASm9B,KACT,WAGNC,SAAU,CACRr7C,gBAAiBs7C,IACjBxgD,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAASq9B,KACT,gCACAr9B,YAASq9B,KACT,4BACAr9B,YAASq9B,KACT,UACF,kBAAmB,CACjBt7C,gBAAiBs7C,IACjBxgD,MAAO+iB,IACP5Y,UACE,0BACAgZ,YAASq9B,KACT,gCACAr9B,YAASC,KACT,iCACAD,YAASq9B,KACT,WAGNC,OAAQ,CACNv7C,gBAAiBw7C,IACjB1gD,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAASu9B,KACT,gCACAv9B,YAASu9B,KACT,4BACAv9B,YAASu9B,KACT,UACF,kBAAmB,CACjBx7C,gBAAiBw7C,IACjB1gD,MAAO+iB,IACP5Y,UACE,0BACAgZ,YAASu9B,KACT,gCACAv9B,YAASC,KACT,iCACAD,YAASu9B,KACT,WAGNC,SAAU,CACRz7C,gBAAiB07C,IACjB5gD,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAASy9B,KACT,gCACAz9B,YAASy9B,KACT,4BACAz9B,YAASy9B,KACT,UACF,kBAAmB,CACjB17C,gBAAiB07C,IACjB5gD,MAAO+iB,IACP5Y,UACE,0BACAgZ,YAASy9B,KACT,gCACAz9B,YAASC,KACT,iCACAD,YAASy9B,KACT,WAGNC,UAAW,CACT37C,gBAAiB47C,IACjB9gD,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAAS29B,KACT,gCACA39B,YAAS29B,KACT,4BACA39B,YAAS29B,KACT,UACF,kBAAmB,CACjB57C,gBAAiB47C,IACjB9gD,MAAO+iB,IACP5Y,UACE,0BACAgZ,YAAS29B,KACT,gCACA39B,YAASC,KACT,iCACAD,YAAS29B,KACT,WAGN7a,QAAS,CACP/gC,gBAAiB67C,IACjB/gD,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAAS49B,KACT,gCACA59B,YAAS49B,KACT,4BACA59B,YAAS49B,KACT,UACF,kBAAmB,CACjB77C,gBAAiB67C,IACjB/gD,MAAO+iB,IACP5Y,UACE,0BACAgZ,YAAS49B,KACT,gCACA59B,YAASC,KACT,iCACAD,YAAS49B,KACT,WAGNC,OAAQ,CACN97C,gBAAiB+7C,IACjBjhD,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAAS89B,KACT,gCACA99B,YAAS89B,KACT,4BACA99B,YAAS89B,KACT,UACF,kBAAmB,CACjB/7C,gBAAiB+7C,IACjBjhD,MAAO+iB,IACP5Y,UACE,0BACAgZ,YAAS89B,KACT,gCACA99B,YAASC,KACT,iCACAD,YAAS89B,KACT,WAGNC,OAAQ,CACNh8C,gBAAiBkqB,IAAU,GAC3BpvB,MAAO+iB,IACP5Y,UACE,oBACAgZ,YAASiM,IAAU,IACnB,gC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yBACA,cACA,iBACA,oBACA,WACA,uBACA,QACA,YACA,YACA,WACA,YACA,UACA,YACA,SACA,UACA,eACA,MACA,eACA,oBACA,kBACA,kBACA,UACA,eACA,aACA,aACA,iBACA,kBACA,oBACA,sBACA,uBACA,YACA,SACA,eACA,mBACA,OACA,WACA,kBACA,YACA,aACA,QACA,eACA,SACA,iBACA,oBACA,iBACA,uBACA,gBACA,kBACA,cACA,iBACA,eACA,uBACA,qBACA,QACA,mBACA,OACA,eACA,UACA,iBACA,kBACA,cACA,YACA,cACA,YACA,aACA,SACA,iBACA,iBACA,cACA,MACA,OACA,WACA,eACA,cACA,cACA,iBACA,eACA,MACA,QACA,cACA,QACA,aACA,cACA,UACA,cACA,YACA,OACA,aACA,WACA,kBACA,WACA,aACA,eACA,eACA,cACA,QACA,cACA,iBACA,eACA,gBACA,cACA,QACA,UACA,MACA,QACA,UACA,aACA,OACA,cACA,eACA,gBACA,gBACA,UACA,qBACA,OACA,mBACA,qBACA,kBACA,iBACA,OACA,QACA,oBACA,OACA,QACA,2BACA,gBACA,QACA,kBACA,YACA,WACA,SACA,cACA,aACA,cACA,OACA,OACA,YACA,QACA,UACA,qBACA,WACA,YACA,WACA,iBACA,YACA,iBACA,cACA,WACA,eACA,cACA,oBACA,UACA,kBACA,eACA,cACA,YACA,SACA,WACA,WACA,UACA,UACA,kBACA,kBACA,wBACA,oBACA,0BACA,gBACA,aACA,iBACA,iBACA,OACA,qBACA,yBACA,aACA,gBACA,UACA,qBACA,iBACA,UACA,QACA,cACA,gBACA,kBACA,aACA,UACA,oBACA,SACA,uBACA,UACA,iBACA,UACA,qBACA,eACA,OACA,iBACA,SACA,OACA,WACA,SACA,aACA,WACA,wBACA,0BACA,qBACA,sBACA,gBACA,oBACA,yBACA,2BACA,2BACA,sBACA,wBACA,oBACA,iBACA,iBACA,kBACA,iBACA,OACA,WACA,eACA,kBACA,gBACA,eACA,SACA,gBACA,oBACA,aACA,YACA,QACA,gBACA,QACA,UACA,gBACA,yBACA,qBACA,UACA,aACA,yBACA,YACA,uBACA,WACA,oBACA,MACA,iBACA,aACA,iBACA,uBACA,0BACA,wBACA,qBACA,qBACA,WACA,aACA,WACA,iBACA,WACA,MACA,QACA,OACA,YACA,OACA,gBACA,YACA,gBACA,gBACA,cACA,YACA,gBACA,SACA,UACA,WACA,gBACA,iBACA,cACA,aACA,gBACA,cACA,WACA,gBACA,YACA,cACA,aACA,eACA,cACA,YACA,aACA,iBACA,iBACA,cACA,uBACA,OACA,WACA,eACA,UACA,uBACA,UACA,YAEJ,MAAS,CACL,YACA,cACA,QACA,gBACA,yBACA,WAEJ,GAAM,CACF,KACA,KACA,eACA,UACA,QACA,YACA,WACA,qBACA,iBACA,iBACA,0BACA,iBACA,YACA,WACA,eACA,cACA,qBACA,iBACA,YACA,sBACA,YACA,YACA,qBACA,aACA,aACA,YACA,QACA,KACA,UACA,mBACA,eACA,cACA,oBACA,gBACA,gBACA,OACA,MACA,WACA,UACA,oBACA,QACA,cACA,eACA,iBACA,OACA,QACA,sBACA,uBACA,aACA,qBACA,sBACA,eACA,qBACA,gBACA,QACA,cACA,kBACA,QACA,gBACA,oBACA,SACA,aACA,SACA,YACA,YACA,WACA,UACA,YACA,gBACA,oBACA,SACA,gBACA,QACA,OACA,cACA,gBACA,YACA,iBACA,aACA,cACA,gBACA,iBACA,WACA,eACA,cACA,cACA,aACA,YACA,MACA,aAEJ,cAAiB,CACb,cACA,kBACA,WACA,OACA,WACA,YACA,aACA,cACA,uBACA,gBACA,aACA,sBACA,OACA,cACA,sBACA,YACA,UACA,eACA,gBACA,WACA,0BACA,aACA,UACA,kBACA,sBACA,MACA,QACA,QACA,mBACA,mBACA,gBACA,kBACA,gBACA,oBACA,WACA,YACA,eACA,cACA,eACA,iBACA,mBACA,kBACA,oBACA,UACA,sBACA,YACA,MACA,SACA,qBACA,sBACA,gBACA,QACA,iBACA,gBACA,kBACA,iBACA,iBACA,kBACA,oBACA,iBACA,iBACA,UACA,kBACA,YACA,cACA,WACA,eACA,0BACA,gBACA,yBACA,wBACA,yBACA,wBACA,oBACA,aACA,UACA,cACA,YACA,UACA,gBAEJ,QAAW,CACP,MACA,UACA,aACA,qBACA,cACA,UACA,YACA,SACA,UACA,QACA,YACA,QACA,eACA,cACA,gBACA,SACA,eACA,SACA,eACA,YACA,cACA,OACA,gBACA,SACA,UACA,aACA,cACA,QACA,WACA,OACA,WACA,eACA,OACA,aACA,gBACA,YACA,gBACA,SACA,WACA,OACA,SACA,gBACA,wBACA,QACA,YACA,SACA,aACA,OACA,WACA,aACA,OACA,OACA,cACA,cACA,YACA,OACA,QACA,UACA,iBAEJ,OAAU,CACN,eACA,cACA,WACA,YACA,qBACA,sBACA,wBACA,gBACA,wBACA,eACA,cACA,kBACA,YACA,sBACA,qBACA,sBACA,kBACA,kBACA,iBACA,oBACA,aACA,iBACA,UACA,MACA,YACA,gBACA,UACA,aACA,oBACA,qBACA,kBACA,aACA,MACA,wBACA,uBACA,uBACA,kBACA,aACA,2BACA,wBACA,sBACA,8CACA,yBACA,uBACA,sBACA,oBACA,yBACA,kBACA,UACA,MACA,YACA,UACA,YACA,kBAEJ,OAAU,CACN,cACA,cACA,eACA,YACA,aACA,gBACA,eACA,oBACA,eACA,cACA,eACA,eACA,eACA,aACA,kBACA,eACA,cACA,sBACA,uBACA,oBACA,qBACA,cACA,eACA,qBACA,yBACA,yBACA,gBACA,sBACA,uBACA,uBACA,2BACA,eACA,eACA,gBACA,cACA,uBACA,8BACA,8BACA,oBACA,YACA,SACA,YACA,kBACA,eACA,wBACA,iBACA,oBACA,kBACA,oBACA,cACA,eACA,eACA,aACA,eACA,kBACA,YACA,kBACA,QACA,YACA,WACA,UACA,eACA,QACA,aACA,aACA,YACA,kBACA,YACA,cACA,cACA,aACA,cACA,QACA,wBACA,wBACA,qBACA,aAEJ,KAAQ,CACJ,eACA,aACA,QACA,eACA,aACA,iBACA,YACA,cACA,eACA,oBACA,SACA,cACA,gBACA,gBACA,cACA,iBACA,eACA,SAEJ,SAAY,CACR,wBACA,OACA,iBACA,qBACA,WACA,cACA,kBACA,kBACA,aACA,iBACA,gBACA,OACA,UACA,UACA,cACA,WACA,sBACA,sBACA,uBACA,oBACA,qBACA,oBACA,gBACA,kBACA,eACA,iBACA,SACA,oBACA,aACA,iBACA,SACA,QACA,gBACA,eACA,YACA,gBACA,gBACA,cACA,SACA,UACA,WACA,WACA,aACA,UACA,gBACA,SACA,iBACA,aACA,OACA,KACA,kBACA,SAEJ,KAAQ,CACJ,cACA,iBAEJ,MAAS,CACL,cACA,sBACA,gBACA,SACA,YACA,kBACA,aACA,UACA,gBACA,cACA,WACA,UACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,QACA,aACA,SACA,aACA,eACA,cACA,cACA,sBACA,oBACA,cACA,uBACA,aACA,WACA,UACA,gBACA,0BACA,OACA,YACA,WACA,WACA,WACA,WACA,YACA,iBACA,gBACA,gBACA,cACA,cACA,SACA,UACA,OACA,OACA,WACA,iBACA,iBACA,kBACA,kBACA,gBACA,SACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,gBACA,iBACA,sBACA,eACA,gBACA,aACA,cACA,oBACA,iBACA,QACA,aACA,YACA,WACA,OACA,sBACA,kBACA,WACA,QACA,WACA,UACA,UACA,SACA,aACA,WACA,UACA,QACA,qBACA,sBACA,eACA,MACA,YACA,WACA,cACA,OACA,gBACA,QACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,oBACA,mBACA,uBACA,iBACA,eACA,aACA,YACA,SACA,gBACA,kBACA,gBACA,UACA,WACA,oBACA,sBACA,oBACA,sBACA,QACA,cACA,eACA,eACA,gBACA,2BACA,0BACA,0BACA,iBACA,WACA,eACA,iBACA,wBACA,cACA,eACA,gBACA,YACA,aACA,QACA,gBACA,eACA,YACA,UACA,YACA,QACA,WACA,UACA,YACA,WACA,YACA,OACA,aACA,eACA,WACA,UACA,YACA,kBACA,gBACA,YAEJ,KAAQ,CACJ,MACA,eACA,eACA,mBACA,WACA,cACA,YACA,MACA,WACA,eACA,WACA,oBACA,sBACA,kBACA,kBACA,aACA,kBACA,kBACA,iBACA,iBACA,qBACA,iBACA,oBACA,qBACA,kBACA,kBACA,gBACA,YACA,gBACA,eACA,iBACA,mBACA,sBACA,aACA,WACA,SACA,WACA,sBACA,QACA,OACA,SACA,eACA,iBACA,gBACA,YACA,YACA,aACA,iBACA,0BACA,eACA,cACA,wBACA,gBACA,oBACA,sBACA,iBACA,cACA,wBACA,gBACA,aACA,eACA,cACA,gBACA,iBACA,cACA,cACA,aACA,eACA,oBACA,kBACA,YACA,iBACA,aACA,MACA,WACA,mBACA,YACA,yBACA,QACA,QACA,gBACA,SACA,cACA,aACA,UACA,mBACA,WACA,cACA,sBACA,aACA,aACA,oBACA,eACA,sBACA,WACA,QACA,WACA,cACA,aACA,kBACA,aACA,YACA,WACA,uBACA,aACA,SACA,UACA,UACA,QACA,OACA,4BACA,oBACA,cACA,cACA,WACA,iBACA,gBAEJ,WAAc,CACV,mBACA,OACA,aACA,iBACA,iBACA,kBACA,yBACA,gBACA,gBACA,oBACA,aACA,cACA,eACA,WACA,SACA,QACA,eACA,gBACA,QACA,eACA,OACA,cACA,cACA,aACA,aACA,kBACA,YACA,YACA,gBACA,OACA,YACA,aACA,YACA,QACA,aACA,aACA,WACA,UACA,QACA,aACA,aACA,0BACA,2BACA,cACA,eACA,cACA,cACA,QAEJ,aAAgB,CACZ,eACA,MACA,oBACA,2BACA,gCACA,6BACA,8BACA,+BACA,6BACA,8BACA,kBACA,sBACA,iBACA,YACA,YACA,sBACA,kBACA,aACA,aACA,iBACA,UACA,MACA,OACA,gBACA,iBACA,gBACA,iBACA,iBACA,0BACA,iBACA,kBACA,gBACA,eACA,eACA,eACA,QACA,YACA,gBACA,UACA,MACA,aACA,gBACA,OACA,gBACA,eACA,gBACA,eACA,gBACA,SACA,YACA,aACA,WACA,KACA,OACA,YAEJ,OAAU,CACN,UACA,kBACA,gBACA,YACA,wBACA,WACA,UACA,eACA,QACA,kBACA,YACA,SACA,mBACA,YACA,aACA,iBACA,iBACA,cACA,cACA,eACA,MACA,WACA,YACA,oBACA,kBACA,QACA,oBACA,iBACA,YACA,aACA,iBACA,cACA,QACA,UACA,QACA,eACA,UACA,eACA,YACA,gBACA,UACA,YACA,WACA,UACA,kBACA,iBACA,cACA,OACA,YACA,UACA,mBACA,eACA,YACA,aACA,gBACA,OACA,MACA,aACA,SACA,aACA,WACA,QACA,MACA,WACA,OACA,eACA,qBAEJ,OAAU,CACN,aACA,eACA,cACA,OACA,cACA,0BACA,eACA,cACA,OACA,SACA,UACA,iBACA,eACA,cACA,sBACA,eACA,gBACA,eACA,gBACA,uBACA,cACA,YACA,mBACA,QACA,YACA,cACA,WACA,qBACA,gBACA,QACA,gBACA,OACA,WACA,cACA,gBACA,uBACA,qBACA,oBACA,uBACA,gBACA,QACA,aACA,SACA,aACA,iBACA,SACA,aACA,mBACA,iBACA,gBACA,WACA,OACA,aACA,SACA,aACA,kBACA,YACA,SACA,UACA,mBACA,yBACA,sBACA,8BACA,2BACA,QACA,OACA,aACA,SACA,kBACA,oBACA,iBACA,iBACA,kBACA,cACA,kBACA,gBACA,iBACA,aACA,qBACA,eACA,gBACA,gBACA,oBACA,iBACA,eACA,YAEJ,OAAU,CACN,YACA,0BACA,0BACA,uBACA,yBACA,OACA,cACA,YACA,eACA,aACA,e,iICltCOG,IAnLf,SAAcrlI,GACV,MAAOkI,EAAMuC,GAAWnO,IAAMyL,UAAS,IAChC/K,EAAOsoI,GAAYhpI,IAAMyL,SAAS/H,EAAMhD,MAAQgD,EAAM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","file":"static/js/main.181cf891.chunk.js","sourcesContent":["import React from \"react\";\r\nimport { toast } from 'react-toastify'\r\nimport MD5 from \"crypto-js/md5\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\";\r\nrequire('dotenv').config()\r\n\r\nconst languageADD =\r\n (\r\n window.location.hostname.indexOf('a1b2c3d4') > -1\r\n || window.location.hostname.indexOf('localhost') > -1\r\n )\r\n && process.env.REACT_APP_PROD === \"true\"\r\n ? true\r\n : false\r\n// const languageADD = true\r\n\r\nconst translate = (al, style) => {\r\n if (al) {\r\n const words = reduxStore.getState().languages || {}\r\n const { session } = reduxStore.getState()\r\n\r\n let language = session && session.language ? session.language : 'pt-BR'\r\n // let language = 'pt-BR'\r\n\r\n let newText = al\r\n\r\n if (al && al.indexOf('$__') > -1) {\r\n al.split(' ').forEach((a, i) => {\r\n if (a && a.indexOf('$__') > -1) {\r\n let word = a.replace('$__', '').trim().toLowerCase()\r\n if (languageADD && !words[word]) {\r\n try {\r\n api.post(\"language/add\", {\r\n name: word\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n if (words[word] && words[word].locales.filter(a => a.locale === language).length > 0 && words[word].locales.filter(a => a.locale === language)[0].name) {\r\n newText = newText.replace(`${a}`, `${i > 0 ? ` ` : ``}${words[word].locales.filter(a => a.locale === language)[0].name}`)\r\n }\r\n }\r\n })\r\n } else {\r\n return al\r\n }\r\n\r\n let result = newText.replace(`$__`, ``)\r\n\r\n if (!result)\r\n return ''\r\n\r\n if (!style)\r\n return result\r\n\r\n if (style === '*')//ALL Upper Case\r\n return result.toUpperCase()\r\n\r\n if (style === 1) //First Letter Upper Case\r\n return result.substring(0, 1).toUpperCase().concat(result.substring(1))\r\n }\r\n}\r\n\r\nfunction nl2br(str, is_xhtml, break1 = \"<br/>\", break2 = \"<br>\") {\r\n if (typeof str === 'undefined' || str === null) {\r\n return '';\r\n }\r\n var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? break1 : break2;\r\n return (str + '').replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + breakTag + '$2');\r\n}\r\n\r\n\r\nfunction hexToRgba(str, opacity) {\r\n if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/ig.test(str)) {\r\n var hex = str.substr(1);\r\n hex = hex.length === 3 ? hex.replace(/(.)/g, '$1$1') : hex;\r\n var rgb = parseInt(hex, 16);\r\n return `rgba(${[(rgb >> 16) & 255, (rgb >> 8) & 255, rgb & 255]}, ${opacity || 1})`;\r\n }\r\n if (opacity && str && str.indexOf('rgb') > -1 && str.indexOf('rgba') === -1) {\r\n return str.replace(')', `, ${opacity})`).replace('rgb(', 'rgba(');\r\n } else {\r\n return str;\r\n }\r\n}\r\n\r\nexport const stripHtml = (html) => {\r\n let tmp = document.createElement(\"DIV\")\r\n tmp.innerHTML = html\r\n return tmp.textContent || tmp.innerText || \"\"\r\n}\r\n\r\nfunction rgbaToHex(color) {\r\n let colorSplit = color.replace('rgba(', '').replace(')', '').split(',')\r\n return colorSplit\r\n}\r\n\r\nfunction customApp(prop, opacity) {\r\n if (reduxStore) {\r\n const props = reduxStore.getState().session.custom\r\n return hexToRgba(props[prop], opacity) || prop\r\n }\r\n}\r\n\r\nfunction validateEmail(email) {\r\n var filter = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\r\n if (!filter.test(email)) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * @param {message} string\r\n * @param {variant} string //warning, danger, info, success or null \r\n * @param {confirm} function //TRUE-FALSE\r\n * @param {closed} boolean //TRUE-FALSE\r\n * @param {persist} boolean // TRUE-FALSE\r\n * @param {content} //HTML\r\n * @param {vertical} options // Vertical position // top, center, bottom\r\n * @param {horizontal} options // Horizontal position // left, center, right\r\n * @param {time} seconds // time to auto hide -> Default 3000\r\n */\r\n\r\n\r\n\r\nfunction appAlert(options = {}) {\r\n let key = MD5(JSON.stringify(options)).toString()\r\n\r\n let content = options.content ? options.content : options.message\r\n if (options.confirm)\r\n content = (\r\n <div style={{ minWidth: \"300px\" }}>\r\n {content}\r\n <div style={{ display: \"flex\", width: \"100%\", marginTop: 15, justifyContent: \"center\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__confirm\")}\r\n text={translate(\"$__confirm\")}\r\n color=\"green\"\r\n icon={\"check\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n options.confirm()\r\n toast.dismiss(key)\r\n }}\r\n\r\n />\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__cancel\")}\r\n text={translate(\"$__cancel\")}\r\n color=\"red\"\r\n icon={\"close\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n toast.dismiss(key)\r\n }}\r\n style={{ marginLeft: 15 }}\r\n />\r\n </div>\r\n </div>\r\n )\r\n\r\n if (options.buttons && options.buttons.length > 0)\r\n content = (\r\n <div style={{ minWidth: \"300px\" }}>\r\n {content}\r\n <div style={{ width: \"100%\", marginTop: 15, justifyContent: \"center\" }}>\r\n {options.buttons.map((b, bi) =>\r\n <CustomButton\r\n key={bi}\r\n {...b}\r\n style={{\r\n ...options && options.style ? options.style : {},\r\n marginBottom: 10\r\n }}\r\n onClick={() => {\r\n if (b.onClick)\r\n b.onClick()\r\n toast.dismiss(key)\r\n }}\r\n\r\n />\r\n )}\r\n </div>\r\n </div>\r\n )\r\n\r\n let toastOptions = {\r\n toastId: key,\r\n position: toast.POSITION.BOTTOM_RIGHT,\r\n ...options.options ? options.options : {},\r\n ...!options.persist ? { autoClose: options.autoClose ? options.autoClose : 2000 } : {},\r\n style: { minWidth: \"300px\" },\r\n }\r\n\r\n if (options.horizontal === 'left')\r\n toastOptions = {\r\n ...toastOptions,\r\n position: toast.POSITION.BOTTOM_LEFT\r\n }\r\n if (options.horizontal === 'right')\r\n toastOptions = {\r\n ...toastOptions,\r\n position: toast.POSITION.BOTTOM_RIGHT\r\n }\r\n if (options.horizontal === 'center')\r\n toastOptions = {\r\n ...toastOptions,\r\n position: toast.POSITION.BOTTOM_CENTER\r\n }\r\n\r\n\r\n if (!toast.isActive(key)) {\r\n if (options.variant === 'info' || !options.variant)\r\n toast.info(content, toastOptions)\r\n\r\n if (options.variant === 'success')\r\n toast.success(content, toastOptions)\r\n\r\n if (options.variant === 'warning')\r\n toast.warn(content, toastOptions)\r\n\r\n if (options.variant === 'error')\r\n toast.error(content, toastOptions)\r\n }\r\n return true\r\n}\r\n\r\nconst decimal = (val, digits = 2) => {\r\n if (!val)\r\n return ``\r\n\r\n let value = val.replace(/\\D/g, '')\r\n if ((value.match(/./g) || []).length > 1) {\r\n value = val.replace(',', '.')\r\n let nv = value.split('.')\r\n if (nv.length === 1)\r\n return parseFloat(value)\r\n value = value.replaceAll(`.${nv[nv.length - 1]}`, ``)\r\n value = String(value).replaceAll('.', '')\r\n let decimal = nv[nv.length - 1].substring(0, digits)\r\n value = `${value}.${decimal}`\r\n }\r\n return value\r\n}\r\n\r\nconst formatNumber = (a, s = 'decimal', currency) => {\r\n if (!a)\r\n return ''\r\n const { session } = reduxStore.getState()\r\n\r\n let value = String(a).replace(',', '.')\r\n let style = s\r\n\r\n\r\n if (style === 'number' || style === 'time' || style === 'decimal') {\r\n style = 'decimal'\r\n } else if (style === 'percent') {\r\n return `${value}%`\r\n // value = value / 100\r\n } else if (style !== 'currency') {\r\n return String(a)\r\n }\r\n\r\n let result = new Intl.NumberFormat(session.custom.locale, { style: style, currency: currency ? currency : session.custom.currency ? session.custom.currency : 'BRL' })\r\n\r\n result.setMaximumFractionDigits = s === 'number' ? 0 : 2\r\n return result.format(value)\r\n}\r\n\r\nconst languageUPD = (props, data) => {\r\n\r\n let newLocales = reduxStore.getState().languages[data.alias] && reduxStore.getState().languages[data.alias].locales ? Array.from(reduxStore.getState().languages[data.alias].locales) : []\r\n\r\n newLocales.flatMap(a => {\r\n if (a.locale === data.locale)\r\n return [a.name = data.text]\r\n })\r\n if (newLocales.filter(lc => lc.locale === data.locale).length === 0)\r\n newLocales.push({\r\n _id: data._id,\r\n locale: data.locale,\r\n name: data.text\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_LANGUAGE\", {\r\n ...reduxStore.getState().languages,\r\n [data.alias]: {\r\n ...reduxStore.getState().languages[data.alias] && reduxStore.getState().languages[data.alias],\r\n locales: newLocales\r\n }\r\n });\r\n}\r\n\r\nconst deleteNode = async (props, data) => {\r\n let { db } = reduxStore.getState()\r\n let nodeType = 'cards'\r\n if (db.cards[data._id]) {\r\n nodeType = 'cards'\r\n } else if (db.users[data._id]) {\r\n nodeType = 'users'\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n [nodeType]: {\r\n ...reduxStore.getState().db[nodeType],\r\n [data._id]: {\r\n ...reduxStore.getState().db[nodeType][data._id],\r\n deleted: true\r\n }\r\n }\r\n });\r\n}\r\n\r\nconst removeSeats = (str) => {\r\n let seats = \"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝŔÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿŕ\";\r\n let cleanStr = \"AAAAAAACEEEEIIIIDNOOOOOOUUUUYRsBaaaaaaaceeeeiiiionoooooouuuuybyr\";\r\n\r\n let newStr = \"\";\r\n for (let i = 0; i < str.length; i++) {\r\n let change = false;\r\n for (let a = 0; a < seats.length; a++) {\r\n if (str.substr(i, 1) === seats.substr(a, 1)) {\r\n newStr += cleanStr.substr(a, 1);\r\n change = true;\r\n break;\r\n }\r\n }\r\n if (change === false) {\r\n newStr += str.substr(i, 1);\r\n }\r\n }\r\n return newStr;\r\n}\r\n\r\nconst Highlighted = (text, highlight, dark) => {\r\n if (!highlight || (highlight && !highlight.trim())) {\r\n return <span style={{ wordBreak: \"break-word\" }} dangerouslySetInnerHTML={{\r\n __html: nl2br(text)\r\n }} />\r\n }\r\n let newText = nl2br(text)\r\n const parts = newText.split(new RegExp(`(${highlight.replace('*.', '.')})`, 'gi'));\r\n return (\r\n <span> {parts.map((part, i) =>\r\n <span key={i} style={part.toLowerCase() === highlight.toLowerCase() ? { fontWeight: 'bold', paddingTop: '3px', paddingBottom: '3px', backgroundColor: '#ffff00b3', color: dark ? '#000000 !important' : '' } : {}}\r\n dangerouslySetInnerHTML={{\r\n __html: nl2br(part)\r\n }}\r\n >\r\n </span>)\r\n } </span>\r\n )\r\n}\r\n\r\nconst links = (text) => {\r\n let newText = nl2br(text)\r\n const lines = newText.split(\"\\n\")\r\n\r\n let result = \"\"\r\n lines.forEach((ln) => {\r\n const parts = ln.split(\" \")\r\n parts.forEach(ppar => {\r\n let lln = ppar.split(\"\\n\")\r\n if (lln.length > 0) {\r\n lln.forEach((par) => {\r\n if (par.indexOf(\".youtube.com/watch?\") > -1) {\r\n let ybQuery = par.split(\"?\")[1].split(\"v=\")[1].split(\"&\")[0]\r\n if (ybQuery)\r\n result += `<iframe title=\"outModule\" width=\"560\" height=\"315\" style=\"width:100%; max-width:500px\" src=\"https://www.youtube.com/embed/${ybQuery}\" title=\"YouTube video player\" frameBorder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>`\r\n } else if (par.indexOf(\"//youtu.be/\") > -1) {\r\n let ybQuery = par.split(\".be/\")[1]\r\n if (ybQuery)\r\n result += `<iframe title=\"outModule\" width=\"560\" height=\"315\" style=\"width:100%; max-width:500px\" src=\"https://www.youtube.com/embed/${ybQuery}\" title=\"YouTube video player\" frameBorder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>`\r\n } else if (par.indexOf(\"http://\") > -1 || par.indexOf(\"https://\") > -1) {\r\n result += `<a style=\"word-break:break-all\" href=\"${par.replace('<br/>', '')}\" target=\"_blank\" rel=\"noopener noreferrer\">${par}</a>`\r\n } else {\r\n result += par\r\n }\r\n })\r\n result += \" \"\r\n } else if (lln[0].indexOf(\".youtube.com/watch?\") > -1\r\n && lln[0].split(\"?\").length > 1\r\n && lln[0].split(\"?\")[1].split(\"v=\").length > 1\r\n ) {\r\n let ybQuery = lln[0].split(\"?\")[1].split(\"v=\")[1].split(\"&\")[0]\r\n if (ybQuery)\r\n result += `<iframe title=\"outModule\" width=\"560\" height=\"315\" style=\"width:100%; max-width:500px\" src=\"https://www.youtube.com/embed/${ybQuery}\" title=\"YouTube video player\" frameBorder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>`\r\n } else if (lln[0].indexOf(\"http://\") > -1 || lln[0].indexOf(\"https://\") > -1) {\r\n result += `<a href=\"${lln[0].replace('<br/>', '')}\" target=\"_blank\" rel=\"noopener noreferrer\">${lln[0]} </a>`\r\n } else {\r\n result += `${ppar} `\r\n }\r\n })\r\n result += \"\"\r\n })\r\n return result\r\n}\r\n\r\nconst readedNotifications = (props, nodes) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n let notification = reduxStore.getState().notifications\r\n Object.keys(notification).forEach(a => {\r\n if (nodes && nodes.indexOf(a) > -1)\r\n notification[a] = {\r\n ...notification[a],\r\n readed: true\r\n }\r\n })\r\n socket.emit(\"data\", {\r\n module: \"notifications\",\r\n method: \"put\",\r\n action: \"readed\",\r\n }, {\r\n nodes\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_NOTIFICATIONS\", {\r\n ...reduxStore.getState().notifications,\r\n ...notification\r\n });\r\n}\r\n\r\nconst getAppAccess = () => {\r\n const { session } = reduxStore.getState()\r\n let AppAccess = {}\r\n if (session && session._access)\r\n AppAccess = session._access\r\n return AppAccess\r\n}\r\n\r\nconst favoriteNode = async (props, _id, del = false) => {\r\n if (!del) {\r\n try {\r\n api.put('/node/favorite', { _id })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n } else {\r\n try {\r\n api.delete(`/node/favorite/${_id}`)\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n}\r\n\r\nconst padZero = (a) => {\r\n var s = a;\r\n while (s.length === 1) {\r\n s = '0' + s;\r\n }\r\n return s;\r\n};\r\n\r\nconst textColor = (reqColor, bw, light = '#FFFFFF', dark = '#000000') => {\r\n let color = reqColor\r\n var r,\r\n g,\r\n b\r\n\r\n if (color.indexOf('rgba') > -1) {\r\n color = color.replace('rgba(', '')\r\n let colors = color.split(',')\r\n r = colors[0]\r\n g = colors[1]\r\n b = colors[2]\r\n } else {\r\n if (color.indexOf('#') === 0) {\r\n color = color.slice(1);\r\n }\r\n if (color.length === 3) {\r\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\r\n }\r\n if (color.length !== 6) {\r\n // throw new Error('Invalid HEX color.');\r\n }\r\n r = parseInt(color.slice(0, 2), 16)\r\n g = parseInt(color.slice(2, 4), 16)\r\n b = parseInt(color.slice(4, 6), 16)\r\n }\r\n\r\n if (bw) {\r\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\r\n ? dark\r\n : light\r\n }\r\n r = (255 - r).toString(16);\r\n g = (255 - g).toString(16);\r\n b = (255 - b).toString(16);\r\n return \"#\" + padZero(r) + padZero(g) + padZero(b);\r\n}\r\n\r\nexport function stringLength(str, car) {\r\n if (str !== undefined) {\r\n if (str.length <= car) {\r\n return str;\r\n } else {\r\n return str.slice(0, car - 3) + \"...\";\r\n }\r\n } else {\r\n return str;\r\n }\r\n}\r\nexport function stringToColor(string) {\r\n let hash = 0;\r\n let i;\r\n for (i = 0; i < string?.length; i += 1) {\r\n hash = string?.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n let color = '#';\r\n for (i = 0; i < 3; i += 1) {\r\n const value = (hash >> (i * 8)) & 0xff;\r\n color += `00${value.toString(16)}`.slice(-2);\r\n }\r\n return color;\r\n}\r\n\r\nexport function stringAvatar(name) {\r\n return {\r\n sx: {\r\n bgcolor: stringToColor(name),\r\n },\r\n children: `${name?.slice(0, 2)}`,\r\n };\r\n}\r\n\r\nconst getDate = (d, format = false) => {\r\n let date = 0\r\n if (d?.low) {\r\n date = parseInt(d.low)\r\n } else {\r\n date = parseInt(d)\r\n }\r\n if (format)\r\n return moment(date * 1000).tz(\"America/Sao_Paulo\").format(format)\r\n if (moment(new Date()).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") === moment(date * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\"))\r\n return moment(date * 1000).tz(\"America/Sao_Paulo\").format(\"H:mm\")\r\n if (moment(new Date()).tz(\"America/Sao_Paulo\").format(\"YYYY\") === moment(date * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY\"))\r\n return moment(date * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM H:mm\")\r\n return moment(date * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")\r\n}\r\n\r\nexport function getTime(s) {\r\n function xx(numero) {\r\n if (numero <= 9) {\r\n numero = \"0\" + numero;\r\n }\r\n return numero;\r\n }\r\n let hora = xx(Math.round(s / 3600));\r\n let minuto = xx(Math.round((s % 3600) / 60));\r\n let segundo = xx((s % 3600) % 60);\r\n let formatado = hora + \":\" + minuto + \":\" + segundo;\r\n return formatado;\r\n}\r\n\r\nfunction formatSizeUnits(bytes) {\r\n if (bytes >= 1073741824) { bytes = (bytes / 1073741824).toFixed(2) + \" GB\"; }\r\n else if (bytes >= 1048576) { bytes = (bytes / 1048576).toFixed(2) + \" MB\"; }\r\n else if (bytes >= 1024) { bytes = (bytes / 1024).toFixed(2) + \" KB\"; }\r\n else if (bytes > 1) { bytes = bytes + \" bytes\"; }\r\n else if (bytes === 1) { bytes = bytes + \" byte\"; }\r\n else { bytes = \"0 bytes\"; }\r\n return bytes;\r\n}\r\n\r\nfunction BytesConvert(bytes, decimals = 2) {\r\n if (bytes === 0) return '0 Bytes';\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n}\r\n\r\nexport function totalTime(time) {\r\n let diff = time\r\n let diffText = ``\r\n let hours = 0\r\n let minutes = 0\r\n let seconds = 0\r\n if (time < 60) {\r\n diffText = `${diff} ${translate(\"$__seconds\", 1)}`\r\n } else if (time > 3600) {\r\n hours = Math.ceil(Math.trunc(diff / 3600))\r\n diff = diff - (hours * 3600)\r\n minutes = Math.ceil(Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0)\r\n diff = diff - (minutes * 60)\r\n seconds = Math.ceil(diff > 0 ? diff : 0)\r\n diffText = `${hours} hora${hours > 1 ? \"s\" : \"\"} ${minutes} ${translate(\"$__minutes\", 1)} ${seconds} ${translate(\"$__seconds\", 1)}`\r\n } else {\r\n minutes = Math.ceil(Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0)\r\n diff = diff - (minutes * 60)\r\n seconds = Math.ceil(diff > 0 ? diff : 0)\r\n diffText = `${minutes} ${translate(\"$__minutes\", 1)} ${seconds} ${translate(\"$__seconds\", 1)}`\r\n }\r\n return ({\r\n total: diffText,\r\n hours: hours,\r\n minutes: minutes,\r\n seconds: seconds\r\n })\r\n}\r\n\r\nexport {\r\n BytesConvert,\r\n Highlighted,\r\n appAlert,\r\n customApp,\r\n decimal,\r\n deleteNode,\r\n favoriteNode,\r\n formatNumber,\r\n formatSizeUnits,\r\n getAppAccess,\r\n getDate,\r\n hexToRgba,\r\n languageUPD,\r\n links,\r\n nl2br,\r\n readedNotifications,\r\n removeSeats,\r\n rgbaToHex,\r\n textColor,\r\n translate,\r\n validateEmail,\r\n}","import React, { useState } from 'react';\r\n\r\n// @Material\r\nimport Icon from '@material-ui/core/Icon';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Badge from '@material-ui/core/Badge';\r\n\r\n// @MATERIAL\r\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp } from 'functions/';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n customColor: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .MuiBadge-badge': {\r\n backgroundColor: customApp('color'),\r\n color: customApp('light'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n zIndex: '1500 !important',\r\n },\r\n },\r\n root: {\r\n '& .MuiBadge-badge': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n zIndex: 20,\r\n },\r\n },\r\n}));\r\n\r\nconst HtmlTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: '#f5f5f9',\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n fontSize: theme.typography.pxToRem(12),\r\n border: '1px solid #dadde9',\r\n borderRadius: '7px',\r\n boxShadow: '0 0 3px 3px rgba(0,0,0,0.03)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: '1000 !important',\r\n },\r\n}))(Tooltip);\r\n\r\nexport default function BadgeComponent(props) {\r\n const {\r\n tooltipprops,\r\n title,\r\n onClose,\r\n count,\r\n max,\r\n icon,\r\n onClick,\r\n className = \"\",\r\n size = \"22px\",\r\n color,\r\n style = {},\r\n disabled,\r\n } = props;\r\n\r\n const classes = useStyles();\r\n const [internalBadgeVisible, setInternalBadgeVisible] = useState(false);\r\n const isBadgeVisible = internalBadgeVisible;\r\n const tooltipOpen = tooltipprops?.open === 'false' ? false : tooltipprops?.open;\r\n\r\n const handleMouseEnter = () => {\r\n setInternalBadgeVisible(true);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setInternalBadgeVisible(false);\r\n };\r\n\r\n const renderTooltipTitle = () => {\r\n if (!title) return '';\r\n if (typeof title === 'string') {\r\n return (\r\n <div\r\n style={{\r\n color: customApp('darkText'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n textAlign: 'center',\r\n height: 'auto',\r\n }}\r\n >\r\n {translate(title, 1)}\r\n </div>\r\n );\r\n }\r\n return (\r\n <div className={classes.customColor}>\r\n <div style={{ position: 'relative' }}>\r\n {title}\r\n {onClose && (\r\n <Icon\r\n style={{\r\n position: 'absolute',\r\n left: '5px',\r\n top: '0px',\r\n zIndex: 10,\r\n cursor: 'pointer',\r\n }}\r\n onClick={onClose}\r\n title=\"close\"\r\n >\r\n close\r\n </Icon>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const renderIcon = () => {\r\n const commonProps = {\r\n onMouseEnter: handleMouseEnter,\r\n onMouseLeave: handleMouseLeave,\r\n onClick: (e) => {\r\n if (onClick) {\r\n onClick();\r\n e.stopPropagation();\r\n }\r\n },\r\n className,\r\n style: {\r\n width: size,\r\n height: size,\r\n fontSize: size,\r\n color: color || customApp('medium'),\r\n opacity: !disabled || isBadgeVisible ? '1' : '0.5',\r\n cursor: onClick ? 'pointer' : '',\r\n ...style,\r\n },\r\n };\r\n\r\n if (typeof icon === 'string') {\r\n return <Icon {...commonProps}>{icon}</Icon>;\r\n }\r\n return React.createElement(icon, commonProps);\r\n };\r\n\r\n return (\r\n <div className={classes.root}>\r\n <HtmlTooltip\r\n title={renderTooltipTitle()}\r\n open={tooltipOpen}\r\n disableFocusListener={tooltipprops?.disableFocusListener || false}\r\n disableHoverListener={tooltipprops?.disableHoverListener || false}\r\n disableTouchListener={tooltipprops?.disableTouchListener || false}\r\n onClose={() => tooltipprops?.onClose && tooltipprops.onClose()}\r\n interactive={typeof title !== 'string' && tooltipprops?.interactive ? tooltipprops.interactive : false}\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={count}\r\n style={{ opacity: 1, fontSize: '5px' }}\r\n max={max || 9}\r\n anchorOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n invisible={count && !isBadgeVisible}\r\n >\r\n {renderIcon()}\r\n </Badge>\r\n </HtmlTooltip>\r\n </div>\r\n );\r\n}\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\n\r\nconst HtmlTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: '#f5f5f9',\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n // maxWidth: 220,\r\n fontSize: theme.typography.pxToRem(12),\r\n border: '1px solid #dadde9',\r\n borderRadius: '7px',\r\n boxShadow: '0 0 3px 3px rgba(0,0,0,0.03)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n}))(Tooltip);\r\n\r\nexport default HtmlTooltip","module.exports = __webpack_public_path__ + \"static/media/microsoftWord.113ac212.svg\";","module.exports = __webpack_public_path__ + \"static/media/microsoftExcel.c59164de.svg\";","module.exports = __webpack_public_path__ + \"static/media/microsoftPowerpoint.0e97c564.svg\";","var _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireDefault(require(\"react\"));\r\n\r\nvar _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: \"M0 5.22H6.6V6.32H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M8.8 5.22H15.4V6.32H8.8z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M17.6 5.22H24.200000000000003V6.32H17.6z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 5.22H33V6.32H26.4z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M0 0H6.6V3.03H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M8.8 0H15.4V3.03H8.8z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M17.6 0H24.200000000000003V3.03H17.6z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 0H33V3.03H26.4z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M0 7.58H6.6V8.68H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M8.8 7.58H15.4V8.68H8.8z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M17.6 7.58H24.200000000000003V8.68H17.6z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 7.58H33V8.68H26.4z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M0 9.94H6.6V11.04H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M8.8 9.94H15.4V11.04H8.8z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M17.6 9.94H24.200000000000003V11.04H17.6z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 9.94H33V11.04H26.4z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M0 12.3H6.6V13.4H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M8.8 12.3H15.4V13.4H8.8z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 12.3H33V13.4H26.4z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M0 14.65H6.6V15.75H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M8.8 14.65H15.4V15.75H8.8z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 14.65H33V15.75H26.4z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M0 17.01H6.6V18.110000000000003H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M8.8 17.01H15.4V18.110000000000003H8.8z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 17.01H33V18.110000000000003H26.4z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M0 19.37H6.6V20.470000000000002H0z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M26.4 19.37H33V20.470000000000002H26.4z\"\r\n})), 'SWOT');\r\n\r\nexports.default = _default;","module.exports = __webpack_public_path__ + \"static/media/pdf.3d17c449.svg\";","module.exports = __webpack_public_path__ + \"static/media/logoMachen.c1ab9af8.svg\";","module.exports = __webpack_public_path__ + \"static/media/fundoLogin.a16e608c.jpg\";","import React, { memo } from \"react\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport Badge from '@material-ui/core/Badge';\r\nimport Button from '@material-ui/core/Button';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport MenuList from '@material-ui/core/MenuList';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nfunction ButtonOptions(props) {\r\n const useStyles = makeStyles((props) => ({\r\n iconButtonStyleTransaparent: {\r\n padding: \"3px 3px 3px 3px\",\r\n margin: 0,\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.33)'\r\n\r\n }\r\n },\r\n iconButtonStyleWhite: {\r\n padding: \"3px 3px 3px 3px\",\r\n margin: 0,\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.33)'\r\n },\r\n border: \"solid 1px rgb(130,130,130)\",\r\n },\r\n active: {\r\n padding: \"3px 3px 3px 3px\",\r\n margin: 0,\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.33)'\r\n },\r\n border: `solid 1px ${customApp(\"color\")}`,\r\n backgroundColor: \"#FFFFFF\",\r\n },\r\n }));\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null)\r\n\r\n const handleClose = (event) => {\r\n if ((\r\n event\r\n && event.target\r\n && event.target.className\r\n && typeof event.target.className === \"string\"\r\n && event.target.className.indexOf(\"ignoreClickAway\") > -1\r\n )\r\n || (\r\n document.getElementById(\"MuiDialog-container\")\r\n && document.getElementById(\"MuiDialog-container\").querySelectorAll(\"div.ignoreClickAway\")\r\n ))\r\n return\r\n setTimeout(() => {\r\n setOpen(false);\r\n if (props.onClose)\r\n props.onClose()\r\n }, 100)\r\n\r\n };\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === 'Tab') {\r\n event.preventDefault();\r\n setOpen(false);\r\n if (props.onClose)\r\n props.onClose()\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n ...props.style ? props.style : {},\r\n ...props.onClick ? { cursor: \"pointer\" } : {}\r\n }}\r\n onClick={props.onClick ? () => { props.onClick() } : null}\r\n >\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n ...props.onClick ? { pointerEvents: \"none\" } : {}\r\n }}>\r\n\r\n <Tooltip\r\n title={translate(`$__options`, 1)}\r\n >\r\n {props.hideText ?\r\n <IconButton\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-label=\"menu\"\r\n onClick={(e) => {\r\n setOpen((prevOpen) => !prevOpen);\r\n if (!open && props.onOpen)\r\n props.onOpen()\r\n if (open && props.onClose)\r\n props.onClose()\r\n e.stopPropagation()\r\n }}\r\n className={props.active ? classes.active : !props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n <Icon\r\n usePropagation\r\n size={!props.size ? \"17px\" : props.size}\r\n color={props.btColor ? props.btColor : customApp('menu')}\r\n icon={props.icon ? props.icon : !props.horizontalButton ? 'more_vert' : 'more_horiz'} />\r\n </IconButton>\r\n :\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-label=\"menu\"\r\n onClick={(e) => {\r\n setOpen((prevOpen) => !prevOpen);\r\n if (!open && props.onOpen)\r\n props.onOpen()\r\n if (open && props.onClose)\r\n props.onClose()\r\n e.stopPropagation()\r\n }}\r\n className={props.active ? classes.active : !props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n pointerEvents: \"none\",\r\n ...!props.icon ? { paddingLeft: 7 } : {}\r\n }}\r\n >\r\n {props.icon ?\r\n <div style={{ marginTop: -2, marginRight: 7 }}>\r\n <Icon\r\n size={!props.size ? \"17px\" : props.size}\r\n color={props.btColor ? props.btColor : customApp('menu')}\r\n icon={props.icon} />\r\n </div> : <></>}\r\n <span\r\n style={{\r\n marginRight: '15px',\r\n color: props.textColor ? props.textColor : props.color ? props.color : customApp('menu'),\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n width: \"90%\",\r\n maxWidth: props.maxWidth ? props.maxWidth : \"90%\",\r\n whiteSpace: \"nowrap\"\r\n }}>{props.text || \"BUTTON_NAME\"}</span>\r\n {(props.popper || props.options) ?\r\n <Icon\r\n size={!props.size ? \"17px\" : props.size}\r\n color={props.btColor ? props.btColor : customApp('menu')}\r\n icon={'arrow_drop_down'}\r\n /> : <></>}\r\n\r\n </div>\r\n </Button>\r\n\r\n </div>\r\n }\r\n </Tooltip >\r\n </div>\r\n {(props.popper || props.options) ?\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n // role={undefined}\r\n transition\r\n // disablePortal\r\n style={{ zIndex: \"100 !important\" }}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n ...placement === 'bottom' ? { transformOrigin: 'center top' } : { transformOrigin: 'center bottom' },\r\n zIndex: \"100 !important\",\r\n }}\r\n >\r\n <Paper style={{\r\n marginTop: 5\r\n }}>\r\n <ClickAwayListener onClickAway={(e) => {\r\n handleClose(e)\r\n }} >\r\n {props.popper ?\r\n props.popper :\r\n props.options && props.options.length > 0 ?\r\n <MenuList\r\n autoFocusItem={open}\r\n id=\"menu-list-grow\"\r\n onKeyDown={handleListKeyDown}\r\n style={{ zIndex: \"100 !important\" }}\r\n >\r\n {props.options\r\n .filter(a => a && !a.hide)\r\n .map((a, i) =>\r\n <MenuItem\r\n key={i}\r\n style={{\r\n color: a && a.color ? a.color : customApp('menu'),\r\n padding: \"12px 7px\",\r\n }}\r\n className={\"ignoreClickAway\"}\r\n onClick={(e) => {\r\n if (props.stopPropagation)\r\n handleClose(e)\r\n if (a.onClick)\r\n a.onClick()\r\n if (props.onClose)\r\n props.onClose()\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n disabled={a.disabled ? true : false}\r\n >\r\n <div style={{\r\n pointerEvents: 'none'\r\n }}>\r\n {a.render ?\r\n a.render\r\n : a.avatar ?\r\n <Avatar\r\n alt={a.name} src={a.avatar || null}\r\n style={{\r\n width: !props.size ? \"20px\" : props.size,\r\n height: !props.size ? \"20px\" : props.size\r\n }}>\r\n {a.name.substr(0, 1)}\r\n </Avatar>\r\n :\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={a.count ? a.count : null}\r\n color=\"secondary\"\r\n >\r\n <Icon\r\n usePropagation\r\n icon={a.icon}\r\n style={{ margin: 'none !important' }}\r\n color={a.iconColor ? a.iconColor : a.color ? a.color : customApp('menu')} />\r\n </Badge>\r\n }\r\n {!a.render &&\r\n <span style={{ marginLeft: '7px' }}>\r\n {translate(a.name, 1)}\r\n </span>\r\n }\r\n </div>\r\n </MenuItem>\r\n )\r\n }\r\n </MenuList>\r\n : <></>\r\n }\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper> : <></>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nexport default memo(ButtonOptions)","// \"use strict\";\r\n\r\nconst _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nconst _react = _interopRequireDefault(require(\"react\"));\r\n\r\nconst _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nconst _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: `M5.9,12.6C5.9,12.6,5.8,12.6,5.9,12.6l-0.1-0.1c0,0,0,0,0,0l0,0c0,0-0.1,0-0.1,0H3.1c0,0-0.1,0-0.1,0l-0.1,0\r\n\t\t\tc0,0,0,0,0,0l0,0c0,0,0,0,0,0l0,0c0,0,0,0,0,0l0,0c0,0,0,0,0,0.1c0,0,0,0,0,0l0,0c0,0,0,0,0,0l0,0c0,0,0,0.1,0,0.1\r\n\t\t\tc0,0,0,0.1,0,0.1l0,0.1c0,0,0,0,0,0l0,0c0,0,0,0,0.1,0.1l8.8,8.8v-1.2l-7.4-7.4h1.3l6.1,6.1v-1.2L5.9,12.6L5.9,12.6z M2.9,12.7\r\n\t\t\tL2.9,12.7L2.9,12.7L2.9,12.7z M2.8,13L2.8,13L2.8,13L2.8,13z M2.9,13.1L2.9,13.1L2.9,13.1L2.9,13.1z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M5.9,12.6C5.9,12.6,5.8,12.6,5.9,12.6l-0.1-0.1c0,0,0,0,0,0l0,0c0,0-0.1,0-0.1,0H3.1c0,0-0.1,0-0.1,0l-0.1,0\r\n\t\t\tc0,0,0,0,0,0l0,0c0,0,0,0,0,0l0,0c0,0,0,0,0,0l0,0c0,0,0,0,0,0.1c0,0,0,0,0,0l0,0c0,0,0,0,0,0l0,0c0,0,0,0.1,0,0.1\r\n\t\t\tc0,0,0,0.1,0,0.1l0,0.1c0,0,0,0,0,0l0,0c0,0,0,0,0.1,0.1l8.8,8.8v-1.2l-7.4-7.4h1.3l6.1,6.1v-1.2L5.9,12.6L5.9,12.6z M2.9,12.7\r\n\t\t\tL2.9,12.7L2.9,12.7L2.9,12.7z M2.8,13L2.8,13L2.8,13L2.8,13z M2.9,13.1L2.9,13.1L2.9,13.1L2.9,13.1z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M18.9,13C18.9,13,18.9,13,18.9,13c0-0.1,0-0.1,0-0.2l-0.1-0.2c0,0,0,0,0,0v0l-0.1,0c0,0,0,0-0.1-0.1l0,0\r\n\t\t\tc0,0,0,0,0,0l0,0c0,0-0.1,0-0.1,0H16c0,0-0.1,0-0.1,0l0,0c0,0,0,0,0,0l-0.1,0c0,0,0,0,0,0l-3.2,3.2l0,0v1.2l3.7-3.7h1.2l-4.8,4.8\r\n\t\t\tl0,0v1.2l6.2-6.2l0,0v0c0,0,0,0,0,0l0,0l-0.1-0.1L18.9,13L18.9,13z M18.7,12.8L18.7,12.8L18.7,12.8L18.7,12.8z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M18.1,11.3L18.1,11.3c0.1,0,0.1,0.1,0.1,0.1l0,0c0,0,0,0,0,0l0,0c0,0,0.1,0,0.1,0h2.5c0,0,0.1,0,0.1,0\r\n\t\t\tl0.2-0.1c0,0,0,0,0.1,0l0,0c0,0,0,0,0-0.1l0.1-0.2c0,0,0-0.1,0-0.1c0,0,0-0.1,0-0.1l0-0.1c0,0,0,0,0-0.1c0,0,0,0,0-0.1L12.5,2v1.2\r\n\t\t\tl7.4,7.4h-1.3l-6.1-6.1v1.2L18.1,11.3L18.1,11.3z M18.3,11.3L18.3,11.3L18.3,11.3L18.3,11.3z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M12.9,11.5H16c0,0,0.1,0,0.1,0l0.1-0.1c0,0,0,0,0,0l0.1,0v0c0,0,0,0,0,0c0,0,0,0,0,0l0,0c0,0,0,0,0,0l0,0\r\n\t\t\tc0,0,0-0.1,0-0.1c0,0,0-0.1,0-0.1l0-0.1c0,0,0,0,0,0l0,0c0,0,0,0,0,0l-3.8-3.9l0,4.1C12.5,11.3,12.7,11.5,12.9,11.5z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M5.2,10.8C5.2,10.8,5.2,10.8,5.2,10.8C5.2,10.8,5.2,10.9,5.2,10.8l-0.1,0.2L5.3,11l-0.2,0c0,0,0,0.1,0,0.1\r\n\t\t\tc0,0,0,0.1,0,0.1l0,0.1c0,0,0,0,0,0l0,0c0,0,0,0,0.1,0.1l0,0c0,0,0,0,0,0l0.1-0.1h0l0,0.1l0.1-0.1l0,0.1c0,0,0,0,0.1,0\r\n\t\t\tc0,0,0.1,0,0.1,0H8c0,0,0.1,0,0.1,0l0,0c0,0,0,0,0,0l0.1,0c0,0,0,0,0,0l3.2-3.2V6.9l-3.7,3.7H6.6l4.9-4.9V4.5L5.2,10.8L5.2,10.8z\r\n\t\t\t M5.3,11.1L5.3,11.1L5.3,11.1L5.3,11.1z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M11.1,12.5H8c0,0-0.1,0-0.1,0l-0.1,0c0,0,0,0,0,0l0,0c0,0,0,0-0.1,0.1c0,0,0,0-0.1,0.1l0,0.1l0.1,0.1l-0.2,0\r\n\t\t\tl0,0c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1l0.1,0.1c0,0,0,0,0.1,0.1l3.8,3.8v-4.1C11.5,12.7,11.3,12.5,11.1,12.5z M7.8,12.8\r\n\t\t\tC7.8,12.8,7.8,12.8,7.8,12.8L7.8,12.8L7.8,12.8z M7.7,12.9L7.7,12.9L7.7,12.9L7.7,12.9z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M21.3,12.6L21.3,12.6c-0.2-0.2-0.4-0.2-0.6,0l-8.1,8.1l0,0V22l8.8-8.8c0.1-0.1,0.1-0.2,0.1-0.3\r\n\t\t\tC21.4,12.8,21.3,12.7,21.3,12.6z`\r\n}), _react.default.createElement(\"path\", {\r\n d: `M2.7,11.4L2.7,11.4c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1l8.2-8.2V2l-8.8,8.8\r\n\t\t\tC2.6,10.9,2.6,11.2,2.7,11.4z`\r\n})), 'Matrix');\r\n\r\nexports.default = _default;\r\n","module.exports = __webpack_public_path__ + \"static/media/googlePlay-ptBR.6583181e.png\";","module.exports = __webpack_public_path__ + \"static/media/appleStore-ptBR.2049e321.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AAAMAUExURevr7Jydn5manJucnuPj5JiZm9vb3PT09MvLzMLCw5GSlPr6+qeoqdXV1tHR0rW1trW2uKusrbi4urO0tLq6vKiqq7e4uLW2tqGipLm6ury8vr6+vr+/wLu8vM7OztDQ0cjJytjY2dTU1aipqqqrrMXGxqanqKmqq6Wmp9LT062usKSlprS0ta2trra2t6ytrqWmqK2ur66vsK6ur7CwsbOztK+vsK+wsbKys7GxsqOkpqOkpZ6foampq6qqrJ2eoKenqaysraKjpZqbnbi4uaKjpKSlp5eYmqioqqurrKChory8vKGio6amqKCho7Gys7CxsrGysrKzs5+gop+gobS1tbq6u7e3uLCxsbKztLi4uJWWmJaXmba3t7i5ub29vZWXmZSWmLq6upOVl5SVl7m5up6foLq7u7u7vJqcnZOUlpeZm5aYmpKUlry8vZKTlpGTlZCRlJCRk6ytr9bX197e3q+vsb2+v8DAweDh4bOztebm5ujp6e/v756eoP///4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///zfARREAAAeqSURBVHja7N3xVxJZFMBxQAQVilzPSTslBxcDdwdtBQRBDQUFBYNMDTcoNLAMM7QD23JozvvX94cJZBhQZ+bdO2/26F/Q59wv8K48JwP5n/wY7iH3kHvIPYT6D89bLBazfiF8Y+T09PT09MOHzc3Nd+8yeoTwb99+/PjkSbfj8eN83qYPSCOTOTs7O3veEP69UkcegEIdMpPJCI6zz5/f9p9HPp9//97KMsTwLZO5o2Nh4RmrkHrpmxzHwsICzyLEWSq1IXd1TE6aWYNYSqVSqSRzHpOTDsdDliC2ksBQ4HA4zOxA6iURRJ7DccizAbE9fVpyNXhlXTkcjsNDHxMQKyGEWBV35Tg89Pl8rKTVUtHVoc/n89mYgPBK3686Dt8EIcQwMzOjKUTF+1XHMbG0tLT095s3y8vL77WCqHq/Ehy+Lsdybm9aC4irRKGrLkcut7cXiUTQIS1588jfPo/cXiQSibxGhtTpdyU4kCElyq/zXMdx9AwT0qI+j1zbEQwiQmyUX+fXXR0Fg0EXGsQK1dXRUTAYDIbRIJBdBYNhNIgFsqtgOBx2IkFguwqHQyEcSAu2q3AICwLcVSjEh1oYEPCuQgbix4A4obsK+QmPAwHtKhTy+3+gvEacsF2F/H5/wIAIAevK7/cHAhgQgPNuzzwCgcAiFgSoK3/bgQWhuUdJuwosYkGgu1pcnDdgQCju5wPmMY8CAeyqPY/5+To8BKErPAjY50fb8QIHAnIu6Z7HCxwI0Lmk24ECge8KB4LQ1YuNDYS3X4SuNjbGESAIXW2M40DAuxofH0c4ayF0hQNB6AoJAt8VDgShq/GdHQwIYFfteezMIkCgzrsiBwZkhPp+LulqFgXyB/X9XDoPFEgTviscCE99P+/+/PjlwIAQ6vu5dB4vX2JAALvaaTu8OBCoc0m7q5deHAjYuaQzD68fAwJ3Luk4vC4MyAh4V17vAwxIE7orr9fLY0AIdFde7xpBg8B09cuBCAHtyrvmxoLAdrXm/h0DUgfvas3tdvPQEBdCV2632+3eHgWFwL9ftR12+yYg5CfIfi7pyu3ettvtdkAI2B4lnYfdbndBQiD28wGO9XUwiAFmP5e8zu0CxGOFgrgQu1pf93hcUJA84HlX/DoXIDkoCNB+3r8rj8fjgYIA7ef9u4KGoHXl8XheAUKAzyXdXXlezcFBwM8lXV29moODoHY1BwfB7QoSgtoVIARuj+rXFTAEtCvxPJKPoCBm1K6SyZ9gx3jorrodc0kObh/B7CrJzQJCELviZA1EJsQAtp9LuwKFENA9SjwPbhoSYgbbzwVGl0PeQGT/gg5sP+/tipuFhRCkruQORD5kFPa8qzAsJb/Ehj3v/uqKM8NDSANmPxd11cD5fgS8K5Q/3yOE2L7l9vYWALpKPuI4jsP7M3DhB+JcovyBbmoeJ0K/K45oASG0u0py09pAND7v0oM0qe7nSU4zCKG7R2kJofw5yGsFcVLcz1UOROXztah2pSWE6vkqatUO0qS2n3McFyXaQYiP2h6l0qH6qYCU9nMuGmUBon6P4qLRh9pCrJS6UjsQ9Q+cXKKwR3HRaPQfrSGESlfRFaI5pK7284OKg8aDiyl0tcIEpKV4j6LooPIoaYParlZ4NiBE2X5+7fiXMAIh6rpaIcxAeDVdUXHQem78A/n7ecfRYAlCphXsURTnQfG/JJC/RwkO9iCy9yjBEWcNoqyrlTiTEPldxZmEKOgqHt9iDyL782MlHo9vsQeRtZ9fO5iDyNyjOg72IIq62tqaYg0ib4+6drAJkd3VFJMQBV1NTe2yC5HTFZOQO+9R3fPYZQ4iu6spwcEq5PY9StTV7m6WLYjtVFlXu9nsCDMQi9+ruKtsNptOp9N/WTWHmJ/I2s8l88im0+n0/v7+Qc6mHcSiZI8a4Dg4OFhdVXGnRjHks9I9StpVx7G6uvrpU8yJCHmudD+/cR6CIxaLxR5gQJT/3ufOjljMaDQ6ASHN18q+P5fRVcdhNBqNQ9tWAEhL+ffnCuZhNBqNQ0NDQ0N+qpCmyu85lTu+fEkkEnYLDcio6u/PFXbVcSQSiYTJ5FQFeU7le0518xAcJpPJNKMMUqL0/Tk1h2l4eHh4RB6kPkHlHvKA827HsS/bMXx+nvqtdUcItfvt9OcxfH6eSqVSqa8/boU06d2/AnR8LRaLN0Pq9O6339aVckfqa7FYLB7fBKF0DxlhHsXj42PjQEgIqqspCEehUBgA8dG5347S1fFxoVAo2PpCWrrqqlAoFE5OWn0gBr11VTg5Oan0gdC63w45j1Svo2KVQujdQ8bq6qRSqVQkkAlq95DxuqpUKmUJhNb9dsyuKpVyeVQC0WNX5XK52gOx6LKrcrlabYghE5Tut+N2VS5Xq3YxhNo9ZNyuqtXqhQhipXS/HburavVCDKkzvUcN7qp60QPZ1GtXFxc1EYTV/fwaMmgetV4Iu/v5jV3VarW6CML2fj64q1qt9mc3hPX9fPA8ape9ED3sUX3mcXl5KYboY4/q5xgTQdjfz/t31QvRb1djYz0QvXYlhbC/n/ftqgeinz1KMo8eiG72KKlDBNHPHtXbVT+ILrsaG7vqgei0q6ur770QfXZ19V2A/DcAHpmC7NcZ4/wAAAAASUVORK5CYII=\"","export function reduxFunction(type, action, value, next = null, preLoader = false, redirect = null) {\r\n return {\r\n type: type,\r\n action: action,\r\n value: value,\r\n next: next,\r\n preLoader: preLoader,\r\n redirect: redirect\r\n }\r\n}","module.exports = __webpack_public_path__ + \"static/media/Mockup_App_WEB.0ed158a4.png\";","module.exports = __webpack_public_path__ + \"static/media/supportMockup.ec51b4aa.png\";","module.exports = __webpack_public_path__ + \"static/media/sample.ab31b41d.xlsx\";","module.exports = __webpack_public_path__ + \"static/media/sampleoptions.65339041.xlsx\";","import React from \"react\"\r\n\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\nimport TextField from \"components/TextField\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\"\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener'\r\nimport Button from '@material-ui/core/Button'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport MenuList from '@material-ui/core/MenuList'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n getUserList,\r\n getUserAccess\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n translate,\r\n customApp,\r\n textColor,\r\n} from \"functions/\"\r\n\r\nimport {\r\n getAdminList\r\n} from \"functions/users\"\r\n\r\n\r\nconst useStyles = makeStyles((props) => ({\r\n iconButtonStyleTransaparent: {\r\n margin: 0,\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.9)'\r\n }\r\n },\r\n iconButtonStyleWhite: {\r\n margin: 0,\r\n backgroundColor: '#FFFFFF',\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.9)'\r\n }\r\n },\r\n}))\r\n\r\nfunction SelectUsers(props) {\r\n const classes = useStyles()\r\n const anchorRef = React.useRef(null)\r\n const [open, setOpen] = React.useState(false)\r\n const { data } = props\r\n const { db, session, sideModule } = reduxStore.getState()\r\n const [selectedUser, setSelectedUser] = React.useState(props.selected ? props.selected : [])\r\n const [searchValue, setSearchValue] = React.useState(\"\")\r\n const [showInternal, setShowInternal] = React.useState(props.selectedShow && String(props.selectedShow?.internal) ? props.selectedShow?.internal : true)\r\n const [showExternal, setShowExternal] = React.useState(props.selectedShow && String(props.selectedShow?.external) ? props.selectedShow?.external : false)\r\n\r\n const mounted = React.useRef()\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (props.selected && JSON.stringify(props.selected) !== JSON.stringify(selectedUser))\r\n if (mounted.current)\r\n setSelectedUser(props.selected)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.selected])\r\n\r\n\r\n const userList = props.admins\r\n ? getAdminList(data\r\n && data._id\r\n ? data._id\r\n : null,\r\n null,\r\n {\r\n onlyCard: data\r\n && data._id\r\n ? true\r\n : false\r\n })\r\n : getUserList(data\r\n && data._id\r\n ? data._id\r\n : null,\r\n {\r\n onlyCard:\r\n data\r\n && data._id\r\n ? true\r\n : false,\r\n all: true,\r\n allPlataform: props.allPlataform || false\r\n })\r\n\r\n\r\n let CardAccess = sideModule && sideModule.id ? getUserAccess(sideModule.id) : 0\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return\r\n }\r\n if (mounted.current)\r\n setOpen(false)\r\n }\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === 'Tab') {\r\n event.preventDefault()\r\n if (mounted.current)\r\n setOpen(false)\r\n }\r\n }\r\n\r\n const selectUser = async (id) => {\r\n let selectedUsers = Array.from(selectedUser)\r\n if (props.multiple) {\r\n if (selectedUsers.filter(i => i === id).length === 0) {\r\n selectedUsers.push(id)\r\n } else {\r\n selectedUsers.splice(selectedUsers.indexOf(id), 1)\r\n }\r\n } else {\r\n selectedUsers = [id]\r\n }\r\n if (mounted.current)\r\n setSelectedUser(selectedUsers)\r\n if (props.onSelect)\r\n props.onSelect(selectedUsers)\r\n if (!props.multiple) {\r\n if (mounted.current)\r\n setOpen(false)\r\n }\r\n }\r\n\r\n const UserMenuItem = ({ pr, selected }) => {\r\n let userPermission = true\r\n\r\n let u = userList[pr]\r\n if (u)\r\n return (\r\n <MenuItem\r\n autoFocus={false}\r\n onClick={userPermission ? (e) => {\r\n selectUser(pr)\r\n e.preventDefault()\r\n e.stopPropagation()\r\n } : null}\r\n className={\"ignoreClickAway\"}\r\n >\r\n <div\r\n\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n cursor: 'pointer',\r\n pointerEvents: 'none'\r\n }}\r\n >\r\n <Avatar alt={u.name || null} src={u.image || null} style={{\r\n ...props.avatarSize ? { width: props.avatarSize, height: props.avatarSize } : {}\r\n }}>\r\n {u && u.name ? u.name.substr(0, 1) : ''}\r\n </Avatar>\r\n <div style={{ marginLeft: '15px', color: !userPermission ? \"lightgray\" : \"black\" }}>\r\n\r\n <div style={{ position: \"relative\", width: \"100%\", float: \"left\" }} className={\"ignoreClickAway\"}>\r\n {u.name || u.name}\r\n\r\n </div>\r\n <div style={{ position: \"relative\", width: \"100%\", float: \"left\", display: \"flex\", alignItems: \"center\" }}>\r\n {u._parent &&\r\n db.users[u._parent] &&\r\n db.users[u._parent].image ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n bottom: -4,\r\n right: -7,\r\n width: 17,\r\n height: 17,\r\n borderRadius: \"50%\",\r\n backgroundImage: `url(${db.users[u._parent].image})`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\"\r\n }}></div>\r\n : <React.Fragment></React.Fragment>}\r\n {u._parent &&\r\n db.users[u._parent] &&\r\n db.users[u._parent].name ?\r\n <div style={{ position: \"relative\", float: \"left\", fontSize: 11, color: \"lightgray\", marginLeft: 7 }}>\r\n {db.users[u._parent].name}\r\n </div>\r\n : <React.Fragment></React.Fragment>}\r\n </div>\r\n {selected ?\r\n <div style={{\r\n position: \"absolute\",\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n display: \"flex\"\r\n }}>\r\n {selectedUser.indexOf(u._id) === 0 ?\r\n <div><Icon icon=\"admin_panel_settings\" color={\"lightgray\"} /></div>\r\n : <React.Fragment></React.Fragment>}\r\n <Icon icon=\"check\" color={\"green\"} />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n </MenuItem>\r\n )\r\n return (<React.Fragment></React.Fragment>)\r\n }\r\n\r\n\r\n return (\r\n <div>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-label=\"menu\"\r\n onClick={(e) => {\r\n if (\r\n !data\r\n ||\r\n (\r\n props.permission\r\n )\r\n ||\r\n (\r\n data && userList && userList[session._id] && userList[session._id].access && parseInt(userList[session._id].access) > 2\r\n )\r\n ||\r\n (\r\n CardAccess > 3\r\n )\r\n ) {\r\n setOpen(true)\r\n }\r\n }}\r\n className={!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n {(selectedUser && selectedUser.length === 0) ?\r\n <span style={{ fontSize: \"12px\", whiteSpace: \"nowrap\" }}>{translate(props.text || \"$__selectUser\")}</span>\r\n :\r\n <div>\r\n <AvatarGroup\r\n max={!props.noLimit ? 4 : 300}\r\n style={{\r\n flexWrap: \"wrap\", \r\n display: \"inline-flex\"\r\n }}\r\n >\r\n {selectedUser?.filter(uid => uid && reduxStore.getState().db.users[uid])?.map(selectedUserId =>\r\n <Tooltip\r\n key={selectedUserId}\r\n title={reduxStore.getState().db.users[selectedUserId] && reduxStore.getState().db.users[selectedUserId].displayName ? reduxStore.getState().db.users[selectedUserId].displayName : reduxStore.getState().db.users[selectedUserId]?.name || \"\"}\r\n >\r\n <div\r\n style={{ display: \"flex\", alignItems: \"center\" }}\r\n >\r\n <Avatar\r\n alt={reduxStore.getState().db.users[selectedUserId].name || \"\"}\r\n src={reduxStore.getState().db.users[selectedUserId].image || null}\r\n style={{ width: props && props.avatarSize ? props && props.avatarSize : 'none', height: props && props.avatarSize ? props.avatarSize : 'none' }}>\r\n {reduxStore.getState().db.users[selectedUserId]?.name?.substr(0, 1) || \"\"}\r\n </Avatar>\r\n {!props.multiple &&\r\n <span style={{ marginLeft: 15 }}>\r\n {reduxStore.getState().db.users[selectedUserId].displayName ? reduxStore.getState().db.users[selectedUserId].displayName : reduxStore.getState().db.users[selectedUserId]?.name || \"\"}\r\n </span>\r\n }\r\n </div>\r\n </Tooltip>\r\n )}\r\n {props.multiple &&\r\n <Tooltip\r\n title={translate(props.text || \"$__selectUser\")}\r\n >\r\n <Avatar\r\n style={{ width: props && props.avatarSize ? props && props.avatarSize : 'none', height: props && props.avatarSize ? props.avatarSize : 'none' }}\r\n alt={'ADD'}\r\n src={null}>\r\n +\r\n </Avatar>\r\n </Tooltip>\r\n }\r\n </AvatarGroup>\r\n </div>\r\n }\r\n </Button>\r\n <Dialog\r\n open={open}\r\n >\r\n <div style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n <ClickAwayListener\r\n onClickAway={handleClose}\r\n >\r\n <div\r\n style={{\r\n position: \"relative\",\r\n }}\r\n >\r\n <div style={{\r\n width: \"100%\",\r\n padding: \"4px 15px\",\r\n fontSize: \"16px\",\r\n color: \"lightGray\",\r\n position: \"relative\",\r\n }}>\r\n <TextField\r\n id={`quickUser_Search`}\r\n label={translate('$__searchByName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'searchValue'}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment\r\n position=\"end\"\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => {\r\n setSearchValue(\"\")\r\n setOpen(false)\r\n }}>\r\n <Icon icon='close' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setSearchValue(d.target.value)\r\n },\r\n }}\r\n value={searchValue}\r\n placeholder={translate('$__searchByName', 1)}\r\n autoFocus\r\n />\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n // justifyContent: \"space-between\",\r\n padding: \"0px 15px\",\r\n fontSize: 12,\r\n marginTop: -5\r\n }}\r\n >\r\n <div style={{\r\n border: `solid 1px ${showInternal ? '#585858' : `lightGray`}`,\r\n padding: \"3px 7px\",\r\n cursor: \"pointer\",\r\n borderRadius: 10,\r\n backgroundColor: `${showInternal ? '#585858' : `lightGray`}`,\r\n color: textColor(showInternal ? '#585858' : `#d3d3d3`, true)\r\n }}\r\n onClick={() => {\r\n setShowInternal(prev => !prev)\r\n }}>\r\n {translate(\"$__showInternal\")}\r\n </div>\r\n <div style={{\r\n border: `solid 1px ${showExternal ? '#585858' : `lightGray`}`,\r\n padding: \"3px 7px\",\r\n cursor: \"pointer\",\r\n marginLeft: 7,\r\n borderRadius: 10,\r\n backgroundColor: `${showExternal ? '#585858' : `lightGray`}`,\r\n color: textColor(showExternal ? '#585858' : `#d3d3d3`, true)\r\n }}\r\n onClick={() => {\r\n setShowExternal(prev => !prev)\r\n }}>\r\n {translate(\"$__showExternals\")}\r\n </div>\r\n </div>\r\n <div style={{\r\n width: \"100%\",\r\n padding: \"4px 15px\",\r\n fontSize: \"16px\",\r\n color: \"lightGray\",\r\n position: \"relative\",\r\n maxHeight: 250,\r\n overflowY: \"auto\"\r\n }}>\r\n <MenuList\r\n id=\"menu-list-grow\"\r\n autoFocusItem={false}\r\n autoFocus={false}\r\n onKeyDown={handleListKeyDown}\r\n >\r\n {Object.keys(userList).filter(a => {\r\n if (!userList[a].deleted\r\n && (searchValue === \"\"\r\n ||\r\n (\r\n searchValue\r\n && userList[a].name\r\n && userList[a].name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n )\r\n )\r\n && (\r\n (\r\n !showExternal\r\n && userList[a].type !== \"external\"\r\n )\r\n ||\r\n (\r\n showExternal\r\n && userList[a].type === \"external\"\r\n )\r\n ||\r\n (\r\n !showInternal\r\n && userList[a].type !== \"user\"\r\n )\r\n ||\r\n (\r\n showInternal\r\n && userList[a].type === \"user\"\r\n )\r\n )\r\n ) return true\r\n return false\r\n }\r\n ).sort((a, b) => {\r\n if (userList[a].name < userList[b].name)\r\n return -1\r\n else if (userList[a].name > userList[b].name)\r\n return 1\r\n return 0\r\n })\r\n .filter(pr => userList && userList[pr] && userList[pr]._id)\r\n .map(pr =>\r\n <UserMenuItem pr={pr} key={pr} selected={selectedUser.indexOf(userList[pr]._id) === -1 ? false : true} />\r\n )}\r\n </MenuList>\r\n </div>\r\n </div>\r\n </ClickAwayListener>\r\n </div>\r\n </Dialog>\r\n </div>\r\n )\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(SelectUsers)","module.exports = __webpack_public_path__ + \"static/media/notification.d7241ff2.mp3\";","module.exports = __webpack_public_path__ + \"static/media/mentionNotification.5a7d9f42.mp3\";","import React, { useEffect, useRef, useState } from 'react'\r\nimport { translate } from 'functions'\r\nimport HtmlTooltip from 'components/Tooltip/html'\r\nimport Icon from 'components/Icon'\r\n\r\n\r\n\r\nconst Legend = ({ legend, customColors }) => {\r\n const containerRef = useRef()\r\n const [legendX, setLegendX] = useState([])\r\n const [tooltip, setTooltip] = useState([])\r\n\r\n useEffect(() => {\r\n let legendReverse = legend\r\n if (!containerRef.current) return;\r\n\r\n if (customColors) {\r\n legendReverse = legend.map((item) => {\r\n const foundColorObj = customColors.find((colorObj) => {\r\n return translate(colorObj.label) === item.label\r\n });\r\n if (foundColorObj) {\r\n return {\r\n ...item,\r\n color: foundColorObj.color\r\n };\r\n } else {\r\n return item;\r\n }\r\n })\r\n }\r\n const resizeObserver = new ResizeObserver(() => {\r\n let width = containerRef.current.clientWidth\r\n let valuesArr = [510, 420, 350]\r\n let data = [...legendReverse];\r\n let tooltipData = []\r\n valuesArr.forEach((item, i) => {\r\n if (width < item) {\r\n let index\r\n switch (i) {\r\n case 0: index = 4; break;\r\n case 1: index = 3; break;\r\n case 2: index = 2; break;\r\n default: index = 5\r\n }\r\n\r\n data = [...legendReverse];\r\n tooltipData = data.splice(index, 5);\r\n }\r\n })\r\n setLegendX(data);\r\n setTooltip(tooltipData);\r\n });\r\n resizeObserver.observe(containerRef.current);\r\n return () => resizeObserver.disconnect(); // clean up \r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [legend]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n\r\n return (\r\n <div ref={containerRef} style={{ marginLeft: '20px', display: 'block', alignSelf: 'center', width: '100%', overflow: 'hidden' }}>\r\n <div style={{ display: 'flex', width: '500px' }}>\r\n {legendX.map(({ id, color, name, label, key }) => {\r\n const texto = translate(name ? name : label ? label : id)\r\n const primeiraLetra = texto.charAt(0);\r\n const restoTexto = texto.slice(1).toLowerCase();\r\n const textoConvertido = primeiraLetra + restoTexto;\r\n return (\r\n <div key={key} style={{ display: 'flex', marginRight: '16px', whiteSpace: 'nowrap', alignSelf: 'center' }}>\r\n <div style={{ width: '15px', height: '15px', borderRadius: '10px', backgroundColor: color, marginTop: '2px', }}></div>\r\n <p style={{ margin: '0px', marginTop: '-0.8px', marginLeft: '6px', fontSize: '14px', display: 'block' }}>\r\n {\r\n ['paused', 'notstarted', 'completed', 'inprogress', 'awaitaction'].includes(textoConvertido) ?\r\n translate(`$__${textoConvertido}`) : textoConvertido\r\n }\r\n </p>\r\n </div>\r\n )\r\n })}\r\n {tooltip.length > 0 && <HtmlTooltip\r\n title={(\r\n <React.Fragment>\r\n <div style={{ marginBottom: '10px', fontSize: '16px', marginTop: '10px', justifyContent: 'center' }}>\r\n {tooltip.map(({ id, color, name, label, key }) => {\r\n const texto = translate(name ? name : label ? label : id)\r\n const primeiraLetra = texto.charAt(0);\r\n const restoTexto = texto.slice(1).toLowerCase();\r\n const textoConvertido = primeiraLetra + restoTexto;\r\n return (\r\n <div key={key} style={{ display: 'flex', marginTop: '4px', marginRight: '16px', whiteSpace: 'nowrap', alignSelf: 'center', width: '100%' }}>\r\n <div style={{ width: '15px', height: '15px', borderRadius: '10px', backgroundColor: color, alignSelf: 'center' }}></div>\r\n <p style={{ margin: '0px', marginLeft: '6px', display: 'block', fontSize: '16px' }}>\r\n {\r\n ['paused', 'notstarted', 'completed', 'inprogress', 'awaitaction'].includes(textoConvertido) ?\r\n translate(`$__${textoConvertido}`) : textoConvertido\r\n }\r\n </p>\r\n </div>\r\n )\r\n })\r\n }\r\n </div>\r\n </React.Fragment>\r\n )} >\r\n <div style={{ alignSelf: 'center', border: '1px solid #D3D3D3 ', fontSize: '16px', borderRadius: '5px', display: 'flex', backgroundColor: '#f5f5f5', cursor: 'pointer' }}>\r\n <Icon style={{ alignSelf: 'center' }} size={16}>add</Icon>\r\n <p style={{ margin: '0px' }}>{tooltip.length}</p>\r\n <Icon style={{ alignSelf: 'center' }} size={16}>expand_more</Icon>\r\n </div>\r\n </HtmlTooltip>}\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\n\r\nexport default Legend","import React, { memo, useEffect } from \"react\"\r\nimport moment from \"moment-timezone\"\r\nimport ReactAudioPlayer from \"react-audio-player\"\r\n\r\n//REDUX\r\nimport { connect, useSelector } 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 Card from \"components/Card\"\r\nimport CardTags from \"components/Tags/Card\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport HeaderWithIcon from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport ReplyMessage from \"./message\"\r\nimport MoreVert from \"components/MoreMenu/\"\r\nimport SelectUsers from \"components/User/select\"\r\nimport TextField from \"components/TextField\"\r\nimport UserBadge from \"components/Badge/user\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\"\r\nimport Dialog from \"@material-ui/core/Dialog\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/timelineStyle\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n formatNumber,\r\n customApp,\r\n Highlighted,\r\n links,\r\n appAlert\r\n} from \"functions/\"\r\n\r\nimport {\r\n interact,\r\n deleteMessage,\r\n forwardMessage,\r\n mentionedUsers\r\n} from \"functions/chat\"\r\n\r\n//IMAGES\r\nimport defaultAvatar from \"assets/img/fundo-sonne.png\"\r\nimport SVGIcon from \"assets/icons/svg.png\"\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\n\r\nconst Message = (props) => {\r\n const { storie } = props\r\n const classes = useStyles()\r\n const session = useSelector((state) => state.session);\r\n const db = useSelector((state) => state.db);\r\n const functions = useSelector((state) => state.functions);\r\n const timeline = useSelector((state) => state.timeline);\r\n const chat = useSelector((state) => state.chat);\r\n const { socket } = functions\r\n const [hideImage, setHideImage] = React.useState(false)\r\n const [overOptions, setOverOptions] = React.useState(false)\r\n const [cancelReason, setCancelReason] = React.useState(null)\r\n const [goCancel, setGoCancel] = React.useState(null)\r\n const [forward, setForward] = React.useState(false)\r\n const [saveLoading, setSaveLoading] = React.useState(false)\r\n const [forwardToId, setForwardToId] = React.useState(null)\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const messageRef = React.createRef()\r\n const sizeRef = React.useRef(0)\r\n\r\n useEffect(() => {\r\n if (mounted.current)\r\n if (props.onResize && messageRef?.current?.clientHeight)\r\n if (sizeRef.current !== messageRef.current.clientHeight) {\r\n sizeRef.current = messageRef.current.clientHeight\r\n props.onResize(messageRef.current.clientHeight || 83)\r\n }\r\n // eslint-disable-next-line\r\n }, [messageRef])\r\n\r\n let timer = null\r\n\r\n if (storie.filesCount\r\n && storie.filesCount > 0\r\n && storie.user\r\n && storie.user._id\r\n && storie.user._id !== session._id\r\n && (\r\n !storie.files\r\n || (\r\n storie.files\r\n && storie.files.length < storie.filesCount\r\n )\r\n ))\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n\r\n\r\n const overOptionsHandle = (mouse = false) => {\r\n if (mounted.current) {\r\n setOverOptions(true)\r\n if (mouse)\r\n clearTimeout(timer)\r\n }\r\n }\r\n const closeOptionsHandle = (time = 300) => {\r\n timer = setTimeout(() => {\r\n if (mounted.current)\r\n setOverOptions(false)\r\n }, time)\r\n }\r\n\r\n const reactThis = (react) => {\r\n const nodeId = props.storie.idRel ? props.storie.idRel : props.storie._parent ? props.storie._parent : chat.nodeId;\r\n\r\n let data = {\r\n chatId: reduxStore.getState().chat.id,\r\n react: react,\r\n user: session._id,\r\n db: props.db,\r\n nodeId: nodeId,\r\n message: props.storie._id\r\n }\r\n\r\n interact(props, data)\r\n socket.emit(\"data\", {\r\n module: \"timeline\",\r\n method: \"post\",\r\n action: \"interact\"\r\n }, data)\r\n }\r\n\r\n\r\n if (!storie)\r\n return null\r\n\r\n let time = \"\"\r\n if (storie.type === \"timer\" && String(storie.ini) && String(storie.fin))\r\n time = storie.fin - storie.ini\r\n\r\n let urlPreview = null\r\n\r\n if (storie.urlPreview)\r\n urlPreview = JSON.parse(storie.urlPreview)\r\n\r\n let message = translate(mentionedUsers(storie.message, storie))\r\n\r\n let reaction\r\n if (storie._reactions && Object.keys(storie._reactions).length > 0)\r\n Object.keys(storie._reactions).forEach(re => {\r\n if (Object.keys(storie._reactions[re]).length > 0)\r\n Object.keys(storie._reactions[re]).forEach(us => {\r\n if (us === session._id)\r\n reaction = re\r\n })\r\n })\r\n\r\n let my = false\r\n if (props.storie && props.storie.user && props.storie.user._id === session._id)\r\n my = true\r\n\r\n const cancelConfirm = () => {\r\n appAlert({\r\n message: translate('$__confirmCancel', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n deleteMessage(props, {\r\n id: storie._id,\r\n idRel: storie.idRel,\r\n deletedReason: cancelReason,\r\n deleted: true\r\n })\r\n storie.deleted = true\r\n setGoCancel(false)\r\n setCancelReason(null)\r\n }\r\n })\r\n }\r\n const renderMessage = () => {\r\n if (storie.type === \"comment\" && storie.message) {\r\n return (\r\n <div>\r\n {storie.urlPreview && urlPreview.img && urlPreview.title && urlPreview.contentSnippet ?\r\n <GridContainer style={{ marginBottom: 15 }}>\r\n {!hideImage && urlPreview.img &&\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <img\r\n style={{\r\n width: \"-webkit-fill-available\"\r\n }}\r\n src={`${urlPreview.img}`}\r\n onError={(e) => {\r\n if (mounted.current)\r\n setHideImage(true)\r\n }}\r\n alt={urlPreview.title || urlPreview.link}\r\n />\r\n </GridItem>\r\n }\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={8}\r\n lg={9}\r\n xl={10}\r\n >\r\n <div style={{\r\n fontSize: \"14px\",\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bold\"\r\n }}>{urlPreview.title}</div>\r\n {urlPreview.site && <div\r\n style={{\r\n fontSize: \"12px\",\r\n }}\r\n >{urlPreview.site}</div>}\r\n {urlPreview.contentSnippet && <div\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"gray\",\r\n }}>{urlPreview.contentSnippet}</div>}\r\n <a style={{\r\n marginTop: \"15px\",\r\n fontWeight: \"bold\",\r\n fontSize: \"12px\",\r\n }\r\n } href={urlPreview.link} target=\"_blank\" rel=\"noopener noreferrer\">{translate(\"$__openLink\", \"*\")}</a>\r\n </GridItem>\r\n </GridContainer>\r\n : <React.Fragment></React.Fragment>}\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n {Highlighted(links(message), props.searchText)}\r\n </GridItem>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n } else if (storie.type === \"comment\" && !storie.message && storie.cardId !== props.nodeId && reduxStore.getState().db.cards[storie.cardId]) {\r\n return (\r\n <Card db=\"cards\" data={reduxStore.getState().db.cards[storie.cardId]} Avatar expanded ignoreList />\r\n )\r\n }\r\n if (storie.type === \"log\") {\r\n let newData = {}\r\n if (storie.message === \"$__stepChangeListPosition\" && storie.newData) {\r\n // console.log(storie.newData)\r\n let positions = JSON.parse(storie.newData)\r\n return (\r\n <div>\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\" }}>\r\n <Icon color=\"color\" icon=\"history\" style={{ marginRight: \"10px\" }} />\r\n {storie.message.indexOf(\"$__\") > -1 ? translate(storie.message, 1) : storie.message}{` `}\r\n </div>\r\n <ul\r\n style={{\r\n listStyle: \"decimal\"\r\n }}\r\n >\r\n {positions.filter(a => reduxStore.getState().db.cards[a]).map(a => (\r\n <li>{reduxStore.getState().db.cards[a].name}</li>\r\n ))}\r\n\r\n </ul>\r\n </div>\r\n )\r\n }\r\n if (storie.message === \"$__updated\") {\r\n newData = JSON.parse(storie.newData)\r\n return (\r\n <div>\r\n\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\" }}>\r\n <Icon color=\"color\" icon=\"history\" style={{ marginRight: \"10px\" }} />\r\n {storie.message.indexOf(\"$__\") > -1 ? translate(storie.message, 1) : storie.message}{` `}\r\n </div>\r\n {storie.newData &&\r\n <ul style={{\r\n position: \"relative\",\r\n width: \"98%\"\r\n\r\n }}>\r\n {Object.keys(newData).map((a, i) => {\r\n if (a === \"icon\") {\r\n return (\r\n <li key={i} style={{ display: \"flex\" }}>\r\n {translate(`$__icon`, 1)}:<Icon icon={newData[a]} color={customApp(\"color\")} size={\"17px\"} />\r\n </li>\r\n )\r\n } else\r\n if (a === \"customColumns\") {\r\n let columns = JSON.parse(newData[a])\r\n return (<li key={i}>{translate(`$__customColumns`, 1)}:\r\n <ul>\r\n {Object.keys(columns).map((a, ai) =>\r\n <li key={ai}>{translate(`$__${a}`)}{`=>`} <span style={{ color: customApp('menu'), fontWeight: \"bold\" }}>{translate(`${columns[a].name}`)}</span></li>\r\n )}\r\n\r\n </ul>\r\n </li>)\r\n } else if (a === \"customDashboard\") {\r\n return (<li key={i}>{translate(`$__customDashboard`, 1)}: {translate(`$__updated`, 1)}</li>)\r\n } else if (\r\n a === \"_id\"\r\n || a === \"id\"\r\n || a === \"client\"\r\n || a === \"planId\"\r\n || a === \"_parent\"\r\n || a === \"owner\"\r\n || a === \"image\"\r\n ) {\r\n } else if (a === \"status\") {\r\n return (<li key={i}>{translate(`$__status`, 1)}: {translate(`$__${newData[a]}`, 1)}</li>)\r\n } else if (a === 'note') {\r\n return (<li key={i}>{translate(`$__note`, 1)}: <div>{Highlighted(links(newData[a]), props.searchText)}</div></li>)\r\n } else if (\r\n a === \"kpi_type\"\r\n || a === \"priority\"\r\n || a === \"risk\"\r\n || a === \"complexity\"\r\n || a === \"impact\"\r\n ) {\r\n return (<li key={i}>{translate(`$__${a}`, 1)}: {translate(`$__${newData[a]}`, 1)}</li>)\r\n } else if (\r\n a === \"name\" || a === 'description'\r\n ) {\r\n return (\r\n <li key={i}>{translate(`$__${a}`, 1)}: {newData[a]}</li>\r\n )\r\n } else if (\r\n a === \"url\"\r\n ) {\r\n return (\r\n <li key={i}>{\"url\"}:\r\n <a href={newData[a]} target=\"blank\"\r\n style={{\r\n\r\n }}\r\n >\r\n {Highlighted(links(newData[a]), props.searchText)}\r\n </a>\r\n </li>\r\n )\r\n } else if (\r\n a !== \"_tags\"\r\n && (typeof newData[a] === \"string\")\r\n && (\r\n a !== \"kpi_ini\"\r\n && a !== \"kpi_fin\"\r\n && a !== \"startDate\"\r\n && a !== \"endDate\"\r\n && a !== \"updated_at\"\r\n && a !== \"created_at\"\r\n && a !== \"content\"\r\n )\r\n ) {\r\n return (\r\n <li key={i}>{translate(`$__${a}`, 1)}: {newData[a].indexOf(\"$__\") > -1 ? translate(`$__${newData[a]}`, 1) : newData[a]}</li>\r\n )\r\n } else if (\r\n a === \"kpi_ini\"\r\n || a === \"kpi_fin\"\r\n ) {\r\n return (\r\n <li key={i}>{translate(`$__${a}`, 1)}: {formatNumber(newData[a], storie.kpi_type ? storie.kpi_type : \"decimal\")}</li>\r\n )\r\n } else if (\r\n a === \"startDate\"\r\n || a === \"endDate\"\r\n || a === \"updated_at\"\r\n || a === \"created_at\"\r\n || a === \"completed_at\"\r\n ) {\r\n return (\r\n <li key={i}>{translate(`$__${a}`, 1)}: {!newData[a] ? translate(\"$__removed\") : moment(new Date(newData[a] * 1000)).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY HH:mm\")}</li>\r\n )\r\n } else if (\r\n typeof newData[a] === \"boolean\"\r\n ) {\r\n return (\r\n <li key={i}>{translate(`$__${a}`, 1)}: {newData[a] ? translate(`$__enable`, 1) : translate(`$__disable`, 1)}</li>\r\n )\r\n } else if (a === \"_tags\") {\r\n return (<li key={i}>TAGS: <CardTags options={newData[a]} showOptions={true} /></li>)\r\n } else {\r\n return (<li key={i}>{translate(`$__${a}`, 1)}::UPDATED_VALUE</li>)\r\n }\r\n return (<li key={i}>{translate(`$__${a}`, 1)}::UPDATED_VALUE</li>)\r\n }\r\n )}\r\n <div style={{ clear: \"both\" }}></div>\r\n </ul>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n } else {\r\n return (\r\n <div style={{ position: \"relative\", width: \"100%\" }}>\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\" }}>\r\n <Icon color=\"color\" icon=\"history\" style={{ marginRight: \"10px\" }} />\r\n {storie.approval && storie.message.indexOf(\"$__approved\") > -1 ?\r\n <Icon icon=\"verified\" color={\"green\"} />\r\n : storie.approval && storie.message.indexOf(\"$__rejected\") > -1 ?\r\n <Icon icon=\"gpp_bad\" color={\"red\"} />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ wordBreak: \"break-word\" }}>\r\n {Highlighted(links(message), props.searchText)}\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n {storie.cardId ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n maxWidth: \"285px\",\r\n ...props.boxStyle && props.boxStyle.maxWidth ? { maxWidth: props.boxStyle.maxWidth } : {},\r\n width: \"100%\",\r\n display: \"block\"\r\n }}>\r\n <Card\r\n db=\"cards\"\r\n data={reduxStore.getState().db.cards[storie.cardId]}\r\n ignoreList\r\n onlyOption\r\n notGlobalExpanded\r\n noExpanding\r\n disabled\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n }\r\n }\r\n if (storie.type === \"timer\") {\r\n // if (storie.message === \"Dsf\")\r\n // console.log(storie)\r\n let diff = time\r\n let diffText = ``\r\n if (time < 60) {\r\n diffText = `${diff} ${translate(\"$__seconds\", 1)}`\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} hora${hours > 1 ? \"s\" : \"\"} ${minutes} ${translate(\"$__minutes\", 1)} ${seconds} ${translate(\"$__seconds\", 1)}`\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} ${translate(\"$__seconds\", 1)}`\r\n }\r\n if (goCancel)\r\n return (\r\n <div>\r\n <div style={{ position: \"relative\", width: \"100%\", marginTop: \"33px\" }}>\r\n <TextField\r\n label={translate('$__cancelReason', 1)}\r\n variant={customApp('standard')}\r\n name=\"cancelReason\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n minRows: 3,\r\n onChange: (d) => {\r\n if (mounted.current)\r\n setCancelReason(d.target.value)\r\n },\r\n }}\r\n placeholder={translate('$__cancelReason_placeholder', 1)}\r\n />\r\n </div>\r\n <div style={{ position: \"absolute\", right: \"7px\", top: \"7px\", display: 'flex' }}>\r\n <CustomButton\r\n transparent\r\n title={translate(`$__cancel`, '*')}\r\n color={customApp('lightgrey')}\r\n icon={'cancel'}\r\n onClick={() => {\r\n if (mounted.current) {\r\n setGoCancel(false)\r\n setCancelReason(null)\r\n }\r\n }}\r\n size={'25px'}\r\n />\r\n <CustomButton\r\n transparent\r\n title={translate(`$__save`, 1)}\r\n color='green'\r\n icon={'playlist_add_check'}\r\n onClick={() => {\r\n if (mounted.current)\r\n cancelConfirm()\r\n }}\r\n size={'25px'}\r\n />\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n return (\r\n <div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n\r\n }}\r\n >\r\n {storie && storie._toUser && Object.keys(storie._toUser).length > 0 &&\r\n <div className={classes.timeInfo}>\r\n <AvatarGroup\r\n max={300}\r\n style={{\r\n flexWrap: \"wrap\",\r\n display: \"inline-flex\",\r\n border: \"none\"\r\n }}\r\n >\r\n {Object.keys(storie._toUser).map(selectedUserId =>\r\n <Tooltip\r\n key={selectedUserId}\r\n title={storie._toUser[selectedUserId].displayName ? storie._toUser[selectedUserId].displayName : storie._toUser[selectedUserId].name}\r\n >\r\n <Avatar\r\n alt={storie._toUser[selectedUserId].name}\r\n src={storie._toUser[selectedUserId].image || null}\r\n style={{ width: 27, height: 27, border: \"none\" }}>\r\n {storie._toUser[selectedUserId].name.substr(0, 1)}\r\n </Avatar>\r\n </Tooltip>\r\n )}\r\n </AvatarGroup>\r\n </div>\r\n }\r\n {storie.manualEntry ?\r\n <div className={classes.timeInfo}>\r\n <Icon color=\"color\" icon=\"schedule\" />\r\n <div className=\"text\">{moment(storie.ini * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")}</div>\r\n </div>\r\n : <React.Fragment>\r\n {parseInt(moment(storie.ini * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY\")) > 2021 ?\r\n <div className={classes.timeInfo}>\r\n <Icon color=\"color\" icon=\"schedule\" />\r\n <div className=\"text\">{moment(storie.ini * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY/MM/DD HH:mm:ss\")}</div>\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {parseInt(moment(storie.fin * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY\")) > 2021 ?\r\n <div className={classes.timeInfo}>\r\n <Icon color=\"color\" icon=\"watch_later\" />\r\n <div className=\"text\">{moment(storie.fin * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY/MM/DD HH:mm:ss\")}</div>\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n </React.Fragment>\r\n }\r\n\r\n <div className={classes.timeInfo}>\r\n <Icon color=\"color\" icon=\"hourglass_full\" />\r\n <div className=\"text\">\r\n {diffText}\r\n </div>\r\n </div>\r\n <div style={{ clear: 'both' }}></div>\r\n {storie.deleted ? <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(255,255,255,0.66)\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"menu\")\r\n }}\r\n >\r\n {translate(\"$__cancelled\")}\r\n </div> : <React.Fragment></React.Fragment>}\r\n </div>\r\n <div>{message}</div>\r\n {storie.deleted && storie.deletedReason &&\r\n <div style={{ color: \"red\" }}>{translate(\"$__cancelReason\", 1)}: {storie.deletedReason}</div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n {\r\n (\r\n !storie.deleted &&\r\n (\r\n overOptions ||\r\n (\r\n moment(storie.created_at).unix('x')\r\n )\r\n )\r\n ) ?\r\n <div style={{ position: \"absolute\", right: \"7px\", top: \"7px\" }}>\r\n <MoreVert\r\n transparent\r\n options={[\r\n {\r\n name: \"$__cancelThis\",\r\n icon: \"cancel\",\r\n onClick: () => {\r\n setGoCancel(true)\r\n },\r\n show: \"hover\"\r\n },\r\n ]}\r\n />\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n }\r\n if (storie.type === \"kpi\") {\r\n let balance = storie && storie.balance ? storie.balance : 0\r\n return (\r\n <div>\r\n {storie.cardId ? <Card db=\"cards\" data={reduxStore.getState().db.cards[storie.cardId]} ignoreList noOptions /> : <React.Fragment></React.Fragment>}\r\n <div>{message}</div>\r\n <div className={parseFloat(storie.value) > 0 ? classes.valuePositive : classes.valueNegative}>{formatNumber(storie.value, storie.kpi_type ? storie.kpi_type : \"decimal\")}</div>\r\n\r\n {!props.stories &&\r\n <div className={classes.lastValue}>{translate(\"$__balance\", 1)}: {formatNumber(balance, storie.kpi_type ? storie.kpi_type : \"decimal\")}</div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n }\r\n }\r\n\r\n\r\n if (!storie.filesCount && storie.message === \"\" && storie.cardId && storie.cardId !== props.nodeId && !reduxStore.getState().db.cards[storie.cardId])\r\n return <></>\r\n\r\n if (storie.deleted && storie.user._id !== session._id)\r\n return <></>\r\n\r\n\r\n\r\n const renderFile = (file) => {\r\n let fileName = file.name.split(\".\")\r\n let ext = fileName[fileName.length - 1]\r\n\r\n let img = `attachment`\r\n if (db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0) {\r\n img = db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].icon\r\n || `https://fl.machen.ai/?arq=${file.file.replace('&', '||MCH-ECOM||')}&name=${file.name.replace('&', '||MCH-ECOM||')}`\r\n }\r\n\r\n let viewer = \"img\"\r\n if (db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0 && db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].viewer)\r\n viewer = db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].viewer\r\n\r\n return (\r\n <div key={file._id}\r\n style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n marginBottom: \"5px\",\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n cursor: \"pointer\",\r\n overflow: \"hidden\",\r\n padding: \"7px\",\r\n zIndex: \"10 !important\",\r\n borderRadius: \"15px\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n ...viewer === \"audio\" ? {\r\n width: \"350px\",\r\n height: \"50px\",\r\n } : viewer === \"movie\" ? {\r\n width: \"350px\",\r\n height: \"280px\",\r\n } : {\r\n width: \"150px\",\r\n height: \"150px\",\r\n }\r\n }}\r\n onClick={(e) => {\r\n if (props.openLightBox) {\r\n props.openLightBox(file._id)\r\n }\r\n e.preventDefault()\r\n }}\r\n title={file.name}\r\n >\r\n {(viewer === \"img\"\r\n ||\r\n (\r\n (\r\n viewer !== \"movie\"\r\n && viewer !== \"audio\"\r\n && typeof img === \"string\"\r\n && img.indexOf(\"blob:\") === -1\r\n && img.indexOf(\"svg\") === -1\r\n )\r\n || (\r\n viewer !== \"movie\"\r\n && viewer !== \"audio\"\r\n && !(viewer === \"img\" && img && img.indexOf(\"svg\") > -1)\r\n )\r\n )) &&\r\n <Tooltip\r\n title={file.name}>\r\n <div style={{\r\n position: \"absolute\",\r\n bottom: \"7px\",\r\n left: \"7px\",\r\n right: \"7px\",\r\n padding: \"3px\",\r\n background: \"rgba(0,0,0,0.8)\",\r\n color: \"#FFFFFF\",\r\n borderRadius: \"0px 0px 15px 15px\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}>{file.name}</div>\r\n </Tooltip>\r\n }\r\n {/* IMAGES */}\r\n {(viewer === \"img\" && img === \"attachment\") &&\r\n <Icon icon={img} size=\"50px\" />\r\n }\r\n {(viewer === \"img\"\r\n &&\r\n (\r\n typeof img === \"string\"\r\n && img.indexOf(\"https\") > -1\r\n && img.indexOf(\"svg\") === -1\r\n )\r\n ) &&\r\n <img\r\n alt=\"altImage\"\r\n src={`${img}`}\r\n style={\r\n {\r\n borderRadius: \"15px\",\r\n boxShadow: `0 1px 2px 2px rgba(0,0,0,0.1)`,\r\n maxWidth: \"100%\",\r\n height: \"100%\",\r\n maxHeight: \"33vh\"\r\n }}\r\n onError={(e) => {\r\n // if (\r\n // storie.created_at\r\n // && typeof storie.created_at === \"string\"\r\n // && parseInt(storie.created_at) > moment().unix(\"X\") - 60\r\n // )\r\n // e.target.src = img\r\n }\r\n }\r\n />\r\n }\r\n\r\n {(viewer !== \"movie\" && viewer !== \"img\" && typeof img === \"string\" && img.indexOf(\"blob:\") === -1 && img.indexOf(\"svg\") === -1) ?\r\n <Icon icon={img} size=\"50px\" />\r\n : (viewer !== \"movie\" && viewer !== \"img\" && !(viewer === \"img\" && img && img.indexOf(\"svg\") > -1)) ?\r\n <img alt=\"MACHEN_IMAGE\" src={img} style={{ width: \"100%\", height: \"100%\" }} />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n\r\n {/* IMAGES */}\r\n {(viewer === \"img\" && img && img.indexOf(\".svg\") > -1) ?\r\n <img\r\n alt=\"altImage\"\r\n src={SVGIcon}\r\n style={\r\n {\r\n borderRadius: \"15px\",\r\n boxShadow: `0 1px 2px 2px rgba(0,0,0,0.1)`,\r\n maxWidth: \"100%\",\r\n height: \"100%\",\r\n maxHeight: \"33vh\"\r\n }}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n\r\n {viewer === \"movie\"\r\n &&\r\n <video\r\n style={{\r\n width: \"100%\"\r\n }}\r\n controlsList=\"nodownload\"\r\n src={`https://machen.azureedge.net/${file.file}`} ></video>\r\n }\r\n {viewer === \"audio\"\r\n &&\r\n <ReactAudioPlayer\r\n src={`https://machen.azureedge.net/${file.file}`}\r\n // autoPlay\r\n controls\r\n />\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n maxWidth: \"calc(100% - 15px)\",\r\n marginLeft: \"7px\",\r\n ...props.messageClick ? { cursor: \"pointer\" } : {},\r\n ...props.boxStyle ? props.boxStyle : {}\r\n }}\r\n onClick={props.messageClick ? (e) => {\r\n props.messageClick()\r\n e.preventDefault()\r\n } : null\r\n }\r\n ref={messageRef}\r\n >\r\n <div\r\n className=\"message\"\r\n style={{\r\n position: \"relative\",\r\n maxWidth: \"calc(88% - 15px)\",\r\n float: my ? \"right\" : \"left\",\r\n ...my ? {\r\n marginRight: \"15px\"\r\n } : {\r\n marginLeft: \"15px\"\r\n },\r\n width: \"auto\",\r\n minWidth: \"303px\",\r\n marginBottom: \"20px\"\r\n }}\r\n\r\n onMouseLeave={() => { closeOptionsHandle(1000) }}\r\n onMouseOver={() => {\r\n if (!props.isReply)\r\n overOptionsHandle(true)\r\n }}\r\n onClick={() => {\r\n if (!props.isReply)\r\n overOptionsHandle(true)\r\n }}\r\n >\r\n {(props.showUserName && !my) &&\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n fontWeight: \"bold\",\r\n fontSize: \"12px\",\r\n color: customApp('menu'),\r\n }}>\r\n {(\r\n !session.GlobalData.hideDeletedUsers\r\n ||\r\n (\r\n session\r\n && session.GlobalData\r\n && session.GlobalData.hideDeletedUsers\r\n && storie.user\r\n && (\r\n !storie.user.deleted\r\n && (\r\n !reduxStore.getState().db.users[storie.user._id]\r\n || (\r\n reduxStore.getState().db.users[storie.user._id]\r\n && !reduxStore.getState().db.users[storie.user._id].deleted\r\n )\r\n )\r\n )\r\n )\r\n ) && storie.user.name ? storie.user.name : translate(\"$__deletedUser\")}\r\n </div>\r\n }\r\n <div style={{\r\n position: \"relative\",\r\n float: my ? \"right\" : \"left\",\r\n padding: \"7px 15px\",\r\n width: \"100%\",\r\n background: my ? \"linear-gradient(33deg, rgba(237, 237, 237, 1), rgba(196, 196, 196, 1))\" : \"linear-gradient(33deg, rgba(250, 250, 250, 1), rgba(240,240,240, 1))\",\r\n borderRadius: \"15px\",\r\n boxShadow: \"rgb(0 0 0 / 5%) 0px 2px 2px 2px\",\r\n ...storie.approval ? {\r\n border: `solid 4px ${storie.message.indexOf(\"$__approved\") > -1 ? `green` : `red`}`\r\n } : {}\r\n }}\r\n >\r\n\r\n {(storie && storie.filesCount && storie && storie.user && storie.user._id === session._id && parseInt(storie.filesCount) > 0 && storie.files && Object.keys(storie.files).length === 0) ?\r\n <React.Fragment>\r\n <div style={{\r\n position: \"relative\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n color: \"lightgray\",\r\n }}>\r\n {translate(`$__transferringFile${parseInt(storie.filesCount) > 1 ? `s` : ``}`)}\r\n </div>\r\n <div\r\n className=\"files\"\r\n style={{\r\n position: \"relative\",\r\n maxWidth: \"calc(100% - 15px)\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n }}>\r\n {\r\n parseInt(storie.created_at) > moment().unix('x') - 60\r\n ?\r\n <React.Fragment>\r\n {/* HOUVE UM PROBLEMA AO ENVIAR OS ARQUIVOS */}\r\n </React.Fragment>\r\n :\r\n <React.Fragment>\r\n\r\n </React.Fragment>\r\n }\r\n </div>\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {\r\n storie.files && Object.keys(storie.files).length > 0 ?\r\n <div className=\"files\"\r\n style={{\r\n position: \"relative\",\r\n maxWidth: \"calc(100% - 15px)\",\r\n float: my ? \"right\" : \"left\",\r\n ...my ? {\r\n marginRight: \"15px\"\r\n } : {\r\n marginLeft: \"15px\"\r\n },\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: my ? `flex-end` : `none`,\r\n flexWrap: \"wrap\"\r\n }}>\r\n {Object.keys(storie.files).map((id, i) => <div key={`${id}-${i}`}>{renderFile(storie.files[id])}</div>)}\r\n </div>\r\n : storie.files && storie.files.length > 0 ?\r\n <div className=\"files\"\r\n style={{\r\n position: \"relative\",\r\n maxWidth: \"calc(100% - 15px)\",\r\n float: my ? \"right\" : \"left\",\r\n ...my ? {\r\n marginRight: \"15px\"\r\n } : {\r\n marginLeft: \"15px\"\r\n },\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: my ? `flex-end` : `none`,\r\n flexWrap: \"wrap\"\r\n }}>\r\n {storie.files.map((ff, i) => renderFile(ff))}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {(!props.isReply\r\n && props.storie\r\n && props.storie.reply\r\n && timeline\r\n && (\r\n (\r\n timeline[props.nodeId]\r\n && timeline[props.nodeId][props.storie.reply]\r\n ) ||\r\n (\r\n timeline[session._id]\r\n && timeline[session._id][props.storie.reply]\r\n )\r\n )\r\n ) &&\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"calc(100% - 20px)\",\r\n opacity: 0.66,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n marginBottom: \"7px\"\r\n }}>\r\n <ReplyMessage\r\n isReply={true}\r\n storie={timeline[props.nodeId] && timeline[props.nodeId][props.storie.reply] ? timeline[props.nodeId][props.storie.reply] : timeline[session._id][props.storie.reply]}\r\n db={props.db}\r\n nodeId={props.nodeId}\r\n openLightBox={(e) => {\r\n if (props.openLightBox)\r\n props.openLightBox(e)\r\n }}\r\n messageClick={() => {\r\n if (props.replyClick)\r\n props.replyClick()\r\n }}\r\n />\r\n </div>\r\n }\r\n {(!storie.deleted || storie.type === 'timer') ?\r\n renderMessage()\r\n :\r\n <div\r\n style={{\r\n color: 'lightGray',\r\n height: 33,\r\n padding: 7,\r\n }}\r\n >\r\n {translate(\"$__removed\", \"*\")}*\r\n </div>\r\n }\r\n </div>\r\n {\r\n (\r\n storie.user\r\n && storie.user._id\r\n ) &&\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n ...my ? {\r\n right: \"-20px\"\r\n } : {\r\n left: \"-20px\"\r\n },\r\n bottom: 0,\r\n }}\r\n >\r\n <UserBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"right\",\r\n }}\r\n userId={storie.user._id}\r\n >\r\n <Avatar\r\n {...storie.user._id && !reduxStore.getState().db.users[storie.user._id]?.deleted ?\r\n {\r\n alt: storie.user.displayName ? storie.user.displayName : storie.user.name,\r\n src: `${storie.user.image}`\r\n } : {\r\n alt: translate(\"$__deletedUser\"),\r\n src: null,\r\n }\r\n }\r\n // alt={storie.user.displayName ? storie.user.displayName : storie.user.name}\r\n // src={`${storie.user.image}`}\r\n style={{\r\n width: \"22px\",\r\n height: \"22px\"\r\n }} />\r\n </UserBadge>\r\n </div>\r\n }\r\n <div style={{\r\n position: \"absolute\",\r\n ...my ? {\r\n left: \"15px\"\r\n } : {\r\n right: \"15px\"\r\n },\r\n bottom: \"-26px\",\r\n color: \"rgba(0,0,0,0.77)\",\r\n background: \"linear-gradient(33deg, rgba(233, 233, 233, 1), rgba(211,211,211, 1))\",\r\n display: \"flex\",\r\n padding: \"1px 7px\",\r\n alignItems: \"center\",\r\n borderRadius: \"0 0 7px 7px\",\r\n fontSize: \"10px\",\r\n width: \"fit-content\",\r\n\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n onMouseOut={closeOptionsHandle}\r\n >\r\n\r\n\r\n {!storie.deleted && storie._reactions && Object.keys(storie._reactions).length > 0 &&\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n {storie && storie._reactions.like && Object.keys(storie._reactions.like).length > 0 &&\r\n <IconButton\r\n icon={\"thumb_up\"}\r\n iconColor={customApp(\"menu\")}\r\n title={<React.Fragment>\r\n <div className={classes.users}>\r\n {Object.keys(storie._reactions.like)\r\n .sort((a, b) => {\r\n if (\r\n storie._reactions.like[a].reactDate\r\n && String(storie._reactions.like[a].reactDate.low)\r\n && storie._reactions.like[b].reactDate\r\n && String(storie._reactions.like[b].reactDate.low)\r\n && parseInt(storie._reactions.like[a].reactDate.low) < parseInt(storie._reactions.like[b].reactDate.low)\r\n ) {\r\n return -1\r\n } else if (\r\n storie._reactions.like[a].reactDate\r\n && String(storie._reactions.like[a].reactDate.low)\r\n && storie._reactions.like[b].reactDate\r\n && String(storie._reactions.like[b].reactDate.low)\r\n && parseInt(storie._reactions.like[a].reactDate.low) > parseInt(storie._reactions.like[b].reactDate.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((a, i) => {\r\n return (\r\n <div key={a} style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", }}>\r\n <Avatar alt={storie._reactions.like[a].name} src={storie._reactions.like[a].image || defaultAvatar} />\r\n <span style={{ paddingLeft: \"7px\" }}>\r\n {storie._reactions.like[a].displayName ? storie._reactions.like[a].displayName : storie._reactions.like[a].name}{storie._reactions.like[a].reactDate && storie._reactions.like[a].reactDate.low && ` (${moment(storie._reactions.like[a].reactDate.low * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")})`}\r\n </span>\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n </React.Fragment>}\r\n style={{\r\n fontSize: \"12px\",\r\n margin: 0\r\n }}\r\n />\r\n }\r\n {storie && storie._reactions && storie._reactions.nolike && Object.keys(storie._reactions.nolike).length > 0 &&\r\n <IconButton\r\n icon={\"thumb_down\"}\r\n iconColor={customApp(\"medium\")}\r\n style={{\r\n fontSize: \"12px\",\r\n margin: 0\r\n }}\r\n title={<React.Fragment>\r\n <div className={classes.users}>\r\n {Object.keys(storie._reactions.nolike)\r\n .sort((a, b) => {\r\n if (\r\n storie._reactions.nolike[a].reactDate\r\n && String(storie._reactions.nolike[a].reactDate.low)\r\n && storie._reactions.nolike[b].reactDate\r\n && String(storie._reactions.nolike[b].reactDate.low)\r\n && parseInt(storie._reactions.nolike[a].reactDate.low) < parseInt(storie._reactions.nolike[b].reactDate.low)\r\n ) {\r\n return -1\r\n } else if (\r\n storie._reactions.nolike[a].reactDate\r\n && String(storie._reactions.nolike[a].reactDate.low)\r\n && storie._reactions.nolike[b].reactDate\r\n && String(storie._reactions.nolike[b].reactDate.low)\r\n && parseInt(storie._reactions.nolike[a].reactDate.low) > parseInt(storie._reactions.nolike[b].reactDate.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((a, i) => {\r\n return (\r\n <div key={a} style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", }}>\r\n <Avatar alt={storie._reactions.nolike[a].name} src={storie._reactions.nolike[a].image || defaultAvatar} />\r\n <span style={{ paddingLeft: \"7px\" }}>\r\n {storie._reactions.nolike[a].displayName ? storie._reactions.nolike[a].displayName : storie._reactions.nolike[a].name}{storie._reactions.nolike[a].reactDate && storie._reactions.nolike[a].reactDate.low && ` (${moment(storie._reactions.nolike[a].reactDate.low * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")})`}\r\n </span>\r\n </div>\r\n )\r\n }\r\n )}\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </React.Fragment>}\r\n />\r\n }\r\n {storie && storie._reactions && storie._reactions.love && Object.keys(storie._reactions.love).length > 0 &&\r\n <IconButton\r\n icon={\"favorite\"}\r\n iconColor={customApp(\"medium\")}\r\n style={{\r\n fontSize: \"12px\",\r\n margin: 0\r\n }}\r\n title={<React.Fragment>\r\n <div className={classes.users}>\r\n {Object.keys(storie._reactions.love)\r\n .sort((a, b) => {\r\n if (\r\n storie._reactions.love[a].reactDate\r\n && String(storie._reactions.love[a].reactDate.low)\r\n && storie._reactions.love[b].reactDate\r\n && String(storie._reactions.love[b].reactDate.low)\r\n && parseInt(storie._reactions.love[a].reactDate.low) < parseInt(storie._reactions.love[b].reactDate.low)\r\n ) {\r\n return -1\r\n } else if (\r\n storie._reactions.love[a].reactDate\r\n && String(storie._reactions.love[a].reactDate.low)\r\n && storie._reactions.love[b].reactDate\r\n && String(storie._reactions.love[b].reactDate.low)\r\n && parseInt(storie._reactions.love[a].reactDate.low) > parseInt(storie._reactions.love[b].reactDate.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((a, i) => {\r\n return (\r\n <div key={a} style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", }}>\r\n <Avatar alt={storie._reactions.love[a].name} src={storie._reactions.love[a].image || defaultAvatar} />\r\n <span style={{ paddingLeft: \"7px\" }}>\r\n {storie._reactions.love[a].displayName ? storie._reactions.love[a].displayName : storie._reactions.love[a].name}{storie._reactions.love[a].reactDate && storie._reactions.love[a].reactDate.low && ` (${moment(storie._reactions.love[a].reactDate.low * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")})`}\r\n </span>\r\n </div>\r\n )\r\n }\r\n )}\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </React.Fragment>}\r\n />\r\n }\r\n {storie && storie._reactions && storie._reactions.approve && Object.keys(storie._reactions.approve).length > 0 &&\r\n <IconButton\r\n icon=\"verified\"\r\n iconColor={\"green\"}\r\n style={{\r\n fontSize: \"12px\",\r\n margin: 0\r\n }}\r\n title={<React.Fragment>\r\n <div className={classes.users}>\r\n {Object.keys(storie._reactions.approve)\r\n .sort((a, b) => {\r\n if (\r\n storie._reactions.approve[a].reactDate\r\n && String(storie._reactions.approve[a].reactDate.low)\r\n && storie._reactions.approve[b].reactDate\r\n && String(storie._reactions.approve[b].reactDate.low)\r\n && parseInt(storie._reactions.approve[a].reactDate.low) < parseInt(storie._reactions.approve[b].reactDate.low)\r\n ) {\r\n return -1\r\n } else if (\r\n storie._reactions.approve[a].reactDate\r\n && String(storie._reactions.approve[a].reactDate.low)\r\n && storie._reactions.approve[b].reactDate\r\n && String(storie._reactions.approve[b].reactDate.low)\r\n && parseInt(storie._reactions.approve[a].reactDate.low) > parseInt(storie._reactions.approve[b].reactDate.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((a, i) => {\r\n return (\r\n <div key={a} style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", }}>\r\n <Avatar alt={storie._reactions.approve[a].name} src={storie._reactions.approve[a].image || defaultAvatar} />\r\n <span style={{ paddingLeft: \"7px\" }}>\r\n {storie._reactions.approve[a].displayName ? storie._reactions.approve[a].displayName : storie._reactions.approve[a].name}{storie._reactions.approve[a].reactDate && storie._reactions.approve[a].reactDate.low && ` (${moment(storie._reactions.approve[a].reactDate.low * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")})`}\r\n </span>\r\n </div>\r\n )\r\n }\r\n )}\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </React.Fragment>}\r\n />\r\n }\r\n {storie && storie._reactions && storie._reactions.attention && Object.keys(storie._reactions.attention).length > 0 &&\r\n <IconButton\r\n icon=\"report_problem\"\r\n iconColor={\"red\"}\r\n style={{\r\n fontSize: \"12px\",\r\n margin: 0\r\n }}\r\n title={<React.Fragment>\r\n <div className={classes.users}>\r\n {Object.keys(storie._reactions.attention)\r\n .sort((a, b) => {\r\n if (\r\n storie._reactions.attention[a].reactDate\r\n && String(storie._reactions.attention[a].reactDate.low)\r\n && storie._reactions.attention[b].reactDate\r\n && String(storie._reactions.attention[b].reactDate.low)\r\n && parseInt(storie._reactions.attention[a].reactDate.low) < parseInt(storie._reactions.attention[b].reactDate.low)\r\n ) {\r\n return -1\r\n } else if (\r\n storie._reactions.attention[a].reactDate\r\n && String(storie._reactions.attention[a].reactDate.low)\r\n && storie._reactions.attention[b].reactDate\r\n && String(storie._reactions.attention[b].reactDate.low)\r\n && parseInt(storie._reactions.attention[a].reactDate.low) > parseInt(storie._reactions.attention[b].reactDate.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((a, i) => {\r\n return (\r\n <div key={a} style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", }}>\r\n <Avatar alt={storie._reactions.attention[a].name} src={storie._reactions.attention[a].image || defaultAvatar} />\r\n <span style={{ paddingLeft: \"7px\" }}>\r\n {storie._reactions.attention[a].displayName ? storie._reactions.attention[a].displayName : storie._reactions.attention[a].name}{storie._reactions.attention[a].reactDate && storie._reactions.attention[a].reactDate.low && ` (${moment(storie._reactions.attention[a].reactDate.low * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")})`}\r\n </span>\r\n </div>\r\n )\r\n }\r\n )}\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </React.Fragment>\r\n }\r\n />\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n {!props.isReply &&\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n marginLeft: \"7px\",\r\n marginRight: \"7px\",\r\n }}>\r\n\r\n {overOptions && !props.noReactions && !storie.deleted &&\r\n <div\r\n style={{\r\n display: \"flex\",\r\n minWidth: \"fit-content\",\r\n justifyContent: \"center\",\r\n\r\n }}\r\n onMouseOver={(e) => {\r\n overOptionsHandle(true)\r\n }\r\n }\r\n >\r\n <Icon\r\n icon={reaction && reaction === \"like\" ? \"thumb_up\" : \"thumb_up_off_alt\"}\r\n iconColor={reaction && reaction === \"like\" ? customApp(\"menu\") : customApp(\"medium\")}\r\n title={translate(\"$__like\", 1)}\r\n size={\"18px\"}\r\n onClick={() => {\r\n reactThis(\"like\")\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n />\r\n <Icon\r\n icon={reaction && reaction === \"nolike\" ? \"thumb_down\" : \"thumb_down_off_alt\"}\r\n title={translate(\"$__notlike\", 1)}\r\n iconColor={reaction && reaction === \"nolike\" ? customApp(\"menu\") : customApp(\"medium\")}\r\n size={\"18px\"}\r\n onClick={() => {\r\n reactThis(\"nolike\")\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n />\r\n <Icon\r\n icon={reaction && reaction === \"love\" ? \"favorite\" : \"favorite_border\"}\r\n title={translate(\"$__love\", 1)}\r\n iconColor={reaction && reaction === \"love\" ? customApp(\"menu\") : customApp(\"medium\")}\r\n size={\"18px\"}\r\n onClick={() => {\r\n reactThis(\"love\")\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n />\r\n <Icon\r\n icon=\"verified\"\r\n title={translate(\"$__approve\", 1)}\r\n iconColor={reaction && reaction === \"approve\" ? \"green\" : customApp(\"medium\")}\r\n size={\"18px\"}\r\n onClick={() => {\r\n reactThis(\"approve\")\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n />\r\n <Icon\r\n icon=\"report_problem\"\r\n title={translate(\"$__attention\", 1)}\r\n iconColor={reaction && reaction === \"attention\" ? \"red\" : customApp(\"medium\")}\r\n size={\"18px\"}\r\n onClick={() => {\r\n reactThis(\"attention\")\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n />\r\n {storie && storie.user && storie.user._id === session._id &&\r\n <Icon\r\n icon=\"forward\"\r\n title={translate(\"$__forwardThisMessage\", 1)}\r\n iconColor={\"deepskyblue\"}\r\n size={\"18px\"}\r\n onClick={() => {\r\n setForward(true)\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n />\r\n }\r\n <Icon\r\n icon=\"reply\"\r\n title={translate(\"$__replyThisMessage\", 1)}\r\n iconColor={\"deepskyblue\"}\r\n size={\"18px\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHATS\", {\r\n ...reduxStore.getState().chats,\r\n drafts: {\r\n ...reduxStore.getState().chats.drafts || {},\r\n [props.nodeId]: {\r\n ...reduxStore.getState().chats.drafts && reduxStore.getState().chats.drafts[props.nodeId] ? reduxStore.getState().chats.drafts[props.nodeId] : {},\r\n reply: storie._id,\r\n }\r\n }\r\n })\r\n }}\r\n onMouseLeave={closeOptionsHandle}\r\n />\r\n {\r\n (\r\n !storie.deleted &&\r\n storie.type === 'comment' &&\r\n storie.user &&\r\n storie.user._id &&\r\n storie.user._id === session._id &&\r\n parseInt(storie.created_at) > parseInt(moment().unix('x')) - 360\r\n ) ?\r\n <CustomButton\r\n id={`chat_message_delete`}\r\n title={translate(`$__delete`, \"*\")}\r\n color={'red'}\r\n icon={\"delete_forever\"}\r\n onClick={() => { cancelConfirm() }}\r\n size={\"18px\"}\r\n transparent\r\n />\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n {moment(new Date()).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") === moment(storie.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") ?\r\n `${moment(storie.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"H:mm\")}`\r\n :\r\n moment(new Date()).tz(\"America/Sao_Paulo\").format(\"YYYY\") === moment(storie.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY\") ?\r\n `${moment(storie.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM H:mm\")}`\r\n :\r\n `${moment(storie.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")}`\r\n }\r\n\r\n {(\r\n storie.readedBy\r\n && Object.keys(storie.readedBy).length > 0)\r\n &&\r\n <Tooltip\r\n title={(\r\n <React.Fragment>\r\n <div className={classes.users}>\r\n {Object.keys(storie.readedBy)\r\n .sort((a, b) => {\r\n if (storie\r\n && storie.readedBy[a]\r\n && storie.readedBy[a].readedDate\r\n && storie.readedBy[b]\r\n && storie.readedBy[b].readedDate\r\n && String(storie.readedBy[a].readedDate.low)\r\n && String(storie.readedBy[b].readedDate.low)\r\n && parseInt(storie.readedBy[a].readedDate.low) < parseInt(storie.readedBy[b].readedDate.low)\r\n ) {\r\n return -1\r\n } else if (storie\r\n && storie.readedBy[a]\r\n && storie.readedBy[a].readedDate\r\n && storie.readedBy[b]\r\n && storie.readedBy[b].readedDate\r\n && String(storie.readedBy[a].readedDate.low)\r\n && String(storie.readedBy[b].readedDate.low)\r\n && parseInt(storie.readedBy[a].readedDate.low) > parseInt(storie.readedBy[b].readedDate.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((a, i) => (\r\n storie.user._id !== a && storie.readedBy && storie.readedBy[a] && storie.readedBy[a].name &&\r\n <div key={a} style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", }}>\r\n <Avatar alt={storie.readedBy[a].name} src={storie.readedBy[a].image || null} />\r\n <span style={{ paddingLeft: \"7px\" }}>\r\n {storie.readedBy[a].displayName ? storie.readedBy[a].displayName : storie.readedBy[a].name}{storie.readedBy[a].readedDate && storie.readedBy[a].readedDate.low && ` (${moment(storie.readedBy[a].readedDate.low * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")})`}\r\n </span>\r\n </div>\r\n ))}\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n }\r\n >\r\n <div>\r\n <Icon color={\"#FFFFFF\"} size=\"14px\" style={{ marginLeft: \"7px\" }}>done_all</Icon>\r\n </div>\r\n </Tooltip>\r\n }\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div >\r\n {/* {console.log(storie)} */}\r\n {forward ?\r\n <Dialog\r\n fullWidth={true}\r\n // onClose={() => setEditor(false)} \r\n aria-labelledby=\"simple-dialog-title\"\r\n open={forward}\r\n >\r\n <div className=\"forwardMessage\">\r\n <div style={{ position: \"relative\", marginLeft: \"10px\", marginTop: '5px', width: \"calc(100% - 10px)\" }}>\r\n <HeaderWithIcon\r\n title={translate(\"$__forwardMessage\", 1)}\r\n icon=\"forward\"\r\n onCancel={() => { setForward(false) }}\r\n />\r\n </div>\r\n <div style={{ padding: 15 }}>\r\n <SelectUsers\r\n hideSelected\r\n avatarSize=\"33px\"\r\n permission={props.permission}\r\n noLimit\r\n ignoreId={props.nodeId ? props.nodeId : props.storie.idRel ? props.storie.idRel : null}\r\n nodeId={props.nodeId}\r\n onSelect={(e) => {\r\n setForwardToId(e)\r\n }}\r\n /></div>\r\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"flex-end\", padding: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__cancel\")}\r\n text={translate(\"$__cancel\")}\r\n color=\"lightgrey\"\r\n icon={\"close\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setForward(false)\r\n setForwardToId(null)\r\n }}\r\n />\r\n {forwardToId &&\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__forward\")}\r\n text={translate(\"$__forward\")}\r\n icon={\"forward\"}\r\n size={\"25px\"}\r\n load={saveLoading ? true : false}\r\n onClick={() => {\r\n setSaveLoading(true)\r\n forwardMessage(props, {\r\n ...storie,\r\n _forwardToId: forwardToId\r\n })\r\n\r\n\r\n setTimeout(() => {\r\n setForward(false)\r\n setForwardToId(null)\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...reduxStore.getState().chat,\r\n db: 'users',\r\n nodeId: forwardToId[0],\r\n loading: false,\r\n })\r\n setSaveLoading(false)\r\n // }\r\n }, 6000)\r\n }}\r\n />\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </Dialog>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div >\r\n )\r\n}\r\n//REACT\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(memo(Message))","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\n// Inspired by the former Facebook spinners.\r\nconst useStylesFacebook = makeStyles((theme) => ({\r\n root: {\r\n position: 'relative',\r\n },\r\n bottom: {\r\n color: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\r\n position: 'absolute',\r\n left: 0,\r\n },\r\n top: {\r\n color: customApp('ColumnTitleColor'),\r\n animationDuration: '550ms',\r\n position: 'absolute',\r\n left: 0,\r\n },\r\n circle: {\r\n strokeLinecap: 'round',\r\n },\r\n}));\r\n\r\nfunction FacebookCircularProgress(props) {\r\n const classes = useStylesFacebook();\r\n\r\n return (\r\n <div className={classes.root}\r\n style={{\r\n width: props.size ? props.size : '25px',\r\n height: props.size ? props.size : '25px',\r\n }}>\r\n <CircularProgress\r\n variant=\"determinate\"\r\n className={classes.bottom}\r\n size={props.size ? props.size : 25}\r\n thickness={4}\r\n {...props}\r\n value={100}\r\n />\r\n <CircularProgress\r\n variant=\"indeterminate\"\r\n disableShrink\r\n className={classes.top}\r\n classes={{\r\n circle: classes.circle,\r\n }}\r\n size={props.size ? props.size : 25}\r\n thickness={4}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default FacebookCircularProgress","import React, { memo, useRef, useEffect } from \"react\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon/\";\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport Badge from '@material-ui/core/Badge';\r\nimport Button from '@material-ui/core/Button';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport MenuList from '@material-ui/core/MenuList';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\n\r\nconst useStyles = makeStyles((props) => ({\r\n iconButtonStyleTransaparent: {\r\n padding: \"3px\",\r\n margin: 0,\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.9)'\r\n },\r\n ...props.buttonStyle ? props.buttonStyle : {}\r\n },\r\n iconButtonStyleWhite: {\r\n padding: \"3px\",\r\n margin: 0,\r\n backgroundColor: '#FFFFFF',\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.9)'\r\n },\r\n ...props.buttonStyle ? props.buttonStyle : {}\r\n },\r\n}));\r\n\r\nfunction Comp(props) {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null)\r\n\r\n const componentRef = useRef()\r\n\r\n useEffect(() => {\r\n componentRef.current = {\r\n mounted: true\r\n }\r\n\r\n return () => {\r\n if (componentRef && componentRef.current && componentRef.current.mounted)\r\n componentRef.current.mounted = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const handleClose = (event) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n if (componentRef?.current?.mounted)\r\n setOpen(false);\r\n if (props.onClose)\r\n props.onClose()\r\n }, 150)\r\n };\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === 'Tab') {\r\n event.preventDefault();\r\n if (componentRef?.current?.mounted)\r\n setOpen(false);\r\n if (props.onClose)\r\n props.onClose()\r\n }\r\n }\r\n\r\n if (!props.options || props.options.length === 0)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <div style={{ zIndex: \"100 !important\", ...props.style ? props.style : {} }}\r\n className={open ? \"ignoreCardClickAway\" : \"\"}\r\n >\r\n <Tooltip\r\n title={props.title ? props.title : translate(`$__options`, 1)}\r\n >\r\n {!props.text ?\r\n\r\n <IconButton\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-label=\"menu\"\r\n onClick={(e) => {\r\n if (componentRef?.current?.mounted)\r\n setOpen((prevOpen) => !prevOpen);\r\n if (!open && props.onOpen)\r\n props.onOpen()\r\n if (open && props.onClose)\r\n props.onClose()\r\n e.stopPropagation()\r\n }}\r\n className={!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n <Icon\r\n count={props.count ? props.count : null}\r\n usePropagation\r\n size={!props.size ? \"20px\" : props.size}\r\n color={props.btColor ? props.btColor : customApp('menu')}\r\n icon={props.icon ? props.icon : !props.horizontalButton ? 'more_vert' : 'more_horiz'}\r\n />\r\n </IconButton>\r\n :\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-label=\"menu\"\r\n onClick={(e) => {\r\n if (componentRef?.current?.mounted)\r\n setOpen((prevOpen) => !prevOpen);\r\n if (!open && props.onOpen)\r\n props.onOpen()\r\n if (open && props.onClose)\r\n props.onClose()\r\n e.stopPropagation()\r\n }}\r\n className={!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n <React.Fragment>\r\n <span\r\n style={{\r\n marginRight: '15px',\r\n color: props.textColor ? props.textColor : props.color ? props.color : customApp('menu'),\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n width: \"90%\",\r\n maxWidth: props.maxWidth ? props.maxWidth : \"90%\",\r\n whiteSpace: \"nowrap\"\r\n }}>{props.text}</span>\r\n <Icon\r\n count={props.count ? props.count : null}\r\n usePropagation\r\n size={!props.size ? \"20px\" : props.size}\r\n color={props.btColor ? props.btColor : customApp('menu')}\r\n icon={props.icon ? props.icon : !props.horizontalButton ? 'more_vert' : 'more_horiz'}\r\n />\r\n </React.Fragment>\r\n </Button>\r\n }\r\n </Tooltip >\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n role={undefined}\r\n transition\r\n style={{ zIndex: \"100 !important\" }}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin: 'right center',\r\n zIndex: \"100 !important\"\r\n }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <MenuList\r\n autoFocusItem={open}\r\n id=\"menu-list-grow\"\r\n onKeyDown={handleListKeyDown}\r\n style={{ zIndex: \"100 !important\" }}\r\n >\r\n {props.options\r\n .filter(a => a && !a.hide)\r\n .map((a, i) =>\r\n <MenuItem\r\n key={i}\r\n style={{\r\n color: a && a.color ? a.color : customApp('menu'),\r\n padding: \"12px 7px\",\r\n\r\n }}\r\n className={\"ignoreClickAway\"}\r\n onClick={(e) => {\r\n if (!props.forceStopPropagation)\r\n handleClose(e)\r\n if (a.onClick)\r\n a.onClick()\r\n if (props.onClose)\r\n props.onClose()\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n disabled={a.disabled ? true : false}\r\n >\r\n <div style={{\r\n pointerEvents: 'none'\r\n }}>\r\n {a.render ?\r\n a.render\r\n : a.avatar ?\r\n <Avatar\r\n alt={a.name} src={a.avatar || null}\r\n style={{\r\n width: !props.size ? \"20px\" : props.size,\r\n height: !props.size ? \"20px\" : props.size\r\n }}>\r\n {a.name.substr(0, 1)}\r\n </Avatar>\r\n :\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={a.count ? a.count : null}\r\n color=\"secondary\"\r\n >\r\n <Icon\r\n usePropagation\r\n icon={a.icon}\r\n style={{ margin: 'none !important' }}\r\n color={a.iconColor ? a.iconColor : a.color ? a.color : customApp('menu')} />\r\n </Badge>\r\n }\r\n {!a.render &&\r\n <span style={{ marginLeft: '7px' }}>\r\n {translate(a.name, 1)}\r\n </span>\r\n }\r\n </div>\r\n </MenuItem>\r\n )\r\n }\r\n </MenuList>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </div>\r\n )\r\n}\r\nexport default memo(Comp);","module.exports = __webpack_public_path__ + \"static/media/fundo-sonne.6de93583.png\";","//@MATERIAL \r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst Component = withStyles({\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n color: customApp('color'),\r\n }\r\n})(Checkbox);\r\n\r\nexport default Component","import {\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader,\r\n customCardHeader,\r\n whiteColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\nconst cardHeaderStyle = {\r\n cardHeader: {\r\n padding: \"0.75rem 1.25rem\",\r\n marginBottom: \"0\",\r\n borderBottom: \"none\",\r\n background: \"transparent\",\r\n zIndex: \"3 !important\",\r\n \"&$cardHeaderPlain,&$cardHeaderImage,&$cardHeaderContact,&$cardHeaderSignup,&$cardHeaderIcon,&$cardHeaderStats,&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader, &$customCardHeader\": {\r\n margin: \"0 15px\",\r\n padding: \"0\",\r\n position: \"relative\",\r\n color: whiteColor\r\n },\r\n \"&:first-child\": {\r\n borderRadius: \"calc(.25rem - 1px) calc(.25rem - 1px) 0 0\"\r\n },\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader,&$customCardHeader\": {\r\n \"&:not($cardHeaderIcon):not($cardHeaderImage):not($cardHeaderText)\": {\r\n borderRadius: \"3px\",\r\n marginTop: \"-20px\",\r\n padding: \"15px\"\r\n }\r\n },\r\n \"&$cardHeaderStats svg\": {\r\n fontSize: \"36px\",\r\n lineHeight: \"56px\",\r\n textAlign: \"center\",\r\n width: \"36px\",\r\n height: \"36px\",\r\n margin: \"10px 10px 4px\"\r\n },\r\n \"&$cardHeaderStats .fab,&$cardHeaderStats .fas,&$cardHeaderStats .far,&$cardHeaderStats .fal,&$cardHeaderStats .material-icons\": {\r\n fontSize: \"36px\",\r\n lineHeight: \"56px\",\r\n width: \"56px\",\r\n height: \"56px\",\r\n textAlign: \"center\",\r\n overflow: \"unset\",\r\n marginBottom: \"1px\"\r\n },\r\n \"&$cardHeaderStats$cardHeaderIcon\": {\r\n textAlign: \"right\"\r\n },\r\n \"&$cardHeaderImage\": {\r\n marginLeft: \"15px\",\r\n marginRight: \"15px\",\r\n marginTop: \"-30px\",\r\n borderRadius: \"6px\"\r\n },\r\n \"&$cardHeaderText\": {\r\n display: \"inline-block\"\r\n }\r\n },\r\n cardHeaderPlain: {\r\n marginLeft: \"0px\",\r\n marginRight: \"0px\",\r\n \"&$cardHeaderImage\": {\r\n margin: \"0 !important\"\r\n }\r\n },\r\n cardHeaderImage: {\r\n position: \"relative\",\r\n padding: \"0\",\r\n zIndex: \"1\",\r\n \"& img\": {\r\n width: \"100%\",\r\n borderRadius: \"6px\",\r\n pointerEvents: \"none\",\r\n boxShadow:\r\n \"0 5px 15px -8px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.24), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\"\r\n },\r\n \"& a\": {\r\n display: \"block\"\r\n }\r\n },\r\n cardHeaderContact: {\r\n margin: \"0 15px\",\r\n marginTop: \"-20px\"\r\n },\r\n cardHeaderSignup: {\r\n marginLeft: \"20px\",\r\n marginRight: \"20px\",\r\n marginTop: \"-40px\",\r\n padding: \"20px 0\",\r\n width: \"100%\",\r\n marginBottom: \"15px\"\r\n },\r\n cardHeaderStats: {\r\n \"& $cardHeaderIcon\": {\r\n textAlign: \"right\"\r\n },\r\n \"& h1,& h2,& h3,& h4,& h5,& h6\": {\r\n margin: \"0 !important\"\r\n }\r\n },\r\n cardHeaderIcon: {\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader,&$customCardHeader\": {\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n width: \"33px\",\r\n height: \"33px\",\r\n textAlign: \"center\",\r\n lineHeight: \"33px\"\r\n },\r\n \"& svg\": {\r\n width: \"24px\",\r\n height: \"24px\",\r\n textAlign: \"center\",\r\n lineHeight: \"33px\",\r\n margin: \"5px 4px 0px\"\r\n }\r\n },\r\n cardHeaderText: {},\r\n warningCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderText):not($cardHeaderIcon)\": {\r\n ...warningCardHeader\r\n }\r\n },\r\n successCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderText):not($cardHeaderIcon)\": {\r\n ...successCardHeader\r\n }\r\n },\r\n dangerCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderText):not($cardHeaderIcon)\": {\r\n ...dangerCardHeader\r\n }\r\n },\r\n infoCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderText):not($cardHeaderIcon)\": {\r\n ...infoCardHeader\r\n }\r\n },\r\n primaryCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderText):not($cardHeaderIcon)\": {\r\n ...primaryCardHeader\r\n }\r\n },\r\n roseCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderText):not($cardHeaderIcon)\": {\r\n ...roseCardHeader\r\n }\r\n },\r\n customCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderText):not($cardHeaderIcon)\": {\r\n ...customCardHeader\r\n }\r\n }\r\n};\r\n\r\nexport default cardHeaderStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n//MATERIALS\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/cardHeaderStyle\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CardHeader(props) {\r\n const classes = useStyles();\r\n const {\r\n className,\r\n children,\r\n color,\r\n plain,\r\n image,\r\n contact,\r\n signup,\r\n stats,\r\n icon,\r\n text,\r\n ...rest\r\n } = props;\r\n const cardHeaderClasses = classNames({\r\n [classes.cardHeader]: true,\r\n [classes[color + \"CardHeader\"]]: color,\r\n [classes.cardHeaderPlain]: plain,\r\n [classes.cardHeaderImage]: image,\r\n [classes.cardHeaderContact]: contact,\r\n [classes.cardHeaderSignup]: signup,\r\n [classes.cardHeaderStats]: stats,\r\n [classes.cardHeaderIcon]: icon,\r\n [classes.cardHeaderText]: text,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n <div className={cardHeaderClasses} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nCardHeader.propTypes = {\r\n className: PropTypes.string,\r\n color: PropTypes.oneOf([\r\n \"warning\",\r\n \"success\",\r\n \"danger\",\r\n \"info\",\r\n \"primary\",\r\n \"rose\",\r\n \"custom\"\r\n ]),\r\n plain: PropTypes.bool,\r\n image: PropTypes.bool,\r\n contact: PropTypes.bool,\r\n signup: PropTypes.bool,\r\n stats: PropTypes.bool,\r\n icon: PropTypes.bool,\r\n text: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\n//@MATERIALS\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst PreLoaderContent = styled.div`\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n padding-top: 20px;\r\n padding-bottom: 20px;\r\n`;\r\n\r\nconst Escurecer = styled.div`\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: #ffffffeb;\r\n z-index: 7000;\r\n display:flex;\r\n align-items:center;\r\n justify-content:center;\r\n`;\r\n\r\nexport default function CircularIndeterminate(props) {\r\n\r\n return (\r\n <div id={`preloaderComponent`}>\r\n {!props.fullScreen ? (\r\n <PreLoaderContent>\r\n <CircularProgress />\r\n </PreLoaderContent>\r\n ) : (\r\n <Escurecer>\r\n <CircularProgress size={props.size | 50} />\r\n </Escurecer>\r\n )}\r\n </div>\r\n );\r\n}\r\n","//\"use strict\";\r\n\r\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireDefault(require(\"react\"));\r\n\r\nvar _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: \"M3,19.77a1,1,0,0,1,.29-.7l2.43-2.43a1,1,0,0,1,1.41,0,1,1,0,0,1,0,1.42L4.65,20.48a1,1,0,0,1-1.41,0A1,1,0,0,1,3,19.77Z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M3,19.77a1,1,0,0,1,.29-.7l2.43-2.43a1,1,0,0,1,1.41,0,1,1,0,0,1,0,1.42L4.65,20.48a1,1,0,0,1-1.41,0A1,1,0,0,1,3,19.77Z\"\r\n}), _react.default.createElement(\"g\", null, _react.default.createElement(\"path\", {\r\n d: \"M3.15,4.67A1,1,0,0,1,4.86,4L7.28,6.38a1,1,0,0,1,0,1.42,1,1,0,0,1-1.41,0L3.44,5.37A1,1,0,0,1,3.15,4.67Z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M15.67,17.18a1,1,0,0,1,.29-.7,1,1,0,0,1,1.41,0L19.8,18.9a1,1,0,0,1-1.42,1.42L16,17.89A1,1,0,0,1,15.67,17.18Z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M15.67,7.09A1,1,0,0,1,16,6.38L18.38,4A1,1,0,0,1,19.8,4a1,1,0,0,1,0,1.41L17.37,7.8A1,1,0,0,1,16,7.8,1,1,0,0,1,15.67,7.09Z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M.73,12a1,1,0,0,1,1-1H6.58a5.26,5.26,0,0,1,4.13-4.13V1.44a1,1,0,1,1,2,0V7.78a1,1,0,0,1-1,1A3.23,3.23,0,0,0,8.48,12a1,1,0,0,1-1,1H1.73A1,1,0,0,1,.73,12Z\"\r\n}), _react.default.createElement(\"path\", {\r\n d: \"M10.71,22.56V16.22a1,1,0,0,1,1-1A3.22,3.22,0,0,0,14.93,12a1,1,0,0,1,1-1h6.34a1,1,0,0,1,0,2H16.83a5.23,5.23,0,0,1-4.12,4.13v5.43a1,1,0,0,1-2,0Z\"\r\n}))), 'Brigth');\r\n\r\nexports.default = _default;","var map = {\n\t\"./AboutPlan.jsx\": [\n\t\t409\n\t],\n\t\"./Actions.jsx\": [\n\t\t783\n\t],\n\t\"./ActionsDetailed.jsx\": [\n\t\t784\n\t],\n\t\"./ActionsDough.jsx\": [\n\t\t467\n\t],\n\t\"./DayTasks.jsx\": [\n\t\t468\n\t],\n\t\"./Funnel.jsx\": [\n\t\t469\n\t],\n\t\"./Goal.jsx\": [\n\t\t785\n\t],\n\t\"./GoalsDetailed.jsx\": [\n\t\t786\n\t],\n\t\"./GoalsDough.jsx\": [\n\t\t470\n\t],\n\t\"./Guideline.jsx\": [\n\t\t787\n\t],\n\t\"./LastCompleted.jsx\": [\n\t\t471\n\t],\n\t\"./LateTask.jsx\": [\n\t\t472\n\t],\n\t\"./MatrixDough.jsx\": [\n\t\t473\n\t],\n\t\"./MatrixDoughDetailed.jsx\": [\n\t\t788\n\t],\n\t\"./Meta.jsx\": [\n\t\t179\n\t],\n\t\"./Modal.jsx\": [\n\t\t475\n\t],\n\t\"./NextTask.jsx\": [\n\t\t474\n\t],\n\t\"./Notes.jsx\": [\n\t\t654\n\t],\n\t\"./Objective.jsx\": [\n\t\t789\n\t],\n\t\"./ObjectiveDetailed.jsx\": [\n\t\t790\n\t],\n\t\"./ObjetiveDough.jsx\": [\n\t\t478\n\t],\n\t\"./TaskByCreator.jsx\": [\n\t\t476\n\t],\n\t\"./TaskByPerson.jsx\": [\n\t\t410\n\t],\n\t\"./TaskByResponsible.jsx\": [\n\t\t477\n\t],\n\t\"./TaskDoneBar.jsx\": [\n\t\t791\n\t],\n\t\"./TaskDoneBarMonth.jsx\": [\n\t\t793\n\t],\n\t\"./TaskDoneByTime.jsx\": [\n\t\t411\n\t],\n\t\"./TaskDoneDoughTable.jsx\": [\n\t\t792\n\t],\n\t\"./TimeLine.jsx\": [\n\t\t412\n\t],\n\t\"./Timesheet copy.jsx\": [\n\t\t1855,\n\t\t3\n\t],\n\t\"./Timesheet.jsx\": [\n\t\t413\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1590;\nmodule.exports = webpackAsyncContext;","import $ from \"jquery\"\r\nimport apims from \"apims\"\r\n\r\nexport const upload = async (id, fileData, fullData = false, functions) => {\r\n let file = fileData\r\n file.originalName = file.name\r\n var formData = new FormData();\r\n formData.append(\"file\", file, file.name);\r\n formData.append(\"id\", id);\r\n\r\n let returnFile\r\n let send = await new Promise(async (resolve, reject) => {\r\n try {\r\n if (functions && functions.onUploadProgress) {\r\n const { onUploadProgress } = functions\r\n // apims\r\n let request = await apims.post(\"Upload/\", formData, {\r\n onUploadProgress,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n })\r\n console.log(request)\r\n if (request)\r\n returnFile = request.data\r\n\r\n } else {\r\n let request = await apims.post(\"Upload/\", formData, {\r\n headers: {\r\n \"Content-Type\": \"application/json; multipart/form-data; charset=UTF-8\"\r\n }\r\n })\r\n console.log(request)\r\n if (request)\r\n returnFile = request.data\r\n }\r\n } catch (e) {\r\n if (functions && functions.onUploadError)\r\n functions.onUploadError(e)\r\n reject(false)\r\n } finally {\r\n resolve(true)\r\n }\r\n\r\n })\r\n\r\n if (send) {\r\n if (!fullData) {\r\n return `https://machen.azureedge.net/${returnFile.file}`\r\n } else {\r\n return returnFile\r\n }\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport const uploadThumb = async (name, ext, fileData, instalThumb = false) => {\r\n let file = fileData\r\n file.originalName = file.name\r\n var formData = new FormData();\r\n formData.append(\"file\", file, file.name);\r\n formData.append(\"id\", name);\r\n formData.append(\"ext\", ext)\r\n formData.append(\"thumb\", instalThumb)\r\n\r\n const api = process.env.REACT_APP_WS\r\n\r\n $.ajax({\r\n method: \"POST\",\r\n url: `${api}/upload/thumb/`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.getItem('TOKEN')}`\r\n },\r\n cache: false,\r\n data: formData,\r\n contentType: false,\r\n processData: false,\r\n })\r\n return true\r\n}","import api from \"api\"\r\nimport { v4 as uuid } from \"uuid\";\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\nimport {\r\n cardsAccess,\r\n isResponsible as setResponsible\r\n} from \"functions/users\"\r\n\r\nconst addColumn = async (newData) => {\r\n let data = {\r\n ...newData\r\n }\r\n Object.keys(data).forEach(x => {\r\n if (!data[x])\r\n delete (data[x])\r\n })\r\n\r\n let newCards = {}\r\n let users = {}\r\n if (data.users && data.users.length > 0)\r\n data.users.forEach((uid, i) => {\r\n let u = reduxStore.getState().db.users[uid]\r\n users = {\r\n ...users,\r\n [uid]: {\r\n _id: uid,\r\n name: u.name,\r\n image: u.image || null,\r\n ...i === 0 ? { isResponsible: true } : {},\r\n }\r\n }\r\n })\r\n\r\n\r\n let newId = uuid()\r\n\r\n api.post('card/add', {\r\n _id: newId,\r\n ...data,\r\n });\r\n\r\n newCards = {\r\n ...newCards,\r\n [newId]: {\r\n _id: newId,\r\n ...data,\r\n _users: users,\r\n }\r\n }\r\n\r\n if (newCards[newId]?.users)\r\n delete newCards[newId].users\r\n\r\n return newCards\r\n}\r\n\r\nconst reorder = async (cards, orderBy = 'order', n = 0) => {\r\n try {\r\n console.log('Enviando para API:', { cards, orderBy }); // Debug\r\n const response = await api.post('kanban/reorder', { cards, orderBy });\r\n console.log('Resposta da API:', response); // Debug\r\n return true\r\n } catch (e) {\r\n console.error('Erro na função reorder:', e); // Debug\r\n if (n < 3) {\r\n console.log(`Tentativa ${n + 1} de reenvio em 3 segundos`); // Debug\r\n setTimeout(() => {\r\n reorder(cards, orderBy, n + 1)\r\n }, 3000)\r\n }\r\n }\r\n}\r\n\r\nexport const kanbanReorder = (props, data) => {\r\n let cards = {\r\n ...reduxStore.getState().db.cards\r\n }\r\n if (data.cards && data.cards.length > 0)\r\n data.cards.forEach((card, i) => {\r\n cards = {\r\n ...cards,\r\n [card]: {\r\n ...cards[card],\r\n step: `${i + 1}`\r\n }\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...cards\r\n }\r\n })\r\n\r\n}\r\n\r\nconst linkCard = async (data) => {\r\n try {\r\n await api.put('card/link', data);\r\n return true\r\n } catch (e) {\r\n setTimeout(() => {\r\n linkCard(data)\r\n }, 3000)\r\n }\r\n}\r\n\r\nexport const automation = (props, nodeId, to, createdBy) => {\r\n const { session } = reduxStore.getState()\r\n //LINK\r\n let parentCard = reduxStore.getState().db.cards[to]\r\n let card = reduxStore.getState().db.cards[nodeId]\r\n\r\n let dataUpdate = {}\r\n\r\n if (\r\n parentCard\r\n && parentCard.automationDueDateType\r\n && parentCard.automationDueDateType === \"add\"\r\n )\r\n dataUpdate = {\r\n endDate: moment(`${moment().format(\"YYYY-MM-DD\")} 23:59:59`).add(parentCard?.automationDueDate || 1, \"days\").unix(\"X\"),\r\n ...!card.startDate ? { startDate: moment().unix(\"X\") } : {}\r\n }\r\n\r\n if (parentCard\r\n && parentCard.automationStatusType\r\n && parentCard.automationStatusType === \"replace\"\r\n )\r\n dataUpdate = {\r\n ...dataUpdate,\r\n status: parentCard.automationStatus || 'notStarted',\r\n ...parentCard.automationStatus && parentCard.automationStatus === 'completed' ? { completed_at: moment().unix('x') } : {}\r\n }\r\n let usersToRemove = []\r\n let isResponsible\r\n if (parentCard.execAsResponsible) {\r\n isResponsible = session._id\r\n if (!card._users[session._id])\r\n cardsAccess(props, session._id, \"4\", card._id)\r\n } else if (parentCard\r\n && parentCard.automationUsers\r\n && parentCard.automationUsers === 'add'\r\n && parentCard._users\r\n && Object.keys(parentCard._users).filter(a => a).length > 0\r\n )\r\n Object.keys(parentCard._users).filter(a => a).forEach(id => {\r\n if (parentCard._users[id].isResponsible)\r\n isResponsible = id\r\n if (card && (!card._users || (card._users && !card._users[id]))) {\r\n const noNotification = card._users && card._users[id] ? true : false\r\n cardsAccess(props, id, parentCard._users[id].access, card._id, noNotification)\r\n }\r\n })\r\n\r\n\r\n\r\n if (parentCard\r\n && parentCard.automationTags\r\n && parentCard.automationTags !== \"doNotChange\"\r\n && parentCard._tags\r\n && parentCard._tags.length > 0\r\n ) {\r\n let newTags = card._tags ? Array.from(card._tags) : []\r\n\r\n if (parentCard.automationTags === \"replace\") {\r\n let removeTags = []\r\n let addTags = []\r\n parentCard._tags.forEach(nt => {\r\n if (newTags.findIndex(tag => tag.value === nt.value) > -1) {\r\n removeTags.push(nt.value)\r\n newTags.splice(newTags.findIndex(tag => tag.value === nt.value), 1)\r\n }\r\n })\r\n parentCard._tags.forEach(nt => {\r\n if (newTags.findIndex(tag => tag.value === nt.value) === -1) {\r\n newTags.push(nt)\r\n if (addTags.indexOf(nt.value) === -1)\r\n addTags.push(nt.value)\r\n }\r\n })\r\n dataUpdate = {\r\n ...dataUpdate,\r\n ...removeTags.length > 0 ? { removeTags: removeTags } : {},\r\n ...addTags.length > 0 ? { addTags: addTags } : {},\r\n }\r\n\r\n newTags = Array.from(parentCard._tags)\r\n }\r\n\r\n if (parentCard.automationTags === \"add\") {\r\n let addTags = []\r\n parentCard._tags.forEach(nt => {\r\n if (newTags.filter(tag => tag.value === nt.value).length === 0) {\r\n addTags.push(nt.value)\r\n newTags.push(nt)\r\n }\r\n })\r\n dataUpdate = {\r\n ...dataUpdate,\r\n addTags: addTags\r\n }\r\n }\r\n\r\n if (parentCard.automationTags === \"remove\") {\r\n let removeTags = []\r\n parentCard._tags.forEach(nt => {\r\n if (newTags.findIndex(tag => tag.value === nt.value) > -1) {\r\n removeTags.push(nt.value)\r\n newTags.splice(newTags.findIndex(tag => tag.value === nt.value), 1)\r\n }\r\n })\r\n dataUpdate = {\r\n ...dataUpdate,\r\n removeTags: removeTags\r\n }\r\n }\r\n\r\n dataUpdate = {\r\n ...dataUpdate,\r\n _tags: newTags\r\n }\r\n }\r\n\r\n if (parentCard\r\n && parentCard.automationUsers\r\n && parentCard.automationUsers === 'remove'\r\n && parentCard._users\r\n && Object.keys(parentCard._users).filter(a => a).length > 0\r\n )\r\n Object.keys(parentCard._users).filter(a => a).forEach(id => {\r\n if (\r\n card\r\n && card._users\r\n && card._users[id]\r\n && usersToRemove.indexOf(id) === -1\r\n )\r\n usersToRemove.push(id)\r\n })\r\n if (parentCard\r\n && parentCard.automationUsers\r\n && parentCard.automationUsers === 'removeAll'\r\n ) {\r\n if (card && card._users && Object.keys(card._users).filter(a => a).length > 0)\r\n Object.keys(card._users).filter(a => a).forEach(id => {\r\n if (usersToRemove.indexOf(id) === -1 && id !== createdBy)\r\n usersToRemove.push(id)\r\n })\r\n isResponsible = createdBy\r\n }\r\n if (parentCard\r\n && parentCard.automationUsers\r\n && parentCard.automationUsers === 'replace'\r\n ) {\r\n if (parentCard._users && Object.keys(parentCard._users).length > 0)\r\n Object.keys(parentCard._users).filter(a => a).forEach(id => {\r\n if (parentCard._users[id].isResponsible)\r\n isResponsible = id\r\n if (card && (!card._users || (card._users && !card._users[id]))) {\r\n const noNotification = card._users && card._users[id] ? true : false\r\n cardsAccess(props, id, parentCard._users[id].access, card._id, noNotification)\r\n }\r\n })\r\n if (card && card._users && Object.keys(card._users).filter(a => a).length > 0)\r\n Object.keys(card._users).filter(a => a).forEach(id => {\r\n if (\r\n !parentCard._users[id]\r\n && usersToRemove.indexOf(id) === -1\r\n )\r\n usersToRemove.push(id)\r\n })\r\n }\r\n\r\n\r\n if (\r\n parentCard\r\n && parentCard.keepUserWhoCreatedActivity\r\n && createdBy\r\n && usersToRemove.indexOf(createdBy) > -1\r\n )\r\n usersToRemove.splice(usersToRemove.indexOf(createdBy), 1)\r\n\r\n\r\n if (usersToRemove.length > 0)\r\n api.put(`cards/removeAccess/`, {\r\n cardId: card._id,\r\n userIds: usersToRemove\r\n })\r\n if (isResponsible)\r\n setResponsible(props, {\r\n cardId: card._id,\r\n userId: isResponsible\r\n })\r\n if (parentCard.setIcon)\r\n dataUpdate = {\r\n ...dataUpdate,\r\n icon: parentCard.setIcon\r\n }\r\n if (JSON.stringify(dataUpdate) !== \"{}\")\r\n automationExec({\r\n _id: nodeId,\r\n ...dataUpdate\r\n })\r\n\r\n if (nodeId && to && reduxStore.getState().db.cards[to] && reduxStore.getState().db.cards[nodeId])\r\n if (to.length === 36)\r\n linkCard({\r\n idRel: nodeId,\r\n destination: to,\r\n })\r\n\r\n if (dataUpdate && dataUpdate.status && dataUpdate.status === 'completed' && !dataUpdate.completed_at)\r\n dataUpdate = {\r\n ...dataUpdate,\r\n completed_at: moment().unix('x')\r\n }\r\n return dataUpdate\r\n}\r\n\r\nconst automationExec = async (data) => {\r\n let newData = {\r\n ...data,\r\n }\r\n let response = await api.post('kanban/automation', newData);\r\n return response\r\n}\r\n\r\nconst getKanbanData = (id, options = {}, cards = reduxStore.getState().db.cards, search) => {\r\n let columns = {}\r\n let columnsOrder = []\r\n if (\r\n cards\r\n && Object.keys(cards).length > 0\r\n && Object.keys(cards)\r\n .filter(card =>\r\n cards[card]._parent === id\r\n && cards[card].type === 'step'\r\n && !cards[card].deleted\r\n ).length > 0\r\n )\r\n Object.keys(cards)\r\n .filter(card =>\r\n cards[card]._parent === id\r\n && cards[card].type === 'step'\r\n && !cards[card].deleted\r\n // && cards[card].name === \"BACKLOG\"\r\n ).sort((c1, c2) => {\r\n let step1 = cards[c1].step || 1\r\n let step2 = cards[c2].step || 1\r\n if (parseInt(step1) < parseInt(step2))\r\n return -1\r\n if (parseInt(step1) > parseInt(step2))\r\n return 1\r\n return 0\r\n }).forEach((column, i) => {\r\n let items = [] //Aqui colocar todos os cards da coluna\r\n if (Object.keys(cards).length > 0)\r\n Object.keys(cards).filter(cid => {\r\n if (\r\n (\r\n cards[cid]._parent === column\r\n && (\r\n (\r\n !options.deleted\r\n && !cards[cid].deleted\r\n )\r\n ||\r\n (\r\n options.deleted\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n i === 0\r\n && cards[cid]._parent === id\r\n && !cards[cid].deleted\r\n && (\r\n cards[cid].type !== 'objective'\r\n && cards[cid].type !== 'goal'\r\n && cards[cid].type !== 'step'\r\n && cards[cid].type.indexOf('guideline') === -1\r\n && cards[cid].type !== 'link'\r\n && cards[cid].type !== 'insight'\r\n && cards[cid].type !== 'threat'\r\n && cards[cid].type !== 'strength'\r\n && cards[cid].type !== 'weakness'\r\n && cards[cid].type !== 'opportunity'\r\n && cards[cid].type !== 'chatGroup'\r\n )\r\n )\r\n ) return true\r\n return false\r\n }\r\n )\r\n .sort((ca, cb) => {\r\n let a = cards[ca]\r\n let b = cards[cb]\r\n let preffers = options.preffers || {}\r\n\r\n if (a.status === \"completed\" && b.status === \"completed\") {\r\n if (a.completed_at > b.completed_at)\r\n return -1\r\n if (a.completed_at < b.completed_at)\r\n return 1\r\n return 0\r\n }\r\n\r\n let aSec = preffers && preffers.orderByCreatedDate ? a.created_at : preffers.orderByUpdatedDate ? a.updated_at || a.created_at : a.name\r\n let bSec = preffers && preffers.orderByCreatedDate ? b.created_at : preffers.orderByUpdatedDate ? b.updated_at || b.created_at : b.name\r\n let pA = `${a.priority && a.priority === \"high\" ? `4` : a.priority === \"medium\" ? `3` : a.priority === \"low\" ? `2` : a.priority === \"normal\" ? `1` : `0`}-${aSec}`\r\n let pB = `${b.priority && b.priority === \"high\" ? `4` : b.priority === \"medium\" ? `3` : b.priority === \"low\" ? `2` : b.priority === \"normal\" ? `1` : `0`}-${bSec}`\r\n\r\n if (preffers && Object.keys(preffers).length > 0 && Object.keys(preffers).filter(a => a !== 'orderByDesc' && preffers[a] === true).length > 0) {\r\n if (preffers && preffers.orderByName) {\r\n if (!preffers.orderByDesc) {\r\n if (a.name.toLowerCase() < b.name.toLowerCase())\r\n return -1\r\n if (a.name.toLowerCase() > b.name.toLowerCase())\r\n return 1\r\n } else {\r\n if (a.name.toLowerCase() < b.name.toLowerCase())\r\n return 1\r\n if (a.name.toLowerCase() > b.name.toLowerCase())\r\n return -1\r\n }\r\n return 0\r\n }\r\n if (!preffers.orderByDesc) {\r\n if (preffers && preffers.orderByPriority) {\r\n if (pA < pB)\r\n return -1\r\n if (pA > pB)\r\n return 1\r\n return 0\r\n }\r\n\r\n if (aSec < bSec)\r\n return -1\r\n if (aSec > bSec)\r\n return 1\r\n } else {\r\n if (preffers && preffers.orderByPriority) {\r\n if (pA > pB)\r\n return -1\r\n if (pA < pB)\r\n return 1\r\n return 0\r\n }\r\n\r\n if (aSec > bSec)\r\n return -1\r\n if (aSec < bSec)\r\n return 1\r\n }\r\n }\r\n let orderA = 0\r\n let orderB = 0\r\n if (a.order) {\r\n orderA = parseInt(String(a?.order?.low ? a.order.low : a.order))\r\n }\r\n if (b.order)\r\n orderB = parseInt(String(b?.order?.low ? b.order.low : b.order))\r\n if (parseInt(orderA) < parseInt(orderB))\r\n return -1\r\n if (parseInt(orderA) > parseInt(orderB))\r\n return 1\r\n return 0\r\n })\r\n .forEach((cid, cIndex) => {\r\n items.push({\r\n ...cards[cid],\r\n order: String(cIndex)\r\n })\r\n })\r\n columns = {\r\n ...columns,\r\n [column]: {\r\n id: column,\r\n name: cards[column].name,\r\n icon: cards[column].icon || null,\r\n items: items,\r\n }\r\n }\r\n if (columnsOrder.indexOf(column) === -1)\r\n columnsOrder.push(column)\r\n })\r\n\r\n const filterItems = (items) => {\r\n if (search.text && search.text !== undefined && search.text !== null && search.text !== '')\r\n items = Array.from(items.filter(a =>\r\n a.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1\r\n || a.description?.toLowerCase().indexOf(search.text.toLowerCase()) > -1\r\n ))\r\n if (search.startDate && search.startDate !== undefined && search.startDate !== null && search.startDate !== '')\r\n items = Array.from(items.filter(a =>\r\n parseInt(a.startDate) >= parseInt(search.startDate)\r\n ))\r\n\r\n if (search.endDate && search.endDate !== undefined && search.endDate !== null && search.endDate !== '')\r\n items = Array.from(items.filter(a =>\r\n parseInt(a.endDate) <= parseInt(search.endDate)\r\n ))\r\n if (search.tags && search.tags && search.tags.filter(a => a.value).length > 0)\r\n items = Array.from(items.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ))\r\n\r\n if (search && search.form && Object.keys(search.form).length > 0) {\r\n items = items.filter(fil => {\r\n let result = false\r\n Object.keys(search.form).forEach(sf => {\r\n if (search.form[sf]\r\n && typeof search.form[sf] === 'object'\r\n && search.form[sf].length > 0\r\n && fil[sf]\r\n && fil[sf].length > 0\r\n && search.form[sf].filter(r => {\r\n if (fil[sf].indexOf(r) !== -1)\r\n return true\r\n return false\r\n }).length > 0\r\n ) {\r\n result = true\r\n }\r\n if (search.form[sf]\r\n && typeof search.form[sf] === 'string'\r\n && fil[sf]\r\n && fil[sf].indexOf(search.form[sf]) > -1\r\n ) {\r\n result = true\r\n }\r\n })\r\n return result\r\n }).map(res => res)\r\n }\r\n items = items.filter(fil => {\r\n if (!fil.status || (fil && fil.status && search.status && search.status[fil.status]))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n\r\n\r\n items = items.filter(fil => {\r\n if ((fil && fil.priority && search.priority && search.priority[fil.priority]) || (search.priority['null'] && !fil.priority))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n items = items.filter(fil => {\r\n if ((fil && fil.complexity && search.complexity[fil.complexity]) || (search.complexity['null'] && !fil.complexity))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n items = items.filter(fil => {\r\n if ((fil && fil.risk && search.risk[fil.risk]) || (search.risk['null'] && !fil.risk))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n items = items.filter(fil => {\r\n if ((fil && fil.impact && search.impact[fil.impact]) || (search.impact['null'] && !fil.impact))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (search.users && search.users.length > 0)\r\n items = items.filter(fil => search.users.filter(uid => fil && fil._users && fil._users[uid]).length > 0).map(res => res)\r\n return items\r\n }\r\n if (search) {\r\n Object.keys(columns).forEach(col => {\r\n columns[col].items = filterItems(columns[col].items)\r\n })\r\n }\r\n\r\n return {\r\n columns: columns,\r\n columnOrder: columnsOrder\r\n }\r\n}\r\n\r\nexport const getKanbanDataV2 = (id, options = {}, cards = reduxStore.getState().db.cards) => {\r\n let columns = {}\r\n let columnsOrder = []\r\n if (\r\n cards\r\n && Object.keys(cards).length > 0\r\n && Object.keys(cards)\r\n .filter(card =>\r\n cards[card]._parent === id\r\n && cards[card].type === 'step'\r\n && !cards[card].deleted\r\n ).length > 0\r\n )\r\n Object.keys(cards)\r\n .filter(card =>\r\n cards[card]._parent === id\r\n && cards[card].type === 'step'\r\n && !cards[card].deleted\r\n ).sort((c1, c2) => {\r\n let step1 = cards[c1].step || 1\r\n let step2 = cards[c2].step || 1\r\n if (parseInt(step1) < parseInt(step2))\r\n return -1\r\n if (parseInt(step1) > parseInt(step2))\r\n return 1\r\n return 0\r\n }).forEach((column, i) => {\r\n let items = [] //Aqui colocar todos os cards da coluna\r\n if (Object.keys(cards).length > 0)\r\n Object.keys(cards).filter(cid =>\r\n (\r\n cards[cid]._parent === column\r\n && (\r\n (\r\n !options.deleted\r\n && !cards[cid].deleted\r\n )\r\n ||\r\n (\r\n options.deleted\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n i === 0\r\n && cards[cid]._parent === id\r\n && !cards[cid].deleted\r\n && (\r\n cards[cid].type !== 'objective'\r\n && cards[cid].type !== 'goal'\r\n && cards[cid].type !== 'step'\r\n && cards[cid].type.indexOf('guideline') === -1\r\n && cards[cid].type !== 'link'\r\n && cards[cid].type !== 'insight'\r\n && cards[cid].type !== 'threat'\r\n && cards[cid].type !== 'strength'\r\n && cards[cid].type !== 'weakness'\r\n && cards[cid].type !== 'opportunity'\r\n && cards[cid].type !== 'chatGroup'\r\n )\r\n )\r\n )\r\n .sort((ca, cb) => {\r\n let orderA = 0\r\n let orderB = 0\r\n let a = cards[ca]\r\n let b = cards[cb]\r\n if (a?.order)\r\n orderA = String(a?.order?.low ? a?.order?.low : a?.order)\r\n\r\n if (b?.order)\r\n orderB = String(b?.order?.low ? b?.order?.low : b?.order)\r\n if (parseInt(orderA) < parseInt(orderB))\r\n return -1\r\n if (parseInt(orderA) > parseInt(orderB))\r\n return 1\r\n return 0\r\n\r\n })\r\n .forEach((cid) => {\r\n items.push(cid)\r\n })\r\n columns = {\r\n ...columns,\r\n [column]: {\r\n id: column,\r\n name: cards[column].name,\r\n icon: cards[column].icon || null,\r\n items: items,\r\n }\r\n\r\n }\r\n if (columnsOrder.indexOf(column) === -1)\r\n columnsOrder.push(column)\r\n })\r\n return {\r\n columns: columns,\r\n columnOrder: columnsOrder\r\n }\r\n}\r\n\r\nexport const action = async (props) => {\r\n const {\r\n nodeId,\r\n reason = null,\r\n approval = false,\r\n approved = false\r\n } = props\r\n const card = reduxStore.getState().db.cards[nodeId]\r\n // console.log(card, props)\r\n const flowCard = reduxStore.getState().db.cards[card._parent]\r\n\r\n // return\r\n let moveTo\r\n if (flowCard.onConcludedStepMoveTo) {\r\n moveTo = flowCard.onConcludedStepMoveTo\r\n } else {\r\n moveTo = Object.keys(reduxStore.getState().db.cards).filter(c =>\r\n reduxStore.getState().db.cards[c]._parent === flowCard._parent\r\n && reduxStore.getState().db.cards[c].type === \"step\"\r\n && parseInt(reduxStore.getState().db.cards[c].step) === parseInt(flowCard.step) + 1\r\n )[0]\r\n }\r\n\r\n const nextStep = reduxStore.getState().db.cards[moveTo]\r\n\r\n\r\n if (approval && flowCard._id) {\r\n let dataMessage = {\r\n _id: uuid(),\r\n idRel: nodeId,\r\n cardId: flowCard._id,\r\n message: `${approved ? `$__approved` : `$__rejected`} - ${reason ? `$__reason: ${reason}` : ``}`,\r\n type: 'log',\r\n filesCount: 0,\r\n approval: true,\r\n db: 'cards'\r\n }\r\n\r\n api.post(\"timeline/add\", dataMessage)\r\n\r\n\r\n if (!approved && flowCard._parent) {\r\n if (flowCard._parent)\r\n linkCard({\r\n idRel: nodeId,\r\n destination: flowCard._parent,\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [nodeId]: {\r\n ...reduxStore.getState().db.cards[nodeId],\r\n _parent: flowCard._parent,\r\n requireApproval: null\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (!approval || (approval && approved)) {\r\n let id = reduxStore.getState().db.cards[nodeId] && reduxStore.getState().db.cards[nodeId]._createdBy && reduxStore.getState().db.cards[nodeId]._createdBy._id ? reduxStore.getState().db.cards[nodeId]._createdBy._id : null\r\n let dataUpdate = automation(props, nodeId, moveTo, id)\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [nodeId]: {\r\n ...reduxStore.getState().db.cards[nodeId],\r\n ...dataUpdate,\r\n _parent: flowCard.onConcludedStepMoveTo,\r\n ...nextStep?.requireApproval ? { requireApproval: true } : { requireApproval: null }\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport {\r\n automationExec,\r\n addColumn,\r\n getKanbanData,\r\n linkCard,\r\n reorder,\r\n}\r\n","import React from 'react'\r\n\r\n//COMPONENTS\r\nimport Header from 'components/Dashboards/Header'\r\nimport \"./Loader.css\"\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\r\n//FUNCTIONS\r\nimport { translate } from 'functions'\r\n\r\nconst Meta = (props) => {\r\n\r\n const { tittle, icon, data } = props\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column', overflow: 'hidden' }}>\r\n <Header styles={props.styles ? props.styles : {}} tittle={translate(`$__${tittle}`)} icon={icon} edit={props.edit} id={props.id} handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n {(!props.load && inViewport) ? <div style={{ width: '100%', height: 'fitContent', fontWeight: 'bolder', flex: '1 1 auto', display: 'flex', justifyContent: 'center', fontSize: '200%' }}>\r\n {<p style={{\r\n textAlign: \"center\",\r\n fontSize: `calc(3.5em + (2 - 14) * ((100vh - 200px) / (1400 - 200)))`,\r\n margin: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}>{data}</p>}\r\n </div> :\r\n <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>\r\n }\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Meta","import React from \"react\";\r\nimport moment from \"moment-timezone\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//@MATERIALS\r\nimport Backdrop from \"@material-ui/core/Backdrop\"\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//FUNTIONS\r\nimport { customApp, translate } from \"functions/\";\r\n\r\n\r\nexport default function PolicyAndTerms(props) {\r\n const [consent] = React.useState(reduxStore.getState().session.consent ? true : false)\r\n const [privacy, setPrivacy] = React.useState(false)\r\n const [terms, setTerms] = React.useState(false)\r\n const [loading, setLoading] = React.useState(true)\r\n\r\n React.useEffect(() => {\r\n setTimeout(() => {\r\n setLoading(false)\r\n }, 6000)\r\n }, [privacy])\r\n\r\n const updateConsent = async () => {\r\n setLoading(true)\r\n setTerms(true)\r\n let consent = {\r\n accepted_at: `${moment().unix(\"X\")}`,\r\n privacy: \"Data de criação: 31 de dezembro de 2021, Última atualização: 06 de janeiro de 2022\",\r\n terms: \"Data de criação: 31 de dezembro de 2021, Última atualização: 06 de janeiro de 2022\",\r\n }\r\n const { socket } = reduxStore.getState().functions\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"consent\"\r\n }, {\r\n version: JSON.stringify(consent)\r\n })\r\n }\r\n\r\n if (terms)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <div id={`policyAndTermsConsent`}\r\n\r\n >\r\n <Backdrop\r\n // className={classes.backdrop}\r\n style={{\r\n zIndex: 30000,\r\n backdropFilter: \"blur(7px) sepia(90%)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}\r\n open={!consent} onClick={(e) => {\r\n // close()\r\n }}>\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n ...window.innerWidth > 600 ? {\r\n top: 77,\r\n left: 77,\r\n right: 77,\r\n bottom: 77,\r\n } : {\r\n top: 50,\r\n left: 7,\r\n right: 7,\r\n bottom: 7,\r\n },\r\n ...window.innerWidth > 600 ? {\r\n zIndex: 3,\r\n } : {\r\n zIndex: 6000,\r\n },\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n borderRadius: \"15px\",\r\n overflow: 'hidden',\r\n backgroundColor: \"#FFFFFF\"\r\n }}\r\n >\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n height: 40,\r\n background: customApp('ColumnTitleColor'),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n // textAlign: \"center\",\r\n justifyContent: \"center\",\r\n color: customApp(\"color\"),\r\n fontWeight: \"bold\"\r\n }}>\r\n {translate(`$__TermsOfUseAndPrivacyPolicy`)}\r\n </div>\r\n <div style={{\r\n position: \"absolute\",\r\n top: 40,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n {!privacy ?\r\n <iframe title=\"outModule\"\r\n id=\"policy\"\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 40,\r\n width: \"100%\",\r\n height: \"calc(100% - 40px)\",\r\n }}\r\n width={\"100%\"}\r\n height={\"100%\"}\r\n onScroll={() => {\r\n console.log(\"scroll\")\r\n }}\r\n src=\"https://sonne.global/SONNE-Politica-de-Privacidade-2022-01-07.pdf\"\r\n />\r\n :\r\n <iframe title=\"outModule\"\r\n id=\"terms\"\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 40,\r\n width: \"100%\",\r\n height: \"calc(100% - 40px)\",\r\n }}\r\n width={\"100%\"}\r\n height={\"100%\"}\r\n src=\"https://sonne.global/SONNE-Termos-de-Servicos-2022-01-07.pdf\"\r\n />\r\n }\r\n </div>\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n height: 40,\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n marginLeft: 33\r\n }}\r\n >\r\n <CustomButton\r\n id={`policyButtonConsent`}\r\n title={translate(!privacy ? `$__IReadAndIAgree` : `$__accepted`, \"*\")}\r\n text={!privacy ? translate(`$__IReadAndIAgree`, \"*\") : null}\r\n color={!privacy ? customApp(\"menu\") : \"green\"}\r\n icon={\"verified\"}\r\n onClick={!privacy ? () => {\r\n setPrivacy(true)\r\n } : null}\r\n size={\"25px\"}\r\n // transparent\r\n />\r\n {privacy ?\r\n translate(`$__PrivacyPolicy`, \"*\")\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n {privacy && !loading ?\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <CustomButton\r\n id={`termsofuseButtonConsent`}\r\n title={translate(`$__IReadAndIAgreeTheTermsOfUse`, \"*\")}\r\n text={translate(`$__IReadAndIAgreeTheTermsOfUse`, \"*\")}\r\n color={customApp(\"menu\")}\r\n icon={\"verified\"}\r\n onClick={() => {\r\n updateConsent()\r\n }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n\r\n </Backdrop>\r\n\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment-timezone\";\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//@MATERIALS\r\nimport Backdrop from \"@material-ui/core/Backdrop\"\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//FUNTIONS\r\nimport { customApp, translate } from \"functions/\";\r\n\r\nfunction LicensingAgreement(props) {\r\n const { session } = reduxStore.getState()\r\n const AgreeRef = React.useRef()\r\n\r\n if (session && (!session.require || (session.require && !session.require.licensingAgreement)))\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n\r\n const agree = async () => {\r\n let consent = {\r\n accepted_at: `${moment().unix(\"X\")}`,\r\n version: \"2022-10-24\",\r\n }\r\n const { socket } = reduxStore.getState().functions\r\n socket.emit(\"data\", {\r\n module: \"account\",\r\n method: \"post\",\r\n action: \"agreement\"\r\n }, {\r\n version: JSON.stringify(consent)\r\n })\r\n }\r\n\r\n return (\r\n <div id={`licensingAgreement`}\r\n\r\n >\r\n <Backdrop\r\n style={{\r\n zIndex: 30000,\r\n backdropFilter: \"blur(7px) sepia(90%)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}\r\n open={true}\r\n >\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n ...window.innerWidth > 600 ? {\r\n top: 77,\r\n left: 77,\r\n right: 77,\r\n bottom: 77,\r\n } : {\r\n top: 50,\r\n left: 7,\r\n right: 7,\r\n bottom: 7,\r\n },\r\n ...window.innerWidth > 600 ? {\r\n zIndex: 3,\r\n } : {\r\n zIndex: 6000,\r\n },\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n borderRadius: \"15px\",\r\n overflow: 'hidden',\r\n backgroundColor: \"#FFFFFF\"\r\n }}\r\n >\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n height: 40,\r\n background: customApp('ColumnTitleColor'),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: customApp(\"color\"),\r\n fontWeight: \"bold\"\r\n }}>\r\n {translate(`$__licensingAgreement`)}\r\n </div>\r\n <div style={{\r\n position: \"absolute\",\r\n top: 40,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n <iframe title=\"outModule\"\r\n id=\"licensing\"\r\n ref={AgreeRef}\r\n onLoad={() => {\r\n // setScrollFunction()\r\n console.log(\"licensing\")\r\n }}\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 40,\r\n width: \"100%\",\r\n height: \"calc(100% - 40px)\",\r\n }}\r\n width={\"100%\"}\r\n height={\"100%\"}\r\n src=\"https://machen.ai/contracts/MACHEN-Termos-e-Condicoes-Gerais-de-Uso-de-Software-2022-10-24.pdf\"\r\n />\r\n </div>\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n height: 40,\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n marginLeft: 33\r\n }}\r\n >\r\n <CustomButton\r\n id={`agreementButtonConsent`}\r\n title={translate(`$__IReadAndIAgree`, \"*\")}\r\n text={translate(`$__IReadAndIAgree`, \"*\")}\r\n color={customApp(\"menu\")}\r\n icon={\"verified\"}\r\n onClick={() => {\r\n agree()\r\n }}\r\n size={\"25px\"}\r\n // transparent\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </Backdrop>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n session: store.session\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(LicensingAgreement)\r\n","import {\r\n defaultFont,\r\n container,\r\n containerFluid,\r\n primaryColor,\r\n whiteColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst footerStyle = {\r\n block: {},\r\n left: {\r\n float: \"left!important\",\r\n display: \"block\"\r\n },\r\n right: {\r\n margin: \"0\",\r\n fontSize: \"12px\",\r\n float: \"right!important\",\r\n padding: \"15px\"\r\n },\r\n footer: {\r\n bottom: \"0\",\r\n borderTop: \"1px solid \" + grayColor[15],\r\n padding: \"15px 0\",\r\n ...defaultFont,\r\n zIndex: 4\r\n },\r\n container: {\r\n zIndex: 3,\r\n ...container,\r\n position: \"relative\"\r\n },\r\n containerFluid: {\r\n zIndex: 3,\r\n ...containerFluid,\r\n position: \"relative\"\r\n },\r\n a: {\r\n color: primaryColor[0],\r\n textDecoration: \"none\",\r\n backgroundColor: \"transparent\"\r\n },\r\n list: {\r\n marginBottom: \"0\",\r\n padding: \"0\",\r\n marginTop: \"0\"\r\n },\r\n inlineBlock: {\r\n display: \"inline-block\",\r\n padding: \"0\",\r\n width: \"auto\"\r\n },\r\n whiteColor: {\r\n \"&,&:hover,&:focus\": {\r\n color: whiteColor\r\n }\r\n }\r\n};\r\nexport default footerStyle;\r\n","/*eslint-disable*/\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport cx from \"classnames\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport List from \"@material-ui/core/List\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/footerStyle\";\r\n\r\nimport { translate } from \"functions/\"\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function Footer(props) {\r\n const classes = useStyles();\r\n const { fluid, white, rtlActive } = props;\r\n var container = cx({\r\n [classes.container]: !fluid,\r\n [classes.containerFluid]: fluid,\r\n [classes.whiteColor]: white\r\n });\r\n var anchor =\r\n classes.a +\r\n cx({\r\n [\" \" + classes.whiteColor]: white\r\n });\r\n var block = cx({\r\n [classes.block]: true,\r\n [classes.whiteColor]: white\r\n });\r\n return (\r\n <footer className={classes.footer}>\r\n <div className={container} style={{\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}>\r\n <p className={classes.center}>\r\n © {1900 + new Date().getYear()}{\" \"}\r\n <a\r\n href=\"https://sonne.global\"\r\n className={anchor}\r\n target=\"_blank\" rel=\"noopener noreferrer\"\r\n >\r\n {\"SONNE GLOBAL\"}\r\n </a>\r\n {` | ${translate(\"$__footerDescription\", 1) !== '$__footerDescription' ? translate(\"$__footerDescription\", 1) : ``}`}\r\n </p>\r\n </div>\r\n </footer>\r\n );\r\n}\r\n\r\nFooter.propTypes = {\r\n fluid: PropTypes.bool,\r\n white: PropTypes.bool,\r\n rtlActive: PropTypes.bool\r\n};\r\n","//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = theme => ({\r\n backdrop: {\r\n zIndex: 4000,\r\n },\r\n header: {\r\n position: 'absolute', top: '0px', left: '0px', right: '0px', height: '50px'\r\n },\r\n btClose: {\r\n position: 'absolute', right: '15px', top: '15px'\r\n },\r\n content: {\r\n position: 'absolute',\r\n top: '50px',\r\n bottom: '50px',\r\n left: '30px',\r\n right: '30px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n },\r\n loader: {\r\n position: 'absolute', top: 'calc(50% - 20px)', left: 'calc(50% - 20px)', width: '40px', height: '40px',\r\n '& .MuiCircularProgress-root': {\r\n color: `${customApp('color')} !important`,\r\n },\r\n },\r\n img: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'contain',\r\n backgroundPosition: 'center center',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n '& img': {\r\n width: 'auto',\r\n height: 'auto',\r\n maxWidth: '100%',\r\n maxHeight: '100%'\r\n }\r\n },\r\n movie: {\r\n position: 'absolute',\r\n width: '-webkit-fill-available',\r\n height: '-webkit-fill-available',\r\n },\r\n embed: {\r\n position: 'absolute',\r\n width: '-webkit-fill-available',\r\n height: '-webkit-fill-available',\r\n },\r\n leftButtom: {\r\n position: 'absolute',\r\n top: '50px',\r\n bottom: '50px',\r\n left: '0px',\r\n width: '30px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n rightButtom: {\r\n position: 'absolute',\r\n top: '50px',\r\n bottom: '50px',\r\n width: '30px',\r\n right: '0px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n footer: {\r\n position: 'absolute',\r\n bottom: '0px',\r\n left: '0px',\r\n right: '0px',\r\n height: '50px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n})\r\n\r\nexport default style;","//CORE\r\nimport React from \"react\"\r\nimport Swipe from \"react-easy-swipe\"\r\nimport ReactAudioPlayer from \"react-audio-player\"\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 Icon from \"components/Icon\"\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\nimport Backdrop from \"@material-ui/core/Backdrop\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/LightBox.js\"\r\n\r\n//IMAGES\r\nimport SVGIcon from \"assets/icons/svg.png\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\";\r\n\r\nfunction LightBox(props) {\r\n const { classes } = props\r\n const { db, lightBox } = reduxStore.getState()\r\n const [loader, setLoader] = React.useState(false)\r\n const [sideChange, setsideChange] = React.useState(false)\r\n const [activeFile, setActiveFile] = React.useState(null)\r\n const [path, setPath] = React.useState(null)\r\n const [pdfLoader, setPDFLoader] = React.useState(true)\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"keydown\", (e) => { interaction(e) }, false)\r\n return () => {\r\n window.removeEventListener(\"keydown\")\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (lightBox.open && lightBox.files.length > 0 && lightBox.file && lightBox.file !== activeFile) {\r\n setLoader(true)\r\n setActiveFile(lightBox.file)\r\n const file = reduxStore.getState().lightBox.files.filter(a => a._id === lightBox.file)[0]\r\n const name = file && file.name ? file.name.split(\".\") : null\r\n const path = file && file.file ? `https://machen.azureedge.net/${encodeURIComponent(file.file)}` : null\r\n const ext = name.length > 0 ? name[name.length - 1] : null\r\n const viewer = ext ? db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0 ? db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].viewer : \"file\" : null\r\n\r\n if (viewer === 'pdf') {\r\n setPDFLoader(true)\r\n setPath(path)\r\n }\r\n setTimeout(() => {\r\n setLoader(false)\r\n setPath(path)\r\n }, 1000)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lightBox])\r\n\r\n const interaction = (e) => {\r\n if (\r\n (\r\n e.keyCode !== 39\r\n && e.keyCode !== 40\r\n && e.keyCode !== 37\r\n && e.keyCode !== 38\r\n && e.keyCode !== 27\r\n )\r\n ||\r\n (\r\n reduxStore.getState().lightBox.files.length === 1\r\n && e.keyCode !== 27\r\n )\r\n )\r\n return false\r\n if (reduxStore.getState().lightBox.open) {\r\n let active\r\n reduxStore.getState().lightBox.files.forEach((f, i) => {\r\n if (f._id === reduxStore.getState().lightBox.file)\r\n active = i\r\n })\r\n if (\r\n e.keyCode === 39\r\n ||\r\n e.keyCode === 40\r\n ) { //>>>>\r\n if (active + 1 === reduxStore.getState().lightBox.files.length) {\r\n active = 0\r\n } else {\r\n active = active + 1\r\n }\r\n changeFile(\"R\")\r\n } else if (e.keyCode === 37 || e.keyCode === 38) { //<<<<\r\n if (active === 0) {\r\n active = reduxStore.getState().lightBox.files.length - 1\r\n } else {\r\n active = active - 1\r\n }\r\n changeFile(\"L\")\r\n } else if (e.keyCode === 27) { //ESC\r\n close()\r\n return\r\n } else {\r\n return false\r\n }\r\n setLoader(true)\r\n setTimeout(() => {\r\n setLoader(false)\r\n }, 1000)\r\n }\r\n }\r\n\r\n const close = () => {\r\n setTimeout(() => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX_CLOSE\")\r\n }, 500)\r\n window.removeEventListener(\"keydown\", (e) => { interaction(e) }, false)\r\n }\r\n\r\n const onSwipeMove = (position, event) => {\r\n if (position.x > 100) {\r\n setsideChange(\"L\")\r\n } else if (position.x < -100) {\r\n setsideChange(\"R\")\r\n } else if (position.y < -100) {\r\n close()\r\n }\r\n }\r\n\r\n const onSwipeEnd = (event) => {\r\n if (sideChange !== false) {\r\n changeFile()\r\n }\r\n }\r\n const changeFile = (side = null) => {\r\n if (reduxStore.getState().lightBox.open) {\r\n setLoader(true)\r\n let active\r\n reduxStore.getState().lightBox.files.forEach((f, i) => {\r\n if (f._id === reduxStore.getState().lightBox.file)\r\n active = i\r\n })\r\n if (sideChange === \"R\" || side === \"R\") {\r\n if (active + 1 === reduxStore.getState().lightBox.files.length) {\r\n active = 0\r\n } else {\r\n active = active + 1\r\n }\r\n } else if (sideChange === \"L\" || side === \"L\") {\r\n if (active === 0) {\r\n active = reduxStore.getState().lightBox.files.length - 1\r\n } else {\r\n active = active - 1\r\n }\r\n }\r\n if (reduxStore.getState().lightBox.files.length > 0 && reduxStore.getState().lightBox.files[active])\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n ...reduxStore.getState().lightBox,\r\n file: reduxStore.getState().lightBox.files[active]._id\r\n })\r\n setTimeout(() => {\r\n setLoader(false)\r\n setsideChange(false)\r\n }, 700)\r\n }\r\n }\r\n\r\n\r\n if (!reduxStore.getState().lightBox.open && reduxStore.getState().lightBox.files.length === 0)\r\n return null\r\n\r\n const file = reduxStore.getState().lightBox.files.filter(a => a._id === activeFile)[0]\r\n if (!file || !file.file)\r\n return (<React.Fragment></React.Fragment>)\r\n const name = file && file.name ? file.name.split(\".\") : null\r\n const ext = name.length > 0 ? name[name.length - 1] : null\r\n const viewer = ext ? db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0 ? db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].viewer : \"file\" : null\r\n\r\n let img = path\r\n const downloadPath = file && file.file ? `https://fl.machen.ai/?arq=${file.file.replace('&', '||MCH-ECOM||')}&name=${file.name.replace('&', '||MCH-ECOM||')}` : null\r\n\r\n const newDownloadPath = `https://fls.machen.ai/${encodeURIComponent(file.file)}/name/${encodeURIComponent(file.name)}`\r\n\r\n\r\n if (db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0) {\r\n img = db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0 && db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].icon ? db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].icon : `https://machen.azureedge.net/${file.file}`\r\n }\r\n\r\n return (\r\n <ErrorBoundary>\r\n <Swipe\r\n onSwipeMove={onSwipeMove}\r\n onSwipeEnd={onSwipeEnd}>\r\n <Backdrop\r\n style={{ zIndex: 9999 }}\r\n className={classes.backdrop} open={reduxStore.getState().lightBox.open} onClick={(e) => {\r\n close()\r\n }}>\r\n <div\r\n id=\"lightBox\"\r\n className={classes.header}\r\n style={{ zIndex: \"9999 !important\" }}\r\n onClick={(e) => {\r\n close()\r\n e.stopPropagation()\r\n }}>\r\n <div className={classes.btClose}>\r\n <Icon title={translate(\"$__close\", \"*\")} color={customApp(\"light\")} onClick={() => { close() }}>close</Icon>\r\n </div>\r\n </div>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", alignItems: \"center\" }}>\r\n <div\r\n className={classes.content}\r\n style={{ zIndex: 1000 }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}>\r\n {loader ?\r\n <div className={classes.loader}>\r\n <CircularProgress />\r\n </div>\r\n : viewer === \"img\" ?\r\n <div\r\n className={classes.img}\r\n >\r\n {(typeof path === \"string\" && (path.indexOf(\"https://\") === -1 || path.indexOf(\"svg\") > -1)) ?\r\n <React.Fragment>\r\n {(viewer === \"img\" && img && img.indexOf(\"svg\") > -1) &&\r\n <a href={downloadPath}>\r\n <div\r\n style={{ color: \"#FFFFFF\", fontWeight: \"bolder\", fontSize: \"22px\" }}\r\n >\r\n <img\r\n alt=\"MACHEN_IMAGE\"\r\n src={SVGIcon}\r\n style={\r\n {\r\n borderRadius: \"15px\",\r\n boxShadow: `0 1px 2px 2px rgba(0,0,0,0.1)`,\r\n maxWidth: \"100%\",\r\n height: \"100%\",\r\n maxHeight: \"100px\"\r\n }}\r\n />\r\n {translate(\"$__clickHereToDownload\", 1)}\r\n </div>\r\n </a>\r\n }\r\n </React.Fragment>\r\n :\r\n <img alt=\"MACHEN_IMAGE\" src={`${img}`}\r\n onError={(e) => e.target.src = img}\r\n />\r\n }\r\n </div>\r\n : !loader && viewer === \"movie\" ?\r\n <video\r\n className={classes.movie}\r\n src={path} controls></video>\r\n : !loader && viewer === \"microsoft\" ?\r\n <React.Fragment>\r\n <ErrorBoundary>\r\n <embed\r\n className={classes.embed}\r\n id=\"embed-docs\"\r\n onLoad={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n onError={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n src={`https://view.officeapps.live.com/op/embed.aspx?src=${newDownloadPath}`}\r\n />\r\n </ErrorBoundary>\r\n </React.Fragment>\r\n : !loader && viewer === \"text\" ?\r\n <React.Fragment>\r\n <ErrorBoundary>\r\n <embed\r\n className={classes.embed}\r\n id=\"embed-docs\"\r\n style={{\r\n backgroundColor: \"#FFFFFF\",\r\n padding: 15\r\n }}\r\n onLoad={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n onError={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n src={`${newDownloadPath}`}\r\n />\r\n </ErrorBoundary>\r\n </React.Fragment>\r\n : !loader && viewer === \"pdf\" && path ?\r\n <div className={classes.embed}>\r\n {pdfLoader &&\r\n <div className={classes.loader}>\r\n <CircularProgress />\r\n </div>\r\n }\r\n <div className={classes.embed}>\r\n <div className={classes.embed}\r\n style={{ overflow: 'auto' }}>\r\n <div className={classes.embed}>\r\n <ErrorBoundary>\r\n <embed\r\n type=\"application/pdf\"\r\n className={classes.embed}\r\n id=\"embed-docs\"\r\n onLoad={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n onError={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n // src={`https://view.officeapps.live.com/op/embed.aspx?src=${newDownloadPath}`}\r\n src={`https://docs.google.com/gview?url=${newDownloadPath}&embedded=true`}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n : !loader && viewer === \"audio\" ? (\r\n <ReactAudioPlayer\r\n src={path}\r\n autoPlay\r\n controls\r\n />\r\n )\r\n : !loader && viewer === \"file\" ? (\r\n <a href={downloadPath}>\r\n <div\r\n style={{ color: \"#FFFFFF\", fontWeight: \"bolder\", fontSize: \"22px\" }}\r\n >\r\n {translate(\"$__clickHereToDownload\", 1)}\r\n </div>\r\n </a>\r\n )\r\n : !loader ?\r\n <embed\r\n className={classes.embed}\r\n id=\"embed-pdf\"\r\n onLoad={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n onError={(e) => {\r\n e.target.style.display = \"none\"\r\n e.target.style.display = \"flex\"\r\n }}\r\n src={`https://drive.google.com/viewerng/viewer?embedded=true&url=${path}`}\r\n />\r\n : null\r\n }\r\n </div>\r\n {reduxStore.getState().lightBox.files.length > 1 &&\r\n <React.Fragment>\r\n <div className={classes.leftButtom}>\r\n <Icon title={translate(\"$__previous\", \"*\")} color={customApp(\"light\")} size=\"33px\" onClick={() => { changeFile(\"L\") }}>keyboard_arrow_left</Icon>\r\n </div>\r\n <div className={classes.rightButtom}>\r\n <Icon title={translate(\"$__next\", \"*\")} color={customApp(\"light\")} size=\"33px\" onClick={() => { changeFile(\"R\") }}>keyboard_arrow_right</Icon>\r\n </div>\r\n </React.Fragment>\r\n }\r\n <div className={classes.footer} onClick={(e) => {\r\n e.stopPropagation()\r\n }}>\r\n <a href={downloadPath}>\r\n <Icon title={translate(\"$__download\", \"*\")} color={customApp(\"light\")} size=\"33px\"\r\n >get_app</Icon>\r\n </a>\r\n </div>\r\n </div>\r\n </Backdrop >\r\n </Swipe >\r\n </ErrorBoundary>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n lightbox: store.lightBox\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(LightBox))","//CORE\r\nimport React from 'react'\r\n\r\n//COMPONENTES\r\nimport PreLoader from \"components/PreLoader\";\r\n\r\nfunction Component() {\r\n return (\r\n <div style={{\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%'\r\n }}>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n maxWidth: \"250px\",\r\n height: \"150px\",\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}>\r\n <PreLoader />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n\r\nexport default Component\r\n","//CORE\r\nimport React from \"react\"\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 Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\nimport Backdrop from \"@material-ui/core/Backdrop\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/LightBox.js\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n\r\n if (!reduxStore.getState().lightBox.miro && !reduxStore.getState().lightBox.miroBoard)\r\n return <></>\r\n\r\n if (!reduxStore.getState().lightBox.miro && !reduxStore.getState().lightBox.miroBoard)\r\n return null\r\n\r\n return (\r\n <Backdrop className={classes.backdrop} open={reduxStore.getState().lightBox.miro}>\r\n <div className={classes.header}>\r\n <div className={classes.btClose}>\r\n <Icon title={translate(\"$__close\", \"*\")} color={customApp(\"light\")} onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX_CLOSE\")\r\n }}>close</Icon>\r\n </div>\r\n </div>\r\n <div className={classes.content} style={{ zIndex: 1000 }}>\r\n <iframe title=\"outModule\"\r\n style={{ position: \"absolute\", width: \"100%\", height: \"100%\" }}\r\n src={`https://miro.com/app/live-embed/${reduxStore.getState().lightBox.miroBoard}=/?embedAutoplay=true&moveToViewport=-23165,-5837,13803,7546`}\r\n ></iframe>\r\n </div>\r\n </Backdrop >\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Component));","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React from \"react\"\r\n\r\n//COMPONENTS\r\nimport CircularProgress from \"components/Progress/circular\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\nimport {\r\n translate,\r\n customApp,\r\n} from \"functions/\"\r\n\r\nfunction Component(props) {\r\n return (\r\n <div\r\n id={`sideModule_closeButton`}\r\n style={{\r\n position: \"fixed\",\r\n display: \"inline-flex\",\r\n paddingLeft: \"10px\",\r\n top: \"7px\",\r\n right: 0,\r\n backgroundColor: \"#FFFFFF\",\r\n ...props.style ? props.style : {},\r\n }}>\r\n {props.saveLoader &&\r\n <React.Fragment>\r\n <CircularProgress size=\"25px\" />\r\n </React.Fragment>\r\n }\r\n {!props.saveLoader &&\r\n <React.Fragment>\r\n <div\r\n id={`sideModule_saveOptions`}\r\n style={{ display: \"flex\" }}\r\n >\r\n {props.save &&\r\n <CustomButton\r\n id={`sideModule_saveButton`}\r\n title={translate(`$__save`, 1)}\r\n color={customApp(\"color\")}\r\n icon={\"save\"}\r\n onClick={() => { props.save() }}\r\n size={\"25px\"}\r\n />\r\n }\r\n {props.saveClose &&\r\n <CustomButton\r\n id={`sideModule_saveAndCloseButton`}\r\n title={translate(`$__saveAndClose`, 1)}\r\n color=\"green\"\r\n icon={\"playlist_add_check\"}\r\n onClick={() => { props.saveClose() }}\r\n size={\"25px\"}\r\n />\r\n }\r\n </div>\r\n {props.close &&\r\n <CustomButton\r\n title={translate(`$__close`, 1)}\r\n color=\"lightgrey\"\r\n icon={\"cancel\"}\r\n onClick={() => {\r\n props.close()\r\n }}\r\n size={\"25px\"}\r\n />\r\n }\r\n </React.Fragment>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport default Component\r\n","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst headerStyle = () => ({\r\n lock: {\r\n position: 'fixed',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n height: '100vh',\r\n zIndex: '3000 !important',\r\n },\r\n backdrop: {\r\n position: 'fixed',\r\n top: '0px',\r\n left: '0px',\r\n right: '440px',\r\n bottom: '0px',\r\n height: '100vh',\r\n backgroundColor: 'rgba(0,0,0,0.7)',\r\n },\r\n module: {\r\n ...defaultFont,\r\n position: `absolute`,\r\n right: `0px`,\r\n top: `0px`,\r\n bottom: `0px`,\r\n // width: `440px`,\r\n minWidth: \"500px\",\r\n width: \"30%\",\r\n zIndex: `1100`,\r\n backgroundColor: `rgba(255,255,255,1)`\r\n },\r\n modulePopup: {\r\n ...defaultFont,\r\n width: '70vw',\r\n position: 'absolute',\r\n zIndex: '1100',\r\n left: 'calc(50% - 35vw)',\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n height: '80vh',\r\n top: 'calc(50% - 40vh)',\r\n boxShadow: '0px 0px 20px rgba(0,0,0,0.2)',\r\n padding: '0px 5px',\r\n border: 'solid 2px #ffffff',\r\n },\r\n moduleExpanded: {\r\n ...defaultFont,\r\n width: '90vw',\r\n position: 'absolute',\r\n zIndex: '1100',\r\n left: 'calc(50% - 45vw)',\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n height: '80vh',\r\n bottom: '0px',\r\n boxShadow: '0px 0px 20px rgba(0,0,0,0.2)',\r\n padding: '0px 5px',\r\n border: 'solid 2px #ffffff',\r\n },\r\n moduleFullScreen: {\r\n ...defaultFont,\r\n width: '100vw',\r\n position: 'absolute',\r\n zIndex: '1100',\r\n left: '0px',\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n height: '100vh',\r\n bottom: '0px',\r\n boxShadow: '0px 0px 20px rgba(0,0,0,0.2)',\r\n padding: '0px 5px',\r\n border: 'solid 2px #ffffff',\r\n },\r\n menu: {\r\n position: `absolute`,\r\n left: `0px`,\r\n width: `45px`,\r\n top: `0px`,\r\n bottom: `0px`,\r\n textAlign: `center`,\r\n },\r\n content: {\r\n position: 'absolute',\r\n top: '80px',\r\n left: '45px',\r\n bottom: '0px',\r\n right: '0px',\r\n padding: '0px',\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n zIndex: 1\r\n },\r\n menuButtons_resume: {\r\n margin: '0px auto 27px auto',\r\n height: '40px'\r\n },\r\n MenuButton: {\r\n margin: 'auto auto',\r\n // padding: '7px',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n MenuButton_arrow: {\r\n position: 'absolute',\r\n right: '-8px',\r\n fontSize: '16px',\r\n transform: 'rotate(180deg)'\r\n },\r\n subTitle: {\r\n position: `absolute`,\r\n left: `45px`,\r\n right: `0px`,\r\n padding: `4px 10px`,\r\n top: `47px`,\r\n backgroundColor: customApp('color'),\r\n color: customApp('light'),\r\n // zIndex: 1\r\n },\r\n});\r\n\r\nexport default headerStyle;\r\n","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst headerStyle = theme => ({\r\n btClose: {\r\n position: 'relative',\r\n zIndex: theme.zIndex.drawer + 1,\r\n right: '0',\r\n top: '-64px',\r\n // backgroundColor: '#FFFFFF',\r\n display: 'flex',\r\n },\r\n root: {\r\n position: 'absolute',\r\n top: '0px',\r\n bottom: '0px',\r\n left: '0px',\r\n right: '0px',\r\n overflowX: 'auto'\r\n },\r\n image: {\r\n width: '100%',\r\n paddingTop: '48%',\r\n backgroundPosition: 'center',\r\n backgroundSize: 'cover',\r\n },\r\n data: {\r\n marginTop: '10px',\r\n padding: '10px',\r\n overflowX: 'auto',\r\n '& fieldset': {\r\n border: 'solid 1px rgba(0,0,0,0.1)',\r\n '& legend': {\r\n marginBottom: '0px',\r\n fontSize: '16px',\r\n color: customApp('color')\r\n }\r\n }\r\n },\r\n switch: {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n color: customApp('medium')\r\n },\r\n accessDescription: {\r\n fontSize: '14px',\r\n color: customApp('medium'),\r\n },\r\n});\r\n\r\nexport default headerStyle;\r\n","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React, { useState } from \"react\";\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 ImgCropper from \"components/Cropper\";\r\nimport TextField from \"components/TextField\";\r\nimport MultInput from \"components/MultInput/input\";\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\";\r\n\r\n//@MATERIAL\r\nimport Icon from \"components/Icon\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp,\r\n validateEmail,\r\n appAlert,\r\n getAppAccess\r\n} from \"functions/\";\r\nimport { save, emailExist } from \"functions/users\";\r\n\r\nfunction Component(props) {\r\n const { classes } = props;\r\n const { sideModule, db, session } = reduxStore.getState()\r\n const { users, dataType } = db\r\n const { data } = sideModule\r\n const [iniData] = useState(data)\r\n const [emailError, setEmailError] = React.useState(!validateEmail(data && data.email ? data.email : ''))\r\n const AppAccess = getAppAccess()\r\n\r\n const reqSave = JSON.stringify(iniData) !== JSON.stringify(data)\r\n\r\n const changeData = (d) => {\r\n let value = d.value\r\n let newData = {\r\n ...data,\r\n [d.name]: value,\r\n }\r\n if (!value && newData[d.name])\r\n delete newData[d.name]\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: newData\r\n });\r\n\r\n }\r\n\r\n const close = (cl) => {\r\n if (reqSave && !cl) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }\r\n }\r\n const saveUser = async (cl) => {\r\n const exist = await emailExist(data.email)\r\n\r\n if (\r\n !data.name\r\n ) {\r\n appAlert({\r\n message: translate('$__fillName', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n } else if (\r\n dataType.filter(a => a.name === data.type)[0].disabledFields.indexOf('email') === -1 &&\r\n emailError\r\n ) {\r\n appAlert({\r\n message: emailError,\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n } else if (\r\n dataType.filter(a => a.name === data.type)[0].disabledFields.indexOf('email') === -1 &&\r\n (\r\n !validateEmail(sideModule.data.email) ||\r\n (\r\n users[data._id] &&\r\n data.email !== users[data._id].email &&\r\n exist\r\n )\r\n )\r\n ) {\r\n setEmailError(translate('$__invalidEmail', 1))\r\n } else {\r\n const reqSave = await save(props);\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__userDataSaved', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n if (cl)\r\n close(true)\r\n }\r\n }\r\n }\r\n\r\n let permission = false\r\n if (data._id === session._id ||\r\n (AppAccess\r\n &&\r\n (\r\n AppAccess.user\r\n && (\r\n AppAccess.userAdmin\r\n || AppAccess.userEdit\r\n )\r\n )\r\n ))\r\n permission = true\r\n\r\n // console.log(data)\r\n // if (data.independentAccount)\r\n // permission = false\r\n\r\n\r\n\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n save={permission && reqSave ? () => saveUser() : null}\r\n saveClose={permission && reqSave ? () => saveUser(true) : null}\r\n close={() => close(true)}\r\n />\r\n {(\r\n permission\r\n ||\r\n (!permission && sideModule.data.image)\r\n )}\r\n <div\r\n id={`sideModule_user_foto`}\r\n >\r\n <ImgCropper\r\n maxWidthOrHeight={600}\r\n img={\r\n sideModule.data &&\r\n sideModule.data.image ?\r\n sideModule.data.image :\r\n null\r\n }\r\n onChange={permission ? (a, file) => {\r\n changeData({ name: 'file', value: file })\r\n } : null}\r\n avatar\r\n avatarIcon={\r\n (\r\n !data.type ||\r\n data.type === 'user'\r\n ) ?\r\n 'person' :\r\n (\r\n !data.type ||\r\n data.type === 'group'\r\n ) ?\r\n 'groups' :\r\n 'business'\r\n }\r\n />\r\n </div>\r\n <form\r\n className={classes.data}\r\n autoComplete=\"off\"\r\n id={`sideModule_user_data`}\r\n >\r\n <TextField\r\n id={`sideModule_user_fullName`}\r\n label={translate('$__fullName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'fullName'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='person' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n onBlur: (d) => {\r\n if (data && !data.name) {\r\n let name = d.target.value ? `${d.target.value.split(' ')[0]} ${d.target.value.split(' ')[1] ? d.target.value.split(' ')[1] : ''}` : \"\"\r\n changeData({\r\n name: 'name',\r\n value: name.trim()\r\n })\r\n }\r\n }\r\n }}\r\n value={data && data.fullName ? data.fullName : ''}\r\n placeholder={translate('$__fullName', 1)}\r\n autoFocus\r\n disabled={permission ? false : true}\r\n />\r\n <TextField\r\n id={`sideModule_user_displayName`}\r\n label={translate('$__displayName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name=\"name\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='view_comfy_ind' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n onBlur: (d) => {\r\n changeData(d.target)\r\n }\r\n }}\r\n value={data && data.name ? data.name : ''}\r\n placeholder={translate('$__displayName', 1)}\r\n disabled={permission ? false : true}\r\n />\r\n {dataType.filter(a => a.name === data.type)[0].disabledFields.indexOf('email') === -1 &&\r\n <TextField\r\n id={`sideModule_user_email`}\r\n label={translate('$__email', 1)}\r\n variant={customApp('fieldVariant')}\r\n name=\"email\"\r\n type=\"email\"\r\n // helperText={emailError}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n className: ((emailError || !data.email) || !validateEmail(data && data.email ? data.email : '')) ? \"invalid\" : \"\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='alternate_email' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setEmailError(null)\r\n changeData(d.target)\r\n },\r\n onBlur: async (e) => {\r\n if ((data._id && data._id !== 'new' && users[data._id] && users[data._id].email !== e.target.value)\r\n || (!data._id || data._id === 'new'))\r\n if (validateEmail(e.target.value) && (!users[data._id] || e.target.value !== users[data._id].email)) {\r\n const exist = await emailExist(e.target.value)\r\n if (exist) {\r\n setEmailError(translate('$__emailAlreadyExists', 1))\r\n } else {\r\n setEmailError(null)\r\n }\r\n } else {\r\n setEmailError(translate('$__invalidEmail', 1))\r\n }\r\n }\r\n }}\r\n value={data && data.email ? data.email : ''}\r\n placeholder={translate('$__email', 1)}\r\n disabled={!permission}\r\n />\r\n }\r\n {(\r\n permission &&\r\n (AppAccess\r\n &&\r\n (\r\n AppAccess.user\r\n && (\r\n AppAccess.userAdmin\r\n || AppAccess.userEdit\r\n )\r\n )\r\n )\r\n )\r\n ?\r\n <React.Fragment>\r\n <fieldset\r\n style={{ marginBottom: '14px' }}\r\n id={`sideModule_user_tags`}\r\n >\r\n <MultInput\r\n data={{\r\n values: data.tags || [],\r\n _id: data._id,\r\n }}\r\n options={reduxStore.getState().db.tag ? reduxStore.getState().db.tag : []}\r\n placeholder={\"$__tagsPlaceholder\"}\r\n dbNode={\"tag\"}\r\n callBack={(v) => {\r\n changeData({ name: 'tags', value: v })\r\n }}\r\n secondaryParent={data._parent}\r\n colorPickerCallBack={(res) => {\r\n reduxStore.getState().functions.socket.emit('tag.UPD', res)\r\n }}\r\n />\r\n </fieldset>\r\n <fieldset\r\n style={{ marginBottom: '14px' }}\r\n id={`sideModule_user_group`}\r\n >\r\n <MultInput\r\n data={{\r\n values: data.groups || [],\r\n _id: data._id,\r\n }}\r\n options={reduxStore.getState().db.userGroup ? reduxStore.getState().db.userGroup : []}\r\n placeholder={\"$__userGroupPlaceholder\"}\r\n dbNode={\"userGroup\"}\r\n callBack={(v) => {\r\n changeData({ name: 'groups', value: v })\r\n }}\r\n secondaryParent={data._parent}\r\n colorPickerCallBack={(res) => {\r\n // reduxStore.getState().functions.socket.emit('userGroup.UPD', res)\r\n }}\r\n />\r\n </fieldset>\r\n {/* {dataType.filter(a => a.name === data.type)[0].hideFields.indexOf('independentAccount') === -1 ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n {reduxStore.getState().db.users[data._id].independentAccount ?\r\n <div\r\n style={{ color: \"gray\", fontSize: 11 }}\r\n >\r\n {translate(\"$__thisIsAIndependentAccountExplain\", 1)}\r\n </div>\r\n :\r\n <React.Fragment>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.independentAccount\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n if (permission)\r\n changeData({\r\n name: \"independentAccount\",\r\n value: data.independentAccount ? false : true\r\n })\r\n }}\r\n name=\"independentAccount\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__turnIntoIndependentAccount\", 1)}\r\n </div>\r\n <div\r\n style={{ color: \"gray\", fontSize: 11 }}\r\n >\r\n {translate(\"$__turnIntoIndependentAccountExplain\", 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>} */}\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </form>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n tag: store.db.tag,\r\n userGroup: store.db.userGroup,\r\n sideModule: store.sideModule\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","import React from \"react\";\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\nimport TextField from \"components/TextField\";\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions/\";\r\n\r\nexport default function LoginPage(props) {\r\n const [user, setUser] = React.useState({ cPassword: '', password: '' });\r\n const [confirmed, setConfirmed] = React.useState(false)\r\n const [strength, setStrength] = React.useState(0)\r\n\r\n const calcPass = (password) => {\r\n let matchedCase = [];\r\n matchedCase.push(\"[$@$!%*#?&]\");\r\n matchedCase.push(\"[A-Z]\");\r\n matchedCase.push(\"[0-9]\");\r\n matchedCase.push(\"[a-z]\");\r\n\r\n let ctr = 0;\r\n for (let i = 0; i < matchedCase.length; i++) {\r\n if (new RegExp(matchedCase[i]).test(password)) {\r\n ctr++;\r\n }\r\n }\r\n\r\n switch (ctr) {\r\n case 0:\r\n setStrength(0)\r\n break;\r\n case 1:\r\n setStrength(1)\r\n break;\r\n case 2:\r\n setStrength(2)\r\n break;\r\n case 3:\r\n setStrength(3)\r\n break;\r\n case 4:\r\n setStrength(4)\r\n break;\r\n default:\r\n }\r\n\r\n if (password.length < 8) {\r\n setStrength(0)\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div style={{ textAlign: 'left' }}>\r\n <p>{translate('$__passwordTip_1')}</p>\r\n <p>{translate('$__passwordTip_2')}</p>\r\n <ul>\r\n <li>{translate('$__passwordTip_3')}</li>\r\n <li>{translate('$__passwordTip_4')}</li>\r\n <li>{translate('$__passwordTip_5')}</li>\r\n <li>{translate('$__passwordTip_6')}</li>\r\n <li>{translate('$__passwordTip_7')}</li>\r\n </ul>\r\n </div>\r\n <TextField\r\n label={translate('$__password', 1)}\r\n variant={'standard'}\r\n name={'password_primary'}\r\n type={'password'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n value: user.password,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon>lock_outline</Icon>\r\n </InputAdornment>\r\n ),\r\n autoComplete: 'new-password',\r\n onChange: e => {\r\n setUser({\r\n ...user,\r\n password: e.target.value\r\n })\r\n calcPass(e.target.value)\r\n if (strength > 2 && user.password === e.target.value) {\r\n setConfirmed(true)\r\n } else {\r\n setConfirmed(false)\r\n }\r\n },\r\n }}\r\n value={user.password}\r\n />\r\n <TextField\r\n label={translate('$__passwordConfirm', 1)}\r\n variant={'standard'}\r\n name={'password_secondary'}\r\n type={'password'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n value: user.cPassword,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon color={confirmed ? \"green\" : \"lightgray\"}>\r\n {confirmed ? 'verified' : 'check'}\r\n </Icon>\r\n </InputAdornment>\r\n ),\r\n autoComplete: 'new-password',\r\n onChange: e => {\r\n setUser({\r\n ...user,\r\n cPassword: e.target.value\r\n })\r\n if (strength > 2 && user.password === e.target.value) {\r\n setConfirmed(true)\r\n props.onConfirmed(e.target.value)\r\n } else {\r\n setConfirmed(false)\r\n props.onConfirmed(null)\r\n }\r\n },\r\n }}\r\n value={user.cPassword}\r\n />\r\n {\r\n user.password && strength > 0 &&\r\n <div style={{\r\n position: 'relative',\r\n width: '100%',\r\n margin: 'auto',\r\n marginBottom: '7px',\r\n padding: '3px 0',\r\n }}>\r\n {strength === 1 ?\r\n translate('$__passwordTooWeak', 1)\r\n : strength === 2 ?\r\n translate('$__weakPassword', 1)\r\n : strength === 3 ?\r\n translate('$__goodPassword', 1)\r\n : strength === 4 ?\r\n translate('$__veryGoodPassword', 1)\r\n : null\r\n }\r\n </div>\r\n }\r\n {\r\n user.password &&\r\n <div style={{\r\n position: 'relative',\r\n width: '100%',\r\n margin: 'auto',\r\n height: '13px',\r\n padding: '3px 0',\r\n border: '1px solid rgba(0,0,0,0.1)'\r\n }}>\r\n {strength >= 0 &&\r\n <div style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(20% - 6px)',\r\n height: '5px',\r\n backgroundColor: 'red',\r\n margin: '0 3px'\r\n }} />\r\n }\r\n {strength >= 1 &&\r\n <div style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(20% - 6px)',\r\n height: '5px',\r\n backgroundColor: 'rgb(129,153,179)',\r\n margin: '0 3px'\r\n }} />\r\n }\r\n {strength >= 2 &&\r\n <div style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(20% - 6px)',\r\n height: '5px',\r\n backgroundColor: 'rgb(95,151,254)',\r\n margin: '0 3px'\r\n }} />\r\n }\r\n {strength >= 3 &&\r\n <div style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(20% - 6px)',\r\n height: '5px',\r\n backgroundColor: 'rgb(42,66,255)',\r\n margin: '0 3px'\r\n }} />\r\n }\r\n {strength === 4 &&\r\n <div style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(20% - 6px)',\r\n height: '5px',\r\n backgroundColor: 'rgb(38,165,45)',\r\n margin: '0 3px'\r\n }} />\r\n }\r\n </div>\r\n }\r\n </React.Fragment>\r\n );\r\n}","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst headerStyle = theme => ({\r\n btClose: {\r\n position: 'relative',\r\n zIndex: theme.zIndex.drawer + 1,\r\n right: '0',\r\n top: '-64px',\r\n backgroundColor: '#FFFFFF',\r\n display: 'flex',\r\n },\r\n image: {\r\n width: '100%',\r\n backgroundColor: 'rgb(0,88,0)',\r\n paddingTop: '45%'\r\n },\r\n data: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto',\r\n marginTop: '10px',\r\n padding: '10px'\r\n },\r\n switch: {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n color: customApp('medium')\r\n }\r\n});\r\n\r\nexport default headerStyle;\r\n","//CORE\r\nimport React from \"react\"\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\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport Password from \"components/Password\"\r\nimport Switch from \"components/Switch\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Users.js\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\nimport {\r\n customApp,\r\n appAlert,\r\n translate,\r\n getAppAccess\r\n} from \"functions/\"\r\nimport { saveAccess } from \"functions/users.js\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { sideModule, session, functions, db } = reduxStore.getState()\r\n const { socket } = functions\r\n const { data } = sideModule\r\n const [iniData] = React.useState(data)\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [newPass, setNewPass] = React.useState(null)\r\n const [passClear, setPassClear] = React.useState(0)\r\n\r\n const AppAccess = getAppAccess()\r\n\r\n const changeData = (d) => {\r\n setReqSave(true)\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n _access: {\r\n ...sideModule.data._access,\r\n [d.name]: d.value,\r\n }\r\n }\r\n })\r\n return true\r\n }\r\n\r\n const saveAdmin = (admin) => {\r\n let newData = {\r\n _id: data._id,\r\n isAdmin: admin\r\n }\r\n try {\r\n const { socket } = reduxStore.getState().functions\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"save\"\r\n }, newData, response => {\r\n if (response.error) {\r\n console.log(\"saveAdminError\", response.error)\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n GlobalData: {\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n }\r\n })\r\n }\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n const close = (force) => {\r\n if (!force && reqSave) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n const saveEdit = async (cl) => {\r\n setReqSave(false)\r\n const reqSave = await saveAccess(props)\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__userDataSaved', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n saveAdmin(!data._access.admin ? true : null)\r\n if (cl)\r\n close(true)\r\n }\r\n }\r\n\r\n const inviteUser = async () => {\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"accessSendInvite\"\r\n }, {\r\n _id: reduxStore.getState().sideModule.data._id,\r\n name: reduxStore.getState().sideModule.data.name,\r\n email: reduxStore.getState().sideModule.data.email\r\n }, () => {\r\n appAlert({\r\n message: translate('$__invitedEmailSended', 1),\r\n variant: 'success',\r\n persist: false,\r\n horizontal: 'center',\r\n })\r\n })\r\n }\r\n const savePassword = async () => {\r\n try {\r\n const res = await api.post('/user/new-password', {\r\n userId: data._id,\r\n password: newPass,\r\n })\r\n if (res) {\r\n setNewPass(null)\r\n appAlert({\r\n message: translate('$__passwordChanged', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n } catch (err) {\r\n appAlert({\r\n message: `${translate('$__invalidRequest', 1)} | ${translate('$__contactSupport', 1)}`,\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n setPassClear(passClear + 1)\r\n }\r\n\r\n let subscriptionPlan = db.plans[0]\r\n if (\r\n session\r\n && session.GlobalData\r\n && String(session.GlobalData.plan)\r\n && db.plans.filter(a => a.value === session.GlobalData.plan).length > 0\r\n && db.plans.filter(a => a.value === session.GlobalData.plan)[0].settings\r\n ) {\r\n subscriptionPlan = db.plans.filter(a => a.value === session.GlobalData.plan)[0]\r\n }\r\n\r\n let adminLimit = 1\r\n if (subscriptionPlan && subscriptionPlan.settings && subscriptionPlan.settings.admins)\r\n adminLimit = parseInt(subscriptionPlan.settings.admins)\r\n\r\n if (session && session.GlobalData && session.GlobalData.customAdmins)\r\n adminLimit = parseInt(session.GlobalData.customAdmins)\r\n\r\n let adminUsers = Object.keys(db.users).filter(uid =>\r\n db.users[uid]\r\n && uid !== data._id\r\n && db.users[uid]._access\r\n && db.users[uid]._access.admin\r\n && (\r\n !db.users[uid]._parent\r\n || (\r\n db.users[uid]._parent\r\n && db.users[db.users[uid]._parent]\r\n && !db.users[db.users[uid]._parent].independentAccount\r\n )\r\n )\r\n ).length || 0\r\n\r\n if ((data._access && data._access.owner && session._id !== data._id) || session._id === data._id)\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => saveEdit() : null}\r\n saveClose={reqSave ? () => saveEdit(true) : null}\r\n close={() => close(true)}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n padding: '15px',\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n }}\r\n >\r\n <Password onConfirmed={(v) => { setNewPass(v) }} clear={passClear} />\r\n </div>\r\n {newPass &&\r\n <div\r\n style={{\r\n padding: '7px 15px',\r\n margin: 'auto',\r\n cursor: 'pointer',\r\n backgroundColor: 'green',\r\n marginTop: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '7px'\r\n }}\r\n onClick={() => {\r\n savePassword()\r\n }}\r\n >\r\n <IconButton\r\n icon=\"save\"\r\n text={translate(\"$__save\", '*')}\r\n title={!translate(\"$__save\", '*')}\r\n iconColor={customApp('lightText')}\r\n textColor={customApp('lightText')}\r\n\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => saveEdit() : null}\r\n saveClose={reqSave ? () => saveEdit(true) : null}\r\n close={() => close(true)}\r\n />\r\n <div className={classes.data}>\r\n <fieldset>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.enabled ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'enabled',\r\n value: data._access && data._access.enabled ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__permitPlataformAccess', 1)}\r\n </div>\r\n <div className={classes.accessDescription}>\r\n <i>{translate('$__userAccess_PlataformAccessDescription', 1)}</i>\r\n </div>\r\n </fieldset>\r\n {data._access && data._access === 'owner' ?\r\n <fieldset>\r\n <div className={classes.accessDescription}>\r\n <i> {translate('$__youAreAccountOwner', 1)}</i>\r\n </div>\r\n </fieldset>\r\n : (adminUsers < adminLimit || (data && data._access && data._access.admin)) ?\r\n <React.Fragment>\r\n <fieldset\r\n style={{\r\n // position: \"relative\",\r\n // padding: 7,\r\n // border: \"solid 1px rgba(0,0,0,0.5)\",\r\n display: \"flex\"\r\n }}\r\n >\r\n <div style={{\r\n // backgroundColor: \"rgba(0,0,0,0.1)\",\r\n padding: 7,\r\n width: \"calc(50% - 4px)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n cursor: \"pointer\",\r\n backgroundColor: data && data._access && data._access.admin ? \"rgba(0,0,0,0.07)\" : customApp(\"color\"),\r\n color: data && data._access && data._access.admin ? \"gray\" : \"#FFFFFF\"\r\n }}>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n onClick={() => {\r\n changeData({\r\n name: 'admin',\r\n value: false\r\n })\r\n }}\r\n >\r\n <Icon\r\n icon={\"supervised_user_circle\"}\r\n size={\"33px\"}\r\n color={data && data._access && data._access.admin ? null : \"#FFFFFF\"}\r\n />\r\n {translate(\"$__guest\")}\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n padding: 7,\r\n marginLeft: 7,\r\n width: \"calc(50% - 4px)\",\r\n cursor: \"pointer\",\r\n backgroundColor: data && data._access && data._access.admin ? customApp(\"color\") : \"rgba(0,0,0,0.07)\",\r\n color: data && data._access && data._access.admin ? \"#FFFFFF\" : \"gray\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n\r\n }}\r\n onClick={() => {\r\n changeData({\r\n name: 'admin',\r\n value: true\r\n })\r\n }}\r\n >\r\n <Icon\r\n icon={\"supervisor_account\"}\r\n size={\"33px\"}\r\n color={data && data._access && data._access.admin ? \"#FFFFFF\" : null}\r\n\r\n />\r\n {translate(\"$__supervisorAccount\")}\r\n </div>\r\n </div>\r\n </fieldset>\r\n <fieldset>\r\n <div className={classes.accessDescription}>\r\n <i>{translate(data && data._access && data._access.admin ? '$__adminAccess_PlataformDescription' : '$__guestAccess_PlataformDescription', 1)}</i>\r\n </div>\r\n </fieldset>\r\n </React.Fragment>\r\n :\r\n <React.Fragment>\r\n <fieldset>\r\n <legend>{translate(\"$__adminLimitReached\")}</legend>\r\n <div className={classes.accessDescription}>\r\n <i>{translate('$__adminLimitReachedDescription', 1)}</i>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n marginTop: 7,\r\n color: \"red\",\r\n fontWeight: \"bolder\"\r\n }}>{translate(\"$__usedUsers\", \"*\")} {adminUsers} {translate(\"$__of\", \"*\")} {adminLimit}<span style={{ marginLeft: 15, color: \"red\", fontSize: 11, cursor: \"pointer\" }} onClick={() => {\r\n history.push(\"acc#tab/subscriptionUpgrade\")\r\n }}>{translate(\"$__upgradeSubscription\")}</span>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </React.Fragment>\r\n }\r\n {data._access && data._access.enabled && data._access.admin &&\r\n <React.Fragment>\r\n <React.Fragment>\r\n {data._token &&\r\n < fieldset style={{ backgroundColor: 'rgba(255,0,0,0.1)' }}>\r\n <i>{translate('$__unregisteredUserAlert', 1)}</i>\r\n <IconButton text={translate(\"$__sendInviteEmail\", 1)} icon=\"contact_mail\"\r\n onClick={() => {\r\n inviteUser()\r\n }}\r\n />\r\n </fieldset>\r\n }\r\n {data._token && data._token._id &&\r\n <fieldset style={{ backgroundColor: 'rgba(255,0,0,0.1)' }}>\r\n <i>{translate('$__urlToActivate', 1)}</i>\r\n <input\r\n type=\"text\"\r\n value={`${process.env.REACT_APP_PROD === \"true\" ? 'https://software.machen.ai' : 'http://localhost:3000'}/activate?token=${data._token._id}`}\r\n onClick={(e) => {\r\n e.target.select()\r\n }}\r\n onChange={(e) => {\r\n console.log('a')\r\n }}\r\n />\r\n </fieldset>\r\n }\r\n </React.Fragment>\r\n <fieldset>\r\n <legend>\r\n <Switch\r\n checked={data._access && data._access.user ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'user',\r\n value: data._access && data._access.user ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__users', 1)}\r\n </legend>\r\n {!data._access || (data._access && (!data._access.user || data._access.user === false)) ?\r\n <div className={classes.accessDescription}>\r\n <i>{translate('$__userAccess_UserAccessDescription', 1)}</i>\r\n </div>\r\n :\r\n <React.Fragment>\r\n {!data._access.userAdmin &&\r\n <React.Fragment>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && (data._access.userRead) ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'userRead',\r\n value: data._access && data._access.userRead ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__read', 1)}\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.userInteract ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'userInteract',\r\n value: data._access && data._access.userInteract ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__interact', 1)}\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.userEdit ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'userEdit',\r\n value: data._access && data._access.userEdit ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__edit', 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.userAdmin ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'userAdmin',\r\n value: data._access && data._access.userAdmin ? false : true\r\n })\r\n }}\r\n name=\"checkeduserAdmin\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__admin', 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n </fieldset>\r\n\r\n <fieldset>\r\n <legend>\r\n <Switch\r\n checked={data._access && data._access.plan ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'plan',\r\n value: data._access && data._access.plan ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__plan', 1)}\r\n </legend>\r\n {!data._access || (data._access && (!data._access.plan || data._access.plan === false)) ?\r\n <div className={classes.accessDescription}>\r\n <i>{translate('$__userAccess_StrategyAndPlansAccessDescription')}</i>\r\n </div>\r\n :\r\n <React.Fragment>\r\n {!data._access.planAdmin &&\r\n <React.Fragment>\r\n\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.planRead ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'planRead',\r\n value: data._access && data._access.planRead ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__read', 1)}\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.planEdit ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'planEdit',\r\n value: data._access && data._access.planEdit ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__edit', 1)}\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.createTemplate ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'createTemplate',\r\n value: data._access && data._access.createTemplate ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__createTemplate', 1)}\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.planModerate ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'planModerate',\r\n value: data._access && data._access.planModerate ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__moderate', 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.planAdmin ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'planAdmin',\r\n value: data._access && data._access.planAdmin ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__admin', 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n </fieldset>\r\n\r\n {AppAccess && AppAccess.master && data._isAdmin ?\r\n <fieldset>\r\n <legend>\r\n <Switch\r\n checked={data._access && data._access.feed ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'feed',\r\n value: data._access && data._access.feed ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__feed', 1)}\r\n </legend>\r\n {!data._access || (data._access && (!data._access.feed || data._access.feed === false)) ?\r\n <div className={classes.accessDescription}>\r\n <i>{translate('$__feedAccess_StrategyAndPlansAccessDescription')}</i>\r\n </div>\r\n :\r\n <React.Fragment>\r\n {!data._access.feedAdmin &&\r\n <React.Fragment>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.feedEdit ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'feedEdit',\r\n value: data._access && data._access.feedEdit ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__edit', 1)}\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.feedModerate ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'feedModerate',\r\n value: data._access && data._access.feedModerate ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__moderate', 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data._access && data._access.feedAdmin ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'feedAdmin',\r\n value: data._access && data._access.feedAdmin ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__admin', 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n </fieldset>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {AppAccess && AppAccess.masterAdmin ?\r\n <React.Fragment>\r\n <fieldset>\r\n <legend style={{\r\n color: \"red\"\r\n }}>\r\n <Switch\r\n checked={data._access && data._access.masterAdmin ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'masterAdmin',\r\n value: data._access && data._access.masterAdmin ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__accountAdministrator', 1)}\r\n </legend>\r\n <div className={classes.accessDescription}>\r\n <i>{translate('$__accountAdministratorDescription')}</i>\r\n </div>\r\n </fieldset>\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {\r\n AppAccess\r\n && AppAccess.masterAdmin\r\n && session\r\n && (\r\n session.email.indexOf(\"@sonne.global\") > -1\r\n ||\r\n session.email.indexOf(\"@machen.ai\") > -1\r\n )\r\n &&\r\n (\r\n data.email.indexOf(\"@sonne.global\") > -1\r\n ||\r\n data.email.indexOf(\"@machen.ai\") > -1\r\n ) ?\r\n <React.Fragment>\r\n <fieldset>\r\n <legend style={{\r\n color: \"red\"\r\n }}>\r\n <Switch\r\n checked={data._access && data._access.machenAdmin ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'machenAdmin',\r\n value: data._access && data._access.machenAdmin ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__machenAdministrator', 1)}\r\n </legend>\r\n <div className={classes.accessDescription}>\r\n <i>{translate('$__machenAdministratorDescription')}</i>\r\n </div>\r\n </fieldset>\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n\r\n </React.Fragment>\r\n }\r\n {iniData && iniData._access && iniData._access.admin && data && data._access && !data._access.admin ?\r\n <React.Fragment>\r\n <div style={{ color: \"red\", fontSize: 12 }}>\r\n Ao remover a permissão de administrador do usuário, o mesmo perderá acesso à todas as atividades que administra atualmente e passará a ter acesso restrito às atividades da plataforma.\r\n </div>\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React, { useEffect } from \"react\";\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport TextField from \"components/TextField\";\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Users\";\r\n\r\n//FUNCTIONS\r\nimport apims from \"apims/\";\r\n\r\nimport {\r\n customApp,\r\n appAlert,\r\n translate,\r\n} from \"functions/\";\r\n\r\nfunction Component(props) {\r\n const [reqSave] = React.useState(false)\r\n const [tokenData, setTokenData] = React.useState({\r\n image: null,\r\n status: false,\r\n })\r\n const [token, setToken] = React.useState(null)\r\n\r\n useEffect(() => {\r\n ini()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const ini = async () => {\r\n const res = await apims.post('/M_User_TwoFactor', {\r\n action: 'has',\r\n })\r\n if (res && res.data && res.data.result) {\r\n setTokenData({\r\n ...tokenData,\r\n ...res.data.result,\r\n status: true,\r\n })\r\n } else {\r\n const newToken = await apims.post('/M_User_TwoFactor', {\r\n action: 'create',\r\n })\r\n if (newToken) {\r\n setTokenData({\r\n ...tokenData,\r\n ...newToken.data.result,\r\n status: false,\r\n })\r\n }\r\n }\r\n }\r\n\r\n const verify = async () => {\r\n const res = await apims.post('/M_User_TwoFactor', {\r\n action: 'verify',\r\n code: token\r\n })\r\n if (res && res.data && res.data.result) {\r\n setTokenData({\r\n ...tokenData,\r\n status: true\r\n })\r\n } else {\r\n appAlert({\r\n message: translate('$__invalidToken', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n })\r\n setTokenData({\r\n ...tokenData,\r\n status: false\r\n })\r\n }\r\n setToken(null)\r\n }\r\n\r\n const disableToken = async () => {\r\n const res = await apims.post('/M_User_TwoFactor', {\r\n action: 'disable',\r\n code: token\r\n })\r\n if (res && res.data && res.data.result) {\r\n setTokenData({\r\n image: null,\r\n status: false,\r\n })\r\n ini()\r\n } else {\r\n appAlert({\r\n message: translate('$__invalidToken', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n })\r\n }\r\n setToken(null)\r\n }\r\n\r\n const close = () => {\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n close={() => close(true)}\r\n />\r\n {!tokenData.status ?\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n padding: '15px',\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n }}\r\n >\r\n {(tokenData.image) &&\r\n <img alt=\"MACHEN_IMAGE\" src={tokenData.image} />\r\n }\r\n\r\n </div>\r\n <div style={{ textAlign: 'left' }}>\r\n <p>{translate('$__tokenTip_1')}</p>\r\n <p>{translate('$__tokenTip_2')}</p>\r\n <ul>\r\n <li>{translate('$__tokenTip_3')}</li>\r\n <li>{translate('$__tokenTip_4')}</li>\r\n <li>{translate('$__tokenTip_5')}</li>\r\n <li>{translate('$__tokenTip_6')}</li>\r\n <li>{translate('$__tokenTip_7')}</li>\r\n </ul>\r\n </div>\r\n <fieldset>\r\n <legend>{translate('$__token', 1)}</legend>\r\n\r\n <TextField\r\n label={translate('$__token', 1)}\r\n variant={'standard'}\r\n name={'token'}\r\n type={'password'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n value: token,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon>lock_outline</Icon>\r\n </InputAdornment>\r\n ),\r\n autoComplete: 'new-token',\r\n onChange: e => {\r\n setToken(e.target.value)\r\n },\r\n }}\r\n placeholder={translate(\"$__token\", '*')}\r\n autoComplete={'new-token'}\r\n value={token}\r\n max={6}\r\n />\r\n </fieldset>\r\n {(!tokenData.status && token && token.length === 6) &&\r\n <div\r\n style={{\r\n padding: '7px 15px',\r\n margin: 'auto',\r\n cursor: 'pointer',\r\n backgroundColor: 'green',\r\n marginTop: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '7px'\r\n }}\r\n onClick={() => {\r\n verify()\r\n }}\r\n >\r\n <IconButton\r\n icon=\"check\"\r\n text={translate(\"$__activeToken\", '*')}\r\n title={!translate(\"$__activeToken\", '*')}\r\n iconColor={customApp('lightText')}\r\n textColor={customApp('lightText')}\r\n />\r\n </div>\r\n }\r\n </div>\r\n :\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n padding: '15px',\r\n }}>\r\n <div style={{ textAlign: 'left' }}>\r\n <p>{translate('$__disableTokenTip_1')}</p>\r\n <p>{translate('$__disableTokenTip_2')}</p>\r\n <ul>\r\n <li>{translate('$__disableTokenTip_3')}</li>\r\n <li>{translate('$__disableTokenTip_4')}</li>\r\n <li>{translate('$__disableTokenTip_5')}</li>\r\n <li>{translate('$__disableTokenTip_6')}</li>\r\n <li>{translate('$__disableTokenTip_7')}</li>\r\n </ul>\r\n </div>\r\n <TextField\r\n label={translate('$__token', 1)}\r\n variant={'standard'}\r\n name={'token'}\r\n type={'password'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n value: token,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon>lock_outline</Icon>\r\n </InputAdornment>\r\n ),\r\n autoComplete: 'new-password',\r\n onChange: e => {\r\n setToken(e.target.value)\r\n },\r\n }}\r\n autoComplete={'new-password'}\r\n value={token}\r\n max={6}\r\n />\r\n <div\r\n style={{\r\n display: 'flex',\r\n padding: '7px 15px',\r\n margin: 'auto',\r\n cursor: 'pointer',\r\n backgroundColor: 'red',\r\n marginTop: '15px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '7px'\r\n }}\r\n onClick={() => {\r\n disableToken()\r\n }}\r\n >\r\n <IconButton\r\n icon=\"toggle_on\"\r\n text={translate(\"$__disableToken\", '*')}\r\n title={translate(\"$__disableToken\", '*')}\r\n iconColor={customApp('lightText')}\r\n textColor={customApp('lightText')}\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React, { useState } from \"react\"\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 Autocomplete from \"components/AutoComplete\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField\"\r\n\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Users.js\"\r\n\r\nimport {\r\n customApp,\r\n appAlert,\r\n translate,\r\n getAppAccess\r\n} from \"functions/\"\r\n\r\nimport { save } from \"../../functions/users.js\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { sideModule, db } = reduxStore.getState()\r\n const [data, setData] = React.useState(sideModule.data)\r\n const [iniData] = useState(sideModule.data)\r\n const [language, setLanguage] = React.useState(sideModule.data && sideModule.data.language ? sideModule.data.language : 'pt-BR')\r\n\r\n const reqSave = JSON.stringify(iniData) !== JSON.stringify(data)\r\n\r\n const changeData = (d) => {\r\n let newData = {\r\n ...data,\r\n [d.name]: d.value,\r\n }\r\n\r\n if (d.name === \"language\")\r\n setLanguage(d.value)\r\n\r\n if (!d.value && newData[d.name])\r\n delete newData[d.name]\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: newData\r\n })\r\n\r\n setData(newData)\r\n }\r\n\r\n const close = (force = false) => {\r\n if (reqSave && !force) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n\r\n const saveUser = async (cl) => {\r\n const reqSave = await save(props)\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__userDataSaved', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n\r\n if (data.language !== language)\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n language: language\r\n })\r\n\r\n if (cl) {\r\n close(true)\r\n if (data.language !== language)\r\n setTimeout(() => {\r\n window.location.reload()\r\n }, 1500)\r\n }\r\n }\r\n }\r\n\r\n console.log(iniData, data)\r\n\r\n const AppAccess = getAppAccess()\r\n let permission = false\r\n if ((AppAccess\r\n &&\r\n (\r\n AppAccess.user\r\n && (\r\n AppAccess.userAdmin\r\n || AppAccess.userEdit\r\n )\r\n )\r\n ))\r\n permission = true\r\n\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => saveUser() : null}\r\n saveClose={reqSave ? () => saveUser(true) : null}\r\n close={() => close(true)}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n padding: '15px',\r\n }}>\r\n <fieldset>\r\n <legend>{translate('$__language', 1)}</legend>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.languages}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"status\"\r\n disableClearable\r\n value={\r\n data\r\n && data.language\r\n && db.languages\r\n ? db.languages.filter(a =>\r\n String(a.value) === String(data.language)\r\n )[0]\r\n : db.languages[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__language\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.language\r\n && db.languages\r\n ? db.languages.filter(a =>\r\n String(a.value) === String(data.language)\r\n )[0]\r\n : db.languages[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: \"language\", value: v[\"value\"] })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n <fieldset>\r\n <legend>{translate('$__sessionDuration', 1)}</legend>\r\n <div>{translate('$__sessionDurationDescription', 1)}</div>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.expiresIn}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"status\"\r\n disableClearable\r\n value={\r\n data\r\n && data.expiresIn\r\n && db.expiresIn\r\n ? db.expiresIn.filter(a =>\r\n String(a.value) === String(data.expiresIn)\r\n )[0]\r\n : db.expiresIn.filter(a =>\r\n !a.value\r\n )[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__expiresIn\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.expiresIn\r\n && db.expiresIn\r\n ? db.expiresIn.filter(a =>\r\n String(a.value) === String(data.expiresIn)\r\n )[0]\r\n : db.expiresIn.filter(a =>\r\n !a.value\r\n )[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: \"expiresIn\", value: v[\"value\"] })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n {reduxStore.getState().session.isResale && data.type !== \"user\" ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n {reduxStore.getState().db.users[data._id].independentAccount ?\r\n <div\r\n style={{ color: \"gray\", fontSize: 11 }}\r\n >\r\n {translate(\"$__thisIsAIndependentAccountExplain\", 1)}\r\n </div>\r\n :\r\n <React.Fragment>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.independentAccount\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n if (permission)\r\n changeData({\r\n name: \"independentAccount\",\r\n value: data.independentAccount ? false : true\r\n })\r\n }}\r\n name=\"independentAccount\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__turnIntoIndependentAccount\", 1)}\r\n </div>\r\n <div\r\n style={{ color: \"gray\", fontSize: 11 }}\r\n >\r\n {translate(\"$__turnIntoIndependentAccountExplain\", 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>}\r\n </div>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","import React, { useState, useMemo, useCallback } from \"react\"\r\nimport moment from \"moment\"\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 Autocomplete from \"components/AutoComplete\"\r\nimport DataPicker from \"components/DataPicker\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField\"\r\n\r\n// @MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n// STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Users.js\"\r\n\r\n// FUNCTIONS\r\nimport { customApp, appAlert, translate, getAppAccess } from \"functions/\"\r\nimport { save } from \"../../functions/users.js\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { sideModule, db } = reduxStore.getState()\r\n\r\n // Define valores padrão para as áreas da plataforma\r\n const defaultFeatures = {\r\n dashboard: true,\r\n brightAndConnected: true,\r\n StrategyAndPlans: true,\r\n myTasks: true,\r\n library: true,\r\n tags: true,\r\n chat: true,\r\n calendar: true\r\n }\r\n\r\n // Mescla os dados iniciais com os defaults (caso as features não estejam definidas)\r\n const initialData = {\r\n ...sideModule.data,\r\n features: { ...defaultFeatures, ...(sideModule.data?.features || {}) }\r\n }\r\n\r\n const [data, setData] = useState(initialData)\r\n const [iniData, setIniData] = useState(initialData)\r\n\r\n // Verifica se houve alterações\r\n const reqSave = useMemo(\r\n () => JSON.stringify(data) !== JSON.stringify(iniData),\r\n [data, iniData]\r\n )\r\n\r\n // Atualiza os dados e também envia para o redux\r\n const changeData = useCallback(\r\n (d) => {\r\n const newData = { ...data, [d.name]: d.value }\r\n if (!d.value && newData[d.name]) delete newData[d.name]\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: { ...sideModule.data, [d.name]: d.value }\r\n })\r\n setData(newData)\r\n },\r\n [data, sideModule, props]\r\n )\r\n\r\n const close = useCallback(\r\n (force = false) => {\r\n if (reqSave && !force) {\r\n appAlert({\r\n message: translate(\"$__confirmCloseWithUnsavedData\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n },\r\n [reqSave, props]\r\n )\r\n\r\n const saveUser = useCallback(\r\n async (cl) => {\r\n const req = await save(props)\r\n if (req) {\r\n appAlert({\r\n message: translate(\"$__userDataSaved\", 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: null\r\n })\r\n setIniData(data)\r\n if (cl) close(true)\r\n }\r\n },\r\n [data, props, close]\r\n )\r\n\r\n const AppAccess = getAppAccess()\r\n const permission =\r\n AppAccess &&\r\n AppAccess.user &&\r\n (AppAccess.userAdmin || AppAccess.userEdit)\r\n\r\n // Lista de áreas configuráveis da plataforma\r\n const configurableAreas = useMemo(\r\n () => [\r\n { key: \"dashboard\", label: translate(\"$__dashboard\", 1) },\r\n { key: \"brightAndConnected\", label: translate(\"$__brightAndConnected\", 1) },\r\n { key: \"StrategyAndPlans\", label: translate(\"$__strategyAndPlans\", 1) },\r\n { key: \"myTasks\", label: translate(\"$__myTasks\", 1) },\r\n { key: \"library\", label: translate(\"$__library\", 1) },\r\n { key: \"tags\", label: translate(\"$__tags\", 1) },\r\n { key: \"chat\", label: translate(\"$__chat\", 1) },\r\n { key: \"calendar\", label: translate(\"$__calendar\", 1) }\r\n ],\r\n []\r\n )\r\n\r\n // Alterna (toggle) cada área da plataforma\r\n const toggleFeature = useCallback(\r\n (key) => {\r\n const current = data.features || {}\r\n const newFeatures = { ...current, [key]: !current[key] }\r\n console.log(newFeatures)\r\n changeData({ name: \"features\", value: newFeatures })\r\n },\r\n [data, changeData]\r\n )\r\n\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => saveUser() : null}\r\n saveClose={reqSave ? () => saveUser(true) : null}\r\n close={() => close(true)}\r\n />\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n padding: \"15px\"\r\n }}\r\n >\r\n {/* Limite do número de usuários */}\r\n <fieldset>\r\n <legend>{translate(\"$__limitNumberOfUsers\", 1)}</legend>\r\n <div>\r\n {translate(\"$__limitAdminUsersExplain\", 1)}\r\n <TextField\r\n label={translate(\"$__numberOfUsers\")}\r\n variant=\"outlined\"\r\n name=\"customAdmins\"\r\n type=\"number\"\r\n min={0}\r\n max={99999}\r\n InputLabelProps={{ shrink: true }}\r\n InputProps={{\r\n type: \"number\",\r\n onChange: (e) => {\r\n const val = Number(e.target.value)\r\n changeData({ name: \"customAdmins\", value: val === 0 ? null : val })\r\n }\r\n }}\r\n value={data.customAdmins || 0}\r\n />\r\n </div>\r\n </fieldset>\r\n\r\n {/* Configuração de Conta Independente */}\r\n {reduxStore.getState().session.isResale && (\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n {reduxStore.getState().db.users[data._id].independentAccount ? (\r\n <>\r\n <div style={{ color: \"gray\", fontSize: 11, width: \"100%\" }}>\r\n {translate(\"$__thisIsAIndependentAccountExplain\", 1)}\r\n </div>\r\n <ul\r\n style={{\r\n color: \"gray\",\r\n fontSize: 12,\r\n width: \"100%\",\r\n textAlign: \"initial\"\r\n }}\r\n >\r\n {data.plan && (\r\n <li>\r\n {translate(\"$__signaturePlan\", 1)}:{\" \"}\r\n {translate(\r\n db.plans.find(\r\n (a) => String(a.value) === String(data.plan)\r\n ).label,\r\n 1\r\n )}\r\n </li>\r\n )}\r\n {data.expireAccountDate && (\r\n <li>\r\n {translate(\"$__expireAccountDate\", 1)}:{\" \"}\r\n {moment(data.expireAccountDate * 1000).format(\"DD/MM/YYYY\")}\r\n </li>\r\n )}\r\n </ul>\r\n </>\r\n ) : (\r\n <>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={!!data.independentAccount}\r\n onChange={() => {\r\n if (permission)\r\n changeData({\r\n name: \"independentAccount\",\r\n value: !data.independentAccount\r\n })\r\n }}\r\n name=\"independentAccount\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__turnIntoIndependentAccount\", 1)}\r\n </div>\r\n <div style={{ color: \"gray\", fontSize: 11 }}>\r\n {translate(\"$__turnIntoIndependentAccountExplain\", 1)}\r\n </div>\r\n </>\r\n )}\r\n </fieldset>\r\n )}\r\n\r\n {/* Seleção do Plano (caso aplicável) */}\r\n {((!iniData.independentAccount && data.plan) || !data.plan) &&\r\n data.independentAccount && (\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <Autocomplete\r\n id=\"plan-autocomplete\"\r\n options={db.plans}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"plans\"\r\n disableClearable\r\n value={\r\n data && data.plan && db.plans\r\n ? db.plans.find(\r\n (a) => String(a.value) === String(data.plan)\r\n ) || db.plans[0]\r\n : db.plans[0]\r\n }\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n label={translate(\"$__demoPlanSignature\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n />\r\n )}\r\n onChange={(e, v) => {\r\n if (permission)\r\n changeData({ name: \"plan\", value: v.value })\r\n }}\r\n />\r\n </fieldset>\r\n )}\r\n\r\n {/* Data para Expiração de Conta (Data Picker) */}\r\n {data.independentAccount &&\r\n data.plan &&\r\n data.plan !== \"p0\" &&\r\n !iniData.expireAccountDate && (\r\n <DataPicker\r\n placeholder={translate(\"$__dueDate\")}\r\n clearButtonPosition=\"flex-end\"\r\n onChangeStartDate={(d) => {\r\n changeData({\r\n name: \"expireAccountDate\",\r\n value: String(moment(d).unix(\"X\"))\r\n })\r\n }}\r\n maxDate={new Date(moment().add(\"days\", 30).unix(\"X\") * 1000)}\r\n startDate={\r\n data.expireAccountDate\r\n ? new Date(data.expireAccountDate * 1000)\r\n : null\r\n }\r\n />\r\n )}\r\n\r\n {/* NOVA CONFIGURAÇÃO: Áreas da Plataforma */}\r\n <fieldset style={{ marginTop: \"15px\" }}>\r\n <legend>{translate(\"$__platformFeatures\", 1)}</legend>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n {configurableAreas.map((area) => (\r\n <div\r\n key={area.key}\r\n style={{\r\n margin: \"5px\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <Switch\r\n checked={\r\n data.features ? data.features[area.key] : defaultFeatures[area.key]\r\n }\r\n onChange={() => toggleFeature(area.key)}\r\n name={area.key}\r\n disabled={!permission}\r\n />\r\n <span style={{ marginLeft: \"5px\" }}>{area.label}</span>\r\n </div>\r\n ))}\r\n </div>\r\n </fieldset>\r\n\r\n {/* NOVA CONFIGURAÇÃO: Data de Expiração da Plataforma */}\r\n {/* <fieldset style={{ marginTop: \"15px\" }}>\r\n <legend>{translate(\"$__platformExpiration\", 1)}</legend>\r\n <TextField\r\n label={translate(\"$__platformExpiration\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n type=\"date\"\r\n InputLabelProps={{ shrink: true }}\r\n fullWidth\r\n value={data.platformExpiration || \"\"}\r\n onChange={(e) =>\r\n changeData({\r\n name: \"platformExpiration\",\r\n value: e.target.value\r\n })\r\n }\r\n />\r\n </fieldset> */}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = () => ({})\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))\r\n","//CORE\r\nimport React from \"react\";\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\n//COMPONENTS\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Users\";\r\n\r\nimport {\r\n appAlert,\r\n translate,\r\n} from \"functions/\";\r\n\r\nimport GooglePlayQR from \"assets/img/googlePlay-ptBR.png\"\r\nimport AppleStoreQR from \"assets/img/appleStore-ptBR.png\"\r\n\r\nfunction Component(props) {\r\n const [reqSave] = React.useState(false)\r\n\r\n\r\n\r\n const close = () => {\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n close={() => close(true)}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n padding: '15px',\r\n }}>\r\n <div style={{ textAlign: 'left' }}>\r\n <p>{translate('$__mobileTokenTip_1')}</p>\r\n <ul>\r\n <li>{translate('$__mobileTokenTip_2')}</li>\r\n <li>{translate('$__mobileTokenTip_3')}</li>\r\n <li>{translate('$__mobileTokenTip_4')}</li>\r\n </ul>\r\n </div>\r\n <img alt=\"MACHEN_IMAGE\" src={AppleStoreQR} style={{ width: \"52%\" }} />\r\n <img alt=\"MACHEN_IMAGE\" src={GooglePlayQR} style={{ width: \"52%\", marginTop: \"33px\" }} />\r\n {/* {(!tokenData.status && token && token.length === 6) &&\r\n <div\r\n style={{\r\n display: 'flex',\r\n padding: '7px 15px',\r\n margin: 'auto',\r\n cursor: 'pointer',\r\n backgroundColor: 'green',\r\n marginTop: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '7px'\r\n }}\r\n onClick={() => {\r\n verify()\r\n }}\r\n >\r\n <IconButton\r\n icon=\"check\"\r\n text={translate(\"$__activeToken\", '*')}\r\n title={!translate(\"$__activeToken\", '*')}\r\n iconColor={customApp('lightText')}\r\n textColor={customApp('lightText')}\r\n />\r\n </div>\r\n } */}\r\n </div>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst headerStyle = () => ({\r\n lock: {\r\n position: 'fixed',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n height: '100vh',\r\n zIndex: '3000 !important',\r\n },\r\n backdrop: {\r\n position: 'fixed',\r\n top: '0px',\r\n left: '0px',\r\n right: '440px',\r\n bottom: '0px',\r\n height: '100vh',\r\n backgroundColor: 'rgba(0,0,0,0.7)',\r\n },\r\n module: {\r\n ...defaultFont,\r\n position: `absolute`,\r\n right: `0px`,\r\n top: `0px`,\r\n bottom: `0px`,\r\n // width: `440px`,\r\n minWidth: \"500px\",\r\n width: \"25%\",\r\n zIndex: `1100`,\r\n backgroundColor: `rgba(255,255,255,1)`\r\n },\r\n modulePopup: {\r\n ...defaultFont,\r\n width: '70vw',\r\n position: 'absolute',\r\n zIndex: '1100',\r\n left: 'calc(50% - 35vw)',\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n height: '80vh',\r\n top: 'calc(50% - 40vh)',\r\n boxShadow: '0px 0px 20px rgba(0,0,0,0.2)',\r\n padding: '0px 5px',\r\n border: 'solid 2px #ffffff',\r\n },\r\n moduleExpanded: {\r\n ...defaultFont,\r\n width: '90vw',\r\n position: 'absolute',\r\n zIndex: '1100',\r\n left: 'calc(50% - 45vw)',\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n height: '80vh',\r\n bottom: '0px',\r\n boxShadow: '0px 0px 20px rgba(0,0,0,0.2)',\r\n padding: '0px 5px',\r\n border: 'solid 2px #ffffff',\r\n },\r\n moduleFullScreen: {\r\n ...defaultFont,\r\n width: '100vw',\r\n position: 'absolute',\r\n zIndex: '1100',\r\n left: '0px',\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n height: '100vh',\r\n bottom: '0px',\r\n boxShadow: '0px 0px 20px rgba(0,0,0,0.2)',\r\n padding: '0px 5px',\r\n border: 'solid 2px #ffffff',\r\n },\r\n menu: {\r\n position: `absolute`,\r\n left: `0px`,\r\n width: `45px`,\r\n top: `0px`,\r\n bottom: `0px`,\r\n textAlign: `center`,\r\n },\r\n content: {\r\n position: 'absolute',\r\n top: '80px',\r\n left: '45px',\r\n bottom: '0px',\r\n right: '0px',\r\n padding: '0px',\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n zIndex: 1\r\n },\r\n menuButtons_resume: {\r\n margin: '0px auto 27px auto',\r\n height: '40px'\r\n },\r\n MenuButton: {\r\n margin: 'auto auto',\r\n // padding: '7px',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n MenuButton_arrow: {\r\n position: 'absolute',\r\n right: '-8px',\r\n fontSize: '16px',\r\n transform: 'rotate(180deg)'\r\n },\r\n subTitle: {\r\n position: `absolute`,\r\n left: `45px`,\r\n right: `0px`,\r\n padding: `4px 10px`,\r\n top: `47px`,\r\n backgroundColor: customApp('color'),\r\n color: customApp('light'),\r\n // zIndex: 1\r\n },\r\n});\r\n\r\nexport default headerStyle;\r\n","//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule.js\"\r\n\r\n\r\n//IMPORT MODULES TO CARDS\r\nimport IconButton from '@material-ui/core/IconButton'\r\n\r\n\r\n//@MATERIAL\r\nimport Badge from '@material-ui/core/Badge'\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\"\r\nimport { countNotifications } from \"functions/cards\"\r\n\r\nconst Component = (props) => {\r\n const { classes, sideModule } = props\r\n\r\n let notifications = {}\r\n if (props.count)\r\n notifications = countNotifications(sideModule.id)\r\n\r\n return (\r\n <div\r\n className={classes.MenuButton}\r\n id={`sideModule_buttom_${props.module}`}\r\n >\r\n <IconButton\r\n onClick={() => {\r\n props.openModule(props.module)\r\n }\r\n }\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={props.count && notifications && notifications[props.count] ? notifications[props.count] : null}\r\n color=\"secondary\"\r\n >\r\n <Icon\r\n // disabled={sideModule.activeModule === props.module ? false : true}\r\n icon={props.icon}\r\n size={props.size}\r\n color={sideModule.activeModule === props.module ? customApp('active') : customApp('colorText')}\r\n title={props.title}\r\n />\r\n </Badge>\r\n {sideModule.activeModule === props.module &&\r\n <Icon\r\n className={classes.MenuButton_arrow}\r\n color={sideModule.activeModule === props.module ? customApp('active') : customApp('colorText')}\r\n icon={'play_arrow'}\r\n />\r\n }\r\n </IconButton>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => (\r\n {\r\n timeline: store.timeline && store.sideModule.id && store.timeline[store.sideModule.id] ? store.timeline[store.sideModule.id] : {},\r\n card: store.db.cards && store.db.cards[store.sideModule.id] ? store.db.cards[store.sideModule.id] : {},\r\n sideModule: store.sideModule\r\n }\r\n)\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\n\r\nimport { customApp } from \"functions/\";\r\n\r\nexport default function CustomizedButtons(props) {\r\n const useStyles = makeStyles({\r\n root: {\r\n boxShadow: `0 2px 2px 0px rgba(0,0,0,0.2)`,\r\n textTransform: 'none',\r\n padding: '6px 12px',\r\n border: '1px solid',\r\n lineHeight: 1.5,\r\n backgroundColor: customApp(props.color ? props.color : 'color'),\r\n borderColor: customApp(props.color ? props.color : 'color'),\r\n color: customApp('lightText'),\r\n '&:hover': {\r\n backgroundColor: customApp(props.color ? props.color : 'color', 0.8),\r\n borderColor: customApp(props.color ? props.color : 'color'),\r\n boxShadow: `0 0 0 0.2rem ${customApp(props.color ? props.color : 'color', 0.2)}`,\r\n },\r\n '&:active': {\r\n boxShadow: 'none',\r\n backgroundColor: customApp(props.color ? props.color : 'color'),\r\n borderColor: customApp(props.color ? props.color : 'color'),\r\n },\r\n '&:focus': {\r\n boxShadow: `0 0 0 0.2rem ${customApp(props.color ? props.color : 'color', 0.2)}`,\r\n },\r\n },\r\n });\r\n const classes = useStyles();\r\n\r\n const defaultColors = ['default', 'inherit', 'primary', 'secondary']\r\n if (!props.color || (props.color && defaultColors.indexOf(props.color) === -1)) {\r\n return (\r\n <Button\r\n className={classes.root}\r\n variant=\"contained\"\r\n color={props.color ? props.color : \"primary\"}\r\n style={props.style ? props.style : {}}\r\n onClick={props.onClick ? () => props.onClick() : null}\r\n >\r\n {props.children}\r\n </Button>\r\n );\r\n } else {\r\n return (\r\n <Button\r\n variant={props.variant ? props.variant : \"contained\"}\r\n color={\"primary\"}\r\n style={props.style ? props.style : {}}\r\n onClick={props.onClick ? () => props.onClick() : null}\r\n >\r\n {props.children}\r\n </Button>\r\n );\r\n }\r\n}","//CORE\r\nimport React from \"react\"\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\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport Buttom from \"components/CustomButtons/Custom\"\r\nimport CircularProgress from \"components/Progress/circular\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport TextField from \"components/TextField/\"\r\nimport Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport InputAdornment from '@material-ui/core/InputAdornment'\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, appAlert, deleteNode } from \"functions/\"\r\nimport { getChildrens, deleteCard } from \"functions/cards\"\r\n\r\nimport apims from \"apims\"\r\n\r\nfunction Component(props) {\r\n const { sideModule, db, functions } = reduxStore.getState()\r\n const { socket } = functions\r\n const [migrateComplete, setMigrateComplete] = React.useState(false)\r\n const [Load, setLoading] = React.useState(false)\r\n const [SelectedUser, setSelectedUser] = React.useState(null)\r\n const [childrensCards, setChildrensCards] = React.useState({})\r\n const [countCards, setCountCards] = React.useState(0)\r\n const [findNameUser, setFindNameUser] = React.useState(\"\")\r\n const data = sideModule.data || {}\r\n let countChildrens = 0\r\n\r\n if (data && data.type === \"step\") {\r\n countChildrens = Object.keys(reduxStore.getState().db.cards).filter(card =>\r\n reduxStore.getState().db.cards[card]._parent === data._id\r\n && !reduxStore.getState().db.cards[card].deleted\r\n ).length\r\n }\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n React.useEffect(() => {\r\n if (data.type === 'user') {\r\n loadUserCards()\r\n } else {\r\n setLoading(false)\r\n }\r\n return () => {\r\n\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n iniChildrens()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data._id])\r\n\r\n const iniChildrens = async () => {\r\n let cards = await getChildrens(data._id)\r\n if (cards)\r\n setChildrensCards(cards)\r\n }\r\n\r\n const deleteThis = async () => {\r\n if (countChildrens > 0) {\r\n appAlert({\r\n message: translate(\"$__beforeRemovingYouneedToMoveAllActivitiesInTheColumn\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"center\",\r\n })\r\n return\r\n }\r\n appAlert({\r\n message: translate(\"$__confirmDeleteThis\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n deleteCard(props, { _id: data._id }, false)\r\n deleteNode(props, { _id: data._id }, false)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n if (data.type === 'plan' && window.location.pathname.indexOf(\"sp\") > -1 && hashs.length > 0 && hashs[0] && hashs[0].length === 36)\r\n history.push(`sp`)\r\n }\r\n })\r\n }\r\n\r\n const deleteAll = async () => {\r\n appAlert({\r\n message: translate(\"$__confirmDeleteThisAndAllLinkedsActivies\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n deleteCard(props, { _id: data._id }, false, true)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n if (data.type === 'plan' && window.location.pathname.indexOf(\"sp\") > -1 && hashs.length > 0 && hashs[0] && hashs[0].length === 36)\r\n history.push(`sp`)\r\n }\r\n })\r\n }\r\n\r\n const loadUserCards = async () => {\r\n setLoading(false)\r\n const countChildrens = await apims.post(\"/Card_Count\", { id: data._id, all: true, rel: \"INN\" })\r\n if (countChildrens) {\r\n setLoading(true)\r\n setCountCards(countChildrens.data)\r\n }\r\n\r\n }\r\n\r\n const migrate = async () => {\r\n setLoading(true)\r\n\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"migrate\"\r\n }, {\r\n from: data._id,\r\n fromData: data,\r\n to: SelectedUser,\r\n toData: db.users[SelectedUser]\r\n }, async () => {\r\n setMigrateComplete(true)\r\n let cards = { ...db.cards }\r\n Object.keys(cards).filter(a =>\r\n cards[a]._users && cards[a]._users[data._id]\r\n ).forEach(a => {\r\n if (cards[a]._users && !cards[a]._users[SelectedUser])\r\n cards[a]._users = {\r\n ...cards[a]._users || {},\r\n [SelectedUser]: {\r\n access: cards[a]._users[data._id].access,\r\n _id: SelectedUser\r\n }\r\n }\r\n delete cards[a]._users[data._id]\r\n })\r\n setLoading(true)\r\n })\r\n }\r\n\r\n return (\r\n <div style={{ width: '100%' }}>\r\n <SideModuleCloseAndSave\r\n close={() => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }}\r\n />\r\n {data._id && db.cards[data._id] &&\r\n <React.Fragment>\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__deleteOptions\", 1)}</legend>\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {data.type === \"chatGroup\" ? translate(\"$__deleteThisChatGroup\", 1) : translate(\"$__deleteThisActivity\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteThis() }} >{translate(\"$__delete\", 1)}</Buttom>\r\n </fieldset>\r\n {data.type !== \"step\" && Object.keys(childrensCards).length > 0 &&\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__thisActivityHasOtherLinkedsActivities\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\", color: 'red' }}>\r\n {translate(\"$__deleteAllActiviesLinkedAlert\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteAll() }} >{translate(\"$__deleteAll\", 1)}</Buttom>\r\n </fieldset>\r\n }\r\n </fieldset>\r\n\r\n </React.Fragment>\r\n }\r\n\r\n {/* DELETE CLIENT */}\r\n {data._id && db.users[data._id] &&\r\n (\r\n db.users[data._id].type === 'client' ||\r\n db.users[data._id].type === 'group' ||\r\n db.users[data._id].type === 'sic' ||\r\n db.users[data._id].type === 'unity'\r\n ) &&\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__deleteOptions\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {Object.keys(db.users).filter(a => db.users[a]._parent === data._id).length > 0 ?\r\n translate(`$__delete${db.users[data._id].type}WithUsersDescription`, 1)\r\n :\r\n translate(`$__delete${db.users[data._id].type}NoUsersDescription`, 1)\r\n }\r\n </div>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__deleteThisDescription\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteThis() }} >{translate(\"$__deleteThis\", 1)}</Buttom>\r\n </fieldset>\r\n }\r\n\r\n {/* DELETE USER */}\r\n {data._id && db.users[data._id] &&\r\n db.users[data._id].type !== 'client' &&\r\n db.users[data._id].type !== 'group' &&\r\n db.users[data._id].type !== 'sic' &&\r\n db.users[data._id].type === 'unity' &&\r\n <React.Fragment>\r\n {Load ?\r\n <React.Fragment>\r\n {countCards > 0 && !migrateComplete ?\r\n <React.Fragment>\r\n\r\n <fieldset>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__thisUserHas\", 1)}</legend>\r\n <div style={{\r\n position: \"relative\",\r\n marginTop: \"22px\",\r\n bottom: \"7px\",\r\n width: \"100%\",\r\n fontSize: \"12px\",\r\n color: customApp('mediumText'),\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n textAlign: \"center\"\r\n }}>\r\n {countCards} {translate(\"$__items\")}\r\n <br></br>\r\n {translate(\"$__deleteCountCardsExplain\")}\r\n </div>\r\n </fieldset>\r\n {SelectedUser ?\r\n <fieldset>\r\n <legend>{translate('$__selectedUserToMigrationCards')}</legend>\r\n <div\r\n style={{\r\n cursor: 'pointer',\r\n marginBottom: '7px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }}\r\n onClick={() => {\r\n setSelectedUser(null)\r\n }}\r\n >\r\n <Avatar alt={db.users[SelectedUser].name} src={db.users[SelectedUser].image || null}\r\n style={{ marginRight: '15px' }}\r\n >\r\n {db.users[SelectedUser].name.substr(0, 1)}\r\n </Avatar>\r\n <span>{db.users[SelectedUser].name}</span>\r\n </div>\r\n <Buttom onClick={() => {\r\n appAlert({\r\n message: translate('$__confirmUserTransferData', 1),\r\n autoClose: 50000,\r\n buttons: [\r\n {\r\n shadow: true,\r\n title: translate(\"$__confirm\"),\r\n text: translate(\"$__confirm\"),\r\n color: \"green\",\r\n icon: \"done_all\",\r\n size: \"25px\",\r\n style: { marginLeft: 15 },\r\n onClick: () => {\r\n migrate()\r\n },\r\n },\r\n {\r\n shadow: true,\r\n title: translate(\"$__cancel\"),\r\n text: translate(\"$__cancel\"),\r\n color: \"red\",\r\n icon: \"close\",\r\n size: \"25px\",\r\n style: { marginLeft: 15 },\r\n onClick: () => {\r\n\r\n },\r\n }],\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n })\r\n\r\n }} >{translate(\"$__migrate\", 1)}</Buttom>\r\n </fieldset>\r\n :\r\n <fieldset\r\n style={{ marginTop: 7, marginBottom: 7 }}\r\n >\r\n <legend>{translate('$__chooseAUserToTransferCardsBeforeDeletingUser')}</legend>\r\n <TextField\r\n label={translate('$__search', '*')}\r\n variant={'standard'}\r\n autoFocus\r\n value={findNameUser}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setFindNameUser(e.target.value)\r\n },\r\n }}\r\n />\r\n {Object.keys(db.users)\r\n .filter(a =>\r\n // a === a\r\n a !== data._id\r\n && db.users[a].type === 'user'\r\n && !db.users[a].deleted\r\n && (\r\n (!data._parent\r\n &&\r\n !db.users[a]._parent\r\n )\r\n || (\r\n data._parent\r\n && db.users[a]._parent === data._parent\r\n )\r\n )\r\n && (\r\n !findNameUser || (\r\n findNameUser && db.users[a].name.toLowerCase().indexOf(findNameUser.toLowerCase().trim()) > -1\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n var nameA = db.users[a].name.toLowerCase()\r\n var nameB = db.users[b].name.toLowerCase()\r\n if (nameA < nameB)\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0\r\n })\r\n .map(pr =>\r\n <div\r\n style={{\r\n cursor: 'pointer',\r\n marginBottom: '7px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }}\r\n onClick={() => {\r\n setSelectedUser(pr)\r\n }}\r\n key={pr}\r\n >\r\n <Avatar alt={db.users[pr].name} src={db.users[pr].image || null}\r\n style={{ marginRight: '15px' }}\r\n >\r\n {db.users[pr].name.substr(0, 1)}\r\n </Avatar>\r\n <span>{db.users[pr].name}</span>\r\n </div>\r\n )}\r\n </fieldset>\r\n }\r\n <fieldset style={{ textAlign: \"center\" }} >\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__deactivateThis\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__deactivateWhithoutMigration\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteThis() }} >{translate(\"$__deactivateThis\", 1)}</Buttom>\r\n </fieldset>\r\n </React.Fragment>\r\n :\r\n <fieldset style={{ textAlign: \"center\" }} >\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__deactivateThis\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__deactivateUserDescription\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteThis() }} >{translate(\"$__deactivateThis\", 1)}</Buttom>\r\n </fieldset>\r\n }\r\n\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {Load ?\r\n <div style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n marginTop: '33px'\r\n }}>\r\n <CircularProgress />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </React.Fragment>\r\n }\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","import React, { useState } from \"react\";\r\n\r\n// COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport TextField from \"components/TextField\";\r\nimport Icon from \"components/Icon\";\r\nimport ProgressLinear from \"components/Progress/linear\";\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp, appAlert } from \"functions/\";\r\nimport { action } from \"functions/kanban\";\r\n\r\nfunction ApprovalComponent(props) {\r\n const { onAction } = props\r\n const [reason, setReason] = useState(\"\");\r\n const [preloader, setPreloader] = useState(false);\r\n\r\n const handleApproval = (isApproved) => {\r\n const message = isApproved\r\n ? translate(\"$__confirmApproveItem\", 1)\r\n : translate(\"$__confirmRejectItem\", 1);\r\n\r\n appAlert({\r\n message,\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n action({ nodeId: props.nodeId, reason, approval: true, approved: isApproved });\r\n setPreloader(true);\r\n if (onAction) onAction();\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <div style={{ width: \"100%\" }} onClick={(e) => e.stopPropagation()}>\r\n <div style={{ position: \"relative\", float: \"right\", width: \"100%\", padding: \"7px\" }}>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n padding: 3,\r\n borderRadius: 7,\r\n }}\r\n >\r\n <TextField\r\n label={translate(\"$__ApprovalOrRejectReason\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"reason\"\r\n multiline\r\n rows={3}\r\n value={reason}\r\n onChange={(e) => setReason(e.target.value)}\r\n placeholder={translate(\"$__ApprovalOrRejectReason\", 1)}\r\n adornment={\r\n <span style={{ padding: \"0 10px\", cursor: \"default\" }}>\r\n <Icon icon=\"toc\" />\r\n </span>\r\n }\r\n />\r\n </div>\r\n {preloader ? (\r\n <ProgressLinear />\r\n ) : (\r\n <div style={{ display: \"flex\", justifyContent: \"center\", alignItems: \"center\" }}>\r\n <CustomButton\r\n reverse\r\n title={translate(\"$__indorse\")}\r\n text={translate(\"$__indorse\")}\r\n color=\"green\"\r\n textColor=\"green\"\r\n icon=\"approval\"\r\n onClick={() => handleApproval(true)}\r\n size=\"25px\"\r\n style={{ padding: 12 }}\r\n />\r\n <CustomButton\r\n reverse\r\n title={translate(\"$__reject\")}\r\n text={translate(\"$__reject\")}\r\n color=\"red\"\r\n textColor=\"red\"\r\n icon=\"backspace\"\r\n onClick={() => handleApproval(false)}\r\n size=\"25px\"\r\n style={{ padding: 12 }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(ApprovalComponent)\r\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport AutoNumeric from \"autonumeric\"\r\nimport { TextField, InputAdornment } from \"@material-ui/core\"\r\n\r\n\r\nclass CurrencyTextField extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.getValue = this.getValue.bind(this)\r\n this.callEventHandler = this.callEventHandler.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n const { currencySymbol, ...others } = this.props\r\n\r\n this.autonumeric = new AutoNumeric(this.input, this.props.value, {\r\n ...this.props.preDefined,\r\n ...others,\r\n digitGroupSeparator: '.',\r\n decimalCharacter: ',',\r\n decimalCharacterAlternative: '.',\r\n onChange: undefined,\r\n onFocus: undefined,\r\n onBlur: undefined,\r\n onKeyPress: undefined,\r\n onKeyUp: undefined,\r\n onKeyDown: undefined,\r\n watchExternalChanges: false,\r\n })\r\n }\r\n UNSAFE_componentWillUnmount() {\r\n this.autonumeric.remove()\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(newProps) {\r\n const isValueChanged =\r\n this.props.value !== newProps.value && this.getValue() !== newProps.value\r\n\r\n if (isValueChanged) {\r\n this.autonumeric.set(newProps.value)\r\n }\r\n }\r\n\r\n getValue() {\r\n if (!this.autonumeric) return\r\n const valueMapper = {\r\n string: numeric => numeric.getNumericString(),\r\n number: numeric => numeric.getNumber(),\r\n }\r\n let result = valueMapper[this.props.outputFormat](this.autonumeric)\r\n\r\n return result\r\n }\r\n callEventHandler(event, eventName) {\r\n if (!this.props[eventName]) return\r\n this.props[eventName](event, this.getValue())\r\n }\r\n render() {\r\n const {\r\n currencySymbol,\r\n inputProps,\r\n InputProps,\r\n } = this.props\r\n\r\n const otherProps = {}\r\n ;[\r\n \"id\",\r\n \"label\",\r\n \"className\",\r\n \"autoFocus\",\r\n \"variant\",\r\n \"style\",\r\n \"error\",\r\n \"disabled\",\r\n \"type\",\r\n \"name\",\r\n \"defaultValue\",\r\n \"tabIndex\",\r\n \"fullWidth\",\r\n \"rows\",\r\n \"rowsMax\",\r\n \"select\",\r\n \"required\",\r\n \"helperText\",\r\n \"unselectable\",\r\n \"margin\",\r\n \"SelectProps\",\r\n \"multiline\",\r\n \"size\",\r\n \"FormHelperTextProps\",\r\n \"placeholder\",\r\n ].forEach(prop => (otherProps[prop] = this.props[prop]))\r\n\r\n return (\r\n <TextField\r\n inputRef={ref => (this.input = ref)}\r\n onChange={e => this.callEventHandler(e, \"onChange\")}\r\n onFocus={e => this.callEventHandler(e, \"onFocus\")}\r\n onBlur={e => this.callEventHandler(e, \"onBlur\")}\r\n onKeyPress={e => this.callEventHandler(e, \"onKeyPress\")}\r\n onKeyUp={e => this.callEventHandler(e, \"onKeyUp\")}\r\n onKeyDown={e => this.callEventHandler(e, \"onKeyDown\")}\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">{currencySymbol}</InputAdornment>\r\n ),\r\n ...InputProps,\r\n }}\r\n inputProps={{\r\n // className: classes.textField,\r\n ...inputProps,\r\n }}\r\n {...otherProps}\r\n />\r\n )\r\n }\r\n}\r\n\r\nCurrencyTextField.propTypes = {\r\n type: PropTypes.oneOf([\"text\", \"tel\", \"hidden\"]),\r\n /** The variant to use. */\r\n variant: PropTypes.string,\r\n id: PropTypes.string,\r\n /** The CSS class name of the wrapper element. */\r\n className: PropTypes.string,\r\n /** Inline styling for element */\r\n style: PropTypes.object,\r\n /** If true, the input element will be disabled. */\r\n disabled: PropTypes.bool,\r\n //\r\n comma: PropTypes.bool,\r\n /** The label content. */\r\n label: PropTypes.string,\r\n /** Align the numbers in the textField.\r\n * If you pass the `inputProps` from TextFieldAPI text align won't work.\r\n * then, you have handle it by className with your own class inside inputProps.\r\n */\r\n textAlign: PropTypes.oneOf([\"right\", \"left\", \"center\"]),\r\n /** Tab index for the element */\r\n tabIndex: PropTypes.number,\r\n /** If true, the input element will be focused during the first mount. */\r\n autoFocus: PropTypes.bool,\r\n /** The short hint displayed in the input before the user enters a value. */\r\n placeholder: PropTypes.string,\r\n /** value to be enter and display in input */\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n /** Callback fired when the value is changed. */\r\n onChange: PropTypes.func,\r\n /** Callback fired when focused on element. */\r\n onFocus: PropTypes.func,\r\n /** Callback fired on blur. */\r\n onBlur: PropTypes.func,\r\n /** Callback fired on key press. */\r\n onKeyPress: PropTypes.func,\r\n /** Callback fired on key press. */\r\n onKeyUp: PropTypes.func,\r\n /** Callback fired on key press. */\r\n onKeyDown: PropTypes.func,\r\n /** Defines the currency symbol string. */\r\n currencySymbol: PropTypes.string,\r\n /** Defines what decimal separator character is used. */\r\n decimalCharacter: PropTypes.string,\r\n /** Allow to declare an alternative decimal separator which is automatically replaced by `decimalCharacter` when typed. */\r\n decimalCharacterAlternative: PropTypes.string,\r\n /** Defines the default number of decimal places to show on the formatted value. */\r\n decimalPlaces: PropTypes.number,\r\n /** Defines how many decimal places should be visible when the element is unfocused null. */\r\n decimalPlacesShownOnBlur: PropTypes.number,\r\n /** Defines how many decimal places should be visible when the element has the focus. */\r\n decimalPlacesShownOnFocus: PropTypes.number,\r\n /** Defines the thousand grouping separator character */\r\n digitGroupSeparator: PropTypes.string,\r\n /** Controls the leading zero behavior */\r\n leadingZero: PropTypes.oneOf([\"allow\", \"deny\", \"keep\"]),\r\n /** maximum value that can be enter */\r\n maximumValue: PropTypes.string,\r\n /** minimum value that can be enter */\r\n minimumValue: PropTypes.string,\r\n /** placement of the negitive and possitive sign symbols */\r\n negativePositiveSignPlacement: PropTypes.oneOf([\"l\", \"r\", \"p\", \"s\"]),\r\n /** Defines the negative sign symbol to use */\r\n negativeSignCharacter: PropTypes.string,\r\n /** how the value should be formatted,before storing it */\r\n outputFormat: PropTypes.oneOf([\"string\", \"number\"]),\r\n /** Defines if the element value should be selected on focus. */\r\n selectOnFocus: PropTypes.bool,\r\n /** Defines the positive sign symbol to use. */\r\n positiveSignCharacter: PropTypes.string,\r\n /** Defines if the element should be set as read only on initialization. */\r\n readOnly: PropTypes.bool,\r\n /** predefined objects are available in <a href=\"https://www.nodenpm.com/autonumeric/4.5.1/detail.html#predefined-options\">AutoNumeric</a>*/\r\n preDefined: PropTypes.object,\r\n}\r\n\r\nCurrencyTextField.defaultProps = {\r\n type: \"text\",\r\n variant: \"standard\",\r\n currencySymbol: \"$\",\r\n outputFormat: \"number\",\r\n textAlign: \"right\",\r\n maximumValue: \"10000000000000\",\r\n minimumValue: \"-10000000000000\",\r\n}\r\n// export default withStyles(styles)(CurrencyTextField)\r\nexport default CurrencyTextField\r\n\r\nexport const predefinedOptions = AutoNumeric.getPredefinedOptions()\r\n","import React from 'react';\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport MenuList from '@material-ui/core/MenuList';\r\n\r\nexport default function SplitButton(props) {\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n const [selectedIndex, setSelectedIndex] = React.useState(0);\r\n\r\n React.useEffect(() => {\r\n setSelectedIndex(props.value ? props.value : props.defaultValue ? props.defaultValue : 0)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.value])\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n <ButtonGroup variant=\"text\" ref={anchorRef} aria-label=\"split button\">\r\n <Button\r\n onClick={() => {\r\n setSelectedIndex(selectedIndex)\r\n if (props.onChange)\r\n props.onChange(selectedIndex)\r\n }}\r\n >{props.options.filter(a => a.value === selectedIndex).length > 0 && props.options.filter(a => a.value === selectedIndex)[0].label}</Button>\r\n <Button\r\n size=\"small\"\r\n aria-controls={open ? 'split-button-menu' : undefined}\r\n aria-expanded={open ? 'true' : undefined}\r\n aria-label=\"select merge strategy\"\r\n aria-haspopup=\"menu\"\r\n onClick={handleToggle}\r\n >\r\n <ArrowDropDownIcon />\r\n </Button>\r\n </ButtonGroup>\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n role={undefined}\r\n transition\r\n // disablePortal\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom',\r\n }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <MenuList id=\"split-button-menu\">\r\n {props.options.map((option, index) => {\r\n return (\r\n <MenuItem\r\n key={option.value}\r\n selected={option.value === selectedIndex}\r\n onClick={() => {\r\n setSelectedIndex(option.value)\r\n handleToggle()\r\n if (props.onChange)\r\n props.onChange(option.value)\r\n }}\r\n >\r\n {option.label}\r\n </MenuItem>\r\n )\r\n }\r\n )}\r\n </MenuList>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </React.Fragment>\r\n );\r\n}","import React from \"react\";\r\nimport moment from 'moment-timezone';\r\n\r\n//COMPONENTS\r\nimport GroupedButton from \"components/Buttons/grouped\";\r\nimport Icon from \"components/Icon\";\r\nimport Switch from \"components/Switch\";\r\nimport TextField from \"components/TextField\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n },\r\n options: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n borderBottom: \"solid 1px rgba(0,0,0,0.05)\",\r\n marginTop: \"7px\"\r\n },\r\n custom: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n backgroundColor: 'rgba(0,0,0,0.05)',\r\n marginTop: '7px'\r\n },\r\n\r\n margin: {\r\n height: theme.spacing(3),\r\n },\r\n}));\r\n\r\nconst clearRecurrenceData = {\r\n recurrence: \"0\",\r\n recurrenceRepeatDays: null,\r\n recurrenceEndDate: null,\r\n recurrenceLimit: null,\r\n recurrenceMyDay: null,\r\n recurrenceOnlyCompleted: null,\r\n recurrenceDuplicateCard: null,\r\n}\r\n\r\nfunction Comp(props) {\r\n const [data, setCompData] = React.useState({\r\n recurrence: \"0\"\r\n })\r\n const classes = useStyles();\r\n\r\n React.useEffect(() => {\r\n setCompData({\r\n recurrence: props.data && props.data.recurrence ? props.data.recurrence : \"0\",\r\n recurrenceRepeatDays: props.data && props.data.recurrenceRepeatDays ? props.data.recurrenceRepeatDays : null,\r\n recurrenceEndDate: props.data && props.data.recurrenceEndDate ? props.data.recurrenceEndDate : null,\r\n recurrenceLimit: props.data && props.data.recurrenceLimit ? props.data.recurrenceLimit : null,\r\n recurrenceMyDay: props.data && props.data.recurrenceMyDay ? props.data.recurrenceMyDay : null,\r\n recurrenceOnlyCompleted: props.data && props.data.recurrenceOnlyCompleted ? props.data.recurrenceOnlyCompleted : null,\r\n recurrenceDuplicateCard: props.data && props.data.recurrenceDuplicateCard ? props.data.recurrenceDuplicateCard : null,\r\n })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n\r\n }, [props.data.startDate])\r\n\r\n const calcNextRecurrence = (values) => {\r\n let days = values.recurrence\r\n if (values.recurrence === 'custom')\r\n days = values.recurrenceRepeatDays\r\n let result = values\r\n let newDate = moment(props.data.startDate * 1000).tz('America/Sao_Paulo').add(days, 'd').format('YYYY-MM-DD')\r\n if (moment(props.data.startDate * 1000).tz('America/Sao_Paulo').add(days, 'd').unix('X') < moment().tz('America/Sao_Paulo').unix('X'))\r\n newDate = moment().tz('America/Sao_Paulo').add(days, 'd').format('YYYY-MM-DD')\r\n result = {\r\n ...values,\r\n recurrenceNextDate: newDate,\r\n }\r\n return result\r\n }\r\n\r\n const setData = (values) => {\r\n let result = values\r\n if (!isNaN(values.recurrence) || values.recurrence === 'custom') {\r\n result = calcNextRecurrence(values)\r\n }\r\n if (values.recurrence && parseInt(values.recurrence) > 0 && parseInt(values.recurrence) < 31)\r\n result = {\r\n ...result,\r\n recurrenceNextDate: moment().tz('America/Sao_Paulo').add(parseInt(values.recurrence), 'days').format('YYYY-MM-DD')\r\n }\r\n if (values.recurrence === 'everyFriday')\r\n result = {\r\n ...result,\r\n recurrenceNextDate: moment().tz('America/Sao_Paulo').add(1, 'weeks').isoWeekday(5).format('YYYY-MM-DD')\r\n }\r\n\r\n if (values.recurrence === 'everyMonday')\r\n result = {\r\n ...result,\r\n recurrenceNextDate: moment().tz('America/Sao_Paulo').add(1, 'weeks').isoWeekday(1).format('YYYY-MM-DD')\r\n }\r\n\r\n if (values.recurrence === 'everyFirstMonthDay')\r\n result = {\r\n ...result,\r\n recurrenceNextDate: moment().tz('America/Sao_Paulo').add(1, 'month').format('YYYY-MM-01')\r\n }\r\n\r\n setCompData(result)\r\n if (props.onChange)\r\n props.onChange(result)\r\n }\r\n\r\n return (\r\n <div id=\"RecurrencySettings\" className={classes.root}>\r\n <div className={classes.options}>\r\n {translate('$__recurrence')}\r\n <GroupedButton\r\n options={[\r\n {\r\n value: '0',\r\n label: translate('$__nonrecurrence'),\r\n },\r\n {\r\n value: '1',\r\n label: translate('$__everyDay'),\r\n },\r\n {\r\n value: '7',\r\n label: translate('$__weekly'),\r\n },\r\n {\r\n value: '15',\r\n label: translate('$__every15days'),\r\n },\r\n {\r\n value: '30',\r\n label: translate('$__every30days'),\r\n },\r\n {\r\n value: 'everyFirstMonthDay',\r\n label: translate('$__everyFirstMonthDay'),\r\n },\r\n {\r\n value: 'everyMonday',\r\n label: translate('$__everyMonday'),\r\n },\r\n {\r\n value: 'everyFriday',\r\n label: translate('$__everyFriday'),\r\n },\r\n {\r\n value: 'custom',\r\n label: translate('$__custom'),\r\n }\r\n ]}\r\n value={data && data.recurrence ? data.recurrence : \"0\"}\r\n onChange={(v) => {\r\n if (v === \"0\") {\r\n setData({\r\n ...clearRecurrenceData,\r\n recurrence: null,\r\n recurrenceRepeatDays: null\r\n })\r\n } else if (v !== 'custom') {\r\n setData({\r\n recurrence: `${v}`,\r\n recurrenceRepeatDays: null\r\n })\r\n } else {\r\n setData({\r\n ...data,\r\n recurrence: `${v}`,\r\n recurrenceNextDate: null,\r\n recurrenceRepeatDays: 1\r\n })\r\n }\r\n }}\r\n />\r\n </div>\r\n {(data && data.recurrence && String(data.recurrence) !== \"0\") &&\r\n <div className={classes.custom}>\r\n {translate(\"$__preffers\", 1)}\r\n {data && data.recurrence === 'custom' &&\r\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n {translate('$__repeatEvery', 1)}\r\n <TextField\r\n style={{ width: \"100px\" }}\r\n variant={customApp('standard')}\r\n name={'recurrenceRepeatDays'}\r\n type=\"number\"\r\n min=\"1\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n min: 1,\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='replay_10' />\r\n {translate('$__days').toLowerCase()}\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n if (parseInt(d.target.value) > 0)\r\n setData({\r\n ...data,\r\n recurrenceRepeatDays: d.target.value\r\n })\r\n },\r\n }}\r\n defaultValue={data.recurrenceRepeatDays ? data.recurrenceRepeatDays : 1}\r\n />\r\n </div>\r\n }\r\n {/* <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n {translate('$__repeatLimit', 1)}\r\n <TextField\r\n style={{ width: \"152px\" }}\r\n variant={customApp('standard')}\r\n name={'repeatLimit'}\r\n type=\"number\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='replay_10' />\r\n {translate('$__times').toLowerCase()}\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n recurrenceLimit: d.target.value\r\n })\r\n },\r\n }}\r\n defaultValue={data.recurrenceLimit}\r\n helperText={translate('$__0toUnlimited')}\r\n />\r\n </div> */}\r\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n {translate('$__limitDate', 1)}\r\n <TextField\r\n style={{ width: \"200px\" }}\r\n variant={customApp('standard')}\r\n name=\"endDate\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='date'\r\n InputProps={{\r\n endAdornment: data.recurrenceEndDate ? (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='clear'\r\n onClick={() => {\r\n setData({\r\n ...data,\r\n recurrenceEndDate: null\r\n })\r\n }}\r\n />\r\n </InputAdornment>\r\n ) : null,\r\n autoComplete: 'new-password',\r\n onBlur: (d) => {\r\n setData({\r\n ...data,\r\n recurrenceEndDate: d.target.value ? moment(d.target.value).tz('America/Sao_Paulo').format('YYYY-MM-DD') : null\r\n }\r\n )\r\n },\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n recurrenceEndDate: d.target.value ? moment(d.target.value).tz('America/Sao_Paulo').format('YYYY-MM-DD') : null,\r\n })\r\n },\r\n }}\r\n defaultValue={props.data.recurrenceEndDate ? props.data.recurrenceEndDate : null}\r\n />\r\n </div>\r\n\r\n {/* <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n {translate('$__addToMyDay', 1)}\r\n <Switch\r\n checked={data.recurrenceMyDay ? true : false}\r\n onChange={(d) => {\r\n setData({\r\n ...data,\r\n recurrenceMyDay: data.recurrenceMyDay ? false : true\r\n })\r\n }}\r\n name=\"recurrenceMyDay\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n </div> */}\r\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n {translate('$__recurrenceDuplicateCard', 1)}\r\n <Switch\r\n checked={data.recurrenceDuplicateCard ? true : false}\r\n onChange={(d) => {\r\n setData({\r\n ...data,\r\n recurrenceDuplicateCard: data.recurrenceDuplicateCard ? false : true,\r\n ...data.recurrenceDuplicateCard ? { recurrenceCopyCatenation: false } : {}\r\n })\r\n }}\r\n name=\"duplicate\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n </div>\r\n {data.recurrenceDuplicateCard &&\r\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n {translate('$__copyCatenation', 1)}\r\n <Switch\r\n checked={data.recurrenceCopyCatenation ? true : false}\r\n onChange={(d) => {\r\n setData({\r\n ...data,\r\n recurrenceCopyCatenation: data.recurrenceCopyCatenation ? false : true\r\n })\r\n }}\r\n name=\"recurrenceCopyCatenation\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n </div>\r\n }\r\n {/* <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\r\n {translate('$__createNewOnlyWhenPreviousIsCompleted', 1)}\r\n <Switch\r\n checked={data.recurrenceOnlyCompleted ? true : false}\r\n onChange={(d) => {\r\n setData({\r\n ...data,\r\n recurrenceOnlyCompleted: data.recurrenceOnlyCompleted ? false : true\r\n })\r\n }}\r\n name=\"recurrenceOnlyCompleted\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n </div> */}\r\n </div>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => ({ store, ownProps });\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Comp);\r\n","//CORE\r\nimport React from \"react\";\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//@MATERIAL\r\nimport Autocomplete from \"components/AutoComplete/multiple\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Tags-input\";\r\n\r\nimport {\r\n translate,\r\n getAppAccess\r\n} from \"functions/\";\r\n\r\nfunction Component(props) {\r\n const [values, setValues] = React.useState([])\r\n\r\n const AppAccess = getAppAccess()\r\n\r\n React.useEffect(() => {\r\n if (props.data.values) {\r\n let newValues = []\r\n props.data.values.forEach(tag => {\r\n if (reduxStore.getState().db.tag.filter(a => a.value === tag.value).length > 0)\r\n newValues.push(tag)\r\n })\r\n setValues(newValues)\r\n }\r\n }, [props.data])\r\n\r\n const changeTags = async (v) => {\r\n if (props.callBack)\r\n props.callBack(v)\r\n setValues(v)\r\n }\r\n\r\n return (\r\n <div>\r\n <Autocomplete\r\n dbNode={props.dbNode ? props.dbNode : 'tag'}\r\n secondaryParent={props.secondaryParent ? props.secondaryParent : null}\r\n options={reduxStore.getState().db.tag ? reduxStore.getState().db.tag : []}\r\n style={{ width: '100%' }}\r\n name=\"tag\"\r\n ws\r\n title={translate(\"$__tags\")}\r\n api={\"tag/add\"}\r\n add\r\n filterSelectedOptions\r\n colorPicker={AppAccess && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate) ? true : false}\r\n multiple\r\n freeSolo\r\n disableClearable\r\n disabled={props.disabled ? true : false}\r\n value={values}\r\n placeholder={props.placeholder || null}\r\n onChange={\r\n (v) => {\r\n changeTags(v)\r\n }\r\n }\r\n colorPickerCallBack={(res) => {\r\n reduxStore.getState().functions.socket.emit('tag.UPD', res)\r\n }}\r\n groupByParent={true}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n tags: store.db.tag,\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Component));","//CORE\r\nimport React from \"react\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store/\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport Approve from \"components/Card/approval\"\r\nimport Autocomplete from \"components/AutoComplete\"\r\nimport Card from \"components/Card\"\r\nimport CardTags from \"components/Tags/Card\"\r\nimport ConnectedIn from \"components/ConnectedIn\"\r\nimport CurrencyTextField from 'components/TextField/currency'\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport CustomIconButton from \"components/CustomButtons/IconButton\"\r\nimport DataPicker from \"components/DataPicker\"\r\nimport FormAnswer from \"componentsV3/Forms/AnswerForm\"\r\nimport GroupedButton from \"components/Buttons/grouped\"\r\nimport Icon from \"components/Icon\"\r\nimport ImgCropper from \"components/Cropper\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\nimport QuickUsers from \"components/User/quick\"\r\nimport RecurrenceSettings from \"components/Recurrence/settings\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport Switch from \"components/Switch\"\r\nimport TagsInput from \"componentsV3/Tags/input\"\r\nimport TextField from \"components/TextField\"\r\nimport Timer from \"components/Timer/timer\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card.js\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\n\r\nimport {\r\n cardStatus,\r\n getUserAccess,\r\n planMyAccountVerify,\r\n saveCard,\r\n setMyDay,\r\n updateCardStatus,\r\n verifyTemplate,\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData\"\r\n\r\nimport {\r\n appAlert,\r\n customApp,\r\n favoriteNode,\r\n getAppAccess,\r\n translate,\r\n} from \"functions/\"\r\n\r\n//ICONS\r\nimport MatrixIcon from \"assets/icons/Matrix.js\"\r\n\r\n\r\nfunction Component(props) {\r\n const { classes, sideModule } = props\r\n const { db, session } = reduxStore.getState()\r\n const { planType } = db\r\n\r\n const [data, setData] = React.useState({})\r\n const [newData, setNewData] = React.useState({})\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [saveLoader, setSaveLoader] = React.useState(false)\r\n const [setDate, setSetDate] = React.useState(false)\r\n const [mounted, setMounted] = React.useState(false)\r\n const [startDate, setStartDate] = React.useState(null)\r\n const [endDate, setEndDate] = React.useState(null)\r\n const [miroOption, setMiroOption] = React.useState(false)\r\n const [dateDays, setDateDays] = React.useState(0)\r\n const [loadingData, setLoadingData] = React.useState(false)\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(sideModule.id)\r\n\r\n React.useEffect(() => {\r\n if (data._id !== sideModule.data._id) {\r\n setData(sideModule.data)\r\n setReqSave(false)\r\n }\r\n if (!mounted) {\r\n if (sideModule.data.startDate)\r\n setStartDate(sideModule.data && sideModule.data.startDate ? sideModule.data.startDate : null)\r\n\r\n if (sideModule.data.endDate)\r\n setEndDate(sideModule.data && sideModule.data.endDate ? sideModule.data.endDate : null)\r\n setData(sideModule.data)\r\n setReqSave(false)\r\n\r\n if (data.type === \"link\" && !data.name)\r\n loadUrlContent()\r\n setMounted(true)\r\n reqFullData()\r\n }\r\n if (sideModule.data.name && sideModule.data.name.trim() !== \"\" && sideModule.data.type === \"link\" && sideModule.data._id === \"new\") {\r\n setReqSave(true)\r\n if (props.reqSave)\r\n props.reqSave(true)\r\n }\r\n // return () => {\r\n // setMounted(false)\r\n // }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [sideModule.data, data])\r\n\r\n React.useEffect(() => {\r\n if (!data.name || (data.name && data.name.trim === \"\")) {\r\n setReqSave(false)\r\n } else {\r\n setReqSave(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [newData])\r\n\r\n React.useEffect(() => {\r\n if (props.cards[data._id]\r\n && (\r\n (\r\n props.cards[data._id]._requireApproval\r\n && !data._requireApproval\r\n )\r\n ||\r\n (\r\n !props.cards[data._id]._requireApproval\r\n && data._requireApproval\r\n )\r\n )\r\n )\r\n setData({\r\n ...data,\r\n _requireApproval: !props.cards[data._id]._requireApproval\r\n })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards])\r\n\r\n const reqFullData = async () => {\r\n const loadParents = await loadCardsV2({ ...props, ignoreLoader: true }, {\r\n idRel: [sideModule.data._id],\r\n cardLoad: \"parents\"\r\n })\r\n if (loadParents)\r\n setLoadingData(false)\r\n }\r\n\r\n const changeData = (d, d2, clear = false) => {\r\n if (\r\n (\r\n d.value\r\n &&\r\n (\r\n !sideModule.data[d.name]\r\n &&\r\n !data[d.name]\r\n )\r\n )\r\n ||\r\n (\r\n sideModule.data[d.name]\r\n && sideModule.data[d.name] !== d.value\r\n )\r\n ||\r\n clear\r\n ) {\r\n // setReqSave(true)\r\n if (props.reqSave)\r\n props.reqSave(true)\r\n }\r\n\r\n\r\n let newDataCD = {\r\n ...data,\r\n [d.name]: d.value,\r\n }\r\n if (d2 && d2.name && d2.value) {\r\n newDataCD = {\r\n ...data,\r\n ...newDataCD,\r\n [d2.name]: d2.value\r\n }\r\n }\r\n setData(newDataCD)\r\n setNewData({\r\n ...newData,\r\n [d.name]: d.value,\r\n ...d2 && d2.name && d2.value ? {\r\n [d2.name]: d2.value\r\n } : {}\r\n })\r\n }\r\n\r\n const close = (cl) => {\r\n if (reqSave && !cl) {\r\n appAlert({\r\n message: translate(\"$__confirmCloseWithUnsavedData\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n const save = async (cl = false) => {\r\n if (!saveLoader) {\r\n setReqSave(false)\r\n if (props.reqSave)\r\n props.reqSave(false)\r\n if (!data.status)\r\n data.status = \"notStarted\"\r\n if (sideModule.id === \"new\" && sideModule.data) {\r\n setData({\r\n ...data,\r\n ...sideModule.data\r\n })\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: data\r\n })\r\n\r\n if (!data.name || (data.name && data.name.trim() === \"\")) {\r\n setSaveLoader(false)\r\n appAlert({\r\n message: translate(\"$__fillName\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: null\r\n })\r\n } else {\r\n const request = await saveCard({\r\n ...props,\r\n store: {\r\n ...props.store,\r\n db: {\r\n ...reduxStore.getState().db\r\n }\r\n }\r\n }, cl, data)\r\n if (request) {\r\n if (newData && newData.status) {\r\n updateCardStatus(\r\n {\r\n ...props,\r\n data: { _id: data._id }\r\n }, { status: newData.status })\r\n cardStatus(props, data._id, newData.status)\r\n }\r\n setSaveLoader(false)\r\n appAlert({\r\n message: translate(\"$__DataSaved\", 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: null\r\n })\r\n }\r\n setReqSave(false)\r\n if (props.reqSave)\r\n props.reqSave(false)\r\n if (cl)\r\n close(true)\r\n }\r\n }\r\n }\r\n\r\n const loadUrlContent = async () => {\r\n const result = await api.post(`/link/content`, {\r\n url: data.url\r\n })\r\n setData({\r\n ...data,\r\n content: result.data.article,\r\n })\r\n setReqSave(true)\r\n if (props.reqSave)\r\n props.reqSave(true)\r\n }\r\n\r\n const dataType = sideModule.data && sideModule.data.type ? db.dataType.filter(a => a.name === sideModule.data.type)[0] : {}\r\n\r\n let parentData = null\r\n if (data._parent)\r\n parentData = reduxStore.getState().db.cards[data._parent]\r\n\r\n if (!data)\r\n return null\r\n\r\n let myDay = reduxStore.getState().db.cards[data._id] && reduxStore.getState().db.cards[data._id]._users && reduxStore.getState().db.cards[data._id]._users[session._id] && reduxStore.getState().db.cards[data._id]._users[session._id].myDay ? reduxStore.getState().db.cards[data._id]._users[session._id].myDay : null\r\n let myDayOption = !myDay || (myDay && myDay && moment(new Date(myDay * 1000)).format(\"YYYY/MM/DD\") !== moment().format(\"YYYY/MM/DD\")) ? true : false\r\n\r\n\r\n const isTemplate = data.isTemplate ? data.isTemplate : verifyTemplate(data._id)\r\n\r\n let permission = props.permission ? props.permission : false\r\n\r\n if (data && data._planId && (!db.cards[data._planId] || !planMyAccountVerify(data._planId)))\r\n permission = false\r\n\r\n if (!permission && parseInt(CardAccess) >= 4)\r\n permission = true\r\n\r\n if (!permission && planMyAccountVerify(data._planId) && AppAccess && AppAccess.admin && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))\r\n permission = true\r\n\r\n if (data._requireApproval\r\n && data._parent\r\n && (\r\n (\r\n reduxStore.getState().db.cards[data._parent]\r\n && reduxStore.getState().db.cards[data._parent]._users\r\n && (\r\n reduxStore.getState().db.cards[reduxStore.getState().db.cards[data._id]._parent]._users\r\n && reduxStore.getState().db.cards[reduxStore.getState().db.cards[data._id]._parent]._users[session._id]\r\n && reduxStore.getState().db.cards[reduxStore.getState().db.cards[data._id]._parent]._users[session._id].approvalResponsible\r\n\r\n )\r\n )\r\n ||\r\n (\r\n data._users\r\n && (\r\n Object.keys(data._users).length === 1\r\n && data._users[session._id]\r\n )\r\n )\r\n )\r\n ) permission = false\r\n\r\n\r\n let hasYoutube = false\r\n let youtube = (<React.Fragment></React.Fragment>)\r\n if (data && data.url && data.url.indexOf(\".youtube.com/watch?\") > -1) {\r\n let ybQuery = data.url.split(\"?\")[1].split(\"v=\")[1].split(\"&\")[0]\r\n if (ybQuery) {\r\n youtube = (\r\n <iframe\r\n width=\"560\"\r\n height=\"315\"\r\n style={{\r\n top: 0,\r\n width: \"100%\",\r\n maxWidth: \"500px\",\r\n height: \"100%\",\r\n alignSelf: \"center\",\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n }}\r\n src={`https://www.youtube.com/embed/${ybQuery}`}\r\n title=\"YouTube video player\"\r\n frameBorder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n allowFullScreen >\r\n\r\n </iframe >\r\n )\r\n hasYoutube = true\r\n }\r\n }\r\n\r\n if (data && data.url && data.url.indexOf(\"//youtu.be/\") > -1) {\r\n let ybQuery = data.url.split(\".be/\")[1]\r\n if (ybQuery) {\r\n youtube = (\r\n <iframe\r\n width=\"560\"\r\n height=\"315\"\r\n style={{\r\n top: 0,\r\n width: \"100%\",\r\n maxWidth: \"500px\",\r\n height: \"100%\",\r\n alignSelf: \"center\",\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n }}\r\n src={`https://www.youtube.com/embed/${ybQuery}`}\r\n title=\"YouTube video player\"\r\n frameBorder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n allowFullScreen >\r\n\r\n </iframe >\r\n )\r\n hasYoutube = true\r\n }\r\n }\r\n\r\n const formAsks = data.formId ? JSON.parse(reduxStore.getState().forms[data.formId].elements) : []\r\n let formAnswers = {}\r\n\r\n formAsks.forEach(x => {\r\n if (data[x.id])\r\n formAnswers = {\r\n ...formAnswers,\r\n [x.id]: data[x.id]\r\n }\r\n })\r\n\r\n return (\r\n <React.Fragment>\r\n <SideModuleCloseAndSave\r\n save={reqSave && permission ? () => {\r\n setSaveLoader(true)\r\n save()\r\n } : null}\r\n saveClose={reqSave && permission ? () => {\r\n setSaveLoader(true)\r\n save(true)\r\n } : null}\r\n saveLoader={saveLoader}\r\n close={() => {\r\n if (props.onClose)\r\n props.onClose()\r\n }}\r\n />\r\n <div className={classes.root}>\r\n {(data._requireApproval\r\n && data._parent\r\n && (\r\n (\r\n reduxStore.getState().db.cards[data._parent]\r\n && reduxStore.getState().db.cards[data._parent]._users\r\n && (\r\n reduxStore.getState().db.cards[reduxStore.getState().db.cards[data._id]._parent]._users[session._id]\r\n && reduxStore.getState().db.cards[reduxStore.getState().db.cards[data._id]._parent]._users[session._id].approvalResponsible\r\n )\r\n )\r\n ||\r\n (\r\n data._users\r\n && (\r\n Object.keys(data._users).length === 1\r\n && data._users[session._id]\r\n )\r\n )\r\n )\r\n ) ?\r\n <div style={{ position: \"relative\", width: \"100%\", background: customApp(\"ColumnTitleColor\"), padding: 7, display: \"grid\" }}>\r\n <div\r\n style={{\r\n color: \"red\",\r\n fontWeight: \"bold\",\r\n fontSize: 14\r\n }}\r\n >{translate(\"$__attention\", 1)}: <span style={{ color: \"#FFFFFF\" }}>{translate(\"$__thisActivityRequireApproval\", 1)}</span></div>\r\n <Approve nodeId={data._id}\r\n onAction={() => {\r\n props.onClose()\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {hasYoutube ?\r\n <div\r\n style={{\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n paddingTop: '48%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n clear: \"both\"\r\n }}\r\n >\r\n {youtube}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {permission && (!dataType.hideFields || (dataType.hideFields && dataType.hideFields.indexOf(\"imageUpload\") === -1)) &&\r\n <ImgCropper img={data ? data.image : null}\r\n onChange={(a, file) => {\r\n changeData({ name: \"image\", value: a })\r\n changeData({ name: \"file\", value: file })\r\n }}\r\n files={data._files ? data._files : {}}\r\n maxWidthOrHeight={600}\r\n avatar={data.type === \"chatGroup\" ? true : false}\r\n aspectRatio={data.type === \"chatGroup\" ? null : 16 / 9}\r\n onDelete={() => {\r\n changeData({ name: \"image\", value: null }, { name: \"file\", value: null }, true)\r\n }}\r\n />\r\n }\r\n {!permission && data.image &&\r\n <div className={classes.image}\r\n style={{\r\n backgroundImage: `url(${data.image})`\r\n }}\r\n ></div>\r\n }\r\n {data.type === \"plan\" && !data._id ?\r\n <fieldset style={{ marginBottom: '14px', marginTop: 30 }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={planType}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: '100%' }}\r\n name=\"planType\"\r\n disableClearable\r\n value={data && data.planType ? planType.filter(a => a.value === data.planType)[0] : planType[0]}\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate('$__planType', 1)}\r\n variant={customApp('fieldVariant')}\r\n value={data && data.planType ? planType.filter(a => a.value === data.planType)[0] : planType[0]}\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: 'planType', value: v['value'] })\r\n }\r\n }\r\n />\r\n {\r\n planType.filter(a =>\r\n !data.planType\r\n || (data.planType\r\n && a.value === data.planType\r\n && a.swot === true\r\n )\r\n ).length > 0 ?\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n }}>\r\n <div style={{\r\n width: \"fit-content\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"color\")\r\n }}>\r\n <Icon icon={MatrixIcon} color={customApp('color')} size={25} /><span style={{ marginLeft: 15 }}>MATRIX SWOT</span>\r\n </div>\r\n\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n <div>{translate(planType.filter(a =>\r\n !data.planType\r\n || (data.planType\r\n && a.value === data.planType\r\n )\r\n )[0].description, 1)}</div>\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>}\r\n\r\n <div className={classes.data}>\r\n {(data._parent || data._planId) && loadingData ?\r\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: \"100%\", height: \"auto\" }}>\r\n <span style={{ color: customApp(\"menu\"), fontSize: \"12px\", paddingRight: \"15px\", whiteSpace: \"nowrap\" }}>{translate(\"$__loadingdata\")}</span>\r\n <LinearProgress />\r\n </div>\r\n : ((data._parent && db.cards[data._parent]) || (data._planId && db.cards[data._planId])) &&\r\n <ConnectedIn\r\n id={data._parent ? data._parent : data._planId ? data._planId : null}\r\n open={(id) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: \"cards\",\r\n id: id,\r\n ...reduxStore.getState().db.cards[id].type === \"step\" ? {\r\n module: \"columnEdit\",\r\n activeModule: \"columnEdit\"\r\n } : {\r\n module: \"cardEdit\",\r\n activeModule: \"cardEdit\"\r\n },\r\n\r\n data: reduxStore.getState().db.cards[id],\r\n })\r\n }}\r\n />\r\n }\r\n\r\n <div style={{\r\n position: \"relative\",\r\n alignItems: \"center\",\r\n clear: 'both',\r\n justifyContent: \"space-between\",\r\n display: \"flex\",\r\n }}>\r\n {data._id && db.cards[data._id] && db.cards[data._id]._users &&\r\n <QuickUsers _id={data._id} noLimit avatarSize=\"33px\" permission={permission} />\r\n }\r\n <div\r\n style={{\r\n display: \"flex\", alignItems: \"center\", justifyContent: \"flex-end\"\r\n }}\r\n >\r\n {\r\n data.type === \"plan\" && data._id && permission ?\r\n <CustomButton\r\n title={translate(\"$__openPlan\", 1)}\r\n icon={\"launch\"}\r\n color={\"lightgray\"}\r\n onClick={() => {\r\n history.push(`sp#${data._id}/dashboard`)\r\n close(true)\r\n }\r\n }\r\n size={\"25px\"}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {props.card && props.card._id && props.card.type === \"plan\" ?\r\n <CustomButton\r\n title={translate(props.card && props.card._isFavorite ? \"$__removeFromFavorite\" : \"$__addToFavorite\", 1)}\r\n icon={props.card && props.card._isFavorite ? \"favorite\" : \"favorite_border\"}\r\n color={props.card && props.card._isFavorite ? \"red\" : \"lightgray\"}\r\n onClick={() => {\r\n favoriteNode(props, data._id, props.card && props.card._isFavorite ? true : false)\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n _isFavorite: props.card && props.card._isFavorite ? false : true\r\n },\r\n }\r\n })\r\n }\r\n }\r\n size={\"25px\"}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {(data._id\r\n && data._id.length === 36\r\n && data.type !== \"chatGroup\"\r\n && data.type !== \"step\"\r\n && !data.isTemplate\r\n && !data.archived\r\n && data.status !== 'completed'\r\n ) &&\r\n <CustomButton\r\n title={translate(myDay && moment(new Date(myDay * 1000)).format(\"YYYY/MM/DD\") === moment().format(\"YYYY/MM/DD\") ? \"$__removeOfMyDate\" : \"$__addOnMyDay\", 1)}\r\n color={myDay && moment(new Date(myDay * 1000)).format(\"YYYY/MM/DD\") === moment().format(\"YYYY/MM/DD\") ? \"red\" : \"lightblue\"}\r\n icon={myDay && moment(new Date(myDay * 1000)).format(\"YYYY/MM/DD\") === moment().format(\"YYYY/MM/DD\") ? \"auto_delete\" : \"alarm_add\"}\r\n onClick={() => {\r\n setMyDay(props, {\r\n _id: data._id,\r\n userId: session._id,\r\n option: myDayOption\r\n })\r\n if (props.myDayClick)\r\n props.myDayClick()\r\n }\r\n }\r\n size={\"25px\"}\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{data.type === 'plan' && data._id ? translate(`$__plan ${data.planType ? planType[1].label : planType[0].label}`, 1) : translate(\"$__data\", 1)}</legend>\r\n {data.type !== \"plan\" && data.type !== \"chatGroup\" &&\r\n (data && data._planId && db.cards[data._planId] && db.cards[data._planId].refs)\r\n ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__references\")}</legend>\r\n <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\r\n <div style={{ width: \"46%\" }}>\r\n <TextField\r\n label={(data && data._planId && db.cards[data._planId] && db.cards[data._planId].ref1Title) || translate(\"$__cardRef1\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"ref1\"}\r\n id={\"edit_ref_1\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data.ref1 || \"\"}\r\n placeholder={translate(dataType?.fieldsTitle?.placeholder?.ref1 || \"$__cardRef1_placeholder\", 1)}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"ref1\") > -1) ? true : false}\r\n />\r\n </div>\r\n <div style={{ width: \"8%\", textAlign: \"center\", justifyContent: \"center\", alignItems: \"center\", fontSize: \"24px\", display: \"flex\", color: customApp(\"menu\") }}>|</div>\r\n <div style={{ width: \"46%\" }}>\r\n <TextField\r\n label={(data && data._planId && db.cards[data._planId] && db.cards[data._planId].ref2Title) || translate(\"$__cardRef2\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"ref2\"}\r\n id={\"edit_ref_2\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data.ref2 || \"\"}\r\n placeholder={translate(dataType?.fieldsTitle?.placeholder?.ref2 || \"$__cardRef2_placeholder\", 1)}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"ref2\") > -1) ? true : false}\r\n />\r\n </div>\r\n </div>\r\n </fieldset>\r\n : <></>}\r\n <TextField\r\n label={translate(dataType && dataType.fieldsTitle && dataType.fieldsTitle.name ? dataType.fieldsTitle.name : \"$__titleOfCard\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"name\"}\r\n id={\"edit_693\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"view_headline\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.name ? data.name : \"\"}\r\n placeholder={translate(dataType && dataType.fieldsTitle && dataType.fieldsTitle.placeholder && dataType.fieldsTitle.placeholder.name ? dataType.fieldsTitle.placeholder.name : \"$__titleOfCard_placeholder\", 1)}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"name\") > -1) ? true : false}\r\n />\r\n {(CardAccess > 3 || data.description || permission)\r\n ?\r\n <React.Fragment>\r\n <TextField\r\n label={translate(\"$__description\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"description\"\r\n\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n multiline: true,\r\n minRows: 3,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"toc\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.description ? data.description : \"\"}\r\n placeholder={translate(\"$__descriptionOfCard_placeholder\", 1)}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"description\") > -1) ? true : false}\r\n />\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n\r\n {/* {data.url ?\r\n <React.Fragment> */}\r\n {\r\n (data.type === \"task\"\r\n || data.type === \"iniciative\"\r\n )\r\n ?\r\n\r\n <CurrencyTextField\r\n label={translate(\"$__price\", 1)}\r\n variant=\"standard\"\r\n currencySymbol=\"$\"\r\n outputFormat=\"string\"\r\n style={{ width: \"100%\", marginBottom: 10 }}\r\n value={data && data.value ? data.value : \"\"}\r\n onChange={(event, value) =>\r\n changeData({\r\n name: \"value\",\r\n value: value\r\n })\r\n }\r\n\r\n />\r\n : <React.Fragment></React.Fragment>}\r\n {(CardAccess > 3 || data.url || permission) && data.type !== \"chatGroup\" ?\r\n <TextField\r\n label={translate(\"$__URL\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"url\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"http\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.url ? data.url : \"\"}\r\n placeholder={\"https://domain.com\"}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"name\") > -1) ? true : false}\r\n />\r\n : <React.Fragment></React.Fragment>}\r\n {data.url ?\r\n <div style={{\r\n width: \"100%\",\r\n textAlign: \"right\"\r\n }}>\r\n <a href={data.url} target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: customApp(\"menu\"), fontWeight: \"bold\" }}>{translate(\"$__openlink\", \"*\")}</a>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </fieldset>\r\n {data.formId ?\r\n <fieldset>\r\n <legend>{translate('$__formAnswers')}</legend>\r\n <FormAnswer\r\n formId={data.formId}\r\n values={formAnswers}\r\n onChange={(values, error) => {\r\n if (values && Object.keys(values).length > 0)\r\n Object.keys(values).forEach(a => {\r\n console.log(a, values[a])\r\n if (values[a] !== formAnswers[a])\r\n changeData({\r\n name: a,\r\n value: values[a]\r\n })\r\n })\r\n console.log(formAnswers, values)\r\n // formsRef.current = {\r\n // ...values,\r\n // error\r\n // }\r\n // setFormError(null)\r\n }}\r\n disabled={(CardAccess > 3 || data.url || permission) ? false : true}\r\n />\r\n </fieldset>\r\n : <></>}\r\n {\r\n (CardAccess > 3 || data.client || permission) &&\r\n (\r\n !isTemplate\r\n && (\r\n permission &&\r\n (\r\n !dataType.hideFields ||\r\n (\r\n dataType.hideFields &&\r\n dataType.hideFields.indexOf(\"client\") === -1)\r\n )\r\n ) &&\r\n (\r\n !data.client ||\r\n (\r\n data.client &&\r\n db.users[data.client]\r\n )\r\n )\r\n ) &&\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={Object.keys(db.users)\r\n .filter(a =>\r\n db.users[a].type === \"client\" ||\r\n db.users[a].type === \"group\" ||\r\n db.users[a].type === \"sic\"\r\n )\r\n .sort((a, b) => {\r\n if (db.users[a].name < db.users[b].name) {\r\n return -1\r\n } else if (db.users[a].name > db.users[b].name) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }).map(a => {\r\n return { label: db.users[a].name, value: String(db.users[a]._id) }\r\n })\r\n }\r\n getOptionLabel={(option) => {\r\n return translate(option.label, 1)\r\n }\r\n }\r\n style={{ width: \"100%\" }}\r\n name=\"client\"\r\n value={\r\n (\r\n data\r\n &&\r\n data.client\r\n )\r\n ? Object.keys(db.users)\r\n .filter(a =>\r\n data.client\r\n && db.users[a]._id === data.client\r\n ).map(a => {\r\n return {\r\n label: db.users[a].name,\r\n value: String(db.users[a]._id)\r\n }\r\n })[0]\r\n : null\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__account\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n (\r\n data\r\n &&\r\n data.client\r\n )\r\n ? Object.keys(db.users)\r\n .filter(a =>\r\n data.client\r\n && db.users[a]._id === data.client\r\n ).map(a => {\r\n return {\r\n label: db.users[a].name,\r\n value: String(db.users[a]._id)\r\n }\r\n })[0]\r\n : null\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: \"client\", value: v && v[\"value\"] ? String(v[\"value\"]) : null })\r\n }\r\n }\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"client\") > -1) ? true : false}\r\n />\r\n }\r\n <div>\r\n {props.card\r\n && data.type !== \"plan\"\r\n && data.type !== \"chatGroup\"\r\n && props.card._id\r\n && props.card._users[session._id]\r\n && data.status !== \"completed\"\r\n && CardAccess > 0\r\n ?\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n float: 'left'\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <Timer data={props.card} />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n {\r\n (\r\n ((CardAccess > 2 || data.endDate || data.startDate || permission) && !isTemplate && data.type !== \"chatGroup\")\r\n ||\r\n (\r\n !(\r\n !permission\r\n &&\r\n (\r\n !data.startDate\r\n && !data.endDate\r\n )\r\n )\r\n &&\r\n (\r\n !isTemplate\r\n &&\r\n (\r\n !dataType.hideFields\r\n || (\r\n dataType.hideFields\r\n && dataType.hideFields.indexOf(\"deadline\") === -1\r\n )\r\n )\r\n )\r\n )\r\n ) &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__deadline\", 1)}</legend>\r\n {\r\n data.endDate\r\n || data.startDate\r\n || setDate ?\r\n <React.Fragment>\r\n <TextField\r\n label={translate('$__initialDate', 1)}\r\n variant={customApp('fieldVariant', 1)}\r\n name=\"startDate\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='datetime-local'\r\n inputProps={{\r\n min: null,\r\n autoComplete: 'start-date',\r\n onChange: (d) => {\r\n if (moment(d.target.value).isValid()) {\r\n setStartDate(moment(d.target.value).unix('X'))\r\n }\r\n // if (!endDate || (\r\n // endDate\r\n // &&\r\n // (\r\n // moment(d.target.value).format(\"YYYY-MM-DD\") === moment(endDate * 1000).format(\"YYYY-MM-DD\")\r\n // || moment(d.target.value).unix(\"X\") > moment(endDate * 1000).unix(\"X\")\r\n // )\r\n // )\r\n // ) setEndDate(moment(moment(d.target.value).format(\"YYYY-MM-DDT23:59:59\")).unix('X'))\r\n\r\n let newData = {\r\n startDate: moment(d.target.value).unix('X')\r\n }\r\n setStartDate(moment(d.target.value).unix('X'))\r\n if (!endDate || endDate < moment(d.target.value).unix('X')) {\r\n newData = {\r\n ...newData,\r\n endDate: moment(`${moment(d.target.value).format(\"YYYY-MM-DD\")} 23:59:59`).unix('X')\r\n }\r\n setEndDate(moment(`${moment(d.target.value).format(\"YYYY-MM-DD\")} 23:59:59`).unix('X'))\r\n }\r\n setData({\r\n ...data,\r\n ...newData\r\n })\r\n setReqSave(true)\r\n },\r\n }}\r\n value={startDate ? moment(startDate * 1000).format(\"YYYY-MM-DDTHH:mm\") : null}\r\n />\r\n <TextField\r\n label={translate('$__endDate', 1)}\r\n variant={customApp('fieldVariant', 1)}\r\n name=\"endDate\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='datetime-local'\r\n inputProps={{\r\n min: !endDate || startDate ? moment(startDate * 1000).format(\"YYYY-MM-DDTHH:mm\") : null,\r\n autoComplete: 'end-date',\r\n onChange: (d) => {\r\n let newData = {\r\n endDate: moment(d.target.value).unix('X')\r\n }\r\n setEndDate(moment(d.target.value).unix('X'))\r\n if (!startDate) {\r\n newData = {\r\n ...newData,\r\n startDate: moment(`${moment(d.target.value).format(\"YYYY-MM-DD\")} 00:00:00`).unix('X')\r\n }\r\n setStartDate(moment(`${moment(d.target.value).format(\"YYYY-MM-DD\")} 00:00:00`).unix('X'))\r\n }\r\n setData({\r\n ...data,\r\n ...newData\r\n })\r\n setReqSave(true)\r\n },\r\n }}\r\n value={endDate ? moment(endDate * 1000).format(\"YYYY-MM-DDTHH:mm\") : null}\r\n />\r\n <div style={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"flex-end\"\r\n }}>\r\n <CustomButton\r\n color={customApp('lightgray')}\r\n icon={'clear'}\r\n onClick={() => {\r\n setStartDate(null)\r\n setEndDate(null)\r\n setData({\r\n ...data,\r\n startDate: null,\r\n endDate: null,\r\n recurrence: null\r\n })\r\n setSetDate(false)\r\n setReqSave(true)\r\n }}\r\n size={'15px'}\r\n {...{\r\n\r\n title: translate(`$__clearDate`, '*'),\r\n text: translate(`$__clearDate`, '*')\r\n }}\r\n />\r\n </div>\r\n {/* <DataPicker\r\n type=\"datetime\"\r\n clearButtonPosition={\"flex-end\"}\r\n onChangeStartDate={(d) => {\r\n let newData = {\r\n startDate: moment(d).unix('X')\r\n }\r\n setStartDate(moment(d).unix('X'))\r\n if (!endDate || endDate < moment(d).unix('X')) {\r\n newData = {\r\n ...newData,\r\n endDate: moment(`${moment(d).format(\"YYYY-MM-DD\")} 23:59:59`).unix('X')\r\n }\r\n setEndDate(moment(`${moment(d).format(\"YYYY-MM-DD\")} 23:59:59`).unix('X'))\r\n }\r\n setData({\r\n ...data,\r\n ...newData\r\n })\r\n setReqSave(true)\r\n }}\r\n onChangeEndDate={(d) => {\r\n let newData = {\r\n endDate: moment(d).unix('X')\r\n }\r\n setEndDate(moment(d).unix('X'))\r\n if (!startDate) {\r\n newData = {\r\n ...newData,\r\n startDate: moment(`${moment(d).format(\"YYYY-MM-DD\")} 00:00:00`).unix('X')\r\n }\r\n setStartDate(moment(`${moment(d).format(\"YYYY-MM-DD\")} 00:00:00`).unix('X'))\r\n }\r\n setData({\r\n ...data,\r\n ...newData\r\n })\r\n setReqSave(true)\r\n }}\r\n range\r\n // horizontal\r\n startDate={startDate ? new Date(startDate * 1000) : null}\r\n endDate={endDate ? new Date(endDate * 1000) : null}\r\n onClear={() => {\r\n setStartDate(null)\r\n setEndDate(null)\r\n setData({\r\n ...data,\r\n startDate: null,\r\n endDate: null,\r\n recurrence: null\r\n })\r\n setSetDate(false)\r\n setReqSave(true)\r\n }\r\n\r\n }\r\n /> */}\r\n <div\r\n style={{ position: \"relative\", width: \"fit-content\", float: \"right\", display: \"flex\", justifyContent: \"right\" }}\r\n >\r\n <GroupedButton\r\n options={[\r\n {\r\n value: 0,\r\n label: \"Manual\",\r\n },\r\n {\r\n value: 7,\r\n label: `7 ${translate(\"$__days\").toLowerCase()}`,\r\n },\r\n {\r\n value: 15,\r\n label: `15 ${translate(\"$__days\").toLowerCase()}`,\r\n },\r\n {\r\n value: 30,\r\n label: `30 ${translate(\"$__days\").toLowerCase()}`,\r\n },\r\n {\r\n value: 60,\r\n label: `60 ${translate(\"$__days\").toLowerCase()}`,\r\n },\r\n {\r\n value: 90,\r\n label: `90 ${translate(\"$__days\").toLowerCase()}`,\r\n },\r\n {\r\n value: 180,\r\n label: `180 ${translate(\"$__days\").toLowerCase()}`,\r\n },\r\n {\r\n value: 365,\r\n label: `365 ${translate(\"$__days\").toLowerCase()}`,\r\n },\r\n ...parentData && parentData.startDate && parentData.endDate ? [\r\n {\r\n value: \"parent\",\r\n label: `${translate(\"$__useParentDate\")} ${moment(parentData.startDate * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")} - ${moment(parentData.endDate * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")}`,\r\n }\r\n ] : [],\r\n ]}\r\n value={dateDays ? dateDays : \"\"}\r\n onChange={(v) => {\r\n if (v !== \"parent\" && v !== 0) {\r\n setEndDate(moment(new Date(startDate * 1000)).tz(\"America/Sao_Paulo\").add(v, \"days\").unix(\"X\"))\r\n changeData({ name: \"endDate\", value: moment(new Date(startDate * 1000)).tz(\"America/Sao_Paulo\").add(v, \"days\").unix(\"X\") }, null, true)\r\n } else if (v === \"parent\") {\r\n if (parentData.startDate) {\r\n setStartDate(parentData.startDate)\r\n changeData(\r\n { name: \"startDate\", value: parentData.startDate },\r\n parentData.endDate ?\r\n { name: \"endDate\", value: parentData.endDate }\r\n : null, true\r\n )\r\n if (parentData.endDate) {\r\n setEndDate(parentData.endDate)\r\n }\r\n }\r\n if (!parentData.startDate && parentData.endDate) {\r\n setEndDate(parentData.endDate)\r\n changeData(\r\n { name: \"endDate\", value: parentData.endDate }\r\n , null\r\n , true\r\n )\r\n }\r\n }\r\n setDateDays(v)\r\n }}\r\n />\r\n </div>\r\n <div className={classes.switch}\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n float: \"left\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n {translate(\"$__freeChildrenDate\", 1)}\r\n <Switch\r\n checked={data.freeChildrenDate ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: \"freeChildrenDate\",\r\n value: data.freeChildrenDate ? false : true\r\n })\r\n }}\r\n name=\"freeChildrenDate\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"freeChildrenDate\") > -1) ? true : false}\r\n />\r\n </div>\r\n {data.startDate && moment(data.startDate).isValid() &&\r\n (!dataType.hideFields || (dataType.hideFields && dataType.hideFields.indexOf(\"recurrence\") === -1)) &&\r\n <div style={{ width: \"311px\", position: \"relative\", float: \"left\" }}>\r\n {data._recurrenceId ?\r\n <div\r\n style={{\r\n marginTop: \"15px\",\r\n\r\n }}\r\n >\r\n {translate(\"$__recurrentActivityFrom\")}:\r\n <Card db=\"cards\" cardId={db.cards[data._recurrenceId]._id} Avatar ignoreList onlyOption />\r\n </div>\r\n :\r\n <div>\r\n <RecurrenceSettings\r\n data={data}\r\n onChange={(res) => {\r\n setData({\r\n ...data,\r\n ...res,\r\n recurrenceNextDate: moment(`${res.recurrenceNextDate} 06:00:00`).tz(\"America/Sao_Paulo\").format('YYYY-MM-DD')\r\n })\r\n setReqSave(true)\r\n }}\r\n />\r\n {data.recurrence && data.recurrence !== \"0\" && data.recurrenceNextDate &&\r\n <fieldset\r\n style={{ marginTop: \"7px\" }}>\r\n <legend>{translate(\"$__NextRecurrenceDate\")}</legend>\r\n <DataPicker\r\n // type=\"date\"\r\n placeholder={translate(\"$__NextRecurrenceDate\")}\r\n clearButtonPosition={\"flex-end\"}\r\n onChangeStartDate={(d) => {\r\n let newData = {\r\n recurrenceNextDate: moment(d).tz(\"America/Sao_Paulo\").format('YYYY-MM-DD')\r\n }\r\n setData({\r\n ...data,\r\n ...newData\r\n })\r\n setReqSave(true)\r\n }}\r\n\r\n startDate={data.recurrenceNextDate && moment(data.recurrenceNextDate).isValid() ? new Date(moment(`${data.recurrenceNextDate} 06:00:00`).tz(\"America/Sao_Paulo\").unix('X') * 1000) : null}\r\n\r\n onClear={() => {\r\n setData({\r\n ...data,\r\n recurrenceNextDate: null,\r\n })\r\n setReqSave(true)\r\n }\r\n\r\n }\r\n />\r\n </fieldset>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </React.Fragment>\r\n : (permission || ((CardAccess > 2 || data.endDate || data.startDate || permission) && !isTemplate)) ?\r\n <CustomIconButton\r\n text={translate(\"$__addDeadline\", 1)}\r\n icon=\"timer\"\r\n onClick={() => {\r\n setSetDate(true)\r\n setStartDate(moment(`${moment().format(\"YYYY-MM-DD\")} 00:00:00`).unix(\"X\"))\r\n changeData(\r\n { name: \"startDate\", value: moment(`${moment().format(\"YYYY-MM-DD\")} 00:00:00`).unix(\"X\") },\r\n dateDays !== \"parent\" ?\r\n { name: \"endDate\", value: moment(`${moment().format(\"YYYY-MM-DD\")} 23:59:59`).add(dateDays, \"days\").unix(\"X\") }\r\n : null\r\n )\r\n if (dateDays !== \"parent\") {\r\n setEndDate(moment(`${moment().format(\"YYYY-MM-DD\")} 23:59:59`).add(dateDays, \"days\").unix(\"X\"))\r\n }\r\n }}\r\n />\r\n : <></>\r\n }\r\n </fieldset>\r\n }\r\n {((data.status === \"completed\" || !permission) && CardAccess < 3) ?\r\n <React.Fragment>\r\n {data._tags && data._tags.length > 0 ?\r\n <CardTags options={data._tags}\r\n expanded={true}\r\n />\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n </React.Fragment>\r\n :\r\n <React.Fragment>\r\n {(!dataType.hideFields || (dataType.hideFields && dataType.hideFields.indexOf(\"tags\") === -1)) &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__tags\", 1)}</legend>\r\n <TagsInput\r\n data={{\r\n values: data._tags ? data._tags : [],\r\n }}\r\n callBack={(v) => {\r\n if (permission)\r\n changeData({ name: \"_tags\", value: v })\r\n }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"_tags\") > -1) ? true : false}\r\n placeholder={translate(\"$__selectTheOptions\", 1)}\r\n />\r\n {\r\n data\r\n && data._tags\r\n && data._tags.filter(a => a.value).length > 0\r\n ?\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.childrenAutoTag\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n if (permission)\r\n changeData({\r\n name: \"childrenAutoTag\",\r\n value: data.childrenAutoTag ? false : true\r\n })\r\n }}\r\n name=\"childrenAutoTag\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"childrenAutoTag\") > -1) ? true : false}\r\n />\r\n {translate(\"$__makeLinksAssumeTheSameLabelsOnAdd\", 1)}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n\r\n </fieldset>\r\n }\r\n </React.Fragment>\r\n }\r\n {(!dataType.hideFields\r\n || (dataType.hideFields\r\n && (dataType.hideFields.indexOf(\"priority\") === -1\r\n || dataType.hideFields.indexOf(\"status\") === -1))) &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n {!isTemplate && (!dataType.hideFields || (dataType.hideFields && dataType.hideFields.indexOf(\"priority\") === -1)) &&\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"100%\"\r\n }}>\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"calc(50% - 15px)\",\r\n margin: 3,\r\n paddingLeft: 7,\r\n }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.priority}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"priority\"\r\n disableClearable\r\n value={\r\n data\r\n && data.priority\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.priority)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__priority\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n inputProps={{\r\n ...params && params.inputProps ? params.inputProps : {},\r\n style: {\r\n ...params && params.inputProps && params.inputProps.style ? params.inputProps.style : {},\r\n paddingLeft: 7,\r\n marginTop: 3,\r\n marginLeft: -5,\r\n width: \"calc(100% - 7px)\",\r\n color: data && data.priority ? db.priority.filter(a =>\r\n String(a.value) === String(data.priority)\r\n )[0].color : db.priority[0].color,\r\n borderLeft: `solid 3.33px ${data && data.priority ? db.priority.filter(a =>\r\n String(a.value) === String(data.priority)\r\n )[0].color : db.priority[0].color}`,\r\n }\r\n }}\r\n value={\r\n data\r\n && data.priority\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.priority)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission)\r\n changeData({ name: \"priority\", value: v[\"value\"] })\r\n }\r\n }\r\n renderOption={(option, { inputValue }) => {\r\n return (\r\n <span style={{ color: option.color }}>\r\n {translate(option.label, 1)}\r\n </span>\r\n )\r\n }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n />\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"calc(50% - 15px)\",\r\n margin: 3,\r\n paddingLeft: 7,\r\n }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.priority}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"risk\"\r\n disableClearable\r\n value={\r\n data\r\n && data.risk\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.risk)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__risk\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n inputProps={{\r\n ...params && params.inputProps ? params.inputProps : {},\r\n style: {\r\n ...params && params.inputProps && params.inputProps.style ? params.inputProps.style : {},\r\n paddingLeft: 7,\r\n marginTop: 3,\r\n marginLeft: -5,\r\n width: \"calc(100% - 7px)\",\r\n color: data && data.risk ? db.priority.filter(a =>\r\n String(a.value) === String(data.risk)\r\n )[0].color : db.priority[0].color,\r\n borderLeft: `solid 3.33px ${data && data.risk ? db.priority.filter(a =>\r\n String(a.value) === String(data.risk)\r\n )[0].color : db.priority[0].color}`,\r\n }\r\n }}\r\n value={\r\n data\r\n && data.risk\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.risk)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission)\r\n changeData({ name: \"risk\", value: v[\"value\"] })\r\n }\r\n }\r\n renderOption={(option, { inputValue }) => {\r\n return (\r\n <span style={{ color: option.color }}>\r\n {translate(option.label, 1)}\r\n </span>\r\n )\r\n }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n />\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"calc(50% - 15px)\",\r\n margin: 3,\r\n paddingLeft: 7,\r\n }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.priority}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"complexity\"\r\n disableClearable\r\n value={\r\n data\r\n && data.complexity\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.complexity)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__complexity\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n inputProps={{\r\n ...params && params.inputProps ? params.inputProps : {},\r\n style: {\r\n ...params && params.inputProps && params.inputProps.style ? params.inputProps.style : {},\r\n paddingLeft: 7,\r\n marginTop: 3,\r\n marginLeft: -5,\r\n width: \"calc(100% - 7px)\",\r\n color: data && data.complexity ? db.priority.filter(a =>\r\n String(a.value) === String(data.complexity)\r\n )[0].color : db.priority[0].color,\r\n borderLeft: `solid 3.33px ${data && data.complexity ? db.priority.filter(a =>\r\n String(a.value) === String(data.complexity)\r\n )[0].color : db.priority[0].color}`,\r\n }\r\n }}\r\n value={\r\n data\r\n && data.complexity\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.complexity)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission)\r\n changeData({ name: \"complexity\", value: v[\"value\"] })\r\n }\r\n }\r\n renderOption={(option, { inputValue }) => {\r\n return (\r\n <span style={{ color: option.color }}>\r\n {translate(option.label, 1)}\r\n </span>\r\n )\r\n }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n />\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"calc(50% - 15px)\",\r\n margin: 3,\r\n paddingLeft: 7,\r\n }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.priority}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"impact\"\r\n disableClearable\r\n value={\r\n data\r\n && data.impact\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.impact)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__impact\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n inputProps={{\r\n ...params && params.inputProps ? params.inputProps : {},\r\n style: {\r\n ...params && params.inputProps && params.inputProps.style ? params.inputProps.style : {},\r\n paddingLeft: 7,\r\n marginTop: 3,\r\n marginLeft: -5,\r\n width: \"calc(100% - 7px)\",\r\n color: data && data.impact ? db.priority.filter(a =>\r\n String(a.value) === String(data.impact)\r\n )[0].color : db.priority[0].color,\r\n borderLeft: `solid 3.33px ${data && data.impact ? db.priority.filter(a =>\r\n String(a.value) === String(data.impact)\r\n )[0].color : db.priority[0].color}`,\r\n }\r\n }}\r\n value={\r\n data\r\n && data.impact\r\n\r\n && db.priority\r\n\r\n ? db.priority.filter(a =>\r\n String(a.value) === String(data.impact)\r\n )[0]\r\n : db.priority[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission)\r\n changeData({ name: \"impact\", value: v[\"value\"] })\r\n }\r\n }\r\n renderOption={(option, { inputValue }) => {\r\n return (\r\n <span style={{ color: option.color }}>\r\n {translate(option.label, 1)}\r\n </span>\r\n )\r\n }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"priority\") > -1) ? true : false}\r\n />\r\n </div>\r\n </div>\r\n }\r\n {!isTemplate && (!dataType.hideFields || (dataType.hideFields && dataType.hideFields.indexOf(\"status\") === -1)) &&\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.status}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"status\"\r\n disableClearable\r\n value={\r\n data\r\n && data.status\r\n && db.status\r\n ? db.status.filter(a =>\r\n String(a.value) === String(data.status)\r\n )[0]\r\n : db.status[0]\r\n }\r\n renderInput={(params) =>\r\n <div > <TextField\r\n {...params}\r\n label={translate(\"$__status\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.status\r\n && db.status\r\n ? db.status.filter(a =>\r\n String(a.value) === String(data.status)\r\n )[0]\r\n : db.status[0]\r\n }\r\n />\r\n </div>\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission || String(CardAccess) !== \"0\")\r\n changeData({ name: \"status\", value: v[\"value\"] })\r\n }\r\n }\r\n disabled={!permission || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"status\") > -1) ? String(CardAccess) === \"0\" ? true : false : false}\r\n />\r\n }\r\n\r\n </fieldset>\r\n }\r\n {((CardAccess > 4 || (AppAccess && AppAccess.plan && AppAccess.planAdmin)) && data.type === 'plan' && data.status !== \"completed\") &&\r\n <React.Fragment>\r\n {!miroOption && !data.miroBoard ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__MiroBoard\", 1)}</legend>\r\n <CustomIconButton\r\n text={translate(\"$__addBoard\", 1)}\r\n icon={\"developer_board\"}\r\n onClick={() => {\r\n setMiroOption(true)\r\n }}\r\n />\r\n </fieldset>\r\n : miroOption ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__MiroBoard\", 1)}</legend>\r\n <TextField\r\n label={translate(\"$__MiroBoardCode\")}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"boardCode\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon={\"save\"} color=\"green\" onClick={() => setMiroOption(false)} />\r\n </InputAdornment>\r\n ),\r\n onChange: (d, v) => {\r\n changeData({ name: \"miroBoard\", value: d.target.value })\r\n },\r\n }}\r\n value={data && data.miroBoard ? data.miroBoard : \"\"}\r\n placeholder={translate(\"$__MiroBoardCodePlaceholder\", 1)}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"miroBoard\") > -1) ? true : false}\r\n />\r\n </fieldset>\r\n : data.miroBoard &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__MiroBoard\", 1)}</legend>\r\n <CustomIconButton\r\n text={translate(\"$__openMiroBoard\", 1)}\r\n icon={\"developer_board\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n miro: true,\r\n miroBoard: data.miroBoard\r\n })\r\n }}\r\n />\r\n <CustomIconButton\r\n text={translate(\"$__editBoard\", 1)}\r\n icon={\"insert_link\"}\r\n onClick={() => {\r\n setMiroOption(true)\r\n }}\r\n />\r\n </fieldset>\r\n }\r\n </React.Fragment>\r\n }\r\n {\r\n (!data._id\r\n ||\r\n (\r\n (\r\n data\r\n && data._users\r\n && session\r\n && session._id\r\n && data._users[session._id]\r\n && data._users[session._id].access\r\n && parseInt(data._users[session._id].access) >= 3\r\n )\r\n && (\r\n !dataType.hideFields\r\n ||\r\n (\r\n dataType.hideFields\r\n && dataType.hideFields.indexOf(\"private\") === -1\r\n )\r\n )\r\n )\r\n ) &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.private\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n if (permission)\r\n changeData({\r\n name: \"private\",\r\n value: data.private ? false : true\r\n })\r\n }}\r\n name=\"private\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"private\") > -1) ? true : false}\r\n />\r\n {translate(\"$__private\", 1)}\r\n </div>\r\n </fieldset>\r\n }\r\n {(!dataType.hideFields || (dataType.hideFields && dataType.hideFields.indexOf(\"private\") === -1)) && data.private &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.privateChildrens\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n if (permission)\r\n changeData({\r\n name: \"privateChildrens\",\r\n value: data.privateChildrens ? false : true\r\n })\r\n }}\r\n name=\"privateChildrens\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"private\") > -1) ? true : false}\r\n />\r\n {translate(\"$__privateChildrens\", 1)}\r\n </div>\r\n </fieldset>\r\n }\r\n {permission && data.type === \"chatGroup\" &&\r\n <React.Fragment>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.onlyAdminsSendMessages\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n if (permission)\r\n changeData({\r\n name: \"onlyAdminsSendMessages\",\r\n value: data.onlyAdminsSendMessages ? false : true\r\n })\r\n }}\r\n name=\"onlyAdmins\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__onlyAdminsCanSendMessage\", 1)}\r\n </div>\r\n </fieldset>\r\n {(\r\n data.broadcast\r\n ||\r\n (\r\n reduxStore.getState().timeline\r\n &&\r\n (\r\n !reduxStore.getState().timeline[data._id]\r\n ||\r\n (\r\n reduxStore.getState().timeline[data._id]\r\n && Object.keys(reduxStore.getState().timeline[data._id]).length === 0\r\n )\r\n )\r\n )\r\n ) ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.broadcast\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n if (permission)\r\n changeData({\r\n name: \"broadcast\",\r\n value: data.broadcast ? false : true\r\n })\r\n }}\r\n name=\"broadcast\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n // disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"private\") > -1) ? true : false}\r\n />\r\n {translate(\"$__workAsABroadcastList\", 1)}\r\n </div>\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>}\r\n </React.Fragment>\r\n }\r\n {AppAccess\r\n && AppAccess.plan\r\n && AppAccess.planAdmin\r\n && isTemplate\r\n && data.type === \"plan\"\r\n && session._access\r\n && session._access.userAdmin\r\n && session._access.machenAdmin\r\n ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.plans}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"plans\"\r\n disableClearable\r\n value={\r\n data\r\n && data.plans\r\n && db.plans\r\n ? db.plans.filter(a =>\r\n String(a.value) === String(data.plans)\r\n )[0]\r\n : {\r\n label: \"$__notAvaiable\",\r\n value: null,\r\n settings: {}\r\n }\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__avaiablefromplan\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.plans\r\n && db.plans\r\n ? db.plans.filter(a =>\r\n String(a.value) === String(data.plans)\r\n )[0]\r\n : {\r\n label: \"$__notAvaiable\",\r\n value: null,\r\n settings: {}\r\n }\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission)\r\n changeData({ name: \"plans\", value: v[\"value\"] })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\nconst mapStateToProps = (store) => ({\r\n sideModule: store.sideModule,\r\n card: store.db.cards[store.sideModule.id],\r\n cards: store.db.cards,\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst headerStyle = theme => ({\r\n btClose: {\r\n position: 'relative',\r\n zIndex: theme.zIndex.drawer + 1,\r\n right: '0',\r\n top: '-64px',\r\n backgroundColor: '#FFFFFF',\r\n display: 'flex',\r\n },\r\n data: {\r\n marginTop: '0px',\r\n padding: '0 10px',\r\n '& fieldset': {\r\n border: 'solid 1px rgba(0,0,0,0.1)',\r\n '& legend': {\r\n marginBottom: '0px',\r\n fontSize: '16px',\r\n color: customApp('color')\r\n }\r\n }\r\n },\r\n timeline: {\r\n position: 'absolute',\r\n width: '100%',\r\n top: '300px',\r\n bottom: '0px',\r\n },\r\n timelineKpiParent: {\r\n position: 'absolute',\r\n width: '100%',\r\n top: '350px',\r\n bottom: '0px',\r\n },\r\n avatar: {\r\n width: '22px',\r\n height: '22px'\r\n },\r\n switch: {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n color: customApp('medium')\r\n }\r\n});\r\n\r\nexport default headerStyle;\r\n","//CORE\r\nimport React from \"react\"\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\nimport { ResponsiveBullet } from '@nivo/bullet'\r\n\r\n//COMPONENTS\r\nimport Autocomplete from \"components/AutoComplete\"\r\nimport Card from \"components/Card\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport KPIChange from \"components/KPI/change\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField\"\r\nimport Timeline from \"componentsV3/Timeline\"\r\n\r\n//@MATERIAL\r\nimport Icon from \"components/Icon\"\r\nimport ToggleButton from \"@material-ui/lab/ToggleButton\"\r\nimport ToggleButtonGroup from \"@material-ui/lab/ToggleButtonGroup\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport {\r\n withStyles\r\n} from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card-KPI.js\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp,\r\n appAlert,\r\n formatNumber,\r\n getAppAccess,\r\n} from \"functions/\"\r\n\r\nimport {\r\n saveCard\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n getUserAccess\r\n} from \"functions/cards\"\r\n\r\n\r\nfunction Component(props) {\r\n const {\r\n classes\r\n } = props\r\n\r\n const {\r\n timeline,\r\n db,\r\n session,\r\n sideModule,\r\n } = reduxStore.getState()\r\n\r\n const data = sideModule.data || {}\r\n\r\n const [view, setView] = React.useState(data.kpi_type ? \"timeline\" : \"settings\")\r\n const [reqSave, setReqSave] = React.useState(data._id && data._id === \"new\" && data.name ? true : false)\r\n\r\n React.useEffect(() => {\r\n if (reqSave && props.reqSave)\r\n props.reqSave()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reqSave])\r\n\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(sideModule.id)\r\n\r\n let permission = false\r\n\r\n if (parseInt(CardAccess) >= 4 || (AppAccess.plan && AppAccess.planAdmin))\r\n permission = true\r\n\r\n if (session._id\r\n && db.cards[data._id]\r\n && db.cards[data._id]._users\r\n && db.cards[data._id]._users[Object.keys(db.cards[data._id]._users).find(a => a.indexOf(session._id) > -1)])\r\n CardAccess = db.cards[data._id]._users[Object.keys(db.cards[data._id]._users).find(a => a.indexOf(session._id) > -1)]\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let kpi_flow = timeline[data._id] || {}\r\n kpi_flow = Object.keys(kpi_flow).filter(a => kpi_flow[a].type === \"kpi\").map(a => kpi_flow[a])\r\n\r\n let parentData = null\r\n let notAllocated = 0\r\n if (data._parent\r\n && reduxStore.getState().db.cards[data._parent]\r\n && reduxStore.getState().db.cards[data._parent].kpi_type\r\n && reduxStore.getState().db.cards[data._parent].kpi_type !== 'task'\r\n ) {\r\n parentData = reduxStore.getState().db.cards[data._parent]\r\n if (parseInt(parentData.kpi_ini) > parseInt(parentData.kpi_fin)) {\r\n notAllocated = parseInt(parentData.kpi_ini) - parseInt(parentData.kpi_fin)\r\n } else {\r\n notAllocated = parseInt(parentData.kpi_fin) - parseInt(parentData.kpi_ini)\r\n }\r\n Object.keys(reduxStore.getState().db.cards)\r\n .filter(pp =>\r\n reduxStore.getState().db.cards[pp]._parent\r\n && reduxStore.getState().db.cards[pp]._parent === parentData._id\r\n && reduxStore.getState().db.cards[pp].kpi_type === parentData.kpi_type\r\n && reduxStore.getState().db.cards[pp].kpi_useParent\r\n )\r\n .forEach(pp => {\r\n if (parseInt(parentData.kpi_ini) > parseInt(parentData.kpi_fin && parseInt(reduxStore.getState().db.cards[pp].kpi_ini))) {\r\n notAllocated = notAllocated - parseInt(reduxStore.getState().db.cards[pp].kpi_ini)\r\n } else if (parseInt(reduxStore.getState().db.cards[pp].kpi_fin)) {\r\n notAllocated = notAllocated - parseInt(reduxStore.getState().db.cards[pp].kpi_fin)\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n const changeData = (d) => {\r\n if ((d.value && !sideModule.data[d.name]) || (sideModule.data[d.name] && sideModule.data[d.name] !== d.value))\r\n setReqSave(true)\r\n\r\n let newData = {\r\n ...sideModule.data,\r\n [d.name]: d.value,\r\n }\r\n if (!newData.kpi_ini)\r\n newData = {\r\n ...newData,\r\n kpi_ini: 0,\r\n }\r\n if (!newData.kpi_fin)\r\n newData = {\r\n ...newData,\r\n kpi_fin: 0,\r\n }\r\n if (!newData.kpi_useParent && (!String(newData.kpi_useParent) !== 'false') && (parentData && parentData.kpi_type === d.value))\r\n newData = {\r\n ...newData,\r\n kpi_useParent: true,\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: newData\r\n })\r\n }\r\n\r\n const save = async (close = false) => {\r\n setReqSave(false)\r\n if (\r\n sideModule.data.kpi_type === \"time\"\r\n && (\r\n (\r\n parseInt(sideModule.data.kpi_fin) === 0\r\n && parseInt(sideModule.data.kpi_ini) === 0\r\n )\r\n || (\r\n parseInt(sideModule.data.kpi_fin) > 0\r\n && parseInt(sideModule.data.kpi_fin) < parseInt(sideModule.data.kpi_ini)\r\n )\r\n\r\n )\r\n ) {\r\n appAlert({\r\n message: translate(\"$__invalidMaximumMinutes\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: null\r\n })\r\n } else {\r\n const rSave = await saveCard(props, true, sideModule.data)\r\n if (rSave) {\r\n appAlert({\r\n message: translate(\"$__kpiDataSaved\", 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: null\r\n })\r\n }\r\n if (close)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n\r\n const setParentKpi = async (d) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n kpi_ini: null,\r\n kpi_fin: null,\r\n kpi_useParent: d.value ? true : null\r\n }\r\n })\r\n }\r\n\r\n const changeKPI = async (d, b) => {\r\n let newValue = String(data[`kpi_${b}`] ? data[`kpi_${b}`] : 0)\r\n if (d.key === '-' && newValue.substring(0, 1) !== \"-\") {\r\n newValue = `-${newValue}`\r\n } else if (d.key.toLowerCase() === 'backspace') {\r\n newValue = newValue.substr(0, newValue.length - 1)\r\n } else {\r\n newValue = `${newValue ? newValue : ``}${!isNaN(d.key) || ((d.key === ',' || d.key === '.') && newValue.indexOf(',') === -1 && newValue.indexOf('.') === -1) ? d.key : ``}`\r\n }\r\n if (newValue && newValue.indexOf(',') > -1)\r\n newValue = newValue.substr(0, newValue.indexOf(',') + 3)\r\n\r\n changeData({\r\n name: `kpi_${b}`,\r\n value: newValue\r\n })\r\n }\r\n\r\n let totalAllocated = 0\r\n\r\n Object.keys(db.cards).filter(ch => db.cards[ch] && db.cards[ch]._parent && db.cards[ch]._parent === data._id && db.cards[ch].kpi_useParent).forEach((ch, chi) => {\r\n if (parseInt(data.kpi_ini) > parseInt(data.kpi_fin)) {\r\n totalAllocated = totalAllocated + parseInt(db.cards[ch].kpi_ini) - parseInt(db.cards[ch].kpi_fin)\r\n } else {\r\n totalAllocated = totalAllocated + parseInt(db.cards[ch].kpi_fin) - parseInt(db.cards[ch].kpi_ini)\r\n }\r\n })\r\n\r\n return (\r\n <div>\r\n <SideModuleCloseAndSave\r\n save={reqSave && permission ? () => {\r\n save()\r\n } : null}\r\n saveClose={reqSave && permission ? () => {\r\n save(true)\r\n } : null}\r\n close={() => {\r\n if (props.onClose)\r\n props.onClose(reqSave)\r\n }}\r\n />\r\n <div style={{\r\n posision: \"absolute\",\r\n top: 5,\r\n left: 0,\r\n right: 0\r\n }}>\r\n {permission ?\r\n <div style={{\r\n width: '100%',\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'row-reverse'\r\n }}>\r\n <CustomButton\r\n title={translate(`$__changeKpiType`, 1)}\r\n color={customApp(view === 'settings' ? \"menu\" : \"color\")}\r\n icon={'tune'}\r\n onClick={() => setView('settings')}\r\n size={'25px'}\r\n transparent\r\n />\r\n\r\n <CustomButton\r\n title={translate(`$__chart`, 1)}\r\n color={customApp(view === 'chart' ? \"menu\" : \"color\")}\r\n icon={'analytics'}\r\n onClick={() => setView('chart')}\r\n size={'25px'}\r\n transparent\r\n />\r\n <CustomButton\r\n title={translate(`$__statement`, 1)}\r\n color={customApp(view === 'timeline' ? \"menu\" : \"color\")}\r\n icon={'receipt'}\r\n onClick={() => setView('timeline')}\r\n size={'25px'}\r\n transparent\r\n />\r\n </div>\r\n : <div>\r\n\r\n </div>\r\n }\r\n {view === 'chart' ?\r\n <KPIChange data={data} chartShow={true} />\r\n : view === 'settings' ?\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <legend>{translate(\"$__measurementeType\", 1)}</legend>\r\n {Object.keys(db.cards).filter(c => db.cards[c]._parent === data._id && db.cards[c].kpi_useParent).length === 0 ?\r\n <ToggleButtonGroup\r\n value={data && data.kpi_type ? data.kpi_type : \"task\"}\r\n exclusive\r\n onChange={(e, a) => {\r\n changeData({\r\n name: \"kpi_type\",\r\n value: a\r\n })\r\n }}\r\n >\r\n <ToggleButton value=\"decimal\">\r\n <Icon title={translate(\"$__decimal\", 1)} color=\"color\">filter_9_plus</Icon>\r\n </ToggleButton>\r\n <ToggleButton value=\"currency\">\r\n <Icon title={translate(\"$__currency\", 1)} color=\"color\">attach_money</Icon>\r\n </ToggleButton>\r\n <ToggleButton value=\"percent\">\r\n <Tooltip title={translate(\"$__percentage\", 1)}>\r\n <span style={{ color: `${customApp(\"color\")}`, fontSize: \"22px\" }}>%</span>\r\n </Tooltip>\r\n </ToggleButton>\r\n <ToggleButton value=\"time\">\r\n <Icon title={translate(\"$__time\", 1)} color=\"color\">hourglass_top</Icon>\r\n </ToggleButton>\r\n <ToggleButton value=\"task\">\r\n <Icon title={translate(\"$__task\", 1)} color=\"color\">task</Icon>\r\n </ToggleButton>\r\n </ToggleButtonGroup>\r\n : data.kpi_type === 'decimal' ?\r\n <Icon title={translate(\"$__decimal\", 1)} color=\"color\">filter_9_plus</Icon>\r\n : data.kpi_type === 'currency' ?\r\n <Icon title={translate(\"$__currency\", 1)} color=\"color\">attach_money</Icon>\r\n : data.kpi_type === 'percent' ?\r\n <Icon title={translate(\"$__percentage\", 1)} color=\"color\">percent</Icon>\r\n :\r\n <Icon title={translate(\"$__task\", 1)} color=\"color\">task</Icon>\r\n }\r\n {Object.keys(db.cards).filter(c => db.cards[c]._parent === data._id && db.cards[c].kpi_useParent).length === 0 ?\r\n <React.Fragment>\r\n\r\n </React.Fragment>\r\n :\r\n <React.Fragment>\r\n\r\n </React.Fragment>\r\n }\r\n {parentData && parentData.kpi_type && parentData.kpi_type === data.kpi_type ?\r\n <React.Fragment>\r\n <fieldset style={{ marginTop: 7 }}>\r\n <legend style={{ color: \"gray\", fontSize: 12 }}>{translate(\"$__parentKpi\", 1)}</legend>\r\n {data.kpi_useParent ?\r\n <React.Fragment>\r\n <fieldset style={{ marginTop: 3 }}>\r\n <legend style={{ color: \"blue\", fontSize: 12 }}>{parentData && parseInt(parentData.kpi_ini) > parseInt(parentData.kpi_fin) ? translate(\"$__notAllocatedBudget\", 1) : translate(\"$__notAllocatedGoal\", 1)}</legend>\r\n {formatNumber(notAllocated, parentData.kpi_type === \"time\" ? \"number\" : parentData.kpi_type, parentData.kpi_currency ? parentData.kpi_currency : null)}\r\n </fieldset>\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>}\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data.kpi_useParent ? true : false}\r\n onChange={(d) => {\r\n setParentKpi({\r\n name: \"kpi_useParent\",\r\n value: data.kpi_useParent ? false : true\r\n })\r\n }}\r\n name=\"kpi_useParent\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__useParentKpi\", 1)}\r\n </div>\r\n {!data.kpi_useParent ?\r\n <div style={{ color: 'red' }}>\r\n {translate(\"$__independentKPIDescription\")}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div>\r\n </div>\r\n </fieldset>\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {data && data.kpi_type\r\n && (data.kpi_type !== \"task\") &&\r\n <React.Fragment>\r\n {data.kpi_type === \"currency\" && !data.kpi_useParent && Object.keys(db.cards).filter(c => db.cards[c]._parent === data._id && db.cards[c].kpi_useParent).length === 0 ?\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.currency}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"currency\"\r\n disableClearable\r\n value={\r\n data\r\n && data.kpi_currency\r\n && db.currency\r\n ? db.currency.filter(a =>\r\n String(a.value) === String(data.kpi_currency)\r\n )[0]\r\n : db.currency[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__currency\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.kpi_currency\r\n && db.currency\r\n ? db.currency.filter(a =>\r\n String(a.value) === String(data.kpi_currency)\r\n )[0]\r\n : db.currency[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: \"kpi_currency\", value: v[\"value\"] })\r\n }\r\n }\r\n />\r\n : Object.keys(db.cards).filter(ch => db.cards[ch]._parent === data._id && db.cards[ch].kpi_useParent).length > 0 ?\r\n <fieldset style={{ marginTop: 7 }}>\r\n <legend style={{ color: \"gray\", fontSize: 12 }}>{translate(\"$__allocatedKpiActivities\", 1)}</legend>\r\n <ul style={{ listStyle: \"none\", padding: 0 }}>\r\n {Object.keys(db.cards).filter(ch => db.cards[ch]._parent === data._id && db.cards[ch].kpi_useParent).map((ch, chi) => {\r\n let cardAllocated = 0\r\n if (parseInt(data.kpi_ini) > parseInt(data.kpi_fin)) {\r\n cardAllocated = parseInt(db.cards[ch].kpi_ini) - parseInt(db.cards[ch].kpi_fin)\r\n } else {\r\n cardAllocated = parseInt(db.cards[ch].kpi_fin) - parseInt(db.cards[ch].kpi_ini)\r\n }\r\n let kpiAccomplished = 0\r\n if (timeline && timeline[ch] && Object.keys(timeline[ch]).filter(k => timeline[ch][k] && timeline[ch][k].value).length > 0)\r\n Object.keys(timeline[ch]).filter(k => timeline[ch][k] && timeline[ch][k].value).forEach(k => {\r\n kpiAccomplished = kpiAccomplished + parseFloat(timeline[ch][k].value)\r\n })\r\n return (\r\n <li key={`ca-${ch}`}>\r\n <Card db=\"cards\" data={reduxStore.getState().db.cards[ch]} notGlobalExpanded ignoreList />\r\n <div style={{\r\n width: \"100%\",\r\n height: 22,\r\n }}>\r\n <ResponsiveBullet\r\n data={\r\n [\r\n {\r\n // \"id\": \"temp.\",\r\n \"ranges\": [\r\n 0,\r\n parseInt(data.kpi_ini) > parseInt(data.kpi_fin) ? parseInt(data.kpi_ini) - parseInt(data.kpi_fin) : parseInt(data.kpi_fin) - parseInt(data.kpi_ini)\r\n ],\r\n \"measures\": [\r\n cardAllocated\r\n ],\r\n \"markers\": [\r\n kpiAccomplished\r\n ]\r\n }\r\n ]\r\n }\r\n minValue={parseInt(data.kpi_ini) > parseInt(data.kpi_fin) ? parseInt(data.kpi_fin) : parseInt(data.kpi_ini)}\r\n maxValue={parseInt(data.kpi_ini) < parseInt(data.kpi_fin) ? parseInt(data.kpi_fin) : parseInt(data.kpi_ini)}\r\n margin={{ top: 0, right: 0, bottom: 0, left: 0 }}\r\n spacing={50}\r\n titlePosition=\"after\"\r\n titleAlign=\"end\"\r\n titleOffsetX={-70}\r\n rangeBorderColor={{ from: 'color', modifiers: [] }}\r\n measureBorderColor={{ from: 'color', modifiers: [] }}\r\n measureSize={100000}\r\n markerSize={1.2}\r\n rangeColors=\"purple_orange\"\r\n measureColors=\"seq:blue_purple\"\r\n markerColors=\"seq:yellow_orange_red\"\r\n motionConfig=\"stiff\"\r\n />\r\n </div>\r\n <div style={{ marginTop: 0, fontSize: 12, color: 'black', width: \"100%\", textAlign: \"left\" }}>\r\n {formatNumber(cardAllocated, data.kpi_type === \"time\" ? \"number\" : data.kpi_type, data.kpi_currency ? data.kpi_currency : null)}\r\n </div>\r\n </li>)\r\n })\r\n }\r\n </ul>\r\n </fieldset>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ display: \"flex\", marginTop: \"14px\", justifyContent: !data.kpi_useParent ? \"space-between\" : \"center\" }}>\r\n {\r\n (\r\n !data.kpi_useParent\r\n ||\r\n (\r\n data.kpi_useParent\r\n && parentData\r\n && parseInt(parentData.kpi_ini) > parseInt(parentData.kpi_fin)\r\n )\r\n ) ?\r\n <div style={{ width: \"calc(50% - 7px)\" }}>\r\n <TextField\r\n label={data.kpi_useParent ? translate(\"$__budget\") : data.kpi_type === \"time\" ? translate(\"$__minimumMinutes\", 1) : translate(\"$__initialValue\", 1)}\r\n variant={\"outlined\"}\r\n name=\"kpi_ini\"\r\n placeholder={translate('$__value', 1)}\r\n value={formatNumber(data.kpi_ini ? data.kpi_ini : 0, data.kpi_type === 'time' ? 'number' : data.kpi_type, data.kpi_currency ? data.kpi_currency : null)}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n onKeyDown: (d) => {\r\n changeKPI(d, 'ini')\r\n },\r\n }}\r\n />\r\n\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {\r\n (\r\n !data.kpi_useParent\r\n ||\r\n (\r\n data.kpi_useParent\r\n && parentData\r\n && parseInt(parentData.kpi_ini) < parseInt(parentData.kpi_fin)\r\n )\r\n ) ?\r\n <div style={{ width: \"calc(50% - 7px)\" }}>\r\n <TextField\r\n label={data.kpi_useParent ? translate(\"$__goal\") : data.kpi_type === \"time\" ? translate(\"$__maximumMinutes\", 1) : translate(\"$__finalValue\", 1)}\r\n variant={\"outlined\"}\r\n name=\"kpi_fin\"\r\n value={formatNumber(data.kpi_fin ? data.kpi_fin : 0, data.kpi_type === 'time' ? 'number' : data.kpi_type, data.kpi_currency ? data.kpi_currency : null)}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n onKeyDown: (d) => {\r\n console.log(d.key)\r\n if (d.key === '-') {\r\n changeKPI(d, 'fin')\r\n } else {\r\n changeKPI(d, 'fin')\r\n }\r\n },\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data.kpi_reqMessage ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: \"kpi_reqMessage\",\r\n value: data.kpi_reqMessage ? false : true\r\n })\r\n }}\r\n name=\"kpi_reqMessage\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__reqDescription\", 1)}\r\n </div>\r\n\r\n {/* {data.kpi_type === \"time\" &&\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data.kpi_canExceed ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: \"kpi_canExceed\",\r\n value: data.kpi_canExceed ? false : true\r\n })\r\n }}\r\n name=\"kpi_canExceed\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__canExceedLimit\", 1)}\r\n </div>\r\n }\r\n } */}\r\n </React.Fragment>\r\n }\r\n </fieldset>\r\n :\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 30,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n }}\r\n >\r\n <KPIChange\r\n data={data}\r\n chartShow={false}\r\n />\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 103,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n }}\r\n >\r\n <Timeline\r\n noSearch={true}\r\n nodeId={data._id}\r\n type={\"kpi\"}\r\n db={'cards'}\r\n disabledSend\r\n loadTimeline\r\n kpi_type={data.kpi_type}\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n sideModule: store.sideModule,\r\n }\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from 'react'\r\n\r\n//REDUX\r\nimport * as reduxActions from 'store/actions'\r\nimport reduxStore from \"store/\"\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux'\r\n\r\n//COMPONENTS\r\nimport TextField from \"components/TextField\"\r\nimport Buttom from \"components/CustomButtons/Custom\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport Switch from \"components/Switch\"\r\n\r\n//@MATERIAL\r\nimport Autocomplete from \"components/AutoComplete\"\r\nimport Icon from \"components/Icon\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card.js\"\r\n\r\n//FUNCTIONS\r\nimport { saveCard, unlinkChildrens } from \"functions/cards\"\r\nimport { translate, customApp, appAlert } from \"functions/\"\r\n\r\nimport MatrixIcon from \"assets/icons/Matrix.js\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { db, sideModule } = reduxStore.getState()\r\n const { planType } = db\r\n const data = sideModule.data || {}\r\n const [reqSave, setReqSave] = React.useState(false)\r\n\r\n\r\n React.useEffect(() => {\r\n if (data.type === 'link' && data._id === 'new')\r\n setReqSave(true)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [sideModule.data._id])\r\n\r\n const changeData = (d, d2) => {\r\n if ((d.value && !sideModule.data[d.name]) || (sideModule.data[d.name] && sideModule.data[d.name] !== d.value))\r\n setReqSave(true)\r\n let newData = {\r\n ...sideModule.data,\r\n [d.name]: d.value,\r\n }\r\n if (d2 && d2.name && d2.value) {\r\n newData = {\r\n ...newData,\r\n [d2.name]: d2.value\r\n }\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n ...newData\r\n }\r\n })\r\n }\r\n\r\n const close = (cl) => {\r\n if (reqSave && !cl) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n const save = async (cl = false) => {\r\n setReqSave(false)\r\n if (!sideModule.data.name) {\r\n appAlert({\r\n message: translate('$__fillName', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n } else {\r\n const request = await saveCard(props, true, sideModule.data)\r\n if (request) {\r\n appAlert({\r\n message: translate('$__userDataSaved', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n if (cl)\r\n close(true)\r\n }\r\n }\r\n\r\n const unlinkCards = async () => {\r\n appAlert({\r\n message: translate('$__unlinkCardsConfirm', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: async () => {\r\n await unlinkChildrens(props, { cardId: data._id, _planId: data._planId })\r\n }\r\n })\r\n }\r\n\r\n const dataType = db.dataType.filter(a => a.name === sideModule.data.type)[0]\r\n\r\n return (\r\n <React.Fragment>\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => {\r\n // setSaveLoader(true)\r\n save()\r\n } : null}\r\n saveClose={reqSave ? () => {\r\n // setSaveLoader(true)\r\n save(true)\r\n } : null}\r\n // saveLoader={saveLoader}\r\n close={() => {\r\n close(true)\r\n }}\r\n />\r\n <div className={classes.root}>\r\n {data.type !== 'plan' ?\r\n <React.Fragment>\r\n {Object.keys(db.cards).filter(card => db.cards[card]._parent === data._id && !db.cards[card].checklist).length > 0 ?\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__unLinkCards\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__unLinkCardsDescription\", 1)}\r\n </div>\r\n <Buttom onClick={() => { unlinkCards() }} >{translate(\"$__unLinkCards\", 1)}</Buttom>\r\n </fieldset>\r\n :\r\n <fieldset style={{ marginBottom: '14px' }}>\r\n {(!dataType.hideFields || (dataType.hideFields && dataType.hideFields.indexOf('type') === -1)) &&\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.type}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: '100%' }}\r\n name=\"type\"\r\n disableClearable\r\n value={data && data.type && db && db.type ? db.type.filter(a => String(a.value) === String(data.type))[0] : db.type[0]}\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate('$__type', 1)}\r\n variant={customApp('fieldVariant')}\r\n value={data && data.type && db && db.type ? db.type.filter(a => String(a.value) === String(data.type))[0] : db.type[0]}\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: 'type', value: v['value'] })\r\n }\r\n }\r\n />\r\n }\r\n </fieldset>\r\n }\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {data.type === 'plan' ?\r\n <>\r\n <fieldset style={{ marginBottom: '14px', marginTop: 30 }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={planType}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: '100%' }}\r\n name=\"type\"\r\n disableClearable\r\n value={data && data.planType ? planType.filter(a => a.value === data.planType)[0] : planType[0]}\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate('$__planType', 1)}\r\n variant={customApp('fieldVariant')}\r\n value={data && data.planType ? planType.filter(a => a.value === data.planType)[0] : planType[0]}\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: 'planType', value: v['value'] })\r\n }\r\n }\r\n />\r\n {\r\n planType.filter(a =>\r\n !data.planType\r\n || (data.planType\r\n && a.value === data.planType\r\n && a.swot === true\r\n )\r\n ).length > 0 ?\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n }}>\r\n <div style={{\r\n width: \"fit-content\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"color\")\r\n }}>\r\n <Icon icon={MatrixIcon} color={customApp('color')} size={25} /><span style={{ marginLeft: 15 }}>MATRIX SWOT</span>\r\n </div>\r\n\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n <div>{translate(planType.filter(a =>\r\n !data.planType\r\n || (data.planType\r\n && a.value === data.planType\r\n )\r\n )[0].description, 1)}</div>\r\n </fieldset>\r\n <fieldset style={{ marginBottom: '14px', marginTop: 30 }}>\r\n <legend>{translate(\"$__referencesLabels\")}</legend>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n {translate(\"$__on\", 1)}\r\n <Switch\r\n checked={data.refs ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: \"refs\",\r\n value: data.refs ? false : true\r\n })\r\n }}\r\n name=\"refs\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n </div>\r\n {\r\n data.refs ?\r\n <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\r\n <div style={{ width: \"46%\" }}>\r\n <TextField\r\n label={translate(\"$__ref1Title\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"ref1Title\"}\r\n id={\"edit_ref_1\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data.ref1Title || \"\"}\r\n placeholder={translate(\"$__ref1Title_placeholder\", 1)}\r\n />\r\n </div>\r\n <div style={{ width: \"8%\", textAlign: \"center\", justifyContent: \"center\", alignItems: \"center\", fontSize: \"24px\", display: \"flex\", color: customApp(\"menu\") }}>|</div>\r\n <div style={{ width: \"46%\" }}>\r\n <TextField\r\n label={translate(\"$__ref2Title\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"ref2Title\"}\r\n id={\"edit_ref_2\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data.ref2Title || \"\"}\r\n placeholder={translate(\"$__ref2Title_placeholder\", 1)}\r\n />\r\n </div>\r\n </div> : <></>\r\n }\r\n </fieldset>\r\n <fieldset>\r\n <legend>{translate(\"$__defaultCurrency\")} </legend>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.currency}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"currency\"\r\n disableClearable\r\n value={\r\n data\r\n && data.default_currency\r\n && db.currency\r\n ? db.currency.filter(a =>\r\n String(a.value) === String(data.default_currency)\r\n )[0]\r\n : db.currency[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__currency\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.kpi_currency\r\n && db.currency\r\n ? db.currency.filter(a =>\r\n String(a.value) === String(data.kpi_currency)\r\n )[0]\r\n : db.currency[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: \"default_currency\", value: v[\"value\"] })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n </>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\nconst mapStateToProps = () => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from \"react\"\r\nimport styled from \"styled-components\"\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\"\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 Card from \"components/Card/\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport TextField from \"components/TextField\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\"\r\nimport {\r\n loadCards\r\n} from \"functions/loadData\"\r\n\r\nfunction Component(props) {\r\n const { db, session } = reduxStore.getState()\r\n const [name, setName] = React.useState(props.name ? props.name : '')\r\n const [add, setAdd] = React.useState(false)\r\n const [loadingData, setLoadingData] = React.useState(false)\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n React.useEffect(() => {\r\n reqFullData()\r\n return () => {\r\n // return false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const reqFullData = async () => {\r\n const loadParents = await loadCards({ ...props, ignoreLoader: true }, [props.nodeId], false, null, \"childrens\")\r\n if (loadParents)\r\n setLoadingData(false)\r\n }\r\n\r\n\r\n let parent = {}\r\n if (reduxStore.getState().db[props.db] && reduxStore.getState().db[props.db][props.nodeId])\r\n parent = reduxStore.getState().db[props.db][props.nodeId]\r\n\r\n let tasksCards = Object.keys(reduxStore.getState().db.cards)\r\n .filter(fil => {\r\n if (\r\n !reduxStore.getState().db.cards[fil].deleted\r\n && !reduxStore.getState().db.cards[fil].checklist\r\n && !reduxStore.getState().db.cards[fil]._recurrenceId\r\n && reduxStore.getState().db.cards[fil]._parent === props.nodeId &&\r\n (\r\n !reduxStore.getState().db.cards[fil].private\r\n || (\r\n reduxStore.getState().db.cards[fil].private\r\n && reduxStore.getState().db.cards[fil]._users\r\n && reduxStore.getState().db.cards[fil]._users[session._id]\r\n )\r\n )\r\n )\r\n return true\r\n return false\r\n }\r\n )\r\n .map(card => card)\r\n\r\n const addCard = async () => {\r\n const { socket } = reduxStore.getState().functions\r\n let type = 'task'\r\n if (parent && parent.type) {\r\n if (parent.type.indexOf('guideline') > -1)\r\n type = 'objective'\r\n if (parent.type === 'objective')\r\n type = 'goal'\r\n if (parent.type === 'goal')\r\n type = 'task'\r\n }\r\n if (parent.childrenAutoTag && parent._tags && parent._tags.length > 0)\r\n console.log(parent)\r\n\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"post\",\r\n action: \"add\"\r\n }, {\r\n _parent: parent._id,\r\n planId: parent._planId ? parent._planId : null,\r\n name,\r\n type,\r\n status: 'notStarted',\r\n ...(parent.childrenAutoTag && parent._tags && parent._tags.length > 0) ? {\r\n _tags: parent._tags\r\n } : {}\r\n }, async (response) => {\r\n socket.emit('card.UPD', {\r\n cardId: response.id,\r\n cardData: {\r\n ...response.data,\r\n // _loaded: true,\r\n _planId: parent._planId ? parent._planId : null,\r\n _parent: parent._id,\r\n _timeline: {\r\n [response.log._id]: {\r\n ...response.log,\r\n _parent: [response.id],\r\n }\r\n },\r\n _users: {\r\n [session._id]: {\r\n name: reduxStore.getState().db.users[session._id].name ? reduxStore.getState().db.users[session._id].name : null,\r\n displayName: reduxStore.getState().db.users[session._id].displayName ? reduxStore.getState().db.users[session._id].displayName : null,\r\n image: reduxStore.getState().db.users[session._id].image ? reduxStore.getState().db.users[session._id].image : null,\r\n access: 5,\r\n _id: session._id\r\n }\r\n }\r\n },\r\n })\r\n setName('')\r\n })\r\n }\r\n\r\n const onDragEnd = async result => {\r\n let cardsOn = Object.keys(reduxStore.getState().db.cards)\r\n .filter(fil => {\r\n if (reduxStore.getState().db.cards[fil] && reduxStore.getState().db.cards[fil].checklist && reduxStore.getState().db.cards[fil]._parent === props.nodeId)\r\n return true\r\n return false\r\n }\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].order && db.cards[b].order && String(db.cards[a].order.low) && String(db.cards[b].order.low) && parseInt(db.cards[a].order.low) < parseInt(db.cards[b].order.low)) {\r\n return -1\r\n } else if (db.cards[a].order && db.cards[b].order && String(db.cards[a].order.low) && String(db.cards[b].order.low) && parseInt(db.cards[a].order.low) > parseInt(db.cards[b].order.low)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map(card => card)\r\n\r\n const { destination, source, draggableId } = result\r\n\r\n if (!destination) return false\r\n\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false\r\n\r\n const itemOrderIds = cardsOn\r\n itemOrderIds.splice(source.index, 1)\r\n itemOrderIds.splice(destination.index, 0, draggableId)\r\n\r\n // socket.emit(\"data\", {\r\n // module: \"cards\",\r\n // method: \"put\",\r\n // action: \"reorder\"\r\n // }, {\r\n // cards: itemOrderIds\r\n // })\r\n // let cards = {}\r\n\r\n // itemOrderIds.map((a, i) => {\r\n // cards = {\r\n // ...cards,\r\n // [a]: db.cards[a]\r\n // }\r\n // cards = {\r\n // ...cards,\r\n // [a]: {\r\n // ...cards[a],\r\n // order: {\r\n // low: i\r\n // }\r\n // }\r\n // }\r\n // return true\r\n // })\r\n // props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n // ...reduxStore.getState().db,\r\n // cards: {\r\n // ...reduxStore.getState().db.cards,\r\n // ...cards\r\n // }\r\n // })\r\n return\r\n\r\n }\r\n const onDragStart = async result => {\r\n }\r\n const onDragUpdate = async result => {\r\n }\r\n\r\n if (loadingData)\r\n return <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: \"100%\" }}>\r\n <span style={{ color: customApp('menu'), fontSize: \"12px\", paddingRight: \"15px\", whiteSpace: \"nowrap\" }}>{translate('$__loadingCatenation')}</span>\r\n <LinearProgress />\r\n </div>\r\n\r\n let openCards = tasksCards\r\n .filter(a => db.cards[a].status !== 'completed')\r\n .sort((a, b) => {\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase()) {\r\n return -1\r\n } else if (db.cards[a].name.toLowerCase() > db.cards[b].name.toLowerCase()) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n )\r\n\r\n let completedCards = tasksCards\r\n .filter(a => db.cards[a].status === 'completed')\r\n .sort((a, b) => {\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase()) {\r\n return -1\r\n } else if (db.cards[a].name.toLowerCase() > db.cards[b].name.toLowerCase()) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n )\r\n\r\n return (\r\n <div style={{ width: '100%' }}>\r\n <DragDropContext\r\n onDragEnd={onDragEnd}\r\n onDragStart={onDragStart}\r\n onDragUpdate={onDragUpdate}\r\n >\r\n <Droppable\r\n droppableId={`Drop_tasks`} //ID OF BOARD\r\n type=\"column\"\r\n direction={\"vertical\"}\r\n >\r\n {(provided, snapshot) => (\r\n <Container\r\n ref={provided.innerRef}\r\n {...provided.droppableProps}\r\n isDraggingOver={snapshot.isDraggingOver}\r\n >\r\n {openCards.length > 0 ?\r\n openCards.map((card, index) => (\r\n <Draggable\r\n draggableId={card}\r\n index={index}\r\n key={card}\r\n >\r\n {(provided, snapshot) => (\r\n <div\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n ref={provided.innerRef}\r\n >\r\n <Card\r\n provided={provided}\r\n snapshot={snapshot}\r\n cardId={card}\r\n db={'cards'}\r\n onlyOption\r\n showCompleteOption\r\n directDeletion\r\n editable\r\n />\r\n </div>\r\n )}\r\n </Draggable>\r\n )) : <React.Fragment></React.Fragment>}\r\n {completedCards.length > 0 ?\r\n completedCards.map((card, index) => (\r\n <div key={card} >\r\n <Card\r\n provided={provided}\r\n snapshot={snapshot}\r\n cardId={card}\r\n db={'cards'}\r\n onlyOption\r\n showCompleteOption\r\n directDeletion\r\n editable\r\n />\r\n </div>\r\n )) : <React.Fragment></React.Fragment>}\r\n {provided.placeholder}\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n {\r\n !add &&\r\n <div style={{ position: 'relative', float: 'right', width: '100%', padding: '7px', display: 'flex', alignContent: 'flex-end', justifyContent: 'center' }}>\r\n <div>\r\n <IconButton\r\n reverse\r\n text={translate(\"$__add\", '*')}\r\n icon=\"add_box\"\r\n iconColor={customApp('medium')}\r\n onClick={() => {\r\n setAdd(!add)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n }\r\n {\r\n add &&\r\n <React.Fragment>\r\n <div\r\n style={{ position: 'relative', float: 'left', width: '100%', padding: '7px', display: 'flex', alignItems: 'center' }}>\r\n <div style={{ width: 'calc(100% - 50px)', display: 'flex' }}>\r\n <TextField\r\n label={translate('$__taskTitle')}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setName(d.target.value)\r\n },\r\n onBlur: (d) => {\r\n if (d.target.value === '')\r\n setAdd(!add)\r\n },\r\n onKeyDown: (e) => {\r\n if (e.keyCode === 13 && name)\r\n addCard()\r\n if (e.keyCode === 27) {\r\n setAdd(!add)\r\n setName('')\r\n }\r\n }\r\n }}\r\n autoFocus\r\n value={name}\r\n placeholder={translate('$__taskTitlePlaceholder')}\r\n />\r\n </div>\r\n <div style={{ display: 'flex' }}>\r\n <CustomButton\r\n title={translate(`$__save`, 1)}\r\n color='green'\r\n icon={'save'}\r\n onClick={(e) => {\r\n addCard()\r\n }}\r\n transparent\r\n />\r\n <CustomButton\r\n title={translate(`$__cancel`, 1)}\r\n color='lightgrey'\r\n icon={'cancel'}\r\n onClick={(e) => {\r\n setAdd(!add)\r\n setName('')\r\n }}\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n background-color:none\r\n `\r\n\r\nconst mapStateToProps = (store, props) => {\r\n return ({\r\n cards: Object.keys(store.db.cards).filter(fil => store.db.cards[fil]._parent === props.nodeId)\r\n })\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","//CORE\r\nimport React from \"react\";\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//@MATERIAL\r\nimport Autocomplete from \"components/AutoComplete/multiple\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Tags-input\";\r\n\r\nimport {\r\n translate,\r\n getAppAccess\r\n} from \"functions/\";\r\n\r\nfunction Component(props) {\r\n const [values, setValues] = React.useState([])\r\n\r\n const AppAccess = getAppAccess()\r\n\r\n React.useEffect(() => {\r\n if (props.data.values) {\r\n let newValues = []\r\n props.data.values.forEach(tag => {\r\n if (reduxStore.getState().db.tag.filter(a => a.value === tag.value).length > 0)\r\n newValues.push(tag)\r\n })\r\n setValues(newValues)\r\n }\r\n }, [props.data])\r\n\r\n const changeTags = async (v) => {\r\n if (props.callBack)\r\n props.callBack(v)\r\n setValues(v)\r\n }\r\n\r\n return (\r\n <div>\r\n <Autocomplete\r\n dbNode={props.dbNode ? props.dbNode : 'tag'}\r\n secondaryParent={props.secondaryParent ? props.secondaryParent : null}\r\n options={reduxStore.getState().db.tag ? reduxStore.getState().db.tag : []}\r\n style={{ width: '100%' }}\r\n name=\"tag\"\r\n ws\r\n title={translate(\"$__tags\")}\r\n api={\"tag/add\"}\r\n add\r\n filterSelectedOptions\r\n colorPicker={AppAccess && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate) ? true : false}\r\n multiple\r\n freeSolo\r\n disableClearable\r\n disabled={props.disabled ? true : false}\r\n value={values}\r\n placeholder={props.placeholder || null}\r\n onChange={\r\n (v) => {\r\n changeTags(v)\r\n }\r\n }\r\n colorPickerCallBack={(res) => {\r\n reduxStore.getState().functions.socket.emit('tag.UPD', res)\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n tags: store.db.tag,\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Component));","//API\r\nimport apims from \"apims\"\r\n\r\nconst loadFiles = async (data) => {\r\n const { ids, page = 0, limit = 20 } = data\r\n let result = await new Promise(async (resolve, reject) => {\r\n try {\r\n let reqFiles = await apims.post(`/Files_List_V2/`,\r\n {\r\n ids,\r\n type: data.type ? data.type : 'cards',\r\n limit,\r\n skip: page * limit\r\n }\r\n )\r\n if (reqFiles && reqFiles.data) {\r\n let data = reqFiles.data\r\n resolve(data)\r\n }\r\n } catch (e) {\r\n console.group('loadFiles::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n reject(true)\r\n }\r\n\r\n })\r\n if (result)\r\n return result\r\n}\r\n\r\nconst navFolders = async (data) => {\r\n let result = await new Promise(async (resolve, reject) => {\r\n try {\r\n let reqFolders = await apims.post(`/Files_Folders/`,\r\n {\r\n ids: data && data.ids ? data.ids : [],\r\n childrens: data && data.childrens ? data.childrens : false,\r\n types: data && data.types ? data.types : null\r\n }\r\n )\r\n if (reqFolders && reqFolders.data) {\r\n resolve(reqFolders.data)\r\n }\r\n } catch (e) {\r\n console.group('loadFiles::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n reject(true)\r\n }\r\n\r\n })\r\n if (result)\r\n return result\r\n}\r\n\r\nconst navFiles = async (data) => {\r\n const { ids, search, skip = null, limit = null, asc = false, childrens = false } = data\r\n let result = await new Promise(async (resolve, reject) => {\r\n try {\r\n let reqFiles = await apims.post(`/Files_Nav/`,\r\n {\r\n ids,\r\n skip,\r\n limit,\r\n search,\r\n asc,\r\n type: data.type ? data.type : 'cards',\r\n childrens\r\n }\r\n )\r\n if (reqFiles && reqFiles.data) {\r\n let data = reqFiles.data\r\n\r\n resolve(data)\r\n }\r\n } catch (e) {\r\n console.group('loadFiles::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n reject(true)\r\n }\r\n\r\n })\r\n if (result)\r\n return result\r\n}\r\n\r\nexport {\r\n loadFiles,\r\n navFiles,\r\n navFolders\r\n}","import React from \"react\"\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 HeaderWithIcon from \"components/Header/withIcon\"\r\nimport Icon from \"components/Icon\"\r\nimport TextField from \"components/TextField/\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport { customApp } from \"functions\"\r\n\r\nimport { navFolders } from \"functions/files\"\r\n\r\nfunction Navigation(props) {\r\n const { db } = reduxStore.getState()\r\n const [selectedParent, setSelectedParent] = React.useState(null)\r\n const [folders, setFolders] = React.useState({})\r\n const [searchFolder, setSearchFolder] = React.useState(\"\")\r\n\r\n let idPlan = props.idPlan ? props.idPlan : null\r\n let ignoreCards = [...props.ignoreCards?.checkSelectedCards || [], ...props.ignoreCards?.childrenChecked || [], ...props.ignoreCards?.ignoreChildrens || []]\r\n\r\n React.useEffect(() => {\r\n reqFolders({ id: idPlan })\r\n navFolders()\r\n return () => {\r\n setFolders({})\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const reqFolders = async (data, fds) => {\r\n let lf = await navFolders({\r\n ids: data && data.id ? [data.id] : [],\r\n childrens: false,\r\n types: props && props.types ? props.types : null\r\n })\r\n\r\n if (lf) {\r\n let ff = fds ? fds : folders\r\n if (idPlan) {\r\n ff = {\r\n ...ff,\r\n [idPlan]: {\r\n name: reduxStore.getState().db.cards[idPlan].name,\r\n parent: reduxStore.getState().db.cards[idPlan]._parent,\r\n private: null,\r\n type: \"plan\",\r\n _id: idPlan,\r\n open: true,\r\n }\r\n }\r\n }\r\n lf.filter(folder => folder.type !== \"chatGroup\" && !ignoreCards.includes(folder)).forEach(folder => {\r\n ff = {\r\n ...ff,\r\n [folder._id]: {\r\n ...ff[folder._id] ? ff[folder._id] : {},\r\n ...folder,\r\n }\r\n }\r\n })\r\n setFolders(ff)\r\n }\r\n }\r\n\r\n const openFolder = async (data, option = false) => {\r\n const { id = null, type = null } = data\r\n let nFolders = folders\r\n\r\n nFolders = {\r\n ...nFolders,\r\n [id]: {\r\n ...nFolders[id],\r\n open: option,\r\n loading: true,\r\n }\r\n }\r\n if (Object.keys(folders).filter(a => {\r\n if (folders[a].parent === id) return true\r\n return false\r\n }).length === 0) {\r\n reqFolders({ id, type }, nFolders)\r\n } else {\r\n setFolders(nFolders)\r\n }\r\n }\r\n\r\n const RenderFolder = (folder, f) => {\r\n if (ignoreCards.includes(folder._id)) {\r\n return <></>\r\n }\r\n return <div\r\n key={f}\r\n style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n clear: \"both\",\r\n cursor: \"pointer\",\r\n borderLeft: \"solid 0.5px lightgray\",\r\n paddingLeft: 7,\r\n width: \"100%\",\r\n }}\r\n onClick={(e) => {\r\n if (!folder.private ||\r\n (folder.private && reduxStore.getState().controls.lockPrivate)\r\n ) {\r\n openFolder({\r\n id: f,\r\n }, folders[f] && folders[f].open ? false : true)\r\n setSelectedParent(f)\r\n if (props && props.onSelect) {\r\n props.onSelect(folders[f])\r\n }\r\n } else {\r\n\r\n }\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n >\r\n <HeaderWithIcon\r\n title={`${folder.private && !reduxStore.getState().controls.lockPrivate ? translate(\"$__private\") : folder.name}`}\r\n tooltipText={`${folder.private && !reduxStore.getState().controls.lockPrivate ? translate(\"$__private\") : folder.name}`}\r\n icon={(folder.private && !reduxStore.getState().controls.lockPrivate ? 'private_connectivity' : folder.type && db && db.dataType && db.dataType.filter(a => a.name === folder.type)[0].icon) || \"$__topic\"}\r\n fontSize=\"12px\"\r\n color={folder.private && !reduxStore.getState().controls.lockPrivate ? 'lightgray' : selectedParent && selectedParent === f ? customApp(\"color\") : customApp(\"gray\")}\r\n />\r\n {folders[f] && folders[f].open ? reqSubFolders(f) : <React.Fragment></React.Fragment>}\r\n </div>\r\n }\r\n\r\n const reqSubFolders = (id = null) => {\r\n return (\r\n <div style={{\r\n marginLeft: 7\r\n }}>\r\n {Object.keys(folders).filter(folder =>\r\n (\r\n (\r\n !id\r\n )\r\n ||\r\n (\r\n id &&\r\n folders[folder].parent === id\r\n )\r\n )\r\n ).length > 0 ?\r\n Object.keys(folders).filter(folder =>\r\n (\r\n (\r\n !id\r\n )\r\n ||\r\n (\r\n id &&\r\n folders[folder].parent === id\r\n )\r\n )\r\n ).sort((a, b) => {\r\n if (folders[a].step && folders[b].step && parseInt(folders[a].step) < parseInt(folders[b].step))\r\n return -1\r\n if (folders[a].step && folders[b].step && parseInt(folders[a].step) > parseInt(folders[b].step))\r\n return 1\r\n if (folders[a].name.toLowerCase().trim() < folders[b].name.toLowerCase().trim())\r\n return -1\r\n if (folders[a].name.toLowerCase().trim() > folders[b].name.toLowerCase().trim())\r\n return 1\r\n return 0\r\n }).map(f => {\r\n return RenderFolder(folders[f], f)\r\n }) : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div >\r\n <div style={{\r\n position: \"relative\",\r\n backgroundColor: \"#FFFFFF\",\r\n clear: \"both\",\r\n paddingTop: \"15px\"\r\n }}>\r\n <div>\r\n <div style={{ display: \"flex\", marginTop: -10 }}>\r\n {/* <HeaderWithIcon\r\n title={translate(\"$__selectLocation\", 1)}\r\n icon={\"touch_app\"}\r\n fontSize=\"20px\"\r\n color={customApp(\"menu\")}\r\n /> */}\r\n <TextField\r\n label={translate('$__search', '*')}\r\n variant={'standard'}\r\n autoFocus\r\n value={searchFolder}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('lightgray')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearchFolder(e.target.value)\r\n },\r\n onKeyDown: e => {\r\n // if (String(e.which) === '27')\r\n // setviewSearch(false)\r\n }\r\n }}\r\n />\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n maxHeight: \"40vh\",\r\n overflowX: \"auto\",\r\n backgroundColor: \"rgba(250,250,250,0.9)\",\r\n borderRadius: \"solid 0.5px rgba(0,0,0,0.1)\",\r\n padding: 15,\r\n ...props.styles ? props.styles : {}\r\n }}>\r\n {Object.keys(folders).filter(folder => {\r\n return folders[folder].type !== \"chatGroup\"\r\n && (\r\n (\r\n (\r\n !idPlan\r\n ||\r\n (\r\n idPlan\r\n && idPlan.length !== 36\r\n )\r\n )\r\n &&\r\n !folders[folder].parent\r\n )\r\n ||\r\n (\r\n (\r\n idPlan\r\n && idPlan.length === 36\r\n )\r\n && (\r\n (\r\n folders[folder]._id === idPlan\r\n )\r\n )\r\n )\r\n )\r\n &&\r\n (\r\n searchFolder === \"\"\r\n ||\r\n (\r\n searchFolder\r\n && folders[folder].name.toLowerCase().indexOf(searchFolder.toLowerCase().trim()) > -1\r\n )\r\n )\r\n }).sort((a, b) => {\r\n if (folders[a].name.toLowerCase().trim() < folders[b].name.toLowerCase().trim())\r\n return -1\r\n if (folders[a].name.toLowerCase().trim() > folders[b].name.toLowerCase().trim())\r\n return 1\r\n return 0\r\n }).map(f => {\r\n return RenderFolder(folders[f], f)\r\n }\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n showPrivate: store.controls.lockPrivate\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)(Navigation)","//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store/\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Autocomplete from \"components/AutoComplete\"\r\nimport ConnectedIn from \"components/ConnectedIn\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport QuickUsers from \"components/User/quick\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport Switch from \"components/Switch\"\r\nimport TagsInput from \"components/Tags/input\"\r\nimport TextField from \"components/TextField\"\r\nimport Navigation from \"components/Navigation\"\r\nimport MultInput from \"components/MultInput/input\";\r\nimport Icons from \"components/Icons\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card.js\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\n\r\nimport {\r\n cardStatus,\r\n getUserAccess,\r\n planMyAccountVerify,\r\n saveCard,\r\n updateCardStatus,\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData\"\r\n\r\nimport {\r\n appAlert,\r\n customApp,\r\n getAppAccess,\r\n getDate,\r\n translate,\r\n} from \"functions/\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props;\r\n const { db, sideModule } = reduxStore.getState();\r\n const { planType } = db;\r\n const [data, setData] = React.useState({})\r\n const [newData, setNewData] = React.useState({})\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [saveLoader, setSaveLoader] = React.useState(false)\r\n const [onConcludedStepMoveTo, setOnConcludedStepMoveTo] = React.useState(sideModule.data?.onConcludedStepMoveTo || null)\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(sideModule.id)\r\n\r\n React.useEffect(() => {\r\n console.log(\"MONTANDO\")\r\n if (data._id !== sideModule.data._id) {\r\n setData(sideModule.data)\r\n setReqSave(false)\r\n }\r\n setData(sideModule.data)\r\n setReqSave(false)\r\n\r\n if (data.type === \"link\" && !data.name)\r\n loadUrlContent()\r\n reqFullData()\r\n if (sideModule.data.name && sideModule.data.name.trim() !== \"\" && sideModule.data.type === \"link\" && sideModule.data._id === \"new\") {\r\n setReqSave(true)\r\n if (props.reqSave)\r\n props.reqSave(true)\r\n }\r\n\r\n return () => {\r\n console.log(\"DESMONTADO\")\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n // React.useEffect(() => {\r\n // if (data._id !== sideModule.data._id) {\r\n // setData(sideModule.data)\r\n // setReqSave(false)\r\n // }\r\n // setData(sideModule.data)\r\n // setReqSave(false)\r\n\r\n // if (data.type === \"link\" && !data.name)\r\n // loadUrlContent()\r\n // reqFullData()\r\n // if (sideModule.data.name && sideModule.data.name.trim() !== \"\" && sideModule.data.type === \"link\" && sideModule.data._id === \"new\") {\r\n // setReqSave(true)\r\n // if (props.reqSave)\r\n // props.reqSave(true)\r\n // }\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [sideModule.data, data])\r\n\r\n React.useEffect(() => {\r\n if (!data.name || (data.name && data.name.trim === \"\")) {\r\n setReqSave(false)\r\n } else {\r\n setReqSave(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [newData])\r\n\r\n const reqFullData = async () => {\r\n loadCardsV2({ ...props, ignoreLoader: true }, {\r\n idRel: [sideModule.data._id],\r\n cardLoad: \"parents\"\r\n })\r\n }\r\n\r\n const changeData = (d, d2, clear = false) => {\r\n if (\r\n (\r\n d.value\r\n &&\r\n (\r\n !sideModule.data[d.name]\r\n &&\r\n !data[d.name]\r\n )\r\n )\r\n ||\r\n (\r\n sideModule.data[d.name]\r\n && sideModule.data[d.name] !== d.value\r\n )\r\n ||\r\n clear\r\n ) {\r\n // setReqSave(true)\r\n if (props.reqSave)\r\n props.reqSave(true)\r\n }\r\n\r\n\r\n let newDataCD = {\r\n ...data,\r\n [d.name]: d.value,\r\n }\r\n if (d2 && d2.name && d2.value) {\r\n newDataCD = {\r\n ...data,\r\n ...newDataCD,\r\n [d2.name]: d2.value\r\n }\r\n }\r\n setData(newDataCD)\r\n setNewData({\r\n ...newData,\r\n [d.name]: d.value,\r\n ...d2 && d2.name && d2.value ? {\r\n [d2.name]: d2.value\r\n } : {}\r\n })\r\n }\r\n\r\n const close = (cl) => {\r\n if (reqSave && !cl) {\r\n appAlert({\r\n message: translate(\"$__confirmCloseWithUnsavedData\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n const save = async (cl = false) => {\r\n if (!saveLoader) {\r\n setReqSave(false)\r\n if (props.reqSave)\r\n props.reqSave(false)\r\n if (!data.status)\r\n data.status = \"notStarted\"\r\n if (sideModule.id === \"new\" && sideModule.data) {\r\n setData({\r\n ...data,\r\n ...sideModule.data\r\n })\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: data\r\n })\r\n\r\n if (!data.name || (data.name && data.name.trim() === \"\")) {\r\n setSaveLoader(false)\r\n appAlert({\r\n message: translate(\"$__fillName\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: null\r\n })\r\n } else {\r\n const request = await saveCard({\r\n ...props,\r\n store: {\r\n ...props.store,\r\n db: {\r\n ...reduxStore.getState().db\r\n }\r\n }\r\n }, cl, data)\r\n if (request) {\r\n if (newData && newData.status) {\r\n updateCardStatus(\r\n {\r\n ...props,\r\n data: { _id: data._id }\r\n }, { status: newData.status })\r\n cardStatus(props, data._id, newData.status)\r\n }\r\n setSaveLoader(false)\r\n appAlert({\r\n message: translate(\"$__DataSaved\", 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: null\r\n })\r\n }\r\n setReqSave(false)\r\n if (props.reqSave)\r\n props.reqSave(false)\r\n if (cl)\r\n close(true)\r\n }\r\n }\r\n }\r\n\r\n const loadUrlContent = async () => {\r\n const result = await api.post(`/link/content`, {\r\n url: data.url\r\n })\r\n setData({\r\n ...data,\r\n content: result.data.article,\r\n })\r\n setReqSave(true)\r\n if (props.reqSave)\r\n props.reqSave(true)\r\n }\r\n\r\n const dataType = sideModule.data && sideModule.data.type ? db.dataType.filter(a => a.name === sideModule.data.type)[0] : {}\r\n\r\n if (!data)\r\n return null\r\n\r\n let permission = props.permission ? props.permission : false\r\n\r\n if (data && data._planId && (!db.cards[data._planId] || !planMyAccountVerify(data._planId)))\r\n permission = false\r\n\r\n if (!permission && parseInt(CardAccess) >= 4)\r\n permission = true\r\n\r\n if (!permission && planMyAccountVerify(data._planId) && AppAccess && AppAccess.admin && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))\r\n permission = true\r\n\r\n return (\r\n <React.Fragment>\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => {\r\n setSaveLoader(true)\r\n save()\r\n } : null}\r\n saveClose={reqSave ? () => {\r\n setSaveLoader(true)\r\n save(true)\r\n } : null}\r\n saveLoader={saveLoader}\r\n close={() => {\r\n if (props.onClose)\r\n props.onClose()\r\n }}\r\n />\r\n <div className={classes.root}>\r\n <div className={classes.data}>\r\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\r\n\r\n <div\r\n style={{\r\n display: \"flex\", alignItems: \"center\", justifyContent: \"flex-end\"\r\n }}\r\n >\r\n {\r\n data.type === \"step\" && data._id && permission ?\r\n <CustomButton\r\n title={translate(\"$__openBoard\", 1)}\r\n icon={\"launch\"}\r\n color={\"lightgray\"}\r\n onClick={() => {\r\n // //console.log(\"openBoard\", data._id)\r\n }\r\n }\r\n size={\"25px\"}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{data.type === 'plan' && data._id ? translate(`$__plan ${data.planType ? planType[1].label : planType[0].label}`, 1) : translate(\"$__data\", 1)}</legend>\r\n {data.created_at ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n fontSize: 12,\r\n color: \"#bfbfbf\",\r\n padding: \"3px 0px\",\r\n marginTop: -8,\r\n textAlign: \"right\",\r\n }}>\r\n {translate(\"$__createdAt\")}: {getDate(data.created_at)}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <TextField\r\n label={translate(dataType && dataType.fieldsTitle && dataType.fieldsTitle.name ? dataType.fieldsTitle.name : \"$__titleOfCard\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"name\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"view_headline\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.name ? data.name : \"\"}\r\n placeholder={translate(dataType && dataType.fieldsTitle && dataType.fieldsTitle.placeholder && dataType.fieldsTitle.placeholder.name ? dataType.fieldsTitle.placeholder.name : \"$__titleOfCard_placeholder\", 1)}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"name\") > -1) ? true : false}\r\n />\r\n {(CardAccess > 3 || data.description || permission)\r\n ?\r\n <React.Fragment>\r\n <TextField\r\n label={translate(\"$__description\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"description\"\r\n\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n multiline: true,\r\n minRows: 3,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"toc\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.description ? data.description : \"\"}\r\n placeholder={translate(\"$__descriptionOfCard_placeholder\", 1)}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"description\") > -1) ? true : false}\r\n />\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.showSumValues\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"showSumValues\",\r\n value: data.showSumValues ? false : true\r\n })\r\n }}\r\n name=\"showSumValues\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__showSumValues\", 1)}\r\n </div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.requireValue\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"requireValue\",\r\n value: data.requireValue ? false : true\r\n })\r\n }}\r\n name=\"requireValue\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__requireValue\", 1)}\r\n </div>\r\n </fieldset>\r\n\r\n\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(`$__automation`, 1)}</legend>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(`$__users`, 1)}</legend>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"gray\",\r\n fontSize: 10\r\n }}\r\n >{translate('$__automationUsersExplain', 1)}</div>\r\n <AutomationAction\r\n value={\r\n data.automationUsers\r\n || null\r\n }\r\n onChange={(e) => {\r\n changeData({\r\n name: \"automationUsers\",\r\n value: e\r\n })\r\n }}\r\n {...data.step === \"0\" ? { ignoreValues: ['remove', 'removeAll'] } : {}}\r\n />\r\n {\r\n data._id\r\n && db.cards[data._id]\r\n && db.cards[data._id]._users\r\n && data.automationUsers !== \"removeAll\"\r\n &&\r\n <QuickUsers\r\n _id={data._id}\r\n noLimit\r\n avatarSize=\"33px\"\r\n permission={permission}\r\n />\r\n }\r\n {(data.automationUsers && (\r\n data.automationUsers === \"remove\"\r\n || data.automationUsers === \"replace\"\r\n )) ?\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.keepUserWhoCreatedActivity\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"keepUserWhoCreatedActivity\",\r\n value: data.keepUserWhoCreatedActivity ? false : true\r\n })\r\n }}\r\n name=\"keepUserWhoCreatedActivity\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__keepUserWhoCreatedActivity\", 1)}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(`$__execAsResponsible`, 1)}</legend>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Switch\r\n checked={\r\n data.execAsResponsible\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"execAsResponsible\",\r\n value: !data.execAsResponsible ? true : null\r\n })\r\n }}\r\n name=\"changeIcon\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__yes\", 1)}\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"gray\",\r\n fontSize: 10\r\n }}\r\n >{translate('$__execAsResponsibleExplain', 1)}</div>\r\n </fieldset>\r\n </fieldset>\r\n <fieldset\r\n style={{\r\n marginBottom: \"14px\"\r\n }}\r\n >\r\n <legend>{translate(`$__dueDate`, 1)}</legend>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__due\", 1)}</legend>\r\n <AutomationAction\r\n value={data.automationDueDateType || null}\r\n onChange={(e) => {\r\n changeData({ name: \"automationDueDateType\", value: e })\r\n }}\r\n ignoreValues={['replace', 'removeAll']}\r\n />\r\n {(\r\n data.automationDueDateType && data.automationDueDateType === 'add'\r\n ) ?\r\n <TextField\r\n label={translate(\"$__automationDueDate\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"automationDueDate\"\r\n min={1}\r\n InputProps={{\r\n type: \"number\",\r\n min: 1,\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n {translate(\"$__days\", '*')}\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n let value = d.target.value || 1\r\n if (parseInt(value) < 1) value = 1\r\n changeData({ name: \"automationDueDate\", value: value })\r\n },\r\n }}\r\n value={data && data.automationDueDate ? data.automationDueDate : 1}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </fieldset>\r\n </fieldset>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(`$__tags`, 1)}</legend>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__tags\", 1)}</legend>\r\n <AutomationAction\r\n value={data.automationTags || null}\r\n onChange={(e) => {\r\n changeData({ name: \"automationTags\", value: e })\r\n }}\r\n ignoreValues={['removeAll']}\r\n />\r\n {data.automationTags && data.automationTags !== \"doNotChange\" ?\r\n <TagsInput\r\n data={{\r\n values: data._tags ? data._tags : [],\r\n }}\r\n callBack={(v) => {\r\n if (permission)\r\n changeData({ name: \"_tags\", value: v })\r\n }}\r\n disabled={!permission || data.status === \"completed\" || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf(\"_tags\") > -1) ? true : false}\r\n placeholder={translate(\"$__selectTheOptions\", 1)}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </fieldset>\r\n <fieldset\r\n style={{\r\n marginBottom: \"14px\"\r\n }}\r\n >\r\n <legend>{translate(`$__icon`, 1)}</legend>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__setThisIconWhenAdd\", 1)}</legend>\r\n <div className={classes.switch} style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\"\r\n }}>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Switch\r\n checked={\r\n data.setIcon\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"setIcon\",\r\n value: !data.setIcon ? data.icon ? data.icon : \"fiber_new\" : null\r\n })\r\n }}\r\n name=\"changeIcon\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__changeIconWhenReceiveCardTo\", 1)}\r\n </div>\r\n {data.setIcon ?\r\n <Icons\r\n icon={data.setIcon ? data.setIcon : data.icon ? data.icon : \"fiber_new\"}\r\n color={customApp('colorText')}\r\n onChange={(e) => {\r\n changeData({ name: \"setIcon\", value: e })\r\n }}\r\n size={'25px'}\r\n style={{ marginRight: 7 }}\r\n /> : <></>}\r\n </div>\r\n\r\n </fieldset>\r\n </fieldset>\r\n </fieldset>\r\n {Object.keys(reduxStore.getState().db.cards).filter(card => reduxStore.getState().db.cards[card]._parent === data._parent && reduxStore.getState().db.cards[card].type === 'step' && !reduxStore.getState().db.cards[card].deleted).length === parseInt(data.step) + 1 ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"gray\",\r\n fontSize: 10\r\n }}\r\n >{translate('$__onConcludedStepMoveTo', 1)}</div>\r\n <div className={classes.switch}>\r\n {onConcludedStepMoveTo && onConcludedStepMoveTo === data.onConcludedStepMoveTo ?\r\n <CustomButton\r\n title={translate(`$__selectTarget`, 1)}\r\n text={translate(`$__selectTarget`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"assistant_navigation\"}\r\n onClick={() => {\r\n setOnConcludedStepMoveTo(null)\r\n }}\r\n size={\"14px\"}\r\n textSize={\"14px\"}\r\n />\r\n :\r\n <div>\r\n <Navigation\r\n onSelect={(e) => {\r\n // //console.log(e)\r\n if (!reduxStore.getState().db.cards[e._id])\r\n loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'parents', idRel: e._id })\r\n setOnConcludedStepMoveTo(e._id)\r\n }}\r\n ignoreTypes={['chatGroup']}\r\n types={['plan', 'guideline', 'guidelineC', 'guidelineD', 'guidelineE', 'guidelineR', 'objective', 'goal', 'step']}\r\n />\r\n {onConcludedStepMoveTo && onConcludedStepMoveTo !== data.onConcludedStepMoveTo ?\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__cancel`, 1)}\r\n text={translate(`$__cancel`, 1)}\r\n color={\"lightgray\"}\r\n icon={\"cancel\"}\r\n onClick={() => {\r\n changeData({ name: \"onConcludedStepMoveTo\", value: data?.onConcludedStepMoveTo || null })\r\n }}\r\n />\r\n <CustomButton\r\n title={translate(`$__save`, 1)}\r\n text={translate(`$__save`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"check\"}\r\n onClick={() => {\r\n changeData({ name: \"onConcludedStepMoveTo\", value: onConcludedStepMoveTo })\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n\r\n }\r\n {data.onConcludedStepMoveTo && onConcludedStepMoveTo === data.onConcludedStepMoveTo && reduxStore.getState().db.cards[data.onConcludedStepMoveTo] ?\r\n <React.Fragment>\r\n <ConnectedIn\r\n id={data.onConcludedStepMoveTo}\r\n // loading={loadingData}\r\n showLegend={true}\r\n legend={translate(\"$__target\")}\r\n />\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(`$__status`, 1)}</legend>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__changeStatusTo\", 1)}</legend>\r\n <AutomationAction\r\n value={data.automationStatusType || null}\r\n onChange={(e) => {\r\n changeData({ name: \"automationStatusType\", value: e })\r\n }}\r\n ignoreValues={['add', 'remove', 'removeAll']}\r\n />\r\n {data.automationStatusType && data.automationStatusType !== \"doNotChange\" ?\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.status}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"automationStatus\"\r\n disableClearable\r\n value={\r\n data\r\n && data.automationStatus\r\n && db.status\r\n ? db.status.filter(a =>\r\n String(a.value) === String(data.automationStatus)\r\n )[0]\r\n : db.status[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__status\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.automationStatus\r\n && db.status\r\n ? db.status.filter(a =>\r\n String(a.value) === String(data.automationStatus)\r\n )[0]\r\n : db.status[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission || String(CardAccess) !== \"0\")\r\n changeData({ name: \"automationStatus\", value: v[\"value\"] })\r\n }\r\n }\r\n /> : <React.Fragment></React.Fragment>\r\n }\r\n </fieldset>\r\n </fieldset>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"gray\",\r\n fontSize: 10\r\n }}\r\n >{translate('$__automationApprovalExplain', 1)}</div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.requireApproval\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"requireApproval\",\r\n value: data.requireApproval ? false : true\r\n })\r\n }}\r\n name=\"requireApproval\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__requireApproval\", 1)}\r\n </div>\r\n {\r\n data.requireApproval ?\r\n <QuickUsers\r\n _id={data._id}\r\n selected={\"\"}\r\n noLimit\r\n avatarSize=\"33px\"\r\n permission={permission}\r\n customDefine={{\r\n name: \"approvalResponsible\",\r\n icon: \"gavel\"\r\n }}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </fieldset>\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"gray\",\r\n fontSize: 10\r\n }}\r\n >{translate('$__allowAnonymousExplain', 1)}</div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.allowAnonymous\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"allowAnonymous\",\r\n value: data.allowAnonymous ? false : true\r\n })\r\n }}\r\n name=\"allowAnonymous\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__allowAnonymous\", 1)}\r\n </div>\r\n </fieldset>\r\n {data.step === \"0\" &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"gray\",\r\n fontSize: 10\r\n }}\r\n >{translate('$__showInPanel', 1)}</div>\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.showInPanel\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"showInPanel\",\r\n value: data.showInPanel ? false : true\r\n })\r\n }}\r\n name=\"showInPanel\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__permitOpenTicketInPanel\", 1)}\r\n </div>\r\n {data.showInPanel ?\r\n <React.Fragment>\r\n <fieldset\r\n style={{ marginBottom: '14px' }}\r\n id={`sideModule_user_group`}\r\n >\r\n <MultInput\r\n data={{\r\n values: data.showGroups || [],\r\n _id: data._id,\r\n }}\r\n options={reduxStore.getState().db.userGroup ? reduxStore.getState().db.userGroup : []}\r\n placeholder={\"$__userGroupPlaceholder\"}\r\n dbNode={\"userGroup\"}\r\n callBack={(v) => {\r\n changeData({ name: 'showGroups', value: v })\r\n }}\r\n />\r\n </fieldset>\r\n <fieldset\r\n style={{ marginBottom: '14px' }}\r\n id={`sideModule_user_group`}\r\n >\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={Object.keys(reduxStore.getState().forms)\r\n .sort((a, b) => {\r\n if (reduxStore.getState().forms[a].name < reduxStore.getState().forms[b].name) {\r\n return -1\r\n } else if (reduxStore.getState().forms[a].name > reduxStore.getState().forms[b].name) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }).map(a => {\r\n return { label: reduxStore.getState().forms[a].name, value: String(reduxStore.getState().forms[a]._id) }\r\n })\r\n }\r\n getOptionLabel={(option) => {\r\n return translate(option.label, 1)\r\n }\r\n }\r\n style={{ width: \"100%\" }}\r\n name=\"form\"\r\n value={\r\n (\r\n data\r\n &&\r\n data.form\r\n )\r\n ? Object.keys(reduxStore.getState().forms)\r\n .filter(a =>\r\n data.form\r\n && reduxStore.getState().forms[a]._id === data.form\r\n ).map(a => {\r\n return {\r\n label: reduxStore.getState().forms[a].name,\r\n value: String(reduxStore.getState().forms[a]._id)\r\n }\r\n })[0]\r\n : null\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__form\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n (\r\n data\r\n &&\r\n data.form\r\n )\r\n ? Object.keys(reduxStore.getState().forms)\r\n .filter(a =>\r\n data.form\r\n && reduxStore.getState().forms[a]._id === data.form\r\n ).map(a => {\r\n return {\r\n label: reduxStore.getState().forms[a].name,\r\n value: String(reduxStore.getState().forms[a]._id)\r\n }\r\n })[0]\r\n : null\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n changeData({ name: \"form\", value: v && v[\"value\"] ? String(v[\"value\"]) : null })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n <TextField\r\n label={translate(\"$__shortCutTitle\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"shortCutTitle\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"view_headline\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.shortCutTitle ? data.shortCutTitle : \"\"}\r\n placeholder={translate(\"$__shortCutTitlePlaceholder\")}\r\n />\r\n <TextField\r\n label={translate(\"$__shortCutDescription\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"shortCutDescription\"\r\n\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n multiline: true,\r\n minRows: 3,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"toc\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.shortCutDescription ? data.shortCutDescription : \"\"}\r\n placeholder={translate(\"$__shortCutDescriptionPlaceholder\", 1)}\r\n />\r\n <TextField\r\n label={translate(\"$__shortCutButtonToAdd\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"shortCutButtonToAdd\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"view_headline\" />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.shortCutButtonToAdd ? data.shortCutButtonToAdd : \"\"}\r\n placeholder={translate(\"$__shortCutButtonToAddPlaceholder\")}\r\n />\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={\r\n data.requireDescription\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n changeData({\r\n name: \"requireDescription\",\r\n value: data.requireDescription ? false : true\r\n })\r\n }}\r\n name=\"requireDescription\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__requireDescription\", 1)}\r\n </div>\r\n\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n </fieldset>\r\n }\r\n </fieldset>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst AutomationAction = (props) => {\r\n const { db } = reduxStore.getState()\r\n return (\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={props.ignoreValues ? db.automation.filter(r => props.ignoreValues.indexOf(r.value) === -1) : db.automation}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name={props.name || \"AutomationAction\"}\r\n disableClearable\r\n value={props.value ? db.automation.filter(a =>\r\n String(a.value) === props.value\r\n )[0]\r\n : db.automation[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__action\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n inputProps={{\r\n ...params && params.inputProps ? params.inputProps : {},\r\n style: {\r\n ...params && params.inputProps && params.inputProps.style ? params.inputProps.style : {},\r\n paddingLeft: 7,\r\n marginTop: 3,\r\n marginLeft: -5,\r\n width: \"calc(100% - 7px)\",\r\n }\r\n }}\r\n value={props.value ? db.automation.filter(a =>\r\n String(a.value) === props.value\r\n )[0]\r\n : db.automation[0]\r\n }\r\n />\r\n }\r\n renderOption={(option, { inputValue }) => {\r\n return (\r\n <span>\r\n {translate(option.label, 1)}\r\n </span>\r\n )\r\n }}\r\n onChange={\r\n (d, v) => {\r\n props.onChange(v[\"value\"])\r\n }\r\n }\r\n />\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from 'react'\r\n\r\n//REDUX\r\nimport * as reduxActions from 'store/actions'\r\nimport reduxStore from \"store/\"\r\nimport { bindActionCreators } from 'redux'\r\nimport { connect } from 'react-redux'\r\n\r\n//COMPONENTS\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card.js\"\r\n\r\n//FUNCTIONS\r\n\r\nimport { translate, customApp } from \"functions/\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { sideModule } = reduxStore.getState()\r\n const data = sideModule.data || {}\r\n const [reqSave, setReqSave] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n if (data.type === 'link' && data._id === 'new')\r\n setReqSave(true)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [sideModule.data.id])\r\n\r\n return (\r\n <React.Fragment>\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => {\r\n } : null}\r\n saveClose={reqSave ? () => {\r\n } : null}\r\n close={() => {\r\n }}\r\n />\r\n <div className={classes.root}>\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__integration\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__useIdToFeelFlowIdIntegration\", 1)}\r\n </div>\r\n <div\r\n style={{ fontSize: 14, fontWeight: \"bold\", color: \"blue\" }}\r\n >{data._id}</div>\r\n </fieldset>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\nconst mapStateToProps = () => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from 'react';\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n sm: {\r\n width: theme.spacing(3),\r\n height: theme.spacing(3),\r\n },\r\n md: {\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n },\r\n lg: {\r\n width: theme.spacing(7),\r\n height: theme.spacing(7),\r\n },\r\n}));\r\n\r\nexport default function Component(props) {\r\n const classes = useStyles();\r\n let AvatarProps = { ...props }\r\n if (AvatarProps.title)\r\n delete AvatarProps.title\r\n if (props.title)\r\n return (\r\n <Tooltip\r\n title={props.title}\r\n >\r\n <Avatar {...AvatarProps} className={classes[props.size]} >\r\n {props.children}\r\n </Avatar>\r\n </Tooltip>\r\n )\r\n return (\r\n <Avatar {...AvatarProps} className={classes[props.size]} >\r\n {props.children}\r\n </Avatar>\r\n )\r\n}","//CORE\r\nimport React from \"react\"\r\nimport ReactAudioPlayer from \"react-audio-player\"\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 Card from \"components/Card\";\r\nimport Icon from \"components/Icon\";\r\nimport Message from \"componentsV3/Timeline/message\";\r\nimport HeaderWithIcon from \"components/Header/card\";\r\n\r\n//@MATERIAL\r\nimport Avatar from \"components/Avatar\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, getDate } from \"functions\";\r\n\r\nfunction FileView(props) {\r\n const { timeline, functions, session } = reduxStore.getState()\r\n const { socket } = functions\r\n const { db } = reduxStore.getState()\r\n const [file, setFile] = React.useState(props.data)\r\n const [showPrivate, setShowPrivate] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n // return false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (props.unlockedPrivates === 0)\r\n setShowPrivate(false)\r\n\r\n }, [props.unlockedPrivates])\r\n const fileName = file.name.split(\".\")\r\n let ext = fileName[fileName.length - 1]\r\n\r\n if (file.name === \"blob\") {\r\n file.name = `${translate(\"$__coverImage\", \"*\")}.jpg`\r\n ext = \"jpg\"\r\n }\r\n\r\n let img = `attachment`\r\n if (reduxStore.getState().db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0)\r\n img = reduxStore.getState().db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].icon\r\n || `https://machen.azureedge.net/${file.file}`\r\n\r\n\r\n const update = async (dataUpdate) => {\r\n try {\r\n socket.emit(\"data\", {\r\n module: \"node\",\r\n method: \"put\",\r\n action: \"update\"\r\n }, {\r\n _id: file._id,\r\n ...dataUpdate\r\n }, async () => {\r\n setFile({ ...file, ...dataUpdate })\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n let viewer = \"img\"\r\n if (db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0 && db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].viewer)\r\n viewer = db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].viewer\r\n return (\r\n <div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"100%\",\r\n marginBottom: \"5px\",\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n }}\r\n\r\n >\r\n {/* {file.parents && file.parents.length > 0 ?\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\", fontSize: 10, color: \"gray\" }}>\r\n {file.parents.reverse().map(p =>\r\n <div key={p._id}>\r\n {p.name} /\r\n </div>\r\n )}\r\n </div>\r\n : <React.Fragment></React.Fragment>} */}\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n {file.in && file.in.private && !props.showPrivate && !showPrivate\r\n ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"33px\",\r\n height: \"33px\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"lightgray\",\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\",\r\n borderRadius: 7,\r\n display: \"flex\"\r\n }}\r\n >\r\n <Icon icon={'lock'} size=\"17px\" />\r\n </div>\r\n :\r\n <React.Fragment>\r\n {typeof img === \"string\" && img.indexOf(\"https\") === -1 && img.indexOf(\"svg\") === -1 ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"33px\",\r\n height: \"33px\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={(e) => {\r\n\r\n if (props.openLightBox)\r\n props.openLightBox()\r\n }}\r\n >\r\n <Icon icon={img} size=\"33px\" />\r\n </div>\r\n :\r\n <div\r\n style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"33px\",\r\n height: \"33px\",\r\n alignItems: \"center\",\r\n backgroundImage: `url(\"${img}\")`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\",\r\n borderRadius: 7,\r\n cursor: \"pointer\"\r\n }}\r\n onClick={(e) => {\r\n if (props.openLightBox)\r\n props.openLightBox()\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }}\r\n ></div>\r\n }\r\n </React.Fragment>\r\n }\r\n <div\r\n style={{\r\n display: \"flex\",\r\n paddingLeft: 15,\r\n alignItems: \"center\",\r\n maxWidth: \"calc(100% - 40px)\",\r\n width: \"100%\"\r\n }}\r\n // onClick={(e) => {\r\n // let isPrivate = file.in && file.in.private && !props.showPrivate && !showPrivate ? true : false\r\n // if (props.openLightBox && !isPrivate)\r\n // props.openLightBox()\r\n // e.stopPropagation()\r\n // e.preventDefault()\r\n // }}\r\n >\r\n {file.in && file.in.name &&\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n {file.in.db === \"User\" && file.in._id === session._id ?\r\n <div>\r\n <Avatar\r\n alt={file.createdBy.name}\r\n src={file.createdBy.image}\r\n style={{ width: \"21px\", height: \"21px\" }}\r\n >\r\n {file.createdBy.name}\r\n </Avatar>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n\r\n {file.in.db === \"User\" && file.in._id !== session._id ?\r\n <div>\r\n <Avatar\r\n alt={file.in.name}\r\n src={file.in.image}\r\n style={{ width: \"21px\", height: \"21px\" }}\r\n >\r\n {file.in.name}\r\n </Avatar>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <HeaderWithIcon\r\n private={file.in && file.in.private && !reduxStore.getState().controls.lockPrivate ? true : false}\r\n unlockedPrivates={props.unlockedPrivates}\r\n setPrivate={(a) => {\r\n let value = a ? 1 : -1\r\n if (!a && props.unlockedPrivates === 0)\r\n value = 0\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n unlockedPrivates: reduxStore.getState().controls.unlockedPrivates + value,\r\n })\r\n }}\r\n // moreButton={true}\r\n title={`${file.in.db === \"User\"\r\n ? `${translate('$__chatWithUser', '*')} - ${file.in._id !== session._id ? `${file.in.name}` : `${file.createdBy.name}`}`\r\n : file.in.type === \"chatGroup\"\r\n ? `${translate('$__chatGroup', '*')} - ${file.in.name}`\r\n : file.in.db !== \"User\" && file.in.type !== \"chatGroup\" ? `${file.in.name}` : ``}`\r\n }\r\n icon={\r\n file.in.db === \"User\" || file.in.type === \"chatGroup\" ? null\r\n :\r\n (\r\n file.in.type\r\n && db\r\n && db.dataType\r\n && db.dataType.filter(a =>\r\n a.name === file.in.type\r\n )[0]\r\n && db.dataType.filter(a =>\r\n a.name === file.in.type\r\n )[0].icon\r\n )\r\n || \"$__topic\"\r\n }\r\n color={customApp(\"medium\")}\r\n style={{\r\n padding: \"7px\",\r\n minHeight: \"21px !important\",\r\n textAlign: \"left\"\r\n }}\r\n textStyle\r\n />\r\n <span style={{ marginRight: 7 }}>/</span>\r\n </div>\r\n }\r\n <HeaderWithIcon\r\n private={file.in && file.in.private && !reduxStore.getState().controls.lockPrivate ? true : false}\r\n unlockedPrivates={props.unlockedPrivates}\r\n setPrivate={(a) => {\r\n console.log(a, a)\r\n let value = a ? 1 : -1\r\n if (!a && props.unlockedPrivates === 0)\r\n value = 0\r\n setShowPrivate(a ? true : false)\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n unlockedPrivates: reduxStore.getState().controls.unlockedPrivates + value,\r\n })\r\n }}\r\n moreButton={true}\r\n\r\n\r\n // private={file.in && file.in.private ? true : false}\r\n privateTitle={translate(\"$__privateFile\")}\r\n title={file.name}\r\n value={file.name.replace(`.${ext}`, \"\")}\r\n searchText={props.searchText ? props.searchText : null}\r\n color={props.dark ? customApp(\"lightgray\") : customApp(\"gray\")}\r\n editable={props.admin ? true : false}\r\n // _id={file._id}\r\n dark={props.dark ? true : false}\r\n inputStyle={props.dark ? {\r\n backgroundColor: \"rgba(250,250,250,0.8)\",\r\n borderRadius: 7,\r\n } : null}\r\n textStyle={{\r\n fontSize: 12,\r\n fontWeight: \"normal\",\r\n }}\r\n searchTextStyle={{\r\n fontSize: 12,\r\n ...props.dark ? { color: \"#FFFFFF\" } : {}\r\n }}\r\n style={{\r\n minHeight: \"21px !important\",\r\n }}\r\n onEdit={\r\n props.admin ? (res) => {\r\n update({\r\n name: `${res}.${ext}`\r\n })\r\n } : null}\r\n />\r\n </div>\r\n </div>\r\n {viewer === \"audio\"\r\n &&\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n float: \"left\"\r\n }}>\r\n <ReactAudioPlayer\r\n src={`https://machen.azureedge.net/${file.file}`}\r\n controls\r\n />\r\n </div>\r\n }\r\n {file.createdBy &&\r\n <div style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n color: props.dark ? \"lightgray\" : \"gray\",\r\n fontSize: 10,\r\n marginLeft: \"57px\",\r\n clear: \"both\"\r\n }}>\r\n {((file.in && !file.in.private)) ?\r\n <React.Fragment>\r\n <span style={{ color: \"lightgray\", fontSize: 10, marginRight: 7 }}>{translate(\"$__sendedBy\")}:</span>\r\n <Avatar\r\n alt={file.createdBy.name}\r\n src={file.createdBy.image}\r\n style={{ width: \"15px\", height: \"15px\" }}\r\n >\r\n {file.createdBy.name}\r\n </Avatar>\r\n <span style={{ marginLeft: 3 }}>\r\n {file.createdBy.name}\r\n </span>\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <span style={{ marginLeft: 3 }}>\r\n {getDate(file.created_at)}\r\n </span>\r\n </div>\r\n\r\n }\r\n </div>\r\n {props.showParent &&\r\n (\r\n file.timelineId\r\n || file.message\r\n )\r\n &&\r\n (\r\n (\r\n db.cards[file.cardId]\r\n && timeline[file.cardId]\r\n && timeline[file.cardId][file.timelineId]\r\n )\r\n ||\r\n (\r\n file.message\r\n )\r\n )\r\n &&\r\n <div style={{ width: \"100%\", marginBottom: \"33px\" }} >\r\n <Message\r\n openLightBox={(e) => {\r\n if (props.openLightBox)\r\n props.openLightBox(e)\r\n }}\r\n storie={db.cards[file.cardId] && timeline[file.cardId] && timeline[file.cardId][file.timelineId] ? timeline[file.cardId][file.timelineId] : file.message}\r\n db={\"cards\"} nodeId={file.cardId}\r\n />\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n {props.showParent && file.cardId && db.cards[file.cardId] &&\r\n <div style={{ width: \"100%\", top: \"33px\" }}>\r\n <Card db=\"cards\" cardId={file.cardId} showConnectedIn />\r\n </div>\r\n }\r\n <div style={{ width: \"100%\", height: \"1px\", backgroundColor: \"rgba(0,0,0,0.1)\", marginTop: \"15px\" }}></div>\r\n </div >\r\n {/* {\r\n (file.timelineId || file.message)\r\n && viewMessage\r\n &&\r\n (\r\n (\r\n db.cards[file.cardId]\r\n && timeline[file.cardId]\r\n && timeline[file.cardId][file.timelineId]\r\n )\r\n ||\r\n (\r\n file.message\r\n )\r\n )\r\n &&\r\n <div style={{ width: \"100%\" }} >\r\n <Message\r\n openLightBox={(e) => {\r\n if (props.openLightBox)\r\n props.openLightBox(e)\r\n }}\r\n storie={db.cards[file.cardId] && timeline[file.cardId] && timeline[file.cardId][file.timelineId] ? timeline[file.cardId][file.timelineId] : file.message}\r\n db={\"cards\"} nodeId={file.cardId}\r\n />\r\n </div>\r\n } */}\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history,\r\n showPrivate: store.controls.lockPrivate,\r\n unlockedPrivates: store.controls.unlockedPrivates,\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)(FileView)","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React from 'react'\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 Icon from \"components/Icon\";\r\nimport TextField from \"components/TextField\";\r\n\r\n//@MATERIAL\r\nimport LinearProgress from \"components/Progress/linear\"\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n\r\n//DEPENDENCIES\r\nimport File from \"./file_V2\";\r\n\r\n//FUNCTIONS\r\nimport { loadFiles } from \"functions/files\";\r\nimport {\r\n customApp,\r\n translate,\r\n removeSeats\r\n} from 'functions';\r\n\r\nfunction FileList(props) {\r\n const { db, session } = reduxStore.getState()\r\n const [files, setFiles] = React.useState([])\r\n const [endLoad, setEndLoad] = React.useState(false)\r\n const [loadingFiles, setLoadingFiles] = React.useState(false)\r\n const [searchValue, setSearchValue] = React.useState('')\r\n const [page, setPage] = React.useState(0)\r\n\r\n let lightBoxfiles = [];\r\n\r\n React.useEffect(() => {\r\n setLoadingFiles(true)\r\n return () => {\r\n setFiles([])\r\n }\r\n }, [props.nodeId])\r\n\r\n React.useEffect(() => {\r\n setLoadingFiles(true)\r\n }, [page])\r\n\r\n React.useEffect(() => {\r\n if (loadingFiles)\r\n init()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [loadingFiles])\r\n\r\n const init = async () => {\r\n if (!endLoad) {\r\n let lf = await loadFiles({ ids: [props.nodeId], type: db.cards[props.nodeId] ? 'cards' : 'users', page })\r\n if (lf) {\r\n if (lf.length < 20)\r\n setEndLoad(true)\r\n let newFiles = Array.from(files)\r\n lf.forEach(x => {\r\n if (newFiles.filter(fl => fl && fl.data && x && x.data && fl.data._id === x.data._id).length === 0)\r\n newFiles.push(x)\r\n })\r\n setFiles(newFiles)\r\n setLoadingFiles(false)\r\n }\r\n }\r\n }\r\n\r\n const openLightBox = (f) => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n open: true,\r\n files: lightBoxfiles,\r\n file: f\r\n })\r\n }\r\n\r\n const scrollFunction = (e) => {\r\n var scrollDiv = document.getElementById(`filesList_${props.nodeId}`);\r\n if (scrollDiv.scrollTop + window.innerHeight + 150 > scrollDiv.scrollHeight && !loadingFiles)\r\n setPage(page + 1)\r\n }\r\n\r\n return (\r\n <div style={{\r\n position: 'relative',\r\n width: \"100%\",\r\n height: \"100%\"\r\n }}\r\n id=\"sideModule_files\"\r\n >\r\n {((!searchValue && files.length > 10) || searchValue) &&\r\n <div style={{ position: 'relative', padding: '10px' }}>\r\n <TextField\r\n label={translate('$__fileNameSearch', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n id=\"sideModule_files_search\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='find_in_page' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setSearchValue(d.target.value)\r\n },\r\n }}\r\n value={removeSeats(searchValue).toLowerCase()}\r\n placeholder={translate(\"$__fileNameSearch\")}\r\n />\r\n </div>\r\n }\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n top: files && files.length > 10 ? 63 : 0,\r\n padding: 15,\r\n left: 0,\r\n right: 0\r\n }}\r\n id=\"sideModule_files_list\"\r\n >\r\n <legend style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: props.dark ? customApp('color') : customApp('menu'),\r\n fontSize: 14\r\n }}><Icon\r\n color={customApp('color')}\r\n icon={'folder_open'}\r\n title={translate('$__files', '*')}\r\n size={'20px'}\r\n style={{ marginRight: '15px' }}\r\n />{translate('$__files', '*')}</legend>\r\n\r\n\r\n <ul\r\n id={`filesList_${props.nodeId}`}\r\n style={{\r\n listStyle: 'none',\r\n padding: '0px',\r\n position: \"absolute\",\r\n bottom: 0,\r\n top: 33,\r\n overflowY: \"auto\",\r\n overflowX: \"hidden\",\r\n left: 15,\r\n right: 15\r\n }}\r\n onScroll={!props.horizontal ? (e) => {\r\n scrollFunction(e)\r\n } : null}\r\n >\r\n\r\n {files && files.length > 0 &&\r\n files\r\n .filter(f =>\r\n (\r\n (\r\n !searchValue\r\n || searchValue === ''\r\n ||\r\n (\r\n searchValue\r\n && f.data.name.toLowerCase().indexOf(searchValue.toLocaleLowerCase()) > -1\r\n )\r\n )\r\n )\r\n )\r\n .sort((a, b) => parseInt(a.data.created_at) < parseInt(b.data.created_at))\r\n .map((f, i) => {\r\n lightBoxfiles.push(f.data)\r\n let file = {\r\n ...f.data,\r\n createdBy: f.createdBy\r\n }\r\n\r\n let permission = false\r\n if (\r\n (\r\n file.createdBy\r\n && file.createdBy._id === session._id\r\n )\r\n ||\r\n (\r\n props.nodeId\r\n && db.cards[props.nodeId]\r\n && db.cards[props.nodeId]._users\r\n && db.cards[props.nodeId]._users[session._id]\r\n && db.cards[props.nodeId]._users[session._id].access > 2\r\n )\r\n ) permission = true\r\n\r\n\r\n return (\r\n <li\r\n key={f.data._id}\r\n onClick={!permission ? (e) => {\r\n openLightBox(f.data._id)\r\n e.preventDefault();\r\n } : null}\r\n id={`sideModule_files_file_${f.data._id}`}\r\n >\r\n <File\r\n data={file}\r\n resume\r\n dark={props.dark ? true : false}\r\n admin={permission}\r\n searchText={searchValue}\r\n openLightBox={() => {\r\n openLightBox(f.data._id)\r\n }}\r\n />\r\n </li>\r\n )\r\n })}\r\n {((files.length > 0 || loadingFiles) && !endLoad) ?\r\n <li style={{\r\n width: '100%',\r\n textAlign: 'center',\r\n position: \"relative\",\r\n float: \"left\",\r\n color: props.dark ? customApp('color') : customApp('menu')\r\n }}><LinearProgress />{translate('$__checkingFiles', '*')}</li>\r\n : files.length === 0 && !loadingFiles ?\r\n translate('$__hasNoFiles', '*')\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = () => ({});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FileList)","//CORE\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\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 Card from \"components/Card/\";\r\n\r\nfunction Component(props) {\r\n const { db } = reduxStore.getState()\r\n const { socket } = reduxStore.getState().functions\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n let tasksCards = Object.keys(reduxStore.getState().db.cards)\r\n .filter(fil => {\r\n if (\r\n !reduxStore.getState().db.cards[fil].deleted\r\n && !reduxStore.getState().db.cards[fil].checklist\r\n && reduxStore.getState().db.cards[fil]._recurrenceId\r\n && reduxStore.getState().db.cards[fil]._parent === props.nodeId\r\n )\r\n return true\r\n return false\r\n }\r\n )\r\n .map(card => card)\r\n\r\n const onDragEnd = async result => {\r\n let cardsOn = Object.keys(reduxStore.getState().db.cards)\r\n .filter(fil => {\r\n if (reduxStore.getState().db.cards[fil] && reduxStore.getState().db.cards[fil].checklist && reduxStore.getState().db.cards[fil]._parent === props.nodeId)\r\n return true\r\n return false\r\n }\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].order && db.cards[b].order && String(db.cards[a].order.low) && String(db.cards[b].order.low) && parseInt(db.cards[a].order.low) < parseInt(db.cards[b].order.low)) {\r\n return -1\r\n } else if (db.cards[a].order && db.cards[b].order && String(db.cards[a].order.low) && String(db.cards[b].order.low) && parseInt(db.cards[a].order.low) > parseInt(db.cards[b].order.low)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map(card => card)\r\n\r\n const { destination, source, draggableId } = result\r\n\r\n if (!destination) return false\r\n\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false\r\n\r\n const itemOrderIds = cardsOn\r\n itemOrderIds.splice(source.index, 1)\r\n itemOrderIds.splice(destination.index, 0, draggableId)\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"reorder\"\r\n }, {\r\n cards: itemOrderIds\r\n })\r\n let cards = {}\r\n\r\n itemOrderIds.map((a, i) => {\r\n cards = {\r\n ...cards,\r\n [a]: db.cards[a]\r\n }\r\n cards = {\r\n ...cards,\r\n [a]: {\r\n ...cards[a],\r\n order: {\r\n low: `${i + 1}`\r\n }\r\n }\r\n }\r\n return true\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...cards\r\n }\r\n });\r\n return\r\n\r\n }\r\n\r\n return (\r\n <div style={{ width: '100%' }}>\r\n <DragDropContext\r\n onDragEnd={onDragEnd}\r\n >\r\n <Droppable\r\n droppableId={`Drop_tasks`} //ID OF BOARD\r\n type=\"column\"\r\n direction={\"vertical\"}\r\n >\r\n {(provided, snapshot) => (\r\n <Container\r\n ref={provided.innerRef}\r\n {...provided.droppableProps}\r\n isDraggingOver={snapshot.isDraggingOver}\r\n >\r\n {tasksCards\r\n .sort((a, b) => {\r\n if (db.cards[a].order && db.cards[b].order && String(db.cards[a].order.low) && String(db.cards[b].order.low) && parseInt(db.cards[a].order.low) < parseInt(db.cards[b].order.low)) {\r\n return -1\r\n } else if (db.cards[a].order && db.cards[b].order && String(db.cards[a].order.low) && String(db.cards[b].order.low) && parseInt(db.cards[a].order.low) > parseInt(db.cards[b].order.low)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((card, index) => (\r\n <Draggable\r\n draggableId={card}\r\n index={index}\r\n key={card}\r\n >\r\n {(provided, snapshot) => (\r\n <Card\r\n provided={provided}\r\n snapshot={snapshot}\r\n cardId={card}\r\n db={'cards'}\r\n onlyOption\r\n showCompleteOption\r\n directDeletion\r\n editable\r\n noShowRecurrenceCard\r\n />\r\n )}\r\n </Draggable>\r\n ))}\r\n {provided.placeholder}\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n </div >\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n background-color:none;\r\n `;\r\n\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = theme => ({\r\n root: {\r\n transform: 'translateZ(0px)',\r\n flexGrow: 1,\r\n zIndex: 1000,\r\n height: '100vh'\r\n },\r\n speedDial: {\r\n position: 'absolute',\r\n bottom: theme.spacing(2),\r\n right: theme.spacing(2),\r\n '& .MuiFab-root': {\r\n backgroundColor: customApp('color'),\r\n color: customApp('lightText'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n },\r\n speedDialInvisible: {\r\n //position: 'relative',\r\n //float: 'right',\r\n //bottom: theme.spacing(2),\r\n right: theme.spacing(2),\r\n bottom: '-60px',\r\n position: 'absolute',\r\n '& .MuiFab-root': {\r\n backgroundColor: customApp('color'),\r\n color: customApp('lightText'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n '& .MuiButtonBase-root': {\r\n //display: 'none'\r\n }\r\n }\r\n})\r\n\r\nexport default style;","import React from 'react';\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\n//@MATERIAL\r\nimport { withStyles } from '@material-ui/core/styles';\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 Button from \"components/CustomButtons/Custom\";\r\nimport Navigation from \"components/Navigation\";\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, appAlert } from \"functions/\";\r\nimport { loadCards } from \"functions/loadData\";\r\nimport { cardMoveTo } from \"functions/cards\";\r\nimport { timelineComment } from \"functions/chat\";\r\n\r\nimport api from \"api\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/SpeedDial\";\r\n\r\nfunction Component(props) {\r\n const { classes } = props;\r\n const [typeFilter, setTypeFilter] = React.useState({ name: 'plan' });\r\n const [selectCard, setSelectCard] = React.useState(null);\r\n const { db, session } = reduxStore.getState();\r\n const { cards } = db;\r\n const { data } = reduxStore.getState().sideModule;\r\n\r\n React.useEffect(() => {\r\n (async () => {\r\n await loadCards(props, null, false, null, 'plans', false)\r\n })()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const myRef = React.useRef(null)\r\n const dataTypeOptions = []\r\n\r\n db.dataType.filter(fil => fil.sendTo).forEach(a => {\r\n dataTypeOptions.push({ name: a.name })\r\n })\r\n\r\n const AppAccess = db.users[Object.keys(db.users).find(a => a.indexOf(session._id) > -1)]._access\r\n\r\n let CardAccess = 0\r\n\r\n if (session._id\r\n && db.cards[data._id]\r\n && db.cards[data._id]._users\r\n && db.cards[data._id]._users[Object.keys(db.cards[data._id]._users).find(a => a.indexOf(session._id) > -1)])\r\n CardAccess = db.cards[data._id]._users[Object.keys(db.cards[data._id]._users).find(a => a.indexOf(session._id) > -1)]\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let cardsResults = cards\r\n\r\n cardsResults = Object.keys(cardsResults).filter(fil => {\r\n if (\r\n !cardsResults[fil].archived\r\n && !cardsResults[fil].deleted\r\n &&\r\n (\r\n (\r\n cardsResults[fil]._users\r\n && cardsResults[fil]._id !== data._id\r\n && cardsResults[fil]._users[session._id]\r\n && parseInt(cardsResults[fil]._users[session._id].access) > 2\r\n )\r\n ||\r\n ((\r\n AppAccess\r\n &&\r\n (\r\n AppAccess.owner\r\n || AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n ) ||\r\n (\r\n CardAccess\r\n && CardAccess.access\r\n && parseInt(CardAccess.access) > 2\r\n )\r\n )\r\n )\r\n )\r\n return true\r\n return false\r\n }).map(a => cardsResults[a])\r\n //}\r\n\r\n if (typeFilter)\r\n cardsResults = Object.keys(cardsResults).filter(fil => {\r\n if (cardsResults[fil] && cardsResults[fil].type && cardsResults[fil].type === typeFilter.name)\r\n return true\r\n return false\r\n }).map(a => cardsResults[a])\r\n\r\n cardsResults = Object.keys(cardsResults).filter(fil =>\r\n data.type\r\n && cardsResults[fil].type\r\n && db.dataType.filter(a => a.name === data.type)\r\n && db.dataType.filter(a => a.name === data.type).length > 0\r\n && db.dataType.filter(a => a.name === data.type)[0].sharedIn\r\n && (\r\n db.dataType.filter(a => a.name === data.type)[0].sharedIn.copy.indexOf(cardsResults[fil].type) > -1\r\n || db.dataType.filter(a => a.name === data.type)[0].sharedIn.attach.indexOf(cardsResults[fil].type) > -1\r\n || db.dataType.filter(a => a.name === data.type)[0].sharedIn.shared.indexOf(cardsResults[fil].type) > -1\r\n )\r\n ).map(a => cardsResults[a])\r\n\r\n const shareThis = async () => {\r\n let dataSave = {\r\n _id: uuid(),\r\n cardId: data._id,\r\n idRel: selectCard,\r\n _parent: selectCard,\r\n type: 'comment',\r\n message: '',\r\n shared: true\r\n }\r\n timelineComment(props, {\r\n ...dataSave,\r\n user: {\r\n ...db.users[session._id]\r\n },\r\n files: {}\r\n })\r\n\r\n api.post(\"timeline/add\", dataSave)\r\n setSelectCard(null)\r\n setTypeFilter({ name: 'plan' })\r\n }\r\n\r\n const moveTo = async () => {\r\n appAlert({\r\n message: translate('$__confirmMoveCard', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n let dataSave = {\r\n cardId: data._id,\r\n newRel: selectCard,\r\n planId: db.cards[selectCard]._planId ? db.cards[selectCard]._planId : db.cards[selectCard].type === 'plan' ? selectCard : null,\r\n oldRel: data._parent\r\n }\r\n if (cardMoveTo(props, dataSave)) {\r\n setSelectCard(null)\r\n setTypeFilter({ name: 'plan' })\r\n }\r\n }\r\n })\r\n }\r\n\r\n return (\r\n <div className={classes.root}>\r\n <div style={{ width: '100%', padding: '15px', position: \"relative\", clear: \"both\" }} ref={myRef}>\r\n {selectCard &&\r\n <React.Fragment>\r\n <fieldset style={{ maxWidth: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n <legend>{translate('$__action')}</legend>\r\n <Button\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n margin: '3px'\r\n }}\r\n onClick={() => shareThis()}\r\n >\r\n {translate('$__share', '*')}\r\n </Button>\r\n </fieldset>\r\n <fieldset style={{ maxWidth: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n <legend>{translate('$__AttachInCard')}</legend>\r\n <Button\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n margin: '3px'\r\n }}\r\n onClick={() => moveTo()}\r\n >\r\n {translate('$__Attach', '*')}\r\n </Button>\r\n </fieldset>\r\n <fieldset style={{ maxWidth: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n <Button\r\n style={{ position: 'relative', float: 'left', margin: '3px' }}\r\n color={'red'}\r\n onClick={() => {\r\n setSelectCard(null)\r\n }}\r\n >\r\n {translate('$__cancel', '*')}\r\n </Button>\r\n </fieldset>\r\n </React.Fragment>\r\n }\r\n </div>\r\n <div style={{ width: '100%', padding: '15px' }} >\r\n <Navigation\r\n styles={{\r\n height: \"auto\",\r\n maxHeight: selectCard ? \"calc(100vh - 400px)\" : \"none\"\r\n }}\r\n onSelect={(e) => {\r\n setSelectCard(e._id)\r\n }}\r\n ignoreTypes={['chatGroup']}\r\n />\r\n </div>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Component));\r\n","import React 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\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\nimport { translate, customApp } from \"functions\"\r\n\r\nimport { loadTimeline } from \"functions/chat\"\r\n\r\nimport { getChildrens } from \"functions/cards\"\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(720, \"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\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\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 }, [])\r\n\r\n React.useEffect(() => {\r\n iniCards()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards])\r\n\r\n const iniCards = async () => {\r\n let ncards = await getChildrens(props.nodeId)\r\n setCards({\r\n ...ncards,\r\n [props.nodeId]: true\r\n })\r\n }\r\n\r\n console.log(cards)\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: [props.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 console.log(e)\r\n setLoading(false)\r\n }\r\n }\r\n\r\n let timeSheet = {}\r\n let users = {}\r\n let timeSheetTotal = 0\r\n let totalSeconds = 0\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 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 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 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 toString(timeline[a][ts].user._id) === toString(userId)\r\n && (\r\n !timeline[a][ts]._toUser\r\n ||\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 || (\r\n timeline[a][ts]._toUser\r\n && Object.keys(timeline[a][ts]._toUser).length > 0\r\n && timeline[a][ts]._toUser[toString(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 timeSheetTotal = timeSheetTotal + 1\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 <UiCard>\r\n <HeaderWithIcon\r\n title={translate(`$__timeSheet`, 1)}\r\n icon={\"update\"}\r\n color={customApp(\"colorText\")}\r\n style={{\r\n background: customApp(\"ColumnTitleColor\"),\r\n padding: \"7px\"\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 &&\r\n <div style={{ padding: \"15px\" }}>\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 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 &&\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(users).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={timeSheet} />\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\" }}>\r\n <ResponsivePie\r\n data={[\r\n ...Object.keys(timeSheet).sort((a, b) => {\r\n if (parseInt(timeSheet[a].totalTimer) > parseInt(timeSheet[b].totalTimer)) {\r\n return -1\r\n } else if (parseInt(timeSheet[a].totalTimer) < parseInt(timeSheet[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: timeSheet[ts].name,\r\n label: timeSheet[ts].name,\r\n value: timeSheet[ts].totalTimer,\r\n color: \"#929497\",\r\n textMini: timeSheet[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={true}\r\n innerRadius={0.5}\r\n leavesOnly={true}\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: \"33%\",\r\n left: \"calc(50% - 50px)\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"menu\"),\r\n textAlign: \"center\",\r\n }}>\r\n {convertSecondsToText(totalSeconds, true)}\r\n </div>\r\n </UiCardHeader>\r\n <UiCardBody>\r\n <GridContainer>\r\n {Object.keys(timeSheet).sort((a, b) => {\r\n if (parseInt(timeSheet[a].totalTimer) > parseInt(timeSheet[b].totalTimer)) {\r\n return -1\r\n } else if (parseInt(timeSheet[a].totalTimer) < parseInt(timeSheet[b].totalTimer)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }).map((ts, i) =>\r\n <TimeSheetData data={timeSheet[ts]} key={ts} />\r\n )}\r\n <TimeSheetData data={{ name: translate(\"$__total\"), timerText: convertSecondsToText(totalSeconds) }} />\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[props.nodeId] && db.cards[props.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}\r\nconst mapStateToProps = (store) => ({\r\n cards: store.db.cards,\r\n timeline: store.timeline\r\n}\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);","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst headerStyle = theme => ({\r\n btClose: {\r\n position: 'relative',\r\n zIndex: theme.zIndex.drawer + 1,\r\n right: '0',\r\n top: '-64px',\r\n backgroundColor: '#FFFFFF',\r\n display: 'flex',\r\n },\r\n data: {\r\n marginTop: '10px',\r\n padding: '10px',\r\n '& fieldset': {\r\n border: 'solid 1px rgba(0,0,0,0.1)',\r\n '& legend': {\r\n marginBottom: '0px',\r\n fontSize: '16px',\r\n color: customApp('color')\r\n }\r\n }\r\n },\r\n timeline: {\r\n position: 'absolute',\r\n width: '100%',\r\n // top: '70px',\r\n bottom: '0px',\r\n },\r\n avatar: {\r\n width: '22px',\r\n height: '22px'\r\n },\r\n switch: {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n color: customApp('medium')\r\n }\r\n});\r\n\r\nexport default headerStyle;\r\n","//CORE\r\nimport React from \"react\"\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 Timeline from \"componentsV3/Timeline\"\r\nimport KPITimer from \"./timer\"\r\nimport Timesheet from \"components/Timer/chart\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//@MATERIAL\r\n\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/timerLog\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n} from \"functions/\"\r\n\r\n\r\nfunction Component(props) {\r\n const { classes } = props;\r\n const { db, sideModule, session } = reduxStore.getState()\r\n const data = sideModule.data || {}\r\n const [addTimer, setAddTimer] = React.useState(false)\r\n const [view, setView] = React.useState(!reduxStore.getState().db.cards[data._id]._users[session._id] ? \"chart\" : \"timeline\")\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let kpi_flow = db.cards[data._id]._timeline || {}\r\n kpi_flow = Object.keys(kpi_flow).filter(a => kpi_flow[a].type === \"kpi\").map(a => kpi_flow[a])\r\n\r\n return (\r\n <div>\r\n {!addTimer &&\r\n <div style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: 'flex'\r\n }}>\r\n {view !== 'chart' && reduxStore.getState().db.cards[data._id]._users[session._id] &&\r\n <CustomButton\r\n title={translate(\"$__add\")}\r\n text={translate(\"$__add\")}\r\n icon={\"more_time\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setAddTimer(true)\r\n }}\r\n />\r\n }\r\n {view !== 'chart' &&\r\n <CustomButton\r\n title={translate(\"$__showChart\")}\r\n text={translate(\"$__showChart\")}\r\n icon={\"analytics\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setView(\"chart\")\r\n }}\r\n />\r\n }\r\n {view !== 'timeline' &&\r\n <CustomButton\r\n title={translate(\"$__showTimeline\")}\r\n text={translate(\"$__showTimeline\")}\r\n icon={\"timeline\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setView(\"timeline\")\r\n }}\r\n />\r\n }\r\n </div>\r\n }\r\n {view === 'chart' &&\r\n <div style={{ width: \"calc(100% - 30px)\", marginLeft: \"15px\" }}>\r\n <Timesheet nodeId={data._id} />\r\n </div>\r\n }\r\n {(addTimer || view === 'timeline') &&\r\n <div\r\n // className={classes.timeline} \r\n style={{\r\n position: \"absolute\",\r\n // ...addTimer ? { top: 333 } : { top: 35 },\r\n top: 35,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n }}>\r\n <Timeline nodeId={data._id} type={\"timer\"} db={'cards'} disabledSend loadTimeline noSearch />\r\n </div>\r\n }\r\n {addTimer &&\r\n <div className={classes.timeline} style={{\r\n top: '0px',\r\n zIndex: 100,\r\n backgroundColor: '#FFFFFF'\r\n }}>\r\n <KPITimer data={data} manualAdd callBack={() => {\r\n setAddTimer(false)\r\n }} />\r\n </div>\r\n }\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = () => ({\r\n\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from \"react\"\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 Buttom from \"components/CustomButtons/Custom\"\r\nimport CircularProgress from \"components/Progress/circular\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport TextField from \"components/TextField/\"\r\nimport Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport InputAdornment from '@material-ui/core/InputAdornment'\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, appAlert, deleteNode } from \"functions/\"\r\nimport { deleteUser } from \"functions/users\"\r\n\r\nimport apims from \"apims\"\r\nimport api from \"api\"\r\n\r\nfunction Component(props) {\r\n const { sideModule, db } = reduxStore.getState()\r\n const [migrateComplete, setMigrateComplete] = React.useState(false)\r\n const [Load, setLoading] = React.useState(false)\r\n const [SelectedUser, setSelectedUser] = React.useState(null)\r\n const [countCards, setCountCards] = React.useState(0)\r\n const [findNameUser, setFindNameUser] = React.useState(\"\")\r\n const data = sideModule.data || {}\r\n\r\n React.useEffect(() => {\r\n if (data.type === 'user') {\r\n loadUserCards()\r\n } else {\r\n setLoading(false)\r\n }\r\n return () => { }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const deleteThis = async () => {\r\n appAlert({\r\n message: translate(\"$__confirmDeleteThis\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n deleteUser(data._id)\r\n deleteNode(props, { _id: data._id }, false)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }\r\n })\r\n }\r\n\r\n\r\n const loadUserCards = async () => {\r\n setLoading(true)\r\n const countChildrens = await apims.post(\"/Card_Count\", { id: data._id, all: true, rel: \"INN\", node: \"User\" })\r\n if (countChildrens) {\r\n setLoading(false)\r\n setCountCards(countChildrens.data)\r\n }\r\n\r\n }\r\n\r\n const migrate = async () => {\r\n setLoading(true)\r\n\r\n try {\r\n let response = await api.post(\"/user/migrateActivities\", {\r\n from: data._id,\r\n fromData: data,\r\n to: [SelectedUser],\r\n toData: db.users[SelectedUser]\r\n })\r\n if (response) {\r\n setMigrateComplete(true)\r\n let cards = { ...db.cards }\r\n Object.keys(cards).filter(a =>\r\n cards[a]._users && cards[a]._users[data._id]\r\n ).forEach(a => {\r\n if (!cards[a]._users[SelectedUser])\r\n cards[a]._users = {\r\n ...cards[a]._users,\r\n [SelectedUser]: {\r\n access: cards[a]._users[data._id].access,\r\n _id: SelectedUser\r\n }\r\n }\r\n delete cards[a]._users[data._id]\r\n })\r\n setLoading(false)\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n setTimeout(() => {\r\n migrate()\r\n }, 3000)\r\n }\r\n\r\n }\r\n\r\n return (\r\n <div style={{ width: '100%' }}>\r\n <SideModuleCloseAndSave\r\n close={() => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }}\r\n />\r\n\r\n {/* DELETE CLIENT */}\r\n {data._id && db.users[data._id] &&\r\n (\r\n db.users[data._id].type === 'client' ||\r\n db.users[data._id].type === 'group' ||\r\n db.users[data._id].type === 'sic' ||\r\n db.users[data._id].type === 'unity'\r\n ) &&\r\n <fieldset style={{ textAlign: \"center\" }}>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__deleteOptions\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {Object.keys(db.users).filter(a => db.users[a]._parent === data._id).length > 0 ?\r\n translate(`$__delete${db.users[data._id].type}WithUsersDescription`, 1)\r\n :\r\n translate(`$__delete${db.users[data._id].type}NoUsersDescription`, 1)\r\n }\r\n </div>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__deleteThisDescription\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteThis() }} >{translate(\"$__deleteThis\", 1)}</Buttom>\r\n </fieldset>\r\n }\r\n\r\n {/* DELETE USER */}\r\n {data._id && db.users[data._id] &&\r\n db.users[data._id].type === 'user' &&\r\n <React.Fragment>\r\n {!Load ?\r\n <React.Fragment>\r\n {countCards > 0 && !migrateComplete ?\r\n <React.Fragment>\r\n <fieldset>\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__thisUserHas\", 1)}</legend>\r\n <div style={{\r\n position: \"relative\",\r\n marginTop: \"22px\",\r\n bottom: \"7px\",\r\n width: \"100%\",\r\n fontSize: \"12px\",\r\n color: customApp('mediumText'),\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n textAlign: \"center\"\r\n }}>\r\n {countCards} {translate(\"$__items\")}\r\n <br></br>\r\n {translate(\"$__deleteCountCardsExplain\")}\r\n </div>\r\n </fieldset>\r\n {SelectedUser ?\r\n <fieldset>\r\n <legend>{translate('$__selectedUserToMigrationCards')}</legend>\r\n <div\r\n style={{\r\n cursor: 'pointer',\r\n marginBottom: '7px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }}\r\n onClick={() => {\r\n setSelectedUser(null)\r\n }}\r\n >\r\n <Avatar alt={db.users[SelectedUser].name} src={db.users[SelectedUser].image || null}\r\n style={{ marginRight: '15px' }}\r\n >\r\n {db.users[SelectedUser].name.substr(0, 1)}\r\n </Avatar>\r\n <span>{db.users[SelectedUser].name}</span>\r\n </div>\r\n <Buttom onClick={() => {\r\n appAlert({\r\n message: translate('$__confirmUserTransferData', 1),\r\n autoClose: 50000,\r\n buttons: [\r\n {\r\n shadow: true,\r\n title: translate(\"$__confirm\"),\r\n text: translate(\"$__confirm\"),\r\n color: \"green\",\r\n icon: \"done_all\",\r\n size: \"25px\",\r\n style: { marginLeft: 15 },\r\n onClick: () => {\r\n migrate()\r\n },\r\n },\r\n {\r\n shadow: true,\r\n title: translate(\"$__cancel\"),\r\n text: translate(\"$__cancel\"),\r\n color: \"red\",\r\n icon: \"close\",\r\n size: \"25px\",\r\n style: { marginLeft: 15 },\r\n onClick: () => {\r\n\r\n },\r\n }],\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n })\r\n\r\n }} >{translate(\"$__migrate\", 1)}</Buttom>\r\n </fieldset>\r\n :\r\n <fieldset\r\n style={{ marginTop: 7, marginBottom: 7 }}\r\n >\r\n <legend>{translate('$__chooseAUserToTransferCardsBeforeDeletingUser')}</legend>\r\n <TextField\r\n label={translate('$__search', '*')}\r\n variant={'standard'}\r\n autoFocus\r\n value={findNameUser}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setFindNameUser(e.target.value)\r\n },\r\n }}\r\n />\r\n {Object.keys(db.users)\r\n .filter(a =>\r\n // a === a\r\n a !== data._id\r\n && db.users[a].type === 'user'\r\n && !db.users[a].deleted\r\n && (\r\n (!data._parent\r\n &&\r\n !db.users[a]._parent\r\n )\r\n || (\r\n data._parent\r\n && db.users[a]._parent === data._parent\r\n )\r\n )\r\n && (\r\n !findNameUser || (\r\n findNameUser && db.users[a].name.toLowerCase().indexOf(findNameUser.toLowerCase().trim()) > -1\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n var nameA = db.users[a].name.toLowerCase()\r\n var nameB = db.users[b].name.toLowerCase()\r\n if (nameA < nameB)\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0\r\n })\r\n .map(pr =>\r\n <div\r\n style={{\r\n cursor: 'pointer',\r\n marginBottom: '7px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }}\r\n onClick={() => {\r\n setSelectedUser(pr)\r\n }}\r\n key={pr}\r\n >\r\n <Avatar alt={db.users[pr].name} src={db.users[pr].image || null}\r\n style={{ marginRight: '15px' }}\r\n >\r\n {db.users[pr].name.substr(0, 1)}\r\n </Avatar>\r\n <span>{db.users[pr].name}</span>\r\n </div>\r\n )}\r\n </fieldset>\r\n }\r\n <fieldset style={{ textAlign: \"center\" }} >\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__deactivateThis\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__deactivateWhithoutMigration\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteThis() }} >{translate(\"$__deactivateThis\", 1)}</Buttom>\r\n </fieldset>\r\n </React.Fragment>\r\n :\r\n <fieldset style={{ textAlign: \"center\" }} >\r\n <legend style={{ color: customApp(\"color\") }}>{translate(\"$__deactivateThis\", 1)}</legend>\r\n <div style={{ textAlign: \"center\", width: \"100%\" }}>\r\n {translate(\"$__deactivateUserDescription\", 1)}\r\n </div>\r\n <Buttom onClick={() => { deleteThis() }} >{translate(\"$__deactivateThis\", 1)}</Buttom>\r\n </fieldset>\r\n }\r\n\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {Load ?\r\n <div style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n marginTop: '33px'\r\n }}>\r\n <CircularProgress />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </React.Fragment>\r\n }\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","import React from 'react';\r\nimport clsx from 'clsx';\r\n\r\n//@MATERIAL\r\nimport Radio from '@material-ui/core/Radio';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n icon: {\r\n borderRadius: '50%',\r\n width: 16,\r\n height: 16,\r\n boxShadow: `inset 0 0 0 1px ${customApp('color', .2)}, inset 0 -1px 0 ${customApp('color', .1)}`,\r\n backgroundColor: `#f5f8fa`,\r\n backgroundImage: `linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))`,\r\n '$root.Mui-focusVisible &': {\r\n outline: `2px auto ${customApp('color', .6)}`,\r\n outlineOffset: 2,\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#ebf1f5',\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'none',\r\n background: 'rgba(206,217,224,.5)',\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: customApp('color', 1),\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: 16,\r\n height: 16,\r\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: customApp('color', 1),\r\n },\r\n },\r\n});\r\n\r\n// Inspired by blueprintjs\r\nfunction StyledRadio(props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n <Radio\r\n className={classes.root}\r\n disableRipple\r\n color=\"default\"\r\n checkedIcon={<span className={clsx(classes.icon, classes.checkedIcon)} />}\r\n icon={<span className={classes.icon} />}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport default StyledRadio","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst headerStyle = theme => ({\r\n root: {\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"calc(100% - 20px)\",\r\n margin: \"10px\",\r\n },\r\n user: {\r\n position: \"relative\",\r\n width: \"calc(100% - 20px)\",\r\n margin: \"10px\",\r\n float: \"left\",\r\n height: \"50px\"\r\n },\r\n avatar: {\r\n position: \"absolute\",\r\n left: \"-5px\",\r\n top: \"0px\",\r\n border: `1px solid ${customApp(\"color\")}`,\r\n width: \"57px\",\r\n height: \"57px\",\r\n borderRadius: \"50%\",\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center center\",\r\n backgroundColor: \"#FFFFFF\"\r\n },\r\n name: {\r\n position: \"absolute\",\r\n top: \"5px\",\r\n left: \"36px\",\r\n right: \"0px\",\r\n height: \"30px\",\r\n border: `1px solid ${customApp(\"color\", 0.2)}`,\r\n borderRadius: \"5px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n paddingLeft: \"16px\",\r\n paddingRight: \"7px\",\r\n fontWeight: \"bold\",\r\n fontSize: \"12px\",\r\n color: customApp(\"darkText\"),\r\n boxShadow: \"-5px 3px 7px 1px rgba(0,0,0,0.1)\"\r\n },\r\n access: {\r\n position: \"absolute\",\r\n top: \"33px\",\r\n left: \"45px\",\r\n right: \"0px\",\r\n height: \"30px\",\r\n border: `1px solid ${customApp(\"color\", 0.2)}`,\r\n borderRadius: \"0 0 5px 5px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n paddingLeft: \"16px\",\r\n fontSize: \"12px\",\r\n color: customApp(\"color\"),\r\n boxShadow: \"0px 3px 7px 1px rgba(0,0,0,0.05)\"\r\n },\r\n accessEditing: {\r\n position: \"absolute\",\r\n top: \"33px\",\r\n left: \"0px\",\r\n right: \"0px\",\r\n height: \"auto\",\r\n minHeight: \"290px\",\r\n padding: \"7px\",\r\n border: `1px solid ${customApp(\"color\", 0.2)}`,\r\n borderRadius: \"0 0 5px 5px\",\r\n // display: \"flex\",\r\n // alignItems: \"center\",\r\n paddingTop: '15px',\r\n paddingLeft: \"16px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"color\"),\r\n backgroundColor: \"#FFFFFF\",\r\n boxShadow: \"0px 3px 7px 1px rgba(0,0,0,0.05)\",\r\n \"& ul\": {\r\n fontSize: \"12px\"\r\n }\r\n },\r\n btActions: {\r\n position: \"absolute\",\r\n right: \"7px\",\r\n top: \"7px\",\r\n display: \"flex\"\r\n },\r\n switch: {\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"medium\")\r\n },\r\n accessDescription: {\r\n fontSize: \"12px\",\r\n color: customApp(\"medium\"),\r\n }\r\n});\r\n\r\nexport default headerStyle;\r\n","//CORE\r\nimport React from \"react\"\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 Radio from \"components/Radio\"\r\nimport Icon from \"components/Icon\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport MoreMenu from \"components/MoreMenu/\"\r\nimport TextField from \"components/TextField\";\r\n\r\n\r\n//@MATERIAL\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport RadioGroup from '@material-ui/core/RadioGroup'\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card-Users.js\"\r\n\r\n//IMAGES\r\nimport defaultAvatar from \"assets/img/default-avatar.png\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, appAlert, getAppAccess } from \"functions\"\r\nimport { cardsAccess, groupAccess, groupAccessRemove, isResponsible } from \"functions/users\"\r\nimport api from \"api/\"\r\n\r\nimport {\r\n planMyAccountVerify,\r\n} from \"functions/cards\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { db, sideModule, session } = reduxStore.getState()\r\n const [userEditing, setUserEditing] = React.useState({ id: null })\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [view, setView] = React.useState(\"users\")\r\n const [searchValue, setSearchValue] = React.useState(\"\")\r\n const [search, setSearch] = React.useState(false)\r\n\r\n const card = db.cards[sideModule.data._id]\r\n\r\n let client = card?.client || db.cards[card._planId]?.client || null\r\n\r\n let users = { ...db.users }\r\n let unSelectedUsers = {\r\n ...card && card._users ? { ...card._users } : {},\r\n ...card._parent && db.cards[card._parent] && db.cards[card._parent]._users ? { ...db.cards[card._parent]._users } : {},\r\n ...card._planId && db.cards[card._planId] && db.cards[card._planId]._users ? { ...db.cards[card._planId]._users } : {},\r\n ...users,\r\n }\r\n\r\n let unSelectedGroups = Array.from(reduxStore.getState().db.userGroup)\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = card && card._id && db.cards[card._id] && db.cards[card._id]._users && Object.keys(db.cards[card._id]._users).length > 0 ? db.cards[card._id]._users[Object.keys(db.cards[card._id]._users).find(a => a.indexOf(session._id) > -1)] : 0\r\n\r\n if (!sideModule || !sideModule.data)\r\n return null\r\n\r\n const close = () => {\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n setUserEditing({ _id: null })\r\n setReqSave(false)\r\n }\r\n })\r\n } else {\r\n setUserEditing({ _id: null })\r\n setReqSave(false)\r\n }\r\n\r\n }\r\n const saveUser = async (id, acc, userData) => {\r\n let access = 1\r\n if (card && card.type === 'plan')\r\n access = 3\r\n if (!acc) {\r\n if (\r\n card._planId\r\n && db.cards[card._planId]\r\n && db.cards[card._planId]._users\r\n && db.cards[card._planId]._users[id]\r\n && db.cards[card._planId]._users[id].access\r\n ) {\r\n if (card._parent\r\n && db.cards[card._parent]\r\n && db.cards[card._parent]._users\r\n && db.cards[card._parent]._users[id]\r\n && db.cards[card._parent]._users[id].access\r\n && parseInt(db.cards[card._parent]._users[id].access) > parseInt(db.cards[card._planId]._users[id].access)\r\n ) {\r\n access = parseInt(db.cards[card._parent]._users[id].access)\r\n } else {\r\n access = parseInt(db.cards[card._planId]._users[id].access)\r\n }\r\n }\r\n } else {\r\n access = acc\r\n }\r\n const noNotification = db.cards[sideModule.data._id] && db.cards[sideModule.data._id]._users && db.cards[sideModule.data._id]._users[id] ? true : false\r\n const saved = await cardsAccess(props, id, access, sideModule.data._id, noNotification, userData)\r\n if (saved) {\r\n setReqSave(false)\r\n setUserEditing({ _id: null })\r\n return true\r\n }\r\n }\r\n\r\n const saveGroup = async (id) => {\r\n const saved = await groupAccess(props, id, sideModule.data._id)\r\n if (saved) {\r\n setReqSave(false)\r\n setUserEditing({ _id: null })\r\n return true\r\n }\r\n }\r\n\r\n const deleteAccessUser = async (id, close) => {\r\n const response = await api.put(`cards/removeAccess/`, {\r\n cardId: sideModule.data._id,\r\n userIds: [id]\r\n })\r\n if (response) {\r\n if (close)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n // delete newUsers[id]\r\n setReqSave(false)\r\n setUserEditing({ _id: null })\r\n }\r\n }\r\n\r\n if (!card)\r\n return null\r\n users = users && Object.keys(users).length > 0 && Object.keys(users)\r\n .filter(a =>\r\n a &&\r\n (\r\n card\r\n && card._users\r\n && card._users[users[a]._id]\r\n && !card._users[users[a]._id].deleted\r\n )\r\n )\r\n .sort((a, b) => {\r\n if (a.name < b.name)\r\n return -1\r\n return 0\r\n })\r\n .map(a => users[a])\r\n\r\n unSelectedUsers = Object.keys(unSelectedUsers)\r\n .filter(a =>\r\n unSelectedUsers[a].type === 'user'\r\n && !unSelectedUsers[a].deleted\r\n && (\r\n (\r\n !client\r\n &&\r\n (\r\n !unSelectedUsers[a]._parent\r\n || (\r\n unSelectedUsers[a]._parent\r\n && unSelectedUsers[a]._parent === session.account\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n client\r\n &&\r\n (\r\n (\r\n unSelectedUsers[a]._parent\r\n && (\r\n unSelectedUsers[a]._parent === client\r\n || unSelectedUsers[a]._parent === session.account\r\n\r\n )\r\n )\r\n || !unSelectedUsers[a]._parent\r\n )\r\n )\r\n )\r\n )\r\n .map(a => unSelectedUsers[a])\r\n\r\n // unSelectedUsers = Object.keys(unSelectedUsers)\r\n // .filter(a => {\r\n // if (\r\n // a\r\n // && (\r\n // !unSelectedUsers[a].type\r\n // || (\r\n // unSelectedUsers[a].type\r\n // && unSelectedUsers[a].type !== \"client\"\r\n // && unSelectedUsers[a].type !== \"unity\"\r\n // && unSelectedUsers[a].type !== \"group\"\r\n // )\r\n // )\r\n // && (\r\n // !unSelectedUsers[a].deleted\r\n // && (\r\n // (\r\n // !client\r\n // &&\r\n // (\r\n // !unSelectedUsers[a]._parent\r\n // || (\r\n // unSelectedUsers[a]._parent\r\n // && unSelectedUsers[a]._parent === session.account\r\n // )\r\n // )\r\n // )\r\n // ||\r\n // (\r\n // client\r\n // &&\r\n // (\r\n // (\r\n // unSelectedUsers[a]._parent\r\n // && (\r\n // unSelectedUsers[a]._parent === client\r\n // || unSelectedUsers[a]._parent === session.account\r\n\r\n // )\r\n // )\r\n // || !unSelectedUsers[a]._parent\r\n // )\r\n // )\r\n // )\r\n // )\r\n // )\r\n // return true\r\n // return false\r\n // }\r\n // )\r\n // .map(a => unSelectedUsers[a])\r\n\r\n // unSelectedUsers = unSelectedUsers.filter(a =>\r\n // a && (\r\n // (\r\n // !client\r\n // || (\r\n // client\r\n // && (\r\n // a._parent === client\r\n // || !a._parent\r\n // )\r\n // )\r\n // )\r\n // && (!card._users\r\n // || !card._users[a._id]\r\n // )\r\n // && (\r\n // !searchValue\r\n // || (\r\n // searchValue\r\n // && (\r\n // (\r\n // a.name\r\n // && a.name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n // )\r\n // ||\r\n // (\r\n // searchValue.indexOf('>') > -1\r\n // && a._parent\r\n // && reduxStore.getState().db.users\r\n // && reduxStore.getState().db.users[a._parent]\r\n // && reduxStore.getState().db.users[a._parent].name\r\n // && reduxStore.getState().db.users[a._parent].name.toLowerCase().indexOf(searchValue.toLowerCase().replace('>', \"\").trim()) > -1\r\n // )\r\n // )\r\n // )\r\n // )\r\n // )\r\n // ).map(a => a)\r\n\r\n\r\n const addAllUsers = async (adus) => {\r\n setSearchValue(\"\")\r\n adus.forEach(u => {\r\n saveUser(u._id, null, u)\r\n })\r\n }\r\n\r\n const addAllGroups = async (adus) => {\r\n setSearchValue(\"\")\r\n }\r\n\r\n const renderGroup = (gr) => {\r\n return (\r\n <div\r\n className={classes.user}\r\n style={{ height: 37 }}\r\n >\r\n <div\r\n className={classes.name}\r\n style={{ left: 0 }}\r\n >\r\n {gr.label}\r\n <CustomButton\r\n transparent\r\n title={card._groups && card._groups[gr.value] ? translate(\"$__removeTeam\") : translate(\"$__addTeam\")}\r\n icon={card._groups && card._groups[gr.value] ? \"group_remove\" : \"group_add\"}\r\n size={\"20px\"}\r\n onClick={() => {\r\n if (card && (!card._groups || (card._groups && !card._groups[gr.value]))) {\r\n saveGroup(gr.value)\r\n } else {\r\n groupAccessRemove(props, gr.value, card._id)\r\n }\r\n\r\n }}\r\n />\r\n </div>\r\n\r\n </div>\r\n )\r\n }\r\n\r\n const renderUser = (us, add = false) => {\r\n let permission = true\r\n let u = us\r\n if (us._id && db.users[us._id])\r\n u = db.users[us._id]\r\n if (\r\n (\r\n !us.type\r\n || us.type === 'external'\r\n )\r\n && (\r\n !u._parent\r\n || (\r\n u._parent\r\n && (\r\n !db.users[u._parent]\r\n )\r\n )\r\n )\r\n ) {\r\n permission = false\r\n }\r\n\r\n if (card && card._planId && planMyAccountVerify(card._planId))\r\n permission = true\r\n\r\n let access = 1\r\n if (u && u._id && card._users && card._users[u._id] && card._users[u._id].access)\r\n access = String(card._users[u._id].access)\r\n return (\r\n <div className={classes.user}>\r\n <div className={classes.name}>\r\n {u.name}\r\n {card._users[u._id] && card._users[u._id].isResponsible ? <span style={{ fontSize: \"9px\", fontWeight: 'normal', color: '#CCCCCC' }}>{translate(\"$__responsible\", 1)}</span>\r\n :\r\n ``\r\n }\r\n {add && !userEditing._id ?\r\n <div>\r\n <CustomButton\r\n transparent\r\n title={translate(\"$__add\")}\r\n icon={\"person_add\"}\r\n size={\"20px\"}\r\n onClick={() => {\r\n saveUser(u._id, null, u)\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {!add ?\r\n <div\r\n style={{\r\n zIndex: 10\r\n }}\r\n >\r\n <MoreMenu\r\n horizontalButton\r\n transparent\r\n size=\"14px\"\r\n btColor={customApp(\"color\")}\r\n options={[\r\n {\r\n name: \"$__setAsResponsible\",\r\n icon: \"admin_panel_settings\",\r\n onClick: () => {\r\n appAlert({\r\n message: translate('$__confirmSetAsResponsibleCard', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n isResponsible(props, {\r\n cardId: sideModule.data._id,\r\n userId: u._id\r\n })\r\n }\r\n })\r\n },\r\n },\r\n ...permission && (\r\n (\r\n u\r\n &&\r\n (\r\n (\r\n !u._access\r\n ||\r\n (\r\n u._access\r\n && u._access !== 'owner'\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n CardAccess\r\n && String(CardAccess.access)\r\n && parseInt(CardAccess.access) > 2\r\n && parseInt(CardAccess.access) >= parseInt(access)\r\n )\r\n ||\r\n (\r\n AppAccess\r\n && AppAccess.plan\r\n &&\r\n (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n )\r\n\r\n )\r\n ||\r\n u._id === session._id\r\n ) ? [\r\n {\r\n name: \"$__editAccess\",\r\n icon: \"manage_accounts\",\r\n onClick: () => {\r\n setUserEditing({\r\n _id: u._id,\r\n access: access\r\n })\r\n },\r\n },\r\n {\r\n name: \"$__removeAccess\",\r\n icon: \"delete_forever\",\r\n color: 'red',\r\n onClick: () => {\r\n appAlert({\r\n message: u._id !== session._id ? translate('$__confirmRemoveUser', 1) : translate('$__confirmGetOut', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n deleteAccessUser(u._id, u._id !== session._id ? false : true)\r\n }\r\n })\r\n },\r\n },\r\n ] : []\r\n ]}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n <div className={classes.avatar}\r\n style={{\r\n backgroundImage: `url(\"${u.image ? u.image : defaultAvatar}\")`\r\n }}>\r\n {u._parent &&\r\n db.users[u._parent] &&\r\n db.users[u._parent].image ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: -4,\r\n right: -7,\r\n width: 22,\r\n height: 22,\r\n borderRadius: \"50%\",\r\n backgroundImage: `url(${db.users[u._parent].image})`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\"\r\n }}></div>\r\n : <React.Fragment></React.Fragment>}\r\n </div>\r\n {!add ?\r\n <div className={classes.access}\r\n style={{\r\n cursor: 'pointer',\r\n paddingLeft: 15,\r\n paddingRight: 15,\r\n paddingTop: 3,\r\n display: \"block\"\r\n }}\r\n onClick={permission ? () => {\r\n if (\r\n (\r\n u\r\n &&\r\n (\r\n (\r\n !u._access\r\n ||\r\n (\r\n u._access\r\n && u._access !== 'owner'\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n CardAccess\r\n && String(CardAccess.access)\r\n && parseInt(CardAccess.access) > 2\r\n && parseInt(CardAccess.access) >= parseInt(access)\r\n )\r\n ||\r\n (\r\n AppAccess\r\n && AppAccess.plan\r\n &&\r\n (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n )\r\n\r\n )\r\n ||\r\n u._id === session._id\r\n ) {\r\n setUserEditing({\r\n _id: u._id,\r\n access: access\r\n })\r\n }\r\n }\r\n : null\r\n }>\r\n {u._parent &&\r\n db.users[u._parent] &&\r\n db.users[u._parent].name ?\r\n <div style={{ position: \"relative\", float: \"left\" }}>\r\n {db.users[u._parent].name}\r\n </div>\r\n : <React.Fragment></React.Fragment>}\r\n <div style={{ position: \"relative\", float: \"right\" }}>\r\n ({u._access === 'owner' ? translate('$__owner', 1)\r\n : access === '0' ? translate('$__reader', 1)\r\n : access === '1' ? translate('$__executioner', 1)\r\n : access === '2' ? translate('$__collaborator', 1)\r\n : access === '3' ? translate('$__leadership', 1)\r\n : access === '4' ? translate('$__supervisor', 1)\r\n : access === '5' ? translate('$__admin', 1)\r\n : translate('$__reader', 1)\r\n\r\n })\r\n </div>\r\n </div>\r\n : u._parent &&\r\n db.users[u._parent] &&\r\n db.users[u._parent].name ?\r\n <div className={classes.access}>\r\n <div>\r\n {db.users[u._parent].name}\r\n </div>\r\n </div>\r\n : <React.Fragment></React.Fragment>}\r\n </div>\r\n )\r\n }\r\n\r\n if (userEditing && userEditing._id) {\r\n let access = 1\r\n if (card._users && card._users[userEditing._id] && card._users[userEditing._id].access)\r\n access = String(card._users[userEditing._id].access)\r\n let u = card._users[userEditing._id]\r\n let permission = false\r\n if (card && card._planId && planMyAccountVerify(card._planId))\r\n permission = true\r\n\r\n return (\r\n <React.Fragment>\r\n {renderUser(u, true)}\r\n <div\r\n style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n float: \"left\",\r\n justifyContent: \"flex-end\"\r\n }}\r\n >\r\n {reqSave &&\r\n <CustomButton\r\n transparent\r\n title={translate(\"$__save\")}\r\n icon={\"save\"}\r\n color={customApp('color')}\r\n onClick={() => {\r\n saveUser(userEditing._id, userEditing.access, u)\r\n }}\r\n />\r\n }\r\n {users.length > 1 &&\r\n <CustomButton\r\n transparent\r\n title={userEditing._id !== session._id ? translate('$__removeAccess', 1) : translate('$__getOut', 1)}\r\n icon={userEditing._id !== session._id ? 'delete_forever' : 'logout'}\r\n color={'red'}\r\n onClick={() => {\r\n appAlert({\r\n message: userEditing._id !== session._id ? translate('$__confirmRemoveUser', 1) : translate('$__confirmGetOut', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n deleteAccessUser(userEditing._id, userEditing._id !== session._id ? false : true)\r\n }\r\n })\r\n }}\r\n />\r\n }\r\n <CustomButton\r\n transparent\r\n title={translate('$__close', '*')}\r\n icon={'undo'}\r\n color={customApp('medium')}\r\n onClick={() => close()}\r\n />\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: 15,\r\n float: \"left\"\r\n }}\r\n >\r\n {(userEditing._id !== session._id || (AppAccess.plan && AppAccess.planAdmin)) &&\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"100%\",\r\n }}>\r\n <RadioGroup\r\n defaultValue={String(access)}\r\n aria-label=\"gender\"\r\n name=\"customized-radios\"\r\n onChange={(e) => {\r\n setUserEditing({ ...userEditing, access: e.target.value })\r\n setReqSave(true)\r\n }}\r\n >\r\n {card.type !== 'plan' && ((CardAccess && parseInt(CardAccess.access) >= 0) || (permission && (AppAccess && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))))\r\n &&\r\n <FormControlLabel value=\"0\" control={<Radio />} label={translate('$__reader', 1)} />\r\n }\r\n {card.type !== 'plan' && ((CardAccess && parseInt(CardAccess.access) >= 1) || (permission && (AppAccess && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))))\r\n &&\r\n <FormControlLabel value=\"1\" control={<Radio />} label={translate('$__executioner', 1)} />\r\n }\r\n {card.type !== 'plan' && card.type !== 'chatGroup' && ((CardAccess && parseInt(CardAccess.access) >= 2) || (permission && (AppAccess && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))))\r\n &&\r\n <FormControlLabel value=\"2\" control={<Radio />} label={translate('$__collaborator', 1)} />\r\n }\r\n {((CardAccess && parseInt(CardAccess.access) >= 3) || (permission && (AppAccess && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))))\r\n &&\r\n <FormControlLabel value=\"3\" control={<Radio />} label={translate('$__leadership', 1)} />\r\n }\r\n {card.type !== 'chatGroup' && ((CardAccess && parseInt(CardAccess.access) >= 4) || (permission && (AppAccess && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))))\r\n &&\r\n <FormControlLabel value=\"4\" control={<Radio />} label={translate('$__supervisor', 1)} />\r\n }\r\n {((CardAccess && parseInt(CardAccess.access) >= 5) || (AppAccess && AppAccess.plan && (permission && (AppAccess.planAdmin || AppAccess.planModerate))))\r\n &&\r\n <FormControlLabel value=\"5\" control={<Radio />} label={translate('$__admin', 1)} />\r\n }\r\n </RadioGroup>\r\n </div>\r\n }\r\n {card.type !== 'chatGroup' ?\r\n <ul id=\"ACTIVE_USERS_LIST\" style={{ position: 'relative', float: 'left', width: '100%' }}>\r\n {userEditing.access === \"0\" &&\r\n <React.Fragment>\r\n <li>{translate('$__readOnlyTodo', 1)}</li>\r\n <li>{translate('$__readTimeline', 1)}</li>\r\n </React.Fragment>\r\n }\r\n {parseInt(userEditing.access) >= 1 &&\r\n <React.Fragment>\r\n <li>{translate('$__executioner', 1)}</li>\r\n <li>{translate('$__timeSheetRegister', 1)}</li>\r\n <li>{translate('$__interactonTheTimeline', 1)}</li>\r\n </React.Fragment>\r\n }\r\n {parseInt(userEditing.access) > 1 &&\r\n <li>{translate('$__ExecuteAndCreateSubTasks', 1)}</li>\r\n }\r\n {parseInt(userEditing.access) > 2 &&\r\n <React.Fragment>\r\n {sideModule.data.type === 'plan' &&\r\n <React.Fragment>\r\n <li>{translate('$__access', 1)} BRIGHT & CONNECTED</li>\r\n <li>{translate('$__access', 1)} INSIGHTS</li>\r\n </React.Fragment>\r\n }\r\n <li>{translate('$__updateDueDate', 1)}</li>\r\n <li>{translate('$__updateTags', 1)}</li>\r\n <li>{translate('$__updateIndicators', 1)}</li>\r\n <li>{translate('$__addAndRemoveUsers', 1)}</li>\r\n <li>{translate('$__defineResponsible', 1)}</li>\r\n </React.Fragment>\r\n }\r\n {parseInt(userEditing.access) > 3 &&\r\n <React.Fragment>\r\n <li>{translate('$__updateData', 1)}</li>\r\n <li>{translate('$__usersManager', 1)}</li>\r\n </React.Fragment>\r\n }\r\n {parseInt(userEditing.access) >= 4 &&\r\n <React.Fragment>\r\n {sideModule.data.type === 'plan' &&\r\n <React.Fragment>\r\n <li>{translate('$__access', 1)} MATRIX SWOT</li>\r\n </React.Fragment>\r\n }\r\n <li>{translate('$__settings', 1)}</li>\r\n </React.Fragment>\r\n }\r\n {parseInt(userEditing.access) === 5 &&\r\n <li>{translate('$__deleteActivity', 1)}</li>\r\n }\r\n </ul>\r\n :\r\n <ul id=\"ACTIVE_USERS_LIST\" style={{ position: 'relative', float: 'left', width: '100%' }}>\r\n {parseInt(userEditing.access) > 1 &&\r\n <li>{translate('$__viewAndInteract', 1)}</li>\r\n }\r\n {parseInt(userEditing.access) > 2 &&\r\n <React.Fragment>\r\n <li>{translate('$__addAndRemoveUsers', 1)}</li>\r\n <li>{translate('$__update', 1)}</li>\r\n </React.Fragment>\r\n }\r\n {parseInt(userEditing.access) === 5 &&\r\n <li>{translate('$__deleteGroup', 1)}</li>\r\n }\r\n </ul>\r\n }\r\n\r\n {card._users[userEditing._id] && !card._users[userEditing._id].isResponsible &&\r\n <div className={classes.switch}\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n float: 'left',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between'\r\n }}>\r\n <CustomButton\r\n transparent\r\n title={translate(\"$__setAsResponsible\")}\r\n text={translate(\"$__setAsResponsible\")}\r\n icon={\"admin_panel_settings\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n appAlert({\r\n message: translate('$__confirmSetAsResponsibleCard', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n isResponsible(props, {\r\n cardId: sideModule.data._id,\r\n userId: userEditing._id\r\n })\r\n }\r\n })\r\n\r\n }}\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n </React.Fragment>\r\n )\r\n }\r\n\r\n\r\n\r\n return (\r\n <div className={classes.root}>\r\n {search &&\r\n <div style={{\r\n marginTop: 15,\r\n width: \"100%\",\r\n padding: \"4px 15px\",\r\n fontSize: \"16px\",\r\n color: \"lightGray\"\r\n }}>\r\n <TextField\r\n id={`quickUser_Search`}\r\n label={translate('$__searchByName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'fullName'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\"\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => {\r\n setSearchValue(\"\")\r\n setSearch(false)\r\n }}>\r\n <Icon icon='close' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setSearchValue(d.target.value)\r\n },\r\n onBlur: (d) => {\r\n\r\n }\r\n }}\r\n value={searchValue}\r\n placeholder={translate('$__searchByName', 1)}\r\n autoFocus\r\n />\r\n </div>\r\n }\r\n {(searchValue === \"\" || !searchValue) ?\r\n <React.Fragment>\r\n <fieldset>\r\n <legend style={{ color: customApp('color') }}>{translate(\"$__permittedUsers\", 1)}</legend>\r\n {users && users.map((u, i) => <React.Fragment key={u._id}>{renderUser(u)}</React.Fragment>)}\r\n </fieldset>\r\n {card && card._groups && Object.keys(card._groups).length > 0 ?\r\n <fieldset>\r\n <legend style={{ color: customApp('color') }}>{translate(\"$__permittedTeams\", 1)}</legend>\r\n {unSelectedGroups.filter(group => card._groups[group.value]).map((u, i) => <React.Fragment key={u}>{renderGroup(u)}</React.Fragment>)}\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>}\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {/* {parentUsers && parentUsers.length > 0 &&\r\n <fieldset\r\n style={{\r\n marginTop: '7px'\r\n }}\r\n >\r\n <legend style={{ color: customApp('color') }}>{translate(\"$__activeExternalUsers\", 1)}</legend>\r\n {parentUsers.map((u, i) => <React.Fragment key={u._id}>{renderUser(u)}</React.Fragment>)}\r\n </fieldset>\r\n } */}\r\n <fieldset\r\n style={{\r\n // position: \"relative\",\r\n // padding: 7,\r\n // border: \"solid 1px rgba(0,0,0,0.5)\",\r\n display: \"flex\"\r\n }}\r\n >\r\n <div style={{\r\n // backgroundColor: \"rgba(0,0,0,0.1)\",\r\n padding: 7,\r\n width: \"calc(50% - 4px)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n cursor: \"pointer\",\r\n backgroundColor: view !== 'users' ? \"rgba(0,0,0,0.07)\" : customApp(\"color\"),\r\n color: view !== 'users' ? \"gray\" : \"#FFFFFF\"\r\n }}>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n onClick={() => {\r\n setView(\"users\")\r\n }}\r\n >\r\n <Icon\r\n icon={\"supervised_user_circle\"}\r\n size={\"33px\"}\r\n color={view !== 'users' ? null : \"#FFFFFF\"}\r\n />\r\n {translate(\"$__showUsers\")}\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n padding: 7,\r\n marginLeft: 7,\r\n width: \"calc(50% - 4px)\",\r\n cursor: \"pointer\",\r\n backgroundColor: view !== 'users' ? customApp(\"color\") : \"rgba(0,0,0,0.07)\",\r\n color: view !== 'users' ? \"#FFFFFF\" : \"gray\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n\r\n }}\r\n onClick={() => {\r\n setView(\"teams\")\r\n }}\r\n >\r\n <Icon\r\n icon={\"group_work\"}\r\n size={\"33px\"}\r\n color={view !== 'users' ? \"#FFFFFF\" : null}\r\n\r\n />\r\n {translate(\"$__showTeams\")}\r\n </div>\r\n </div>\r\n </fieldset>\r\n {view === 'users' && unSelectedUsers && unSelectedUsers.length > 0 && !userEditing._id &&\r\n <fieldset\r\n style={{\r\n marginTop: '7px'\r\n }}\r\n >\r\n <legend style={{ color: customApp('color') }}>{translate(\"$__avaiableUsers\", 1)}</legend>\r\n <div>\r\n <CustomButton\r\n transparent\r\n title={translate(\"$__add\")}\r\n icon={\"person_add\"}\r\n text={translate(\"$__addAllUsers\")}\r\n size={\"20px\"}\r\n onClick={() => {\r\n addAllUsers(unSelectedUsers)\r\n }}\r\n />\r\n </div>\r\n {unSelectedUsers\r\n .filter(a => !searchValue || a.name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1)\r\n .sort((a, b) => {\r\n if (a.name.toLowerCase().trim() < b.name.toLowerCase().trim())\r\n return -1\r\n if (a.name.toLowerCase().trim() < b.name.toLowerCase().trim())\r\n return 1\r\n return 0\r\n }).map((u, i) => <React.Fragment key={u._id}>{renderUser(u, true)}</React.Fragment>)}\r\n </fieldset>\r\n }\r\n {view !== 'users' && unSelectedGroups && unSelectedGroups.length > 0 && !userEditing._id &&\r\n <fieldset\r\n style={{\r\n marginTop: '7px'\r\n }}\r\n >\r\n <legend style={{ color: customApp('color') }}>{translate(\"$__avaiableTeams\", 1)}</legend>\r\n <div>\r\n <CustomButton\r\n transparent\r\n title={translate(\"$__add\")}\r\n icon={\"person_add\"}\r\n text={translate(\"$__addAllTeams\")}\r\n size={\"20px\"}\r\n onClick={() => {\r\n addAllGroups(unSelectedGroups)\r\n }}\r\n />\r\n </div>\r\n {unSelectedGroups.filter(group =>\r\n (\r\n !searchValue\r\n || (\r\n searchValue\r\n && group.name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n )\r\n )\r\n &&\r\n (!card._groups\r\n || (card._groups && !card._groups[group.value])\r\n )\r\n ).sort((a, b) => {\r\n if (a.label.toLowerCase().trim() < b.label.toLowerCase().trim())\r\n return -1\r\n if (a.label.toLowerCase().trim() < b.label.toLowerCase().trim())\r\n return 1\r\n return 0\r\n }).map((u, i) => <div style={{ width: \"100%\", padding: 7 }} key={u._id}>\r\n {renderGroup(u, true)}\r\n </div>)\r\n }\r\n </fieldset>\r\n }\r\n {!search ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 15,\r\n top: 0,\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__search`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"search\"}\r\n onClick={() => { setSearch(true) }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store, props) => ({\r\n users: store.db.users,\r\n cardUsers: store.db.cards[store.sideModule.data._id]\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))\r\n","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst headerStyle = theme => ({\r\n btClose: {\r\n position: 'relative',\r\n zIndex: theme.zIndex.drawer + 1,\r\n right: '0',\r\n top: '-64px',\r\n backgroundColor: '#FFFFFF',\r\n display: 'flex',\r\n },\r\n image: {\r\n width: '100%',\r\n backgroundColor: 'rgb(0,88,0)',\r\n paddingTop: '45%'\r\n },\r\n data: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto',\r\n marginTop: '10px',\r\n padding: '10px',\r\n '& fieldset': {\r\n border: 'solid 1px rgba(0,0,0,0.1)',\r\n '& legend': {\r\n marginBottom: '0px',\r\n fontSize: '16px',\r\n color: customApp('color')\r\n }\r\n }\r\n },\r\n loader: {\r\n position: 'relative', width: '100%', height: '40px', textAlign: 'center',\r\n '& .MuiCircularProgress-root': {\r\n color: `${customApp('color')} !important`,\r\n },\r\n },\r\n preview: {\r\n listStyle: 'none',\r\n padding: '0px',\r\n '& li': {\r\n padding: '7px',\r\n backgroundColor: 'rgba(0,0,0,0.05)',\r\n marginBottom: '15px',\r\n boxShadow: '0 0 7px 3px rgba(0,0,0,0.1)',\r\n }\r\n },\r\n previewTitle: {\r\n position: 'relative',\r\n width: '100%',\r\n fontWeight: 'bold',\r\n marginBottom: '7px'\r\n },\r\n feedTitle: {\r\n position: 'relative', width: '100%', marginBottom: '7px', borderBottom: `solid 1px ${customApp('medium', 0.2)}`\r\n },\r\n feedContent: {\r\n position: 'relative', width: '100%'\r\n },\r\n feedFooter: {\r\n width: '100%',\r\n textAlign: 'right',\r\n height: '16px',\r\n borderTop: '1px solid rgba(0,0,0,0.05)',\r\n paddingTop: '3px'\r\n },\r\n feedDate: {\r\n position: 'relative',\r\n left: '0px',\r\n fontSize: '12px',\r\n float: 'left'\r\n },\r\n feedLink: {\r\n position: 'relative',\r\n left: '0px',\r\n fontSize: '12px',\r\n float: 'right'\r\n },\r\n switch: {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n color: customApp('medium')\r\n }\r\n\r\n});\r\n\r\nexport default headerStyle;\r\n","//REDUX\r\nimport reduxStore from \"store\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api\"\r\nimport apims from \"apims\"\r\n\r\nconst saveFeed = async (props) => {\r\n let newData = reduxStore.getState().sideModule.data\r\n\r\n if (newData.status)\r\n delete newData.status\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n try {\r\n const response = await api.post('feed/save', {\r\n ...newData,\r\n feed: JSON.stringify(newData.feed),\r\n _parent: hashs[0] || null,\r\n })\r\n if (response) {\r\n if (!newData._id)\r\n newData._id = response.data._id\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: response.data._id,\r\n data: {\r\n ...newData,\r\n }\r\n })\r\n console.log(response)\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n feeds: {\r\n ...reduxStore.getState().db.feeds,\r\n [newData._id]: {\r\n ...newData,\r\n ...reduxStore.getState().db.feeds && reduxStore.getState().db.feeds[newData._id] ? reduxStore.getState().db.feeds[newData._id] : {},\r\n _parent: {\r\n ...reduxStore.getState().db.feeds && reduxStore.getState().db.feeds[newData._id] && reduxStore.getState().db.feeds[newData._id]._parent ? reduxStore.getState().db.feeds[newData._id]._parent : {},\r\n [hashs[0] || null]: {\r\n _id: response.data._id,\r\n idRel: response.data.idRel\r\n }\r\n }\r\n }\r\n },\r\n })\r\n return true\r\n }\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nconst dbUpdateFeed = (props, data) => {\r\n let newData = {\r\n [data._id]: {\r\n ...reduxStore.getState().db.feeds && reduxStore.getState().db.feeds[data._id] && reduxStore.getState().db.feeds[data._id].feed ? { feed: reduxStore.getState().db.feeds[data._id].feed } : {},\r\n ...data.data,\r\n _parent: {\r\n ...reduxStore.getState().db.feeds && reduxStore.getState().db.feeds[data._id] && reduxStore.getState().db.feeds[data._id]._parent ? reduxStore.getState().db.feeds[data._id]._parent : {},\r\n [data._parent]: {\r\n ...data.rel\r\n }\r\n },\r\n }\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n feeds: {\r\n ...reduxStore.getState().db.feeds,\r\n ...newData\r\n }\r\n });\r\n}\r\n\r\nconst loadFeeds = async (props, options = {}) => {\r\n const load = new Promise(async (resolve, reject) => {\r\n try {\r\n let feeds = await apims.post(`/Feed_List_V2`, options)\r\n if (feeds && feeds.data) {\r\n let mountFeeds = {}\r\n feeds.data.forEach(f => {\r\n let parents = {}\r\n if (f.parents && f.parents.length > 0)\r\n f.parents.forEach(p => {\r\n parents = {\r\n ...parents,\r\n [p._id]: {\r\n idRel: p.idRel,\r\n ...p.i\r\n }\r\n }\r\n })\r\n mountFeeds = {\r\n ...mountFeeds,\r\n [f.data._id]: {\r\n ...f.data,\r\n ...f.hide ? { hide: true } : {},\r\n feed: [{ ...f.cover }],\r\n _parent: parents,\r\n ...f.tags && f.tags.filter(a => a.value).length > 0 ? { _tags: f.tags } : {},\r\n }\r\n }\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n feeds: {\r\n ...reduxStore.getState().db.feeds,\r\n ...mountFeeds,\r\n }\r\n });\r\n resolve(true)\r\n }\r\n\r\n } catch (e) {\r\n console.group('loadFeeds::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n resolve(true)\r\n }\r\n })\r\n const result = await load\r\n return result\r\n}\r\n\r\nexport {\r\n saveFeed,\r\n dbUpdateFeed,\r\n loadFeeds\r\n}","//CORE\r\nimport React from 'react'\r\nimport Moment from \"moment-timezone\"\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 Autocomplete from \"components/AutoComplete\"\r\nimport CircularProgress from \"components/Progress/circular\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\nimport Switch from \"components/Switch\"\r\nimport TagsInput from \"components/Tags/input\"\r\nimport TextField from \"components/TextField\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Feed.js\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\nimport {\r\n getAppAccess,\r\n appAlert,\r\n customApp,\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport {\r\n getUserAccess,\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n saveFeed\r\n} from \"functions/feeds\"\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nfunction Component(props) {\r\n const classes = useStyles()\r\n const { sideModule, session, db } = reduxStore.getState()\r\n const data = sideModule.data || {}\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [feedLoading, setFeedLoading] = React.useState(false)\r\n\r\n const url = React.useRef()\r\n\r\n let CardAccess = 0\r\n let AppAccess = getAppAccess()\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n if (hashs[0] && hashs[0].length === 36)\r\n CardAccess = getUserAccess(hashs[0])\r\n\r\n\r\n const changeData = (d) => {\r\n if (data.name === '' || (d.name === 'name' && d.value === '')) {\r\n setReqSave(false)\r\n } else if (data._lock && ((d.value && !sideModule.data[d.name]) || (sideModule.data[d.name] && sideModule.data[d.name] !== d.value))) {\r\n setReqSave(true)\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n [d.name]: d.value,\r\n }\r\n })\r\n }\r\n\r\n const close = (force = false) => {\r\n if (reqSave && !force) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n\r\n const save = async (cl) => {\r\n setReqSave(false)\r\n if (!sideModule.data.name) {\r\n appAlert({\r\n message: translate('$__fillName', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n } else {\r\n const reqSave = await saveFeed(props, true)\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__feedSigned', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n if (cl)\r\n close(true)\r\n } else {\r\n appAlert({\r\n message: translate('$__AnErrorHasOccurredPleaseTryAgain', 1),\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n setReqSave(true)\r\n }\r\n }\r\n }\r\n\r\n const feedValidate = async (str) => {\r\n if (str)\r\n if (str.indexOf('http') === -1) {\r\n appAlert({\r\n message: `${translate('$__invalidUrl', 1)}: ${translate('$__urlMustContainHttps', 1)}`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n url: '',\r\n }\r\n })\r\n } else {\r\n var pattern = new RegExp('^(https?:\\\\/\\\\/)?' + // protocol\r\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\r\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\r\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\r\n '(\\\\?[&a-z\\\\d%_.~+=-]*)?' + // query string\r\n '(\\\\@[a-z\\\\d%_.~+=-]*)?' + // query string\r\n '(\\\\#[-a-z\\\\d_]*)?$', 'i') // fragment locator\r\n\r\n if (!!pattern.test(str)) {\r\n setFeedLoading(true)\r\n let urlToVerify = str\r\n if (urlToVerify[str.length - 1] === '/')\r\n urlToVerify = urlToVerify.substring(0, str.length - 1)\r\n if (urlToVerify.indexOf(\"http://\") === '/')\r\n urlToVerify = urlToVerify.replace(\"http://\", \"https://\")\r\n\r\n if (sideModule.data.type === 'feed')\r\n try {\r\n const result = await api.post('/feed/exist', {\r\n url: str\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n _id: result.data.id,\r\n url: urlToVerify,\r\n _lock: true,\r\n feed: result.data.feed,\r\n name: result.data.title,\r\n customTitle: result.data.customTitle,\r\n customDescription: result.data.customDescription,\r\n }\r\n })\r\n if (result)\r\n setFeedLoading(false)\r\n if (result.data.title)\r\n setReqSave(true)\r\n } catch (e) {\r\n feedInsert(str)\r\n }\r\n if (sideModule.data.type === 'link')\r\n try {\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n const result = await api.post('/link/exist', {\r\n idRel: hashs[0],\r\n url: urlToVerify\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: 'new',\r\n activeModule: 'cardEdit',\r\n db: 'cards',\r\n data: {\r\n _id: 'new',\r\n type: 'link',\r\n name: result.data.title,\r\n description: result.data.contentSnippet,\r\n image: result.data.img,\r\n url: result.data.link,\r\n content: result.data.article,\r\n\r\n }\r\n })\r\n if (result)\r\n setFeedLoading(false)\r\n if (result.data.title)\r\n setReqSave(true)\r\n } catch (e) {\r\n appAlert({\r\n message: `${translate('$__invalidFeedUrl', 1)}: ${translate('$__pleaseVerifyTheFeedAddress', 1)}`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n }\r\n return\r\n }\r\n return false\r\n }\r\n\r\n const feedInsert = async (str) => {\r\n try {\r\n const result = await api.post('/feed/request/', {\r\n url: str\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n _id: result.data.id,\r\n url: str,\r\n _lock: true,\r\n feed: result.data.feed,\r\n name: result.data.title,\r\n customTitle: result.data.customTitle,\r\n customDescription: result.data.customDescription,\r\n }\r\n })\r\n if (result)\r\n setFeedLoading(false)\r\n if (result.data.title)\r\n setReqSave(true)\r\n } catch (e) {\r\n appAlert({\r\n message: `${translate('$__invalidFeedUrl', 1)}: ${translate('$__pleaseVerifyTheFeedAddress', 1)}`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n }\r\n\r\n let permission = props.permission ? props.permission : false\r\n if (!permission && parseInt(CardAccess) >= 3)\r\n permission = true\r\n\r\n return (\r\n <div>\r\n <div className={classes.btClose}>\r\n <div\r\n style={{\r\n position: 'fixed',\r\n display: 'inline-flex',\r\n paddingLeft: '10px',\r\n top: '7px',\r\n right: 0,\r\n backgroundColor: \"#FFFFFF\"\r\n }}>\r\n {(permission && reqSave) &&\r\n <SideModuleCloseAndSave\r\n save={reqSave ? () => {\r\n // setSaveLoader(true)\r\n save()\r\n } : null}\r\n saveClose={reqSave ? () => {\r\n // setSaveLoader(true)\r\n save(true)\r\n } : null}\r\n close={() => {\r\n if (props.onClose)\r\n props.onClose()\r\n }}\r\n />\r\n }\r\n <CustomButton\r\n title={translate(`$__close`, 1)}\r\n color='lightgrey'\r\n icon={'cancel'}\r\n onClick={() => {\r\n if (props.onClose)\r\n props.onClose()\r\n }}\r\n size={'25px'}\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.data}>\r\n {!data._lock ?\r\n <TextField\r\n label={translate('$__feedUrl', '*')}\r\n variant={customApp('fieldVariant')}\r\n ref={url}\r\n name=\"url\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='rss_feed' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n onBlur: (d) => {\r\n feedValidate(d.target.value)\r\n }\r\n }}\r\n value={data && data.url ? data.url : ''}\r\n placeholder={'http://www.domain.xpto/rss...'}\r\n disabled={data._lock ? true : false}\r\n />\r\n :\r\n <React.Fragment>\r\n <TextField\r\n label={translate('$__titleOfFeed', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='view_headline' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.name ? data.name : ''}\r\n placeholder={translate('$__titleOfFeed_placeholder')}\r\n {...(\r\n (session\r\n && session.account !== \"7806912b-4c7d-4f4f-b9e0-b93fc8f08776\"\r\n )\r\n ||\r\n (\r\n data && data.name\r\n )\r\n ) ? { disabled: true } : {}}\r\n />\r\n <TextField\r\n label={translate('$__customTitle', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'customTitle'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='title' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.customTitle ? data.customTitle : ''}\r\n placeholder={translate('$__customTitle', 1)}\r\n />\r\n {session && session.account !== \"7806912b-4c7d-4f4f-b9e0-b93fc8f08776\" ?\r\n <React.Fragment>\r\n <TextField\r\n label={translate('$__nameOfFontData', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'font'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='copyright' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.font ? data.font : ''}\r\n placeholder={translate('$__nameOfFontData', 1)}\r\n />\r\n <TextField\r\n label={translate('$__descriptionOfRss', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'description'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='subtitles' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.description ? data.description : ''}\r\n placeholder={translate('$__descriptionOfRss', 1)}\r\n />\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <TextField\r\n label={translate('$__customDescription', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'customDescription'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='subtitles' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.customDescription ? data.customDescription : ''}\r\n placeholder={translate('$__customDescription', 1)}\r\n />\r\n <TextField\r\n label={translate('$__url', '*')}\r\n variant={customApp('fieldVariant')}\r\n ref={url}\r\n name=\"url\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='http' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n onBlur: (d) => {\r\n feedValidate(d.target.value)\r\n }\r\n }}\r\n value={data && data.url ? data.url : ''}\r\n placeholder={'http://www.domain.xpto/rss...'}\r\n disabled={data._lock ? true : false}\r\n />\r\n {(AppAccess && AppAccess.feed && (\r\n AppAccess.feedAdmin\r\n || AppAccess.feedModerate\r\n )) &&\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__tags\", 1)}</legend>\r\n <TagsInput\r\n data={{\r\n values: data._tags ? data._tags : [],\r\n }}\r\n callBack={(v) => {\r\n changeData({ name: \"_tags\", value: v })\r\n }}\r\n />\r\n </fieldset>\r\n }\r\n {AppAccess && AppAccess.feed && AppAccess.feedAdmin ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.plans}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"plans\"\r\n disableClearable\r\n value={\r\n data\r\n && data.plans\r\n && db.plans\r\n ? db.plans.filter(a =>\r\n String(a.value) === String(data.plans)\r\n )[0]\r\n : db.plans[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__avaiablefromplan\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.plans\r\n && db.plans\r\n ? db.plans.filter(a =>\r\n String(a.value) === String(data.plans)\r\n )[0]\r\n : db.plans[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (permission)\r\n changeData({ name: \"plans\", value: v[\"value\"] })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data.private ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'private',\r\n value: data.private ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__private', 1)}\r\n </div>\r\n\r\n </React.Fragment>\r\n }\r\n\r\n {!data._lock && !feedLoading &&\r\n <IconButton text={translate(sideModule.data.type === 'link' ? \"$__validUrl\" : \"$__validFeedUrl\", 1)} icon=\"check\" onClick={() => feedValidate(url.current.value)} />\r\n }\r\n {feedLoading &&\r\n <div className={classes.loader}>\r\n <CircularProgress />\r\n </div>\r\n }\r\n {data.feed && data.feed.length > 0 &&\r\n <ul className={classes.preview}>\r\n <div className={classes.previewTitle}>{translate('$__preview', 1)}</div>\r\n {data.feed.map((f, i) => (\r\n <li\r\n key={i}\r\n >\r\n {f && f.title &&\r\n <div\r\n dangerouslySetInnerHTML={{ __html: f.title }}\r\n className={classes.feedTitle}\r\n />\r\n }\r\n <div\r\n dangerouslySetInnerHTML={{ __html: f.contentSnippet }}\r\n className={classes.feedContent}\r\n />\r\n <div className={classes.feedFooter}>\r\n <div className={classes.feedDate}>{Moment(f.pubDate).format('DD/MM/YYYY HH:MM')}</div>\r\n <div className={classes.feedLink}>\r\n <a href={f.link} target=\"_blank\" rel=\"noopener noreferrer\">{translate('$__openLink', '*')}</a>\r\n </div>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)","//CORE\r\nimport React from 'react'\r\nimport Moment from \"moment-timezone\"\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 CircularProgress from \"components/Progress/circular\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Feed.js\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\nimport { translate, customApp, appAlert } from \"functions/\"\r\nimport {\r\n getUserAccess,\r\n} from \"functions/cards\"\r\nimport { saveFeed } from \"functions/feeds\"\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nfunction Component(props) {\r\n const classes = useStyles()\r\n const { sideModule } = reduxStore.getState()\r\n const data = sideModule.data || {}\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [feedLoading, setFeedLoading] = React.useState(false)\r\n\r\n const url = React.useRef()\r\n\r\n let CardAccess = 0\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n if (hashs[0] && hashs[0].length === 36)\r\n CardAccess = getUserAccess(hashs[0])\r\n\r\n\r\n const changeData = (d) => {\r\n if (data.name === '' || (d.name === 'name' && d.value === '')) {\r\n setReqSave(false)\r\n } else if (data._lock && ((d.value && !sideModule.data[d.name]) || (sideModule.data[d.name] && sideModule.data[d.name] !== d.value))) {\r\n setReqSave(true)\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n [d.name]: d.value,\r\n }\r\n })\r\n }\r\n\r\n const close = (force = false) => {\r\n if (reqSave && !force) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n }\r\n\r\n const save = async (cl) => {\r\n setReqSave(false)\r\n if (!sideModule.data.name) {\r\n appAlert({\r\n message: translate('$__fillName', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n } else {\r\n const reqSave = await saveFeed(props, true)\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__feedSigned', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n if (cl)\r\n close(true)\r\n } else {\r\n appAlert({\r\n message: translate('$__AnErrorHasOccurredPleaseTryAgain', 1),\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n setReqSave(true)\r\n }\r\n }\r\n }\r\n\r\n const urlValidate = async (lk) => {\r\n let str = lk.trim()\r\n if (str)\r\n if (str.indexOf('http') === -1) {\r\n appAlert({\r\n message: `${translate('$__invalidUrl', 1)}: ${translate('$__urlMustContainHttps', 1)}`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n url: '',\r\n }\r\n })\r\n } else {\r\n var pattern = new RegExp('^(https?:\\\\/\\\\/)?' + // protocol\r\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\r\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\r\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\r\n '(\\\\?[&a-z\\\\d%_.~+=-]*)?' + // query string\r\n '(\\\\#[-a-z\\\\d_]*)?$', 'i') // fragment locator\r\n\r\n if (!!pattern.test(str)) {\r\n setFeedLoading(true)\r\n try {\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n const result = await api.post('/link/exist', {\r\n idRel: hashs[0],\r\n url: str\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: 'new',\r\n activeModule: 'cardEdit',\r\n db: 'cards',\r\n data: {\r\n _id: 'new',\r\n type: 'link',\r\n name: result.data.title,\r\n description: result.data.contentSnippet,\r\n image: result.data.img,\r\n url: result.data.link,\r\n content: result.data.article,\r\n\r\n }\r\n })\r\n if (result)\r\n setFeedLoading(false)\r\n if (result.data.title)\r\n setReqSave(true)\r\n } catch (e) {\r\n appAlert({\r\n message: `${translate('$__invalidFeedUrl', 1)}: ${translate('$__pleaseVerifyTheFeedAddress', 1)}`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n } else {\r\n appAlert({\r\n message: `${translate('$__invalidUrl', 1)}: ${translate('$__pleaseVerifyTheUrl', 1)}`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n data: {\r\n ...sideModule.data,\r\n url: '',\r\n }\r\n })\r\n }\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n let permission = props.permission ? props.permission : false\r\n if (!permission && parseInt(CardAccess) >= 3)\r\n permission = true\r\n\r\n return (\r\n <div>\r\n <div className={classes.btClose}>\r\n <div\r\n style={{\r\n position: 'fixed',\r\n display: 'inline-flex',\r\n paddingLeft: '10px',\r\n top: '7px',\r\n right: 0,\r\n backgroundColor: \"#FFFFFF\"\r\n }}>\r\n {(permission && reqSave) &&\r\n <React.Fragment>\r\n <CustomButton\r\n title={translate(`$__save`, '*')}\r\n color={customApp('color')}\r\n icon={'save'}\r\n onClick={() => { save() }}\r\n size={'25px'}\r\n />\r\n <CustomButton\r\n title={translate(`$__saveAndClose`, 1)}\r\n color='green'\r\n icon={'playlist_add_check'}\r\n onClick={() => { save(true) }}\r\n size={'25px'}\r\n />\r\n </React.Fragment>\r\n }\r\n <CustomButton\r\n title={translate(`$__close`, 1)}\r\n color='lightgrey'\r\n icon={'cancel'}\r\n onClick={() => {\r\n if (props.onClose)\r\n props.onClose()\r\n }}\r\n size={'25px'}\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.data}>\r\n {data._lock &&\r\n <React.Fragment>\r\n <TextField\r\n label={translate('$__titleOfUrl', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='view_headline' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.name ? data.name : ''}\r\n placeholder={translate('$__titleOfUrl_placeholder')}\r\n disabled\r\n />\r\n <TextField\r\n label={translate('$__customTitle', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'customTitle'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='title' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.customTitle ? data.customTitle : ''}\r\n placeholder={translate('$__customTitle', 1)}\r\n />\r\n <TextField\r\n label={translate('$__nameOfFontData', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'font'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='copyright' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.font ? data.font : ''}\r\n placeholder={translate('$__nameOfFontData', 1)}\r\n />\r\n <TextField\r\n label={translate('$__descriptionOfUrl', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'description'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='subtitles' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.description ? data.description : ''}\r\n placeholder={translate('$__descriptionOfUrl', 1)}\r\n />\r\n <TextField\r\n label={translate('$__customDescription', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'customDescription'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='subtitles' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n }}\r\n value={data && data.customDescription ? data.customDescription : ''}\r\n placeholder={translate('$__customDescription', 1)}\r\n />\r\n <div className={classes.switch}>\r\n <Switch\r\n checked={data.private ? true : false}\r\n onChange={(d) => {\r\n changeData({\r\n name: 'private',\r\n value: data.private ? false : true\r\n })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate('$__private', 1)}\r\n </div>\r\n </React.Fragment>\r\n }\r\n <TextField\r\n label={translate('$__url', '*')}\r\n variant={customApp('fieldVariant')}\r\n ref={url}\r\n name=\"url\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='http' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n changeData(d.target)\r\n },\r\n onBlur: (d) => {\r\n urlValidate(d.target.value)\r\n }\r\n }}\r\n value={data && data.url ? data.url : ''}\r\n placeholder={'http://www.domain.com/'}\r\n disabled={data._lock ? true : false}\r\n />\r\n {!data._lock && !feedLoading &&\r\n <IconButton text={translate(\"$__validUrl\", 1)} icon=\"check\" onClick={() => urlValidate(url.current.value)} />\r\n }\r\n {feedLoading &&\r\n <div className={classes.loader}>\r\n <CircularProgress />\r\n </div>\r\n }\r\n {data.feed && data.feed.length > 0 &&\r\n <ul className={classes.preview}>\r\n <div className={classes.previewTitle}>{translate('$__preview', 1)}</div>\r\n {data.feed.map((f, i) => (\r\n <li\r\n key={i}\r\n >\r\n {f && f.title &&\r\n <div\r\n dangerouslySetInnerHTML={{ __html: f.title }}\r\n className={classes.feedTitle}\r\n />\r\n }\r\n <div\r\n dangerouslySetInnerHTML={{ __html: f.contentSnippet }}\r\n className={classes.feedContent}\r\n />\r\n <div className={classes.feedFooter}>\r\n <div className={classes.feedDate}>{Moment(f.pubDate).format('DD/MM/YYYY HH:MM')}</div>\r\n <div className={classes.feedLink}>\r\n <a href={f.link} target=\"_blank\" rel=\"noopener noreferrer\">{translate('$__openLink', '*')}</a>\r\n </div>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\nimport {\r\n connect\r\n} from \"react-redux\"\r\nimport {\r\n bindActionCreators\r\n} from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store/\"\r\n\r\n//COMPONENTS\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport SideModuleCloseAndSave from \"components/SideModule/closeAndSave\"\r\n\r\n//@MATERIAL\r\nimport {\r\n withStyles\r\n} from \"@material-ui/core/styles\"\r\nimport styles from \"./sideModule.css.js\"\r\n\r\n//IMPORT GENERICAL MODULES\r\nimport Timeline from \"componentsV3/Timeline\"\r\n\r\n//IMPORT MODULES TO USER\r\nimport EditUser from \"components/User/edit\"\r\nimport UserAccess from \"components/User/access\"\r\nimport TwoFactor from \"components/User/TwoFactor\"\r\nimport UserSettings from \"components/User/Settings\"\r\nimport AccountSettings from \"components/Account/Settings\"\r\nimport UserMobile from \"components/User/Mobile\"\r\nimport MenuButton from \"./MenuButton.jsx\"\r\n\r\n//IMPORT MODULES TO CARDS\r\nimport CardDelete from \"components/Card/Delete\"\r\nimport CardEdit from \"components/Card/edit\"\r\nimport CardKPI from \"components/Card/kpi\"\r\nimport CardSettings from \"components/Card/settings\"\r\nimport Catenation from \"components/Catenation\"\r\nimport Checklist from \"components/Checklist\"\r\nimport ColumnEdit from \"components/Columns/edit\"\r\nimport ColumnSettings from \"components/Columns/settings\"\r\nimport Files from \"components/Files/list\"\r\nimport Icon from \"components/Icon\"\r\nimport Recurrence from \"components/Recurrence/list\"\r\nimport SendTo from \"components/SendTo/\"\r\nimport TimerLog from \"components/Timer/log\"\r\nimport UserDelete from \"components/User/Delete\"\r\nimport Users from \"components/User/in\"\r\nimport AnswerForm from \"componentsV3/Forms/AnswerForm\"\r\n\r\n\r\n//IMPORT MODULES TO FEED\r\nimport FeedEdit from \"components/Feed/edit\"\r\nimport LinkEdit from \"components/Link/edit\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n appAlert,\r\n customApp,\r\n getAppAccess,\r\n getDate,\r\n translate,\r\n textColor\r\n} from \"functions/\"\r\n\r\nimport {\r\n getUserAccess,\r\n planMyAccountVerify,\r\n updateCardData,\r\n verifyTemplate,\r\n} from \"functions/cards\"\r\n\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\nfunction Component(props) {\r\n const { sideModule, db, session } = reduxStore.getState()\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [mounted, setMounted] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n if (sideModule.id)\r\n if (!mounted && sideModule.activeModule === 'timeline') {\r\n setMounted(true)\r\n setReqSave(false)\r\n }\r\n\r\n return () => { }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [sideModule])\r\n\r\n if (!sideModule.data || !sideModule.data.type || db.dataType.filter(a => a.name === sideModule.data.type).length === 0)\r\n return null\r\n\r\n\r\n if (sideModule && !sideModule.id)\r\n return null\r\n\r\n\r\n const { classes } = props\r\n const { data } = sideModule\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let type = db.cards[data._id] ? 'cards' : 'users'\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(sideModule.id)\r\n\r\n let permission = false\r\n\r\n if (data && data._planId && (!db.cards[data._planId] || !planMyAccountVerify(data._planId)))\r\n permission = false\r\n\r\n permission = (\r\n sideModule &&\r\n (\r\n sideModule.id === 'new'\r\n ||\r\n (\r\n (\r\n (\r\n data.type === 'user'\r\n || data.type === 'client'\r\n )\r\n &&\r\n AppAccess\r\n &&\r\n (AppAccess.user\r\n &&\r\n (\r\n AppAccess.userAdmin\r\n || AppAccess.userModerate\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n (\r\n data.type !== 'user'\r\n && data.type !== 'client'\r\n && data.type !== 'chatGroup'\r\n )\r\n &&\r\n (\r\n AppAccess\r\n &&\r\n (AppAccess.owner\r\n ||\r\n (\r\n AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n (data.type === 'chatGroup')\r\n && (\r\n !data.client\r\n ||\r\n (\r\n data.client\r\n && db.users[data.client]\r\n )\r\n )\r\n && (\r\n AppAccess\r\n &&\r\n (AppAccess.owner\r\n ||\r\n (\r\n AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n )\r\n )\r\n )\r\n )\r\n ) ? true : false\r\n\r\n\r\n\r\n if (!permission && parseInt(CardAccess) >= 4)\r\n permission = true\r\n\r\n if (!permission && planMyAccountVerify(data._planId) && AppAccess && AppAccess.admin && AppAccess.plan && (AppAccess.planAdmin || AppAccess.planModerate))\r\n permission = true\r\n\r\n const formAsks = data.formId && reduxStore.getState().forms[data.formId] ? JSON.parse(reduxStore.getState().forms[data.formId].elements) : []\r\n let formAnswers = {}\r\n formAsks.forEach(x => {\r\n if (data[x.id])\r\n formAnswers = {\r\n ...formAnswers,\r\n [x.id]: data[x.id]\r\n }\r\n })\r\n const MOD = [\r\n // {\r\n // name: 'resume',\r\n // icon: 'blur_on',\r\n // title: '$__resume',\r\n // resume: true,\r\n // reqId: true,\r\n // module: CardResume,\r\n // closeOption: true,\r\n // permission: 2,\r\n // template: true,\r\n // },\r\n\r\n //CARD\r\n {\r\n name: 'cardEdit',\r\n icon: 'subject',\r\n title: '$__edition',\r\n reqId: false,\r\n module: CardEdit,\r\n closeOption: false,\r\n permission: 0,\r\n buttonsCount: 3,\r\n template: true,\r\n },\r\n ...(data.formId && reduxStore.getState().forms[data.formId] && Object.keys(reduxStore.getState().forms[data.formId]).length > 0) ? [{\r\n name: 'forms',\r\n icon: 'ballot',\r\n title: '$__forms',\r\n reqId: true,\r\n module: AnswerForm,\r\n permission: 0,\r\n closeOption: true,\r\n // hide: true,\r\n template: true,\r\n props: {\r\n formId: data.formId,\r\n values: formAnswers,\r\n disabled: true,\r\n style: { padding: 15 }\r\n },\r\n }] : [],\r\n {\r\n name: 'feedEdit',\r\n icon: 'rss_feed',\r\n title: '$__feedEdit',\r\n reqId: false,\r\n module: FeedEdit,\r\n closeOption: false,\r\n permission: 3,\r\n template: true,\r\n },\r\n {\r\n name: 'userEdit',\r\n icon: 'notes',\r\n title: '$__userEdit',\r\n reqId: false,\r\n module: EditUser,\r\n closeOption: false,\r\n permission: 0,\r\n },\r\n {\r\n name: 'checklist',\r\n icon: 'checklist',\r\n title: '$__list',\r\n reqId: true,\r\n module: Checklist,\r\n closeOption: true,\r\n permission: 1,\r\n props: {\r\n nodeId: sideModule.data._id,\r\n db: sideModule.db ? sideModule.db : 'cards',\r\n permission: permission,\r\n showProgress: true,\r\n },\r\n template: true,\r\n },\r\n ...(\r\n data.type.indexOf(\"guideline\") > -1\r\n || data.type.indexOf(\"objective\") > -1\r\n || data.type.indexOf(\"goal\") > -1\r\n ) ? [{\r\n name: 'catenation',\r\n icon: 'account_tree',\r\n title: '$__catenation',\r\n reqId: true,\r\n module: Catenation,\r\n closeOption: true,\r\n permission: 2,\r\n props: {\r\n nodeId: sideModule.data._id,\r\n db: sideModule.db ? sideModule.db : 'cards',\r\n },\r\n template: true,\r\n }] : [],\r\n {\r\n name: 'recurrence',\r\n icon: 'update',\r\n title: '$__recurrence',\r\n reqId: true,\r\n module: Recurrence,\r\n closeOption: true,\r\n permission: 3,\r\n props: {\r\n nodeId: sideModule.data._id,\r\n db: sideModule.db ? sideModule.db : 'cards',\r\n },\r\n template: true,\r\n },\r\n //USER\r\n // {\r\n // name: 'resumeUser',\r\n // icon: 'blur_on',\r\n // title: 'resume',\r\n // resume: true,\r\n // reqId: true,\r\n // module: ResumeUser,\r\n // closeOption: true,\r\n // permission: 2,\r\n // },\r\n\r\n\r\n //FEED\r\n // {\r\n // name: 'resumeFeed',\r\n // icon: 'blur_on',\r\n // title: 'resume',\r\n // resume: true,\r\n // reqId: true,\r\n // module: ResumeFeed,\r\n // closeOption: true,\r\n // permission: 3,\r\n // },\r\n\r\n {\r\n name: 'link',\r\n icon: 'link',\r\n title: '$__link',\r\n reqId: false,\r\n module: LinkEdit,\r\n permission: 3,\r\n closeOption: false,\r\n hide: true,\r\n template: true,\r\n },\r\n\r\n {\r\n name: 'timeline',\r\n icon: 'timeline',\r\n title: '$__timeline',\r\n reqId: true,\r\n module: Timeline,\r\n props: {\r\n type: 'comment',\r\n nodeId: sideModule.id,\r\n db: 'cards',\r\n loadTimeline: true,\r\n disabledSend: String(CardAccess) === \"0\" ? true : false\r\n },\r\n closeOption: true,\r\n permission: 0,\r\n count: 'comment'\r\n },\r\n {\r\n name: 'access',\r\n icon: session._id === data._id ? 'vpn_key' : 'security',\r\n title: session._id === data._id ? '$__changePassword' : '$__access',\r\n reqId: true,\r\n module: UserAccess,\r\n closeOption: false,\r\n permission: session._id === data._id ? 0 : 4,\r\n // ownerLock: true,\r\n },\r\n {\r\n name: 'users',\r\n icon: 'supervised_user_circle',\r\n title: '$__usersAndDepartments',\r\n reqId: true,\r\n module: Users,\r\n closeOption: true,\r\n permission: 3,\r\n template: true,\r\n },\r\n ...(\r\n CardAccess >= 4\r\n ||\r\n (\r\n CardAccess && CardAccess < 4 && data.kpi_type && data.kpi_type !== \"task\"\r\n )\r\n ||\r\n (\r\n AppAccess && AppAccess.plan && AppAccess.planAdmin\r\n )\r\n ) ?\r\n [{\r\n name: 'kpi',\r\n icon: 'analytics',\r\n title: '$__kpi',\r\n reqId: true,\r\n module: CardKPI,\r\n closeOption: false,\r\n permission: 3,\r\n count: 'kpi'\r\n }] : [],\r\n {\r\n name: 'timeLog',\r\n icon: 'timer',\r\n title: '$__timerLog',\r\n reqId: true,\r\n module: TimerLog,\r\n closeOption: true,\r\n permission: 1,\r\n count: 'timer',\r\n },\r\n {\r\n name: 'files',\r\n icon: 'folder',\r\n title: '$__files',\r\n reqId: true,\r\n module: Files,\r\n closeOption: true,\r\n permission: 3,\r\n props: {\r\n nodeId: sideModule.id,\r\n db: sideModule.db\r\n },\r\n },\r\n {\r\n name: 'log',\r\n icon: 'history',\r\n title: '$__log',\r\n reqId: true,\r\n module: Timeline,\r\n props: {\r\n type: 'log',\r\n nodeId: sideModule.id,\r\n db: 'cards',\r\n loadTimeline: true,\r\n noSearch: true,\r\n disabledSend: true\r\n },\r\n closeOption: true,\r\n permission: 0,\r\n count: 'log'\r\n },\r\n ...(session._id === data._id) ?\r\n [{\r\n name: 'twoFactor',\r\n icon: 'pin',\r\n title: '$__twoFactorAuthenticator',\r\n reqId: true,\r\n module: TwoFactor,\r\n closeOption: false,\r\n permission: session._id === data._id ? 0 : 6,\r\n ownerLock: true,\r\n },\r\n {\r\n name: 'mobile',\r\n icon: 'phone_iphone',\r\n title: '$__mobile',\r\n reqId: true,\r\n module: UserMobile,\r\n closeOption: false,\r\n permission: session._id === data._id ? 0 : 6,\r\n ownerLock: true,\r\n }] : [],\r\n\r\n\r\n //COLUMN\r\n {\r\n name: 'columnEdit',\r\n icon: 'tune',\r\n title: '$__edition',\r\n reqId: false,\r\n module: ColumnEdit,\r\n closeOption: false,\r\n permission: 0,\r\n buttonsCount: 3,\r\n template: true,\r\n },\r\n\r\n //USER\r\n\r\n ...type === 'users' ?\r\n [{\r\n name: 'delete',\r\n icon: 'delete_sweep',\r\n title: '$__delete',\r\n reqId: true,\r\n module: UserDelete,\r\n closeOption: true,\r\n }]\r\n : [{\r\n name: 'delete',\r\n icon: 'delete_sweep',\r\n title: '$__delete',\r\n reqId: true,\r\n module: CardDelete,\r\n closeOption: true,\r\n permission: 5,\r\n template: true,\r\n }],\r\n\r\n\r\n {\r\n name: 'sendTo',\r\n icon: 'share',\r\n title: '$__sendTo',\r\n reqId: true,\r\n module: SendTo,\r\n closeOption: true,\r\n permission: 3,\r\n template: true,\r\n },\r\n ...(data.type === 'client' || data.type === 'group' || data.type === 'unity') ? [{\r\n name: 'settings',\r\n icon: 'admin_panel_settings',\r\n title: '$__settings',\r\n reqId: true,\r\n module: AccountSettings,\r\n closeOption: false,\r\n permission: 1,\r\n template: true,\r\n }] : [],\r\n ...(data.type === 'user' && session._id === data._id) ? [{\r\n name: 'settings',\r\n icon: 'admin_panel_settings',\r\n title: '$__settings',\r\n reqId: true,\r\n module: UserSettings,\r\n closeOption: false,\r\n permission: 1,\r\n template: true,\r\n }] : [],\r\n ...data.type === 'step' && permission ? [{\r\n name: 'settings',\r\n icon: 'settings',\r\n title: '$__settings',\r\n reqId: true,\r\n module: ColumnSettings,\r\n closeOption: false,\r\n permission: 5,\r\n template: true,\r\n }] : [],\r\n ...data.type !== 'user' && data.type !== 'step' ? [{\r\n name: 'settings',\r\n icon: 'settings',\r\n title: '$__settings',\r\n reqId: true,\r\n module: CardSettings,\r\n closeOption: false,\r\n permission: 5,\r\n template: true,\r\n }] : []\r\n ]\r\n\r\n const module = MOD.filter(fil => fil.name === sideModule.activeModule)[0]\r\n\r\n\r\n if (!module || !module.module)\r\n return null\r\n\r\n const openModule = mod => {\r\n if (reqSave) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n setReqSave(false)\r\n sideModule.activeModule = mod\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule\r\n })\r\n }\r\n })\r\n } else {\r\n sideModule.activeModule = mod\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule\r\n })\r\n }\r\n }\r\n\r\n const close = (rq = false) => {\r\n if (reqSave || rq) {\r\n appAlert({\r\n message: translate('$__confirmCloseWithUnsavedData', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n setReqSave(false)\r\n }\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n setReqSave(false)\r\n }\r\n }\r\n\r\n\r\n\r\n const changeSideModuleWindow = () => {\r\n let windowType = false\r\n\r\n if (!windowType) {\r\n windowType = 'popup'\r\n } else if (windowType === 'popup') {\r\n windowType = 'expanded'\r\n } else if (windowType === 'expanded') {\r\n windowType = 'fullScreen'\r\n } else if (windowType === 'fullScreen') {\r\n windowType = null\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n sideModuleWindow: windowType\r\n });\r\n }\r\n\r\n const isTemplate = verifyTemplate(data._id)\r\n\r\n const { modules } = sideModule.data.type ? db.dataType.filter(a => a.name === \"forms\" || a.name === sideModule.data.type)[0] : []\r\n\r\n return (\r\n sideModule && sideModule.id ?\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 8000,\r\n backgroundColor: \"rgba(0,0,0,0.7)\",\r\n backdropFilter: \"blur(3px)\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n close()\r\n }\r\n }\r\n >\r\n <div\r\n className={session.sideModuleWindow && session.sideModuleWindow === 'popup'\r\n ? classes.modulePopup\r\n : session.sideModuleWindow && session.sideModuleWindow === 'expanded'\r\n ? classes.moduleExpanded\r\n : session.sideModuleWindow && session.sideModuleWindow === 'fullScreen'\r\n ? classes.moduleFullScreen\r\n : classes.module}\r\n id={`sideModule`}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <div\r\n className={classes.menu}\r\n style={{\r\n background: customApp('menuColor'), //customApp\r\n borderRight: `solid 3px ${customApp('color')}`, //customApp\r\n }}\r\n id={`sideModule_menu`}\r\n >\r\n <div className={classes.menuButtons_resume}>\r\n {/* {modules.indexOf('resumeUser') > -1 && sideModule.id.length === 36 &&\r\n <MenuButton icon='blur_on' module='resumeUser' title={translate('$__resume')} size='26px' \r\n openModule={(a) => {\r\n openModule(a)\r\n }}\r\n />\r\n } */}\r\n {/* {modules.indexOf('resume') > -1 && sideModule.id.length === 36 &&\r\n <MenuButton icon='blur_on' module='resume' title={translate('$__resume', 1)} size='26px' \r\n openModule={(a) => {\r\n openModule(a)\r\n }}\r\n />\r\n } */}\r\n </div>\r\n {MOD.filter((a, i) =>\r\n a\r\n &&\r\n (\r\n //TEMPLATE\r\n (\r\n (\r\n !isTemplate\r\n ||\r\n (\r\n sideModule.data\r\n && isTemplate\r\n && a.template\r\n )\r\n )\r\n &&\r\n (\r\n !a.reqId\r\n ||\r\n (\r\n a.reqId\r\n && sideModule.id.length === 36\r\n )\r\n )\r\n )\r\n //TEMPLATES\r\n //USERS\r\n && (\r\n (\r\n (data.type === 'user' || data.type === 'client')\r\n &&\r\n (\r\n (\r\n\r\n (\r\n AppAccess\r\n && AppAccess.user\r\n && (AppAccess.userAdmin\r\n || (\r\n AppAccess.userModerate\r\n && a.permission <= 4\r\n ) || (\r\n AppAccess.userEdit\r\n && a.permission <= 3\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n data._id === session._id\r\n && a.permission <= 3\r\n )\r\n )\r\n )\r\n\r\n )\r\n ||\r\n (\r\n (\r\n data.type !== 'user'\r\n && data.type !== 'client'\r\n && data.type !== 'account'\r\n && data.type !== 'unity'\r\n )\r\n &&\r\n (\r\n permission\r\n && (\r\n AppAccess\r\n && AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || (\r\n AppAccess.planModerate\r\n && a.permission <= 4\r\n )\r\n )\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n (\r\n data.type !== 'user'\r\n || data.type !== 'client'\r\n || data.type !== 'account'\r\n )\r\n && (\r\n String(CardAccess)\r\n && parseInt(CardAccess) >= parseInt(a.permission)\r\n )\r\n )\r\n )\r\n //USERS\r\n &&\r\n (\r\n (\r\n a.name === \"forms\"\r\n && data.formId\r\n )\r\n || (\r\n modules.indexOf(a.name) > -1\r\n )\r\n )\r\n )\r\n && (\r\n a.name !== 'recurrence'\r\n ||\r\n (\r\n a.name === 'recurrence'\r\n && (\r\n Object.keys(reduxStore.getState().db.cards)\r\n .filter(fil => {\r\n if (\r\n !reduxStore.getState().db.cards[fil].deleted\r\n && !reduxStore.getState().db.cards[fil].checklist\r\n && reduxStore.getState().db.cards[fil]._recurrenceId\r\n && reduxStore.getState().db.cards[fil]._recurrenceId === sideModule.data._id\r\n )\r\n return true\r\n return false\r\n }\r\n ).length > 0\r\n )\r\n )\r\n )\r\n )\r\n .filter(fil =>\r\n !sideModule.data._requireApproval\r\n || (\r\n sideModule.data._requireApproval\r\n && (\r\n fil.name === \"resume\"\r\n || fil.name === \"cardEdit\"\r\n || fil.name === \"timeline\"\r\n || fil.name === \"kpi\"\r\n || fil.name === \"log\"\r\n || fil.name === \"timer\"\r\n )\r\n )\r\n )\r\n .map((mod, i) => {\r\n return (\r\n <MenuButton\r\n key={i}\r\n icon={mod.icon}\r\n module={mod.name}\r\n title={translate(mod.title, 1)}\r\n count={mod.count ? mod.count : null}\r\n openModule={(a) => {\r\n openModule(a)\r\n }}\r\n />\r\n )\r\n // }\r\n })}\r\n {/* {modules.map((a, i) => {\r\n let permission = true\r\n if (data && data._planId && (!db.cards[data._planId] || !planMyAccountVerify(data._planId)))\r\n permission = false\r\n let mod = MOD.filter(fil => fil.name.trim() === a.trim() && !fil.resume && !fil.hide)[0]\r\n let render = false\r\n if (\r\n mod\r\n && (\r\n (\r\n mod.name === \"forms\"\r\n && data.formId\r\n )\r\n ||\r\n (\r\n (data.type === 'user' || data.type === 'client')\r\n &&\r\n (\r\n (\r\n\r\n (\r\n AppAccess\r\n && AppAccess.user\r\n && (AppAccess.userAdmin\r\n || (\r\n AppAccess.userModerate\r\n && mod.permission <= 4\r\n ) || (\r\n AppAccess.userEdit\r\n && mod.permission <= 3\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n data._id === session._id\r\n && mod.permission <= 3\r\n )\r\n )\r\n )\r\n\r\n )\r\n ||\r\n (\r\n (\r\n data.type !== 'user'\r\n && data.type !== 'client'\r\n && data.type !== 'account'\r\n && data.type !== 'unity'\r\n )\r\n &&\r\n (\r\n permission\r\n && (\r\n AppAccess\r\n && AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || (\r\n AppAccess.planModerate\r\n && mod.permission <= 4\r\n )\r\n )\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n (\r\n data.type !== 'user'\r\n || data.type !== 'client'\r\n || data.type !== 'account'\r\n )\r\n && (\r\n String(CardAccess)\r\n && parseInt(CardAccess) >= parseInt(mod.permission)\r\n )\r\n )\r\n )\r\n ) {\r\n if (mod.ownerLock\r\n && AppAccess\r\n && !AppAccess.owner\r\n && data._access\r\n && data._access.owner\r\n && session._id !== data._id\r\n ) {\r\n return null\r\n }\r\n if (\r\n (\r\n !isTemplate\r\n ||\r\n (\r\n sideModule.data\r\n && isTemplate\r\n && mod.template\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n mod\r\n && !mod.reqId\r\n )\r\n ||\r\n (\r\n mod\r\n &&\r\n (\r\n mod.reqId\r\n || !mod.reqId\r\n )\r\n &&\r\n sideModule.id.length === 36\r\n )\r\n )\r\n ) {\r\n if (mod.name === 'recurrence'\r\n && (\r\n Object.keys(reduxStore.getState().db.cards)\r\n .filter(fil => {\r\n if (\r\n !reduxStore.getState().db.cards[fil].deleted\r\n && !reduxStore.getState().db.cards[fil].checklist\r\n && reduxStore.getState().db.cards[fil]._recurrenceId\r\n && reduxStore.getState().db.cards[fil]._recurrenceId === sideModule.data._id\r\n )\r\n return true\r\n }\r\n ).length > 0\r\n )\r\n ) {\r\n return (\r\n <MenuButton\r\n key={i}\r\n icon={mod.icon}\r\n module={mod.name}\r\n title={translate(mod.title, 1)}\r\n count={mod.count ? mod.count : null}\r\n openModule={(a) => {\r\n openModule(a)\r\n }}\r\n />\r\n )\r\n } else if (mod.name !== 'recurrence') {\r\n return (\r\n <MenuButton\r\n key={i}\r\n icon={mod.icon}\r\n module={mod.name}\r\n title={translate(mod.title, 1)}\r\n count={mod.count ? mod.count : null}\r\n openModule={(a) => {\r\n openModule(a)\r\n }}\r\n />\r\n )\r\n }\r\n }\r\n }\r\n })} */}\r\n\r\n <div style={{\r\n position: 'absolute',\r\n bottom: '0px',\r\n width: '100%',\r\n height: '50px'\r\n }} onClick={() => {\r\n changeSideModuleWindow()\r\n }}></div>\r\n </div>\r\n <div\r\n id={`sideModule_header`}\r\n >\r\n <HeaderWithIcon\r\n title={(sideModule && sideModule.data && sideModule.data.name) || `${translate('$__create')} ${translate(`$__${sideModule.data.type}`)}`}\r\n icon={sideModule?.data?.icon || (sideModule && sideModule.data && sideModule.data.type && db.dataType.filter(a => a.name === sideModule.data.type)[0].icon) || \"view_comfy\"}\r\n style={{\r\n paddingLeft: '50px',\r\n width: `calc(100% - 0px)`,\r\n minHeight: '50px',\r\n marginTop: \"-4px\"\r\n }}\r\n color={customApp('menu')}\r\n {...permission && sideModule?.data?._id ? {\r\n editable: true,\r\n onChangeIcon: (ic) => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: sideModule.data._id }\r\n }, {\r\n icon: ic\r\n })\r\n }\r\n } : {}}\r\n />\r\n {module.closeOption &&\r\n <SideModuleCloseAndSave\r\n close={() => close()}\r\n />\r\n }\r\n </div>\r\n <div className={classes.content}>\r\n <ErrorBoundary>\r\n <module.module\r\n {...module.props}\r\n permission={permission}\r\n onClose={(a) => {\r\n close(a)\r\n }\r\n } reqSave={(a) => { setReqSave(a) }} />\r\n </ErrorBoundary>\r\n </div>\r\n <div\r\n className={classes.subTitle}\r\n id={`sideModule_subTitle`}\r\n style={{\r\n ...sideModule && sideModule.data && sideModule.data.private ? {\r\n background: \"gray\"\r\n } : {\r\n\r\n },\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }}\r\n >\r\n {translate(module.title.toLowerCase(), 1)}\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n color: textColor(customApp('color'), true)\r\n // marginBottom: 7\r\n }}\r\n >\r\n <div>{data._cardCode ? `#${data._cardCode} ` : ``}</div>\r\n {data.created_at ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n fontSize: 12,\r\n color: textColor(customApp('color'), true),\r\n textAlign: \"right\",\r\n marginLeft: 10\r\n }}>\r\n {translate(\"$__createdAt\")}: {getDate(data.created_at)}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n {sideModule && sideModule.data && sideModule.data.private ?\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n {translate(\"$__isPrivate\", \"*\")}<Icon icon={\"lock\"} color={\"#FFFFFF\"} size={20} style={{ marginLeft: 7 }} />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </ div >\r\n\r\n </div >\r\n : null\r\n )\r\n}\r\n\r\n\r\nconst mapStateToProps = (store) => (\r\n {\r\n sideModule: store.sideModule,\r\n }\r\n)\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))\r\n","import React from \"react\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n//@MATERIAL\r\nimport Badge from \"@material-ui/core/Badge\"\r\n\r\nimport { countUnRead } from \"functions/chat\"\r\n\r\nfunction CountIcon(props) {\r\n const count = countUnRead()\r\n document.title = `${count && count.total > 0 ? `(${count.total}) ` : ``}MACHEN`\r\n\r\n return (\r\n <React.Fragment>\r\n <Badge badgeContent={count && count.total ? count.total : 0} color=\"secondary\"\r\n overlap=\"rectangular\"\r\n >\r\n {props.children}\r\n </Badge>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n timeline: store.timeline\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CountIcon)","import {\r\n grayColor,\r\n roseColor,\r\n primaryColor,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n whiteColor,\r\n blackColor,\r\n twitterColor,\r\n facebookColor,\r\n googleColor,\r\n linkedinColor,\r\n pinterestColor,\r\n youtubeColor,\r\n tumblrColor,\r\n behanceColor,\r\n dribbbleColor,\r\n redditColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nimport { customApp } from \"functions/\";\r\n\r\nconst buttonStyle = {\r\n button: {\r\n minHeight: \"auto\",\r\n minWidth: \"auto\",\r\n backgroundColor: grayColor[0],\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.12)\",\r\n border: \"none\",\r\n borderRadius: \"3px\",\r\n position: \"relative\",\r\n padding: \"12px 30px\",\r\n margin: \".3125rem 1px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"400\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0\",\r\n willChange: \"box-shadow, transform\",\r\n transition:\r\n \"box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n lineHeight: \"1.42857143\",\r\n textAlign: \"center\",\r\n whiteSpace: \"nowrap\",\r\n verticalAlign: \"middle\",\r\n touchAction: \"manipulation\",\r\n cursor: \"pointer\",\r\n \"&:hover,&:focus\": {\r\n color: whiteColor,\r\n backgroundColor: grayColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.2)\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n top: \"0\",\r\n marginTop: \"-1em\",\r\n marginBottom: \"-1em\",\r\n fontSize: \"1.1rem\",\r\n marginRight: \"4px\",\r\n verticalAlign: \"middle\"\r\n },\r\n \"& svg\": {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n top: \"0\",\r\n width: \"18px\",\r\n height: \"18px\",\r\n marginRight: \"4px\",\r\n verticalAlign: \"middle\"\r\n },\r\n \"&$justIcon\": {\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n marginTop: \"0px\",\r\n position: \"absolute\",\r\n width: \"100%\",\r\n transform: \"none\",\r\n left: \"0px\",\r\n top: \"0px\",\r\n height: \"100%\",\r\n lineHeight: \"41px\",\r\n fontSize: \"20px\"\r\n }\r\n }\r\n },\r\n fullWidth: {\r\n width: \"100%\"\r\n },\r\n custom_color: {\r\n backgroundColor: customApp('color'),\r\n boxShadow:\r\n \"0 2px 2px 0 \" +\r\n customApp('color', 0.14) +\r\n \", 0 3px 1px -2px \" +\r\n customApp('color', 0.2) +\r\n \", 0 1px 5px 0 rgba(\" +\r\n customApp('color', 0.12),\r\n \"&:hover,&:focus\": {\r\n backgroundColor: customApp('color'),\r\n boxShadow:\r\n \"0 14px 26px -12px \" +\r\n customApp('color', 0.42) +\r\n \", 0 4px 23px 0px \" +\r\n customApp('color', 0.12) +\r\n \", 0 8px 10px -5px rgba(\" +\r\n customApp('color', 0.2)\r\n }\r\n },\r\n custom_menuColor: {\r\n backgroundColor: customApp('menu'),\r\n boxShadow:\r\n \"0 2px 2px 0 \" +\r\n customApp('menu', 0.14) +\r\n \", 0 3px 1px -2px \" +\r\n customApp('menu', 0.2) +\r\n \", 0 1px 5px 0 rgba(\" +\r\n customApp('menu', 0.12),\r\n \"&:hover,&:focus\": {\r\n backgroundColor: customApp('menu'),\r\n boxShadow:\r\n \"0 14px 26px -12px \" +\r\n customApp('menu', 0.42) +\r\n \", 0 4px 23px 0px \" +\r\n customApp('menu', 0.12) +\r\n \", 0 8px 10px -5px rgba(\" +\r\n customApp('menu', 0.2)\r\n }\r\n },\r\n custom_mediumColor: {\r\n backgroundColor: customApp('medium'),\r\n boxShadow:\r\n \"0 2px 2px 0 \" +\r\n customApp('medium', 0.14) +\r\n \", 0 3px 1px -2px \" +\r\n customApp('medium', 0.2) +\r\n \", 0 1px 5px 0 rgba(\" +\r\n customApp('medium', 0.12),\r\n \"&:hover,&:focus\": {\r\n backgroundColor: customApp('medium'),\r\n boxShadow:\r\n \"0 14px 26px -12px \" +\r\n customApp('medium', 0.42) +\r\n \", 0 4px 23px 0px \" +\r\n customApp('medium', 0.12) +\r\n \", 0 8px 10px -5px rgba(\" +\r\n customApp('medium', 0.2)\r\n }\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: primaryColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n rose: {\r\n backgroundColor: roseColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: roseColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n white: {\r\n \"&,&:focus,&:hover\": {\r\n backgroundColor: whiteColor,\r\n color: grayColor[0]\r\n }\r\n },\r\n twitter: {\r\n backgroundColor: twitterColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(twitterColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(twitterColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(twitterColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus,&:visited\": {\r\n backgroundColor: twitterColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(twitterColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(twitterColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n facebook: {\r\n backgroundColor: facebookColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(facebookColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(facebookColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(facebookColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: facebookColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(facebookColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(facebookColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n google: {\r\n backgroundColor: googleColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(googleColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(googleColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(googleColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: googleColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(googleColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(googleColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n linkedin: {\r\n backgroundColor: linkedinColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(linkedinColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(linkedinColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(linkedinColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: linkedinColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(linkedinColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(linkedinColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n pinterest: {\r\n backgroundColor: pinterestColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(pinterestColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(pinterestColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(pinterestColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: pinterestColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(pinterestColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(pinterestColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n youtube: {\r\n backgroundColor: youtubeColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(youtubeColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(youtubeColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(youtubeColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: youtubeColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(youtubeColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(youtubeColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n tumblr: {\r\n backgroundColor: tumblrColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(tumblrColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(tumblrColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(tumblrColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: tumblrColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(tumblrColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(tumblrColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n github: {\r\n backgroundColor: grayColor[7],\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(grayColor[6]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(grayColor[6]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(grayColor[6]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: grayColor[7],\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(grayColor[6]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(grayColor[6]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n behance: {\r\n backgroundColor: behanceColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(behanceColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(behanceColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(behanceColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: behanceColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(behanceColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(behanceColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n dribbble: {\r\n backgroundColor: dribbbleColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(dribbbleColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(dribbbleColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(dribbbleColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: dribbbleColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(dribbbleColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(dribbbleColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n reddit: {\r\n backgroundColor: redditColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(redditColor) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(redditColor) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(redditColor) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: redditColor,\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(redditColor) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(redditColor) +\r\n \", 0.2)\"\r\n }\r\n },\r\n simple: {\r\n \"&,&:focus,&:hover\": {\r\n color: whiteColor,\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n },\r\n \"&$primary\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: primaryColor[0]\r\n }\r\n },\r\n \"&$info\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: infoColor[0]\r\n }\r\n },\r\n \"&$success\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: successColor[0]\r\n }\r\n },\r\n \"&$warning\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: warningColor[0]\r\n }\r\n },\r\n \"&$rose\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: roseColor[0]\r\n }\r\n },\r\n \"&$danger\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: dangerColor[0]\r\n }\r\n },\r\n \"&$twitter\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: twitterColor\r\n }\r\n },\r\n \"&$facebook\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: facebookColor\r\n }\r\n },\r\n \"&$google\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: googleColor\r\n }\r\n },\r\n \"&$linkedin\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: linkedinColor\r\n }\r\n },\r\n \"&$pinterest\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: pinterestColor\r\n }\r\n },\r\n \"&$youtube\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: youtubeColor\r\n }\r\n },\r\n \"&$tumblr\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: tumblrColor\r\n }\r\n },\r\n \"&$github\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: grayColor[7]\r\n }\r\n },\r\n \"&$behance\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: behanceColor\r\n }\r\n },\r\n \"&$dribbble\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: dribbbleColor\r\n }\r\n },\r\n \"&$reddit\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: redditColor\r\n }\r\n }\r\n },\r\n transparent: {\r\n \"&,&:focus,&:hover\": {\r\n color: \"inherit\",\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n }\r\n },\r\n disabled: {\r\n opacity: \"0.65\",\r\n pointerEvents: \"none\"\r\n },\r\n lg: {\r\n \"&$justIcon\": {\r\n \"& .fab,& .fas,& .far,& .fal,& svg,& .material-icons\": {\r\n marginTop: \"-4px\"\r\n }\r\n },\r\n padding: \"1.125rem 2.25rem\",\r\n fontSize: \"12px\",\r\n lineHeight: \"1.333333\",\r\n borderRadius: \"0.2rem\"\r\n },\r\n sm: {\r\n \"&$justIcon\": {\r\n \"& .fab,& .fas,& .far,& .fal,& svg,& .material-icons\": {\r\n marginTop: \"1px\"\r\n }\r\n },\r\n padding: \"0.40625rem 1.25rem\",\r\n fontSize: \"0.6875rem\",\r\n lineHeight: \"1.5\",\r\n borderRadius: \"0.2rem\"\r\n },\r\n round: {\r\n borderRadius: \"30px\"\r\n },\r\n block: {\r\n width: \"100% !important\"\r\n },\r\n link: {\r\n \"&,&:hover,&:focus\": {\r\n backgroundColor: \"transparent\",\r\n color: grayColor[0],\r\n boxShadow: \"none\"\r\n }\r\n },\r\n justIcon: {\r\n paddingLeft: \"12px\",\r\n paddingRight: \"12px\",\r\n fontSize: \"20px\",\r\n height: \"41px\",\r\n minWidth: \"41px\",\r\n width: \"41px\",\r\n \"& .fab,& .fas,& .far,& .fal,& svg,& .material-icons\": {\r\n marginRight: \"0px\"\r\n },\r\n \"&$lg\": {\r\n height: \"57px\",\r\n minWidth: \"57px\",\r\n width: \"57px\",\r\n lineHeight: \"56px\",\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"32px\",\r\n lineHeight: \"56px\"\r\n },\r\n \"& svg\": {\r\n width: \"32px\",\r\n height: \"32px\"\r\n }\r\n },\r\n \"&$sm\": {\r\n height: \"30px\",\r\n minWidth: \"30px\",\r\n width: \"30px\",\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"12px\",\r\n lineHeight: \"29px\"\r\n },\r\n \"& svg\": {\r\n width: \"16px\",\r\n height: \"16px\"\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default buttonStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n//MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Button from \"@material-ui/core/Button\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/buttonStyle\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst RegularButton = React.forwardRef((props, ref) => {\r\n const classes = useStyles();\r\n const {\r\n color,\r\n round,\r\n children,\r\n fullWidth,\r\n disabled,\r\n simple,\r\n size,\r\n block,\r\n link,\r\n justIcon,\r\n className,\r\n muiClasses,\r\n ...rest\r\n } = props;\r\n const btnClasses = classNames({\r\n [classes.button]: true,\r\n [classes[size]]: size,\r\n [classes[color]]: color,\r\n [classes.round]: round,\r\n [classes.fullWidth]: fullWidth,\r\n [classes.disabled]: disabled,\r\n [classes.simple]: simple,\r\n [classes.block]: block,\r\n [classes.link]: link,\r\n [classes.justIcon]: justIcon,\r\n [className]: className\r\n });\r\n return (\r\n <Button {...rest} ref={ref} classes={muiClasses} className={btnClasses}>\r\n {children}\r\n </Button>\r\n );\r\n});\r\n\r\nRegularButton.propTypes = {\r\n color: PropTypes.oneOf([\r\n \"primary\",\r\n \"info\",\r\n \"custom_color\",\r\n \"custom_menuColor\",\r\n \"custom_mediumColor\",\r\n \"success\",\r\n \"warning\",\r\n \"danger\",\r\n \"rose\",\r\n \"white\",\r\n \"twitter\",\r\n \"facebook\",\r\n \"google\",\r\n \"linkedin\",\r\n \"pinterest\",\r\n \"youtube\",\r\n \"tumblr\",\r\n \"github\",\r\n \"behance\",\r\n \"dribbble\",\r\n \"reddit\",\r\n \"transparent\"\r\n ]),\r\n size: PropTypes.oneOf([\"sm\", \"lg\"]),\r\n simple: PropTypes.bool,\r\n round: PropTypes.bool,\r\n fullWidth: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n block: PropTypes.bool,\r\n link: PropTypes.bool,\r\n justIcon: PropTypes.bool,\r\n className: PropTypes.string,\r\n muiClasses: PropTypes.object,\r\n children: PropTypes.node\r\n};\r\n\r\nexport default RegularButton;\r\n","import { grayColor } from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst cardFooterStyle = {\r\n cardFooter: {\r\n padding: \"0\",\r\n paddingTop: \"10px\",\r\n margin: \"0 15px 10px\",\r\n borderRadius: \"0\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n backgroundColor: \"transparent\",\r\n border: \"0\"\r\n },\r\n cardFooterProfile: {\r\n marginTop: \"-15px\"\r\n },\r\n cardFooterPlain: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\",\r\n backgroundColor: \"transparent\"\r\n },\r\n cardFooterPricing: {\r\n zIndex: \"2\"\r\n },\r\n cardFooterTestimonial: {\r\n display: \"block\"\r\n },\r\n cardFooterStats: {\r\n borderTop: \"1px solid\" + grayColor[8],\r\n marginTop: \"20px\",\r\n \"& svg\": {\r\n position: \"relative\",\r\n top: \"4px\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\",\r\n width: \"16px\",\r\n height: \"16px\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n position: \"relative\",\r\n top: \"4px\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\",\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\"\r\n }\r\n },\r\n cardFooterChart: {\r\n borderTop: \"1px solid\" + grayColor[8]\r\n }\r\n};\r\n\r\nexport default cardFooterStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/cardFooterStyle\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CardFooter(props) {\r\n const classes = useStyles();\r\n const {\r\n className,\r\n children,\r\n plain,\r\n profile,\r\n pricing,\r\n testimonial,\r\n stats,\r\n chart,\r\n product,\r\n ...rest\r\n } = props;\r\n const cardFooterClasses = classNames({\r\n [classes.cardFooter]: true,\r\n [classes.cardFooterPlain]: plain,\r\n [classes.cardFooterProfile]: profile || testimonial,\r\n [classes.cardFooterPricing]: pricing,\r\n [classes.cardFooterTestimonial]: testimonial,\r\n [classes.cardFooterStats]: stats,\r\n [classes.cardFooterChart]: chart || product,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n <div className={cardFooterClasses} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nCardFooter.propTypes = {\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n pricing: PropTypes.bool,\r\n testimonial: PropTypes.bool,\r\n stats: PropTypes.bool,\r\n chart: PropTypes.bool,\r\n product: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n","import {\r\n container,\r\n cardTitle,\r\n whiteColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst loginPageStyle = theme => ({\r\n container: {\r\n ...container,\r\n zIndex: \"4\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n paddingBottom: \"100px\"\r\n }\r\n },\r\n cardTitle: {\r\n ...cardTitle,\r\n color: whiteColor\r\n },\r\n textCenter: {\r\n textAlign: \"center\"\r\n },\r\n justifyContentCenter: {\r\n justifyContent: \"center !important\"\r\n },\r\n customButtonClass: {\r\n \"&,&:focus,&:hover\": {\r\n color: whiteColor\r\n },\r\n marginLeft: \"5px\",\r\n marginRight: \"5px\"\r\n },\r\n inputAdornment: {\r\n marginRight: \"18px\"\r\n },\r\n inputAdornmentIcon: {\r\n color: grayColor[6]\r\n },\r\n cardHidden: {\r\n opacity: \"0\",\r\n transform: \"translate3d(0, -60px, 0)\"\r\n },\r\n cardHeader: {\r\n marginBottom: \"20px\"\r\n },\r\n socialLine: {\r\n padding: \"0.9375rem 0\"\r\n }\r\n});\r\n\r\nexport default loginPageStyle;\r\n","import React from \"react\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//REDUX\r\nimport history from \"store/history\";\r\n\r\n//COMPONENTS\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Button from \"components/CustomButtons/Button\";\r\nimport Card from \"components/Card/Card\";\r\nimport CardBody from \"components/Card/CardBody\";\r\nimport CardHeader from \"components/Card/CardHeader\";\r\nimport CardFooter from \"components/Card/CardFooter\";\r\nimport Password from \"components/Password\";\r\n\r\n// styles\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/loginPageStyle\";\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\nimport apims from \"apims/\"\r\nimport { translate } from \"functions/\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function LoginPage(props) {\r\n const query = new URLSearchParams(window.location.search);\r\n const [user, setUser] = React.useState({ cPassword: null, password: null });\r\n const classes = useStyles();\r\n\r\n const tokenValidation = async () => {\r\n const res = await apims.post(\"/PasswordTokenValidation\", {\r\n token: query.get('token')\r\n })\r\n if (!res.data.result)\r\n history.push('/')\r\n }\r\n\r\n React.useEffect(() => {\r\n tokenValidation()\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n\r\n\r\n if (!query.get('token') || query.get('token').length !== 36) {\r\n history.push('/')\r\n }\r\n\r\n\r\n const savePassword = async () => {\r\n try {\r\n const res = await api.post('/user/new-password', {\r\n token: query.get('token'),\r\n password: user.password,\r\n })\r\n if (res) {\r\n localStorage.setItem('TOKEN', res.data.token)\r\n if (props.callback) {\r\n setTimeout(() => {\r\n history.push('/login')\r\n // props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n // ...reduxStore.getState().db,\r\n // history: 'login'\r\n // });\r\n }, 3000)\r\n }\r\n }\r\n } catch (err) {\r\n props.callback({\r\n fn: 'alert',\r\n message: `${translate('$__invalidRequest', 1)} | ${translate('$__contactSupport', 1)}`,\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'center',\r\n confirm: null\r\n })\r\n }\r\n }\r\n\r\n return (\r\n <div className={classes.container}>\r\n <GridContainer style={{ justifyContent: \"center\", overflow: \"auto\" }}>\r\n <GridItem xl={4} lg={4} md={4} sm={12} xs={12}>\r\n <form>\r\n <Card db=\"cards\" login>\r\n <CardHeader\r\n className={`${classes.cardHeader} ${classes.textCenter}`}\r\n color=\"primary\"\r\n style={{\r\n background: \"linear-gradient(60deg, rgba(15,18,35,1), rgba(2,33,88,1))\",\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(15,18,35,0.14), 0 7px 10px -5px rgba(15,18,35,0.4)\"\r\n }}\r\n >\r\n <h4 className={classes.cardTitle}>{translate('$__createPassword', 1)}</h4>\r\n </CardHeader>\r\n <CardBody>\r\n <Password\r\n onConfirmed={(v) => {\r\n setUser({\r\n ...user,\r\n password: v\r\n })\r\n }} />\r\n </CardBody>\r\n <CardFooter className={classes.justifyContentCenter}>\r\n {user && user.password &&\r\n <Button style={{ color: 'rgba(15,18,35,1)' }} simple size=\"lg\" block onClick={() => savePassword()}>\r\n {translate('$__save', '*')}\r\n </Button>\r\n }\r\n </CardFooter>\r\n </Card>\r\n </form>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n","//CORE\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\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 HeaderWithIcon from \"components/Header/withIcon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport Icons from \"components/Icons\";\r\nimport TextField from \"components/TextField\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\";\r\nimport { translate } from \"functions/\";\r\n\r\nfunction Component(props) {\r\n const [id, setId] = React.useState(null);\r\n const [name, setName] = React.useState('');\r\n const [icon, setIcon] = React.useState('');\r\n const [editor, setEditor] = React.useState({});\r\n const [board, setBoard] = React.useState({\r\n open: false,\r\n name: '',\r\n })\r\n\r\n const { db } = reduxStore.getState()\r\n const { socket } = reduxStore.getState().functions\r\n\r\n const onDragEnd = async result => {\r\n const { destination, source, draggableId } = result\r\n\r\n if (!destination) return false\r\n\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false\r\n\r\n const itemOrderIds = Array.from(db.cards['boardModels'].boards[source.droppableId].columnOrder)\r\n const board = source.droppableId\r\n itemOrderIds.splice(source.index, 1)\r\n itemOrderIds.splice(destination.index, 0, draggableId)\r\n\r\n api.put('column/reorder', {\r\n columns: itemOrderIds\r\n })\r\n\r\n let socketData = {\r\n _parent: 'boardModels',\r\n _board: board,\r\n _order: itemOrderIds\r\n }\r\n socket.emit('column.REORDER', socketData)\r\n return\r\n\r\n }\r\n\r\n const saveColumn = async (boardId) => {\r\n let itemOrderIds = Array.from(db.cards['boardModels'].boards[boardId].columnOrder)\r\n try {\r\n let response\r\n let columnData = {}\r\n if (!id) {\r\n response = await api.post('column/add', {\r\n board: boardId,\r\n name: name,\r\n icon: icon\r\n })\r\n columnData = {\r\n cards: [],\r\n name: name,\r\n _id: response.data.id,\r\n icon: icon,\r\n }\r\n } else {\r\n response = await api.put('column/update', {\r\n _id: id,\r\n board: boardId,\r\n name: name,\r\n icon: icon\r\n })\r\n columnData = {\r\n name: name,\r\n _id: response.data.id,\r\n icon: icon,\r\n }\r\n }\r\n if (response) {\r\n if (!id)\r\n itemOrderIds.push(response.data.id)\r\n\r\n let socketData = {\r\n _parent: 'boardModels',\r\n _columnId: response.data.id,\r\n _board: boardId,\r\n _cardColumn: 'boardModels',\r\n _columnData: columnData,\r\n _columnsOrder: itemOrderIds\r\n }\r\n socket.emit('column.UPD', socketData)\r\n\r\n setEditor(false)\r\n setName('')\r\n setIcon('')\r\n setId(null)\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n const deleteColumn = async (board, column) => {\r\n const { socket } = reduxStore.getState().functions\r\n\r\n try {\r\n const response = await api.delete(`column/run/${column}__${board}`, {\r\n board: board,\r\n name: name,\r\n icon: icon\r\n })\r\n if (response) {\r\n let socketData = {\r\n _parent: 'boardModels',\r\n _board: board,\r\n _deleted: column\r\n }\r\n socket.emit('column.DELETE', socketData)\r\n }\r\n } catch (e) {\r\n }\r\n }\r\n\r\n const saveBoard = async () => {\r\n try {\r\n const response = await api.post('boards/add', {\r\n name: board.name\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n boardModels: {\r\n ...reduxStore.getState().db.cards.boardModels,\r\n boards: {\r\n ...reduxStore.getState().db.cards.boardModels.boards,\r\n ...response.data,\r\n }\r\n },\r\n }\r\n });\r\n setBoard({\r\n name: '',\r\n open: false\r\n })\r\n\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <GridContainer>\r\n {db.cards\r\n && db.cards['boardModels']\r\n && db.cards['boardModels'].boards\r\n && Object.keys(db.cards['boardModels'].boards).map(boardId => (\r\n <DragDropContext\r\n onDragEnd={onDragEnd}\r\n key={boardId}\r\n >\r\n <GridItem md={3} >\r\n <fieldset style={{\r\n width: '100%'\r\n }}>\r\n <legend>{db.cards['boardModels'].boards[boardId].name}</legend>\r\n <Droppable\r\n droppableId={boardId} //ID OF BOARD\r\n type=\"column\"\r\n direction={'vertical'}\r\n >\r\n {(provided, snapshot) => (\r\n <Container\r\n ref={provided.innerRef}\r\n {...provided.droppableProps}\r\n isDraggingOver={snapshot.isDraggingOver}\r\n >\r\n {!props.noList\r\n && db.cards\r\n && db.cards['boardModels']\r\n && db.cards['boardModels'].boards\r\n && db.cards['boardModels'].boards[boardId]\r\n && db.cards['boardModels'].boards[boardId].columnOrder\r\n && db.cards['boardModels'].boards[boardId].columnOrder.map((col, index) => (\r\n <Draggable draggableId={col} index={index} key={`${col}-${index}`}>\r\n {provided => (\r\n <ItemList\r\n {...provided}\r\n ref={provided.innerRef}\r\n {...provided.draggableProps}\r\n isDragging={snapshot.isDragging}\r\n {...provided.dragHandleProps}\r\n >\r\n {db.cards['boardModels'].boards[boardId].columns[col].name &&\r\n <HeaderWithIcon\r\n title={db.cards['boardModels'].boards[boardId].columns[col].name || ''}\r\n icon={db.cards['boardModels'].boards[boardId].columns[col].icon || null}\r\n iconTitle={'A'}\r\n fontSize={'16px'}\r\n customButtons={[\r\n {\r\n name: \"delete\",\r\n icon: \"delete_forever\",\r\n onClick: () => {\r\n deleteColumn(boardId, col)\r\n },\r\n show: 'hover'\r\n },\r\n {\r\n name: \"edit\",\r\n icon: \"edit\",\r\n onClick: () => {\r\n setName(db.cards['boardModels'].boards[boardId].columns[col].name)\r\n setIcon(db.cards['boardModels'].boards[boardId].columns[col].icon || null)\r\n setId(col)\r\n setEditor({ [boardId]: { open: true } })\r\n },\r\n show: 'hover'\r\n }\r\n ]}\r\n />\r\n }\r\n </ItemList>\r\n )}\r\n </Draggable>\r\n ))}\r\n {editor && editor[boardId] && editor[boardId].open ?\r\n <React.Fragment>\r\n <ItemList>\r\n <div style={{ position: 'relative', float: 'left', width: '40px', height: 'auto', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n <Icons callBack={(icon) => { setIcon(icon) }} />\r\n </div>\r\n <div style={{ position: 'relative', float: 'left', width: 'calc(100% - 40px)' }}>\r\n <TextField\r\n label={translate('$__nameOfColumn', 1)}\r\n variant={'outlined'}\r\n name=\"NewColumn\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setName(d.target.value)\r\n },\r\n onKeyPress: (d) => {\r\n if (d.key === 'Enter' && d.target.value.length > 0)\r\n saveColumn(boardId)\r\n }\r\n }}\r\n value={name}\r\n placeholder={translate('$__name', 1)}\r\n styles={{ marginBotton: '0px !important' }}\r\n autoFocus\r\n />\r\n </div>\r\n </ItemList>\r\n <div style={{ display: 'inline-flex', alignItems: 'center', width: '100%', justifyContent: 'center' }}>\r\n <IconButton icon={'save'} text={translate(\"$__save\", \"*\")} onClick={() => { saveColumn(boardId) }} />\r\n <IconButton\r\n icon={translate(\"$__cancel\", \"*\")}\r\n iconColor='red'\r\n text={translate(\"$__cancel\", \"*\")}\r\n onClick={() => {\r\n setName('')\r\n setEditor({})\r\n }} />\r\n </div>\r\n </React.Fragment>\r\n :\r\n <IconButton icon={'add_box'} text={translate(\"$__addColumn\", 1)} onClick={() => {\r\n setEditor({\r\n [boardId]: {\r\n open: true\r\n }\r\n })\r\n }} />\r\n }\r\n {provided.placeholder}\r\n </Container>\r\n )}\r\n </Droppable>\r\n </fieldset>\r\n </GridItem>\r\n </DragDropContext>\r\n ))}\r\n <div>\r\n {!board.open ?\r\n <IconButton icon={'add_box'} text={translate(\"$__addBoard\", 1)} onClick={() => { setBoard({ ...board, open: true }) }} />\r\n :\r\n <div style={{ position: 'relative', float: 'left', width: 'calc(100% - 40px)' }}>\r\n <TextField\r\n label={translate('$__boardName', 1)}\r\n variant={'outlined'}\r\n name=\"boardName\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setBoard({ ...board, name: d.target.value })\r\n },\r\n onKeyPress: (d) => {\r\n if (d.key === 'Enter' && d.target.value.length > 0)\r\n saveBoard()\r\n }\r\n }}\r\n value={board && board.name}\r\n placeholder={translate('$__name', 1)}\r\n styles={{ marginBotton: '0px !important' }}\r\n autoFocus\r\n />\r\n <div style={{ display: 'inline-flex', alignItems: 'center', width: '100%', justifyContent: 'center' }}>\r\n <IconButton icon={'save'} text={translate(\"$__save\", \"*\")} onClick={() => { saveBoard() }} />\r\n <IconButton\r\n icon={'cancel'}\r\n iconColor='red'\r\n text={translate(\"$__cancel\", \"*\")}\r\n onClick={() => {\r\n setName('')\r\n setBoard({ open: false, name: '' })\r\n }} />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </GridContainer >\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n background-color:none;\r\n\r\n `\r\nconst ItemList = styled.div`\r\n min-width:300px;\r\n background-color: rgba(255,255,255,0.9);\r\n padding: 7px;\r\n margin-bottom:10px;\r\n box-shadow: 0 0 7px rgba(0,0,0,0.2);\r\n display:flex;\r\n `\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = theme => ({\r\n root: {\r\n ...defaultFont,\r\n width: '100%',\r\n marginBottom: theme.spacing(2),\r\n padding: '7px',\r\n height: 'calc(100vh - 220px)',\r\n overflowX: 'auto',\r\n },\r\n header: {\r\n position: 'relative',\r\n float: 'left',\r\n width: 'auto',\r\n minWidth: '100%',\r\n height: '50px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n backgroundColor: customApp('dark'),\r\n color: customApp('light'),\r\n },\r\n column: {\r\n padding: '7px 15px',\r\n fontWeight: 'bold',\r\n borderRight: `solid 1px ${customApp('light', 0.4)}`,\r\n width: '300px',\r\n },\r\n column2: {\r\n padding: '7px 15px',\r\n fontWeight: 'bold',\r\n borderRight: `solid 1px ${customApp('light', 0.4)}`,\r\n // minWidth: '200px',\r\n width: 'calc(100% - 300px)',\r\n },\r\n body: {\r\n color: customApp('medium'),\r\n position: 'relative',\r\n clear: 'both',\r\n display: 'flex',\r\n alignItems: 'center',\r\n borderBottom: `solid 1px ${customApp('medium', 0.2)}`,\r\n '& ul': {\r\n position: 'relative',\r\n padding: '0px',\r\n margin: '0px',\r\n float: 'left',\r\n minWidth: '100%',\r\n '& li': {\r\n minWidth: '100%',\r\n width: 'fit-content',\r\n display: 'flex',\r\n listStyle: 'none',\r\n padding: '15px 0px',\r\n borderBottom: `1px solid ${customApp('medium', 0.2)}`\r\n }\r\n }\r\n },\r\n chip: {\r\n margin: '3px'\r\n }\r\n})\r\n\r\nexport default style;","import React from 'react';\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//@MATERIAL\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//COMPONENTS\r\nimport HeaderWithIcon from \"components/Header/withIcon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport TextField from \"components/TextField\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Backoffice-languages\";\r\nimport { translate, customApp } from 'functions';\r\n\r\nfunction LanguagesView(props) {\r\n const { classes } = props\r\n const { languages } = reduxStore.getState()\r\n const { socket } = reduxStore.getState().functions\r\n const [onlyEmpty, setOnlyEmpty] = React.useState(false)\r\n const [page, setPage] = React.useState(0)\r\n const [limit, setLimit] = React.useState(25)\r\n const [filter, setFilter] = React.useState(\"\")\r\n\r\n //AQUI TEM QUE ATUALIZAR O DB LOCAL \r\n const updateLanguage = async (id, alias, locale, text) => {\r\n // console.log(id, alias, locale, text)\r\n if (!id) {\r\n socket.emit(\"data\", {\r\n module: \"language\",\r\n method: \"post\",\r\n action: \"addLocale\"\r\n }, {\r\n alias,\r\n locale,\r\n text\r\n })\r\n } else {\r\n socket.emit('language.UPD', {\r\n alias,\r\n locale,\r\n text\r\n })\r\n }\r\n }\r\n\r\n return (\r\n <div style={{ width: '100%' }}>\r\n <div style={{\r\n position: \"relative\",\r\n float: 'left',\r\n width: '100%',\r\n left: '0px',\r\n right: '0px',\r\n padding: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n {/* PAGINATION */}\r\n {translate('$__page')} {page + 1} {translate('$__of')} {Math.ceil(Object.keys(languages).length / limit)}\r\n <div style={{ display: 'flex', alignItems: 'center' }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={Object.keys(languages).length}\r\n page={page}\r\n onChangePage={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onChangeRowsPerPage={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate('$__cardsPerPage')}\r\n />\r\n </div>\r\n </div>\r\n <div style={{ width: \"100%\", display: 'flex', alignItems: 'center' }}>\r\n <TextField\r\n label={translate('$__search', 1)}\r\n variant={customApp('fieldVariant')}\r\n value={filter}\r\n onChange={(e) => {\r\n setFilter(e.target.value)\r\n }}\r\n />\r\n <IconButton\r\n text={translate(\"$__showOnlyEmpty\", '*')}\r\n icon={onlyEmpty ? \"subtitles_off\" : \"subtitles\"}\r\n iconColor={customApp('medium')}\r\n onClick={() => {\r\n setOnlyEmpty(!onlyEmpty);\r\n }}\r\n />\r\n </div>\r\n <Paper className={classes.root}>\r\n <div className={classes.header}>\r\n <div className={classes.column}>\r\n {translate(`alias`, 1)}\r\n </div>\r\n <div className={classes.column}>\r\n Portugues\r\n </div>\r\n <div className={classes.column}>\r\n Ingles\r\n </div>\r\n </div>\r\n <div className={classes.body}>\r\n <ul>\r\n {languages\r\n && Object.keys(languages)\r\n && Object.keys(languages).length > 0\r\n && Object.keys(languages)\r\n .filter(alias => {\r\n if (\r\n (\r\n !filter\r\n ||\r\n (\r\n filter\r\n && (\r\n alias.indexOf(filter) > -1\r\n ||\r\n (\r\n languages[alias]\r\n && languages[alias].locales\r\n && Object.keys(languages[alias].locales).filter(a => languages[alias].locales[a].name.indexOf(filter) > -1).length > 0\r\n )\r\n )\r\n )\r\n )\r\n &&\r\n (\r\n (onlyEmpty\r\n && languages[alias]\r\n && (\r\n !languages[alias].locales\r\n || !languages[alias].locales['pt-BR']\r\n || !languages[alias].locales['pt-BR'].name\r\n ))\r\n ||\r\n !onlyEmpty\r\n )\r\n )\r\n return true\r\n return false\r\n }\r\n )\r\n .sort((a, b) => {\r\n if (a < bindActionCreators) {\r\n return -1\r\n } else if (a > b) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .filter((alias, i) => i <= ((page + 1) * limit) && i >= page * limit)\r\n .map((alias, i) => {\r\n return (<li key={alias.trim()}>\r\n <div className={classes.column}>\r\n {alias}\r\n </div>\r\n <div className={classes.column}>\r\n <div style={{ position: 'relative' }}>\r\n <HeaderWithIcon\r\n key={`${alias}_pt-BR`}\r\n title={languages[alias].locales && languages[alias].locales['pt-BR'] && languages[alias].locales['pt-BR'].name && languages[alias].locales['pt-BR'].name}\r\n editable\r\n _id={languages[alias].locales && languages[alias].locales['pt-BR'] && languages[alias].locales['pt-BR'].id && languages[alias].locales['pt-BR'].id}\r\n onEdit={(text, id) => {\r\n console.log(text)\r\n // updateLanguage(id, alias, 'pt-BR', text)\r\n }\r\n }\r\n color={customApp('menu')}\r\n noAutoFocus={true}\r\n multiline\r\n />\r\n </div>\r\n </div>\r\n <div className={classes.column}>\r\n <div style={{ position: 'relative' }}>\r\n <HeaderWithIcon\r\n key={`${alias}_en-US`}\r\n title={languages[alias].locales && languages[alias].locales['en-US'] && languages[alias].locales['en-US'].name && languages[alias].locales['en-US'].name}\r\n editable\r\n _id={languages[alias].locales && languages[alias].locales['en-US'] && languages[alias].locales['en-US'].id && languages[alias].locales['en-US'].id}\r\n onEdit={(text, id) => {\r\n updateLanguage(id, alias, 'en-US', text)\r\n }\r\n }\r\n color={customApp('menu')}\r\n noAutoFocus={true}\r\n multiline\r\n />\r\n </div>\r\n </div>\r\n </li>\r\n )\r\n })}\r\n </ul>\r\n </div>\r\n </Paper >\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n languages: store.languages\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(LanguagesView));","import React from \"react\";\r\n\r\nimport { decimal, formatNumber } from \"functions\"\r\n\r\nexport default class DecimalInput extends React.Component {\r\n constructor(prop) {\r\n super(prop);\r\n this.state = { input: \"\" };\r\n this.start = 0;\r\n }\r\n\r\n change = e => {\r\n // this.start = e.target.selectionStart;\r\n // let val = e.target.value;\r\n // val = val.replace(/([^0-9.]+)/, \"\");\r\n // val = val.replace(/^(0|\\.)/, \"\");\r\n // const match = /(\\d{0,7})[^.]*((?:\\.\\d{0,2})?)/g.exec(val);\r\n // const value = match[1] + match[2];\r\n // e.target.value = value;\r\n // this.setState({ input: value });\r\n // if (val.length > 0) {\r\n // e.target.value = Number(value).toFixed(2);\r\n // e.target.setSelectionRange(this.start, this.start);\r\n // this.setState({ input: Number(value).toFixed(2) });\r\n // }\r\n // console.log(formatNumber(e.target.value))\r\n this.setState({\r\n input: decimal(e.target.value)\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <input\r\n type=\"text\"\r\n onBlur={this.blur}\r\n onChange={this.change}\r\n value={this.state.input}\r\n style={{ fontSize: \"22px\", padding: \"4px\" }}\r\n {...this.props}\r\n />\r\n <pre style={{ color: \"#999\", height: \"30px\" }}>{formatNumber(this.state.input)}</pre>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from \"react\"\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\nimport DecimalInput from \"./input\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Backoffice-languages.js\"\r\n\r\nfunction DataView(props) {\r\n const { db } = reduxStore.getState()\r\n const expanded = db.myTasksMenuExpanded ? true : false\r\n\r\n return (\r\n <div style={expanded ? { width: \"calc(100% - 400x)\", marginLeft: \"388px\" } : { width: \"calc(100% - 138px)\", marginLeft: \"138px\" }}>\r\n\r\n <DecimalInput />\r\n </div>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = () => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(DataView))","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n//@MATERIAL\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Tabs from '@material-ui/core/Tabs';\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\nimport BoardModels from \"components/BoardModels\";\r\nimport Button from \"components/CustomButtons/Custom\";\r\n\r\n//REDUX\r\nimport * as reduxActions from 'store/actions';\r\nimport history from \"store/history\";\r\nimport reduxStore from \"store/\";\r\nimport { bindActionCreators } from 'redux';\r\nimport { connect } from 'react-redux';\r\n\r\n//VIEWS\r\nimport Languages from \"views/BackOffice/languages\";\r\nimport Data from \"./data\";\r\n\r\n//FUNTIONS\r\nimport { customApp, translate } from \"functions/\";\r\n\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`scrollable-strength-tabpanel-${index}`}\r\n aria-labelledby={`scrollable-strength-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box p={3}>\r\n {children}\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-strength-tab-${index}`,\r\n 'aria-controls': `scrollable-strength-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nfunction App() {\r\n const [value, setValue] = React.useState(0);\r\n const [version, setVersion] = React.useState(\"\")\r\n\r\n React.useEffect(() => {\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (String(hashs[0])) {\r\n setValue(Math.ceil(hashs[0]));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n history.push(`#${newValue}`)\r\n };\r\n\r\n\r\n\r\n const sendSocket = (fn) => {\r\n const { socket } = reduxStore.getState().functions\r\n socket.emit('global', {\r\n fn: fn\r\n })\r\n }\r\n\r\n return (\r\n <div>\r\n <AppBar position=\"static\" color=\"default\">\r\n <Tabs\r\n value={value}\r\n onChange={handleChange}\r\n variant=\"scrollable\"\r\n scrollButtons=\"on\"\r\n indicatorColor=\"primary\"\r\n textColor=\"primary\"\r\n aria-label=\"\"\r\n >\r\n <Tab label=\"Data\" icon={<Icon color={customApp(value === 0 ? \"medium\" : \"color\", 1)}>Data</Icon>} {...a11yProps(0)} />\r\n <Tab label=\"Languages\" icon={<Icon color={customApp(value === 1 ? \"medium\" : \"color\", 1)}>translate</Icon>} {...a11yProps(1)} />\r\n <Tab label=\"Versions\" icon={<Icon color={customApp(value === 2 ? \"medium\" : \"color\", 1)}>app_registration</Icon>} {...a11yProps(2)} />\r\n {/* <Tab label=\"Board Models\" hash=\"boards\" icon={<Icon color={customApp(value === 3 ? 'medium' : 'color'), 1}>view_column</Icon>} {...a11yProps(0)} />\r\n <Tab label=\"Accounts\" icon={<Icon color={customApp(value === 4 ? 'medium' : 'color'), 1}>contacts</Icon>} {...a11yProps(1)} />\r\n <Tab label=\"Users\" icon={<Icon color={customApp(value === 5 ? 'medium' : 'color'), 1}>supervisor_account</Icon>} {...a11yProps(2)} />\r\n <Tab label=\"Support\" icon={<Icon color={customApp(value === 6 ? 'medium' : 'color'), 1}>support</Icon>} {...a11yProps(3)} />\r\n <Tab label=\"Finance\" icon={<Icon color={customApp(value === 7 ? 'medium' : 'color'), 1}>account_balance</Icon>} {...a11yProps(4)} /> */}\r\n </Tabs>\r\n </AppBar>\r\n <TabPanel value={value} index={0}>\r\n <div>\r\n <Data />\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={1}>\r\n <div>\r\n <Languages />\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={2}>\r\n <div>\r\n <input type=\"text\" value={version}\r\n onChange={e => {\r\n setVersion(e.target.value)\r\n }} />\r\n <Button\r\n style={{ position: 'relative', float: 'left', margin: '3px' }}\r\n color={'primary'}\r\n onClick={() => {\r\n sendSocket('version')\r\n }}\r\n >\r\n {translate('$__send', '*')}\r\n </Button>\r\n <Button\r\n style={{ position: 'relative', float: 'left', margin: '3px' }}\r\n color={'primary'}\r\n onClick={() => {\r\n sendSocket('logout')\r\n }}\r\n >\r\n {translate('$__logout', '*')}\r\n </Button>\r\n <Button\r\n style={{ position: 'relative', float: 'left', margin: '3px' }}\r\n color={'primary'}\r\n onClick={() => {\r\n sendSocket('reload')\r\n }}\r\n >\r\n {translate('$__reload', '*')}\r\n </Button>\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={3}>\r\n <div>\r\n <BoardModels />\r\n </div>\r\n </TabPanel>\r\n <TabPanel value={value} index={4}>\r\n {translate('$__accounts', 1)}\r\n </TabPanel>\r\n <TabPanel value={value} index={5}>\r\n {translate('$__users', 1)}\r\n </TabPanel>\r\n <TabPanel value={value} index={6}>\r\n {translate('$__support', 1)}\r\n </TabPanel>\r\n <TabPanel value={value} index={7}>\r\n {translate('$__finance', 1)}\r\n </TabPanel>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(App);","import React, { useMemo } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\nimport LinearProgress from \"components/Progress/linear\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nfunction LoadingIndicator({ loaders, classes, loaderIds }) {\r\n // Garante que loaderIds seja um array\r\n const ids = Array.isArray(loaderIds) ? loaderIds : [];\r\n\r\n const isLoading = useMemo(() => {\r\n if (!loaders) return false;\r\n\r\n // Se não houver nenhum loader, não mostra\r\n const allKeys = Object.keys(loaders);\r\n if (allKeys.length === 0) return false;\r\n\r\n // Se não foi passado nenhum loaderId, comporta-se como antes (considera todos)\r\n if (ids.length === 0) {\r\n return allKeys.some((key) => loaders[key] !== \"completed\");\r\n }\r\n\r\n // Se houve loaderIds, filtra apenas IDs existentes em loaders\r\n const validKeys = ids.filter((id) => Object.prototype.hasOwnProperty.call(loaders, id));\r\n\r\n // Se nenhuma key foi encontrada em loaders, não há nada para considerar\r\n if (validKeys.length === 0) return false;\r\n\r\n // Verifica se pelo menos uma das validKeys ainda não está \"completed\"\r\n return validKeys.some((key) => loaders[key] !== \"completed\");\r\n }, [loaders, ids]);\r\n\r\n if (!isLoading) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className={classes.loadingContainer} role=\"status\" aria-live=\"polite\">\r\n <span id=\"loadBar\" className={classes.loadingText}>\r\n {translate(\"$__loadingData\")}\r\n </span>\r\n <LinearProgress />\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n loaders: store.sessionLoads.cards.load,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(\r\n withStyles(() => ({\r\n loadingContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n },\r\n loadingText: {\r\n color: customApp(\"menu\"),\r\n fontSize: \"12px\",\r\n paddingRight: \"15px\",\r\n whiteSpace: \"nowrap\",\r\n },\r\n }))(LoadingIndicator)\r\n);\r\n","import React from \"react\";\r\nimport Routes from \"routes\";\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 Avatar from \"@material-ui/core/Avatar\";\r\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Icon from \"components/Icon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//IMAGES\r\nimport defaultAvatar from \"assets/img/fundo-sonne.png\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/filter\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n translate,\r\n} from \"functions/\";\r\n\r\n//VARIABLES\r\nimport { initialState } from \"store/search-initialState\";\r\n\r\nconst useStyles = makeStyles(styles);\r\nfunction FilterComponent(props) {\r\n const classes = useStyles();\r\n const { session, search, db } = reduxStore.getState();\r\n\r\n let fields = []\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n const locationPathName = window.location.pathname.split('/')\r\n const pathName = `/${locationPathName[1]}`\r\n\r\n let CardAccess = 1\r\n if (hashs[0]) {\r\n let data = db.cards[hashs[0]] || {}\r\n CardAccess = data && data._users && Object.keys(data._users).length > 0 ? data._users[Object.keys(data._users).find(a => a.indexOf(session._id) > -1)] : 0\r\n if (CardAccess && CardAccess.access)\r\n CardAccess = CardAccess.access\r\n }\r\n\r\n\r\n if (hashs[1] && Routes.filter(a => a.path === pathName).length > 0 && Routes.filter(a => a.path === pathName)[0].tabs && Routes.filter(a => a.path === pathName)[0].tabs.length > 0) {\r\n let tabs = Routes.filter(a => a.path === pathName)[0].tabs && Routes.filter(a => a.path === pathName)[0].tabs\r\n tabs.forEach(a => {\r\n if (a.path === hashs[1])\r\n fields = a.searchFields\r\n })\r\n } else if (Routes.filter(a => a.path === pathName).length > 0 && Routes.filter(a => a.path === pathName)[0].searchFields) {\r\n fields = Routes.filter(a => a.path === pathName)[0].searchFields\r\n }\r\n\r\n if (JSON.stringify(initialState) === JSON.stringify(search)) {\r\n return (<React.Fragment></React.Fragment>)\r\n }\r\n\r\n return (\r\n <div>\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={9}\r\n md={9}\r\n lg={9}\r\n xl={9}\r\n >\r\n <span style={{\r\n color: customApp('medium'),\r\n fontWeight: 'bold',\r\n fontSize: '18px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }}>\r\n <Icon size=\"18px\">search</Icon>\r\n {translate('$__appliedFilters')}\r\n </span>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={3}\r\n md={3}\r\n lg={3}\r\n xl={3}\r\n >\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: 'flex-end'\r\n }}>\r\n <IconButton reverse icon={'clear_all'} text={translate(\"$__clearFilter\", \"*\")}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SEARCH_CLEAR\")\r\n }} />\r\n </div>\r\n </GridItem>\r\n {fields && fields.indexOf('text') > -1 && search.text &&\r\n <GridItem\r\n xs={6}\r\n sm={4}\r\n md={2}\r\n lg={2}\r\n xl={2}\r\n >\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n {translate('$__text')}: {search.text}\r\n </div>\r\n </GridItem>\r\n }\r\n\r\n {/* FILTER BY TAGS */}\r\n\r\n {/* FILTER BY STATUS */}\r\n {fields && fields.indexOf('status') > -1 && JSON.stringify(search.cards.status) !== JSON.stringify(initialState.cards.status) &&\r\n <GridItem\r\n xs={6}\r\n sm={4}\r\n md={2}\r\n lg={2}\r\n xl={2}\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px' }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n }}>\r\n {translate('$__status')}\r\n </div>\r\n {Object.keys(search.cards.status)\r\n .filter((a, i) => search.cards.status[a] && a !== 'all')\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(db.status.filter(fil => fil.value === a)[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: db.status.filter(fil => fil.value === a)[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </GridItem>\r\n }\r\n\r\n {/* FILTER BY PRIORITY */}\r\n {fields && fields.indexOf('priority') > -1 && JSON.stringify(search.cards.priority) !== JSON.stringify(initialState.cards.priority) &&\r\n <GridItem\r\n xs={6}\r\n sm={4}\r\n md={2}\r\n lg={2}\r\n xl={2}\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px' }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n }}>\r\n {translate('$__priority')}\r\n </div>\r\n {Object.keys(search.cards.priority)\r\n .filter((a, i) => search.cards.priority[a] && a !== 'all')\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(db.priority.filter(fil => String(fil.value) === String(a))[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: db.priority.filter(fil => String(fil.value) === String(a))[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </GridItem>\r\n }\r\n\r\n {/* FILTER BY USER */}\r\n {fields && fields.indexOf('users') > -1 && JSON.stringify(search.users) !== JSON.stringify(initialState.users) &&\r\n <GridItem\r\n xs={6}\r\n sm={4}\r\n md={2}\r\n lg={2}\r\n xl={2}\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px' }}>\r\n {translate('$__users')}\r\n <AvatarGroup max={6}>\r\n {Object.keys(reduxStore.getState().search.users.selected).length > 0 && Object.keys(reduxStore.getState().search.users.selected).map((a, i) => (\r\n a !== 'unassigned' && reduxStore.getState().search.users.selected[a] ?\r\n <Tooltip\r\n title={db.users[a].name}\r\n key={i}\r\n >\r\n <Avatar style={{ width: '30px', height: '30px' }} 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 : a === 'unassigned' && reduxStore.getState().search.users.selected[a] &&\r\n <Tooltip\r\n title={translate('$__unassigned', 1)}\r\n key={i}\r\n >\r\n <Avatar style={{ width: '30px', height: '30px' }} alt={translate('$__unassigned', 1)} src={defaultAvatar} >\r\n {translate('$__unassigned', 1)}\r\n </Avatar>\r\n </Tooltip>\r\n ))}\r\n </AvatarGroup>\r\n </div>\r\n </GridItem>\r\n }\r\n {fields && fields.indexOf('units') > -1 && JSON.stringify(search.units) !== JSON.stringify(initialState.units) &&\r\n Object.keys(db.users).filter(a => db.users[a].type !== 'user').length > 0 && fields.indexOf('units') > -1 &&\r\n /* FILTER BY CLIENT */\r\n <GridItem\r\n xs={6}\r\n sm={4}\r\n md={2}\r\n lg={2}\r\n xl={2}\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px' }}>\r\n {translate('$__units')}\r\n <AvatarGroup max={6}>\r\n {Object.keys(reduxStore.getState().search.units.selected).length > 0 && Object.keys(reduxStore.getState().search.units.selected).map((a, i) => (\r\n a !== 'unassigned' && reduxStore.getState().search.units.selected[a] ?\r\n <Tooltip\r\n title={db.users[a].name}\r\n key={i}\r\n >\r\n <Avatar style={{ width: '30px', height: '30px' }} 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 : a === 'unassigned' && reduxStore.getState().search.units.selected[a] &&\r\n <Tooltip\r\n title={translate('$__unassigned', 1)}\r\n key={i}\r\n >\r\n <Avatar style={{ width: '30px', height: '30px' }} alt={translate('$__unassigned', 1)} src={defaultAvatar} >\r\n {translate('$__unassigned', 1)}\r\n </Avatar>\r\n </Tooltip>\r\n ))}\r\n </AvatarGroup>\r\n </div>\r\n </GridItem>\r\n }\r\n\r\n {\r\n reduxStore.getState().search.plans && reduxStore.getState().search.plans.selected && Object.keys(reduxStore.getState().search.plans.selected).length > 0 && Object.keys(db.cards).filter(a => db.cards[a].type === 'plan').length > 0 && fields && fields.indexOf('plans') > -1 &&\r\n /* FILTER BY PLANS */\r\n <GridItem\r\n xs={6}\r\n sm={4}\r\n md={2}\r\n lg={2}\r\n xl={2}\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px' }}>\r\n {translate('$__plans')}\r\n <AvatarGroup max={6}>\r\n {Object.keys(reduxStore.getState().search.plans.selected).length > 0 && Object.keys(reduxStore.getState().search.plans.selected).map((a, i) => (\r\n a !== 'unassigned' && reduxStore.getState().search.plans.selected[a] ?\r\n <Tooltip\r\n title={db.cards[a].name}\r\n key={i}\r\n >\r\n <Avatar style={{ width: '30px', height: '30px' }} alt={db.cards[a].name} src={db.cards[a].image || null} >\r\n {db.cards[a].name.substr(0, 1)}\r\n </Avatar>\r\n </Tooltip>\r\n : a === 'unassigned' && reduxStore.getState().search.plans.selected[a] &&\r\n <Tooltip\r\n title={translate('$__unassigned', 1)}\r\n key={i}\r\n >\r\n <Avatar style={{ width: '30px', height: '30px' }} alt={translate('$__unassigned', 1)} src={defaultAvatar} >\r\n {translate('$__unassigned', 1)}\r\n </Avatar>\r\n </Tooltip>\r\n ))}\r\n </AvatarGroup>\r\n </div>\r\n </GridItem>\r\n }\r\n {/* FINAL FILTER PARAMETERS */}\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n {\r\n //Cards\r\n }\r\n </GridItem>\r\n </GridContainer >\r\n </div>\r\n );\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterComponent)","import React from \"react\";\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 Card from \"components/Card\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Icon from \"components/Icon\";\r\n\r\n//FUNCTIONS\r\n\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData\"\r\n\r\nimport { cardINNExists } from \"functions/users\"\r\nimport { translate } from \"functions\"\r\n\r\nconst InsightsBC = (props) => {\r\n const { search } = reduxStore.getState()\r\n const [page, setPage] = React.useState(0)\r\n const [limit] = React.useState(21)\r\n const [loading, setLoading] = React.useState(false)\r\n const [end, setEnd] = React.useState(false)\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const loadInsights = async (page, limit) => {\r\n if (mounted.current) {\r\n setLoading(true)\r\n let res = await loadCardsV2(props, {\r\n cardLoad: 'insights',\r\n limit: limit,\r\n skip: page * limit,\r\n ignoreLoader: true\r\n })\r\n if (res && mounted.current) {\r\n setLoading(false)\r\n if (res.total < limit)\r\n setEnd(true)\r\n }\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n if (!loading && !end && mounted.current)\r\n loadInsights(page, limit)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [page, limit])\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n\r\n const db = reduxStore.getState().db\r\n\r\n let radarCards = Object.keys(db.cards)\r\n .filter(a =>\r\n db.cards[a]\r\n && db.cards[a].type === 'insight'\r\n && !db.cards[a].deleted\r\n && cardINNExists(a)\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].created_at > db.cards[b].created_at)\r\n return -1\r\n if (db.cards[a].created_at < db.cards[b].created_at)\r\n return 1\r\n return 0\r\n })\r\n .map(a => db.cards[a])\r\n\r\n\r\n radarCards = radarCards.filter(a =>\r\n ((a.description && a.description.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (a.name && a.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )).map(a => a)\r\n\r\n if (search.tags.length > 0)\r\n radarCards = radarCards.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ).map(res => res)\r\n\r\n const scrollFunction = (e) => {\r\n var scrollDiv = document.getElementById(`insightList`);\r\n if (scrollDiv.scrollTop + window.innerHeight + 150 > scrollDiv.scrollHeight && mounted.current)\r\n setPage(page + 1)\r\n }\r\n\r\n if (radarCards\r\n .filter((i, ii) => (!props.max || (props.max && ii < props.max))).length === 0)\r\n return (\r\n <div\r\n id={\"insightList\"}\r\n style={!props.horizontal ? {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n display: \"flex\",\r\n overflowY: \"auto\",\r\n\r\n } : { position: 'relative', justifyContent: 'space-between', margin: 'auto', width: '100%' }}\r\n onScroll={!props.horizontal ? (e) => {\r\n scrollFunction(e)\r\n } : null}\r\n >\r\n <GridContainer\r\n style={{\r\n ...props.horizontal ? {\r\n overflowX: \"auto\",\r\n flexFlow: \"row\",\r\n display: \"-webkit-inline-box\"\r\n } : {}\r\n }}\r\n >\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <div\r\n style={{\r\n justifyContent: \"center\",\r\n textAlign: \"center\",\r\n display: \"block\", paddingBottom: 15\r\n }}\r\n >\r\n <div style={{ margin: \"auto\", marginBottom: 15, display: \"flex\", justifyContent: \"center\" }}><Icon size={\"33px\"} icon={\"info\"} color={\"lightblue\"} /></div>\r\n <div style={{ color: \"lightgray\", fontSize: 33, texAlign: \"center\", marginBottom: 15 }}>{translate(\"$__youHaveNoIdeasAddedYet\")}</div>\r\n <div style={{ color: \"lightgray\", fontSize: 18, texAlign: \"center\", marginBottom: 15 }}>{translate(\"$__visitLinkToHowGetStarted\")}</div>\r\n <a href=\"https://support.machen.ai/manual/bright-connected/radar/\" target=\"_blank\" rel=\"noopener noreferrer\" style={{ fontSize: 18, color: \"blue\", texAlign: \"center\", }}>{translate(\"$__getStarted\")}</a>\r\n\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n )\r\n\r\n return (\r\n <div\r\n id={\"insightList\"}\r\n style={!props.horizontal ? {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n display: \"flex\",\r\n overflowY: \"auto\",\r\n\r\n } : { position: 'relative', justifyContent: 'space-between', margin: 'auto', width: '100%' }}\r\n onScroll={!props.horizontal ? (e) => {\r\n scrollFunction(e)\r\n } : null}\r\n >\r\n <GridContainer\r\n style={{\r\n ...props.horizontal ? {\r\n overflowX: \"auto\",\r\n flexFlow: \"row\",\r\n display: \"-webkit-inline-box\"\r\n } : {}\r\n }}\r\n >\r\n {Object.keys(radarCards)\r\n .filter((i, ii) => (!props.max || (props.max && ii < props.max)))\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={radarCards[card]._id}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <Card db=\"cards\" data={radarCards[card]} expanded Avatar Resume showConnectedIn LoadParent />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n cards: store.db.cards,\r\n search: store.search,\r\n users: store.db.users\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(InsightsBC)","//FUNCTIONS\r\nconst style = () => ({\r\n feed: {\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n margin: 'auto',\r\n boxShadow: '0 0 7px 3px rgba(0,0,0,0.05)',\r\n width: \"-webkit-fill-available\",\r\n marginBottom: \"15px\",\r\n borderTopRightRadius: 22,\r\n },\r\n infos: {\r\n padding: '7px',\r\n cursor: \"pointer\"\r\n },\r\n feedRotate: {\r\n width: 'calc(20% - 20px)',\r\n minWidth: '250px',\r\n maxWidth: '400px',\r\n backgroundColor: 'rgba(255,255,255,1)',\r\n padding: '7px 7px 20px 7px',\r\n boxShadow: '0 0 7px 3px rgba(0,0,0,0.05)',\r\n placeSelf: 'flex-end',\r\n cursor: 'pointer'\r\n },\r\n image: {\r\n width: '100%',\r\n paddingTop: `calc((9 / 16) * 100%)`,\r\n backgroundPosition: 'center',\r\n backgroundRepeat: \"no-repeat\"\r\n },\r\n linkTitle: {\r\n marginTop: '7px',\r\n width: '100%',\r\n height: 'auto',\r\n fontWeight: 'bold',\r\n minHeight: \"65px\"\r\n },\r\n linkContent: {\r\n width: '100%',\r\n marginTop: '7px',\r\n height: '87px',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden'\r\n },\r\n feedFooter: {\r\n width: '100%',\r\n cursor: \"auto\",\r\n textAlign: 'right',\r\n justifyContent: 'space-between',\r\n paddingTop: '10px',\r\n display: 'flex',\r\n paddingBottom: '7px'\r\n },\r\n feedDate: {\r\n position: 'relative',\r\n left: '0px',\r\n fontSize: '12px',\r\n float: 'left'\r\n },\r\n feedLink: {\r\n position: 'relative',\r\n left: '0px',\r\n fontSize: '12px',\r\n float: 'right',\r\n display: 'flex'\r\n }\r\n})\r\n\r\nexport default style;","//CORE\r\nimport React from 'react'\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\n\r\n//COMPONENTS\r\nimport Skeleton from \"@material-ui/lab/Skeleton\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/BrightAndConnected-card\";\r\n\r\n\r\n\r\nfunction Component(props) {\r\n const { classes } = props;\r\n\r\n return (\r\n <div className={classes.feed}>\r\n <Skeleton variant=\"rect\" animation=\"wave\"\r\n style={\r\n {\r\n borderRadius: 0,\r\n paddingTop: \"calc((9 / 16) * 100%)\",\r\n width: \"100%\",\r\n borderTopRightRadius: 22,\r\n }\r\n }\r\n />\r\n <div className={classes.infos}>\r\n <div className={classes.linkTitle}>\r\n <Skeleton variant=\"rect\" animation=\"wave\"\r\n style={\r\n {\r\n width: \"100%\",\r\n height: \"12px\",\r\n marginBottom: 10\r\n }\r\n }\r\n />\r\n <Skeleton variant=\"rect\" animation=\"wave\"\r\n style={\r\n {\r\n width: \"100%\",\r\n height: \"12px\",\r\n marginBottom: 10\r\n }\r\n }\r\n />\r\n <Skeleton variant=\"rect\" animation=\"wave\"\r\n style={\r\n {\r\n width: \"100%\",\r\n height: \"12px\",\r\n marginBottom: 10\r\n }\r\n }\r\n />\r\n </div>\r\n <div\r\n className={classes.linkContent}\r\n >\r\n <Skeleton variant=\"rect\"\r\n style={\r\n {\r\n marginTop: 15,\r\n borderRadius: 7,\r\n width: \"100%\",\r\n height: 8,\r\n marginBottom: 12\r\n }\r\n }\r\n />\r\n <Skeleton variant=\"rect\"\r\n style={\r\n {\r\n borderRadius: 7,\r\n width: \"100%\",\r\n height: 8,\r\n marginBottom: 12\r\n }\r\n }\r\n />\r\n <Skeleton variant=\"rect\"\r\n style={\r\n {\r\n borderRadius: 7,\r\n width: \"100%\",\r\n height: 8,\r\n marginBottom: 12\r\n }\r\n }\r\n />\r\n <Skeleton variant=\"rect\"\r\n style={\r\n {\r\n borderRadius: 7,\r\n width: \"100%\",\r\n height: 8,\r\n marginBottom: 12\r\n }\r\n }\r\n />\r\n </div>\r\n <div className={classes.feedFooter}>\r\n <div\r\n className={classes.feedDate}\r\n style={{\r\n width: \"50%\",\r\n height: \"20px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div style={{\r\n width: \"100%\",\r\n height: \"8px\"\r\n }}>\r\n <Skeleton variant=\"rect\"\r\n style={\r\n {\r\n borderRadius: 7,\r\n width: \"100%\",\r\n height: 8,\r\n }\r\n }\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))\r\n","import React from \"react\";\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 Card from \"components/Card\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport SkeletonCard from \"components/BrightAndConnected/skeletonCard\";\r\nimport Icon from \"components/Icon\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData\"\r\n\r\nimport { cardINNExists } from \"functions/users\"\r\n\r\nfunction Radar(props) {\r\n const { db, search } = reduxStore.getState()\r\n const [page, setPage] = React.useState(0)\r\n const limit = 18\r\n const [loading, setLoading] = React.useState(false)\r\n const [end, setEnd] = React.useState(false)\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n loadLinks(page, limit)\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n // console.log(38)\r\n if (!loading && !end && mounted.current)\r\n loadLinks(page, limit)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [page, limit])\r\n\r\n const loadLinks = async (page, limit) => {\r\n if (mounted.current) {\r\n setLoading(true)\r\n let res = await loadCardsV2(props, {\r\n cardLoad: 'links',\r\n limit: limit,\r\n skip: page * limit,\r\n ignoreLoader: true\r\n })\r\n if (res && mounted.current) {\r\n setLoading(false)\r\n if (res.total < limit)\r\n setEnd(true)\r\n }\r\n }\r\n }\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let radarCards = {}\r\n\r\n radarCards = Object.keys(db.cards)\r\n .filter(a =>\r\n db.cards[a].type === 'link'\r\n && db.cards[a]._users\r\n && cardINNExists(a)\r\n && !db.cards[a].deleted\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].created_at > db.cards[b].created_at)\r\n return -1\r\n return 0\r\n })\r\n .map(a => db.cards[a])\r\n\r\n radarCards = radarCards.filter(a =>\r\n ((a.description && a.description.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (a.name && a.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )).map(a => a)\r\n\r\n if (search.tags.length > 0)\r\n radarCards = radarCards.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ).map(res => res)\r\n\r\n const scrollFunction = (e) => {\r\n var scrollDiv = document.getElementById(`linkList`);\r\n if (scrollDiv.scrollTop + window.innerHeight + 150 > scrollDiv.scrollHeight && mounted.current)\r\n setPage(page + 1)\r\n }\r\n\r\n const RenderSkeleton = () => {\r\n let rows = []\r\n for (var i = 0; i < limit; i++) {\r\n rows.push(<GridItem\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n key={`sk_${i}`}\r\n >\r\n <SkeletonCard />\r\n </GridItem>)\r\n }\r\n return <React.Fragment>{rows}</React.Fragment>\r\n }\r\n\r\n if (Object.keys(radarCards)\r\n .filter((i, ii) => (!props.max || (props.max && ii < props.max))).length === 0)\r\n return (\r\n <div\r\n id={\"insightList\"}\r\n style={!props.horizontal ? {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n display: \"flex\",\r\n overflowY: \"auto\",\r\n\r\n } : { position: 'relative', justifyContent: 'space-between', margin: 'auto', width: '100%' }}\r\n onScroll={!props.horizontal ? (e) => {\r\n scrollFunction(e)\r\n } : null}\r\n >\r\n <GridContainer\r\n style={{\r\n ...props.horizontal ? {\r\n overflowX: \"auto\",\r\n flexFlow: \"row\",\r\n display: \"-webkit-inline-box\"\r\n } : {}\r\n }}\r\n >\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <div\r\n style={{\r\n justifyContent: \"center\",\r\n textAlign: \"center\",\r\n display: \"block\", paddingBottom: 15\r\n }}\r\n >\r\n <div style={{ margin: \"auto\", marginBottom: 15, display: \"flex\", justifyContent: \"center\" }}><Icon size={\"33px\"} icon={\"info\"} color={\"lightblue\"} /></div>\r\n <div style={{ color: \"lightgray\", fontSize: 33, texAlign: \"center\", marginBottom: 15 }}>{translate(\"$__youHaveNoRadarAddedYet\")}</div>\r\n <div style={{ color: \"lightgray\", fontSize: 18, texAlign: \"center\", marginBottom: 15 }}>{translate(\"$__visitLinkToHowGetStarted\")}</div>\r\n <a href=\"https://support.machen.ai/manual/bright-connected/radar/\" target=\"_blank\" rel=\"noopener noreferrer\"\r\n style={{ fontSize: 18, color: \"blue\", texAlign: \"center\", }}>{translate(\"$__getStarted\")}</a>\r\n\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n )\r\n\r\n return (\r\n <div\r\n id={\"linkList\"}\r\n style={!props.horizontal ? {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n display: \"flex\",\r\n overflowY: \"auto\",\r\n\r\n } : {\r\n position: 'relative',\r\n justifyContent: 'space-between',\r\n margin: 'auto',\r\n width: '100%'\r\n }}\r\n onScroll={!props.horizontal ? (e) => {\r\n scrollFunction(e)\r\n } : null}\r\n >\r\n <GridContainer\r\n style={{\r\n ...props.horizontal ? {\r\n overflowX: \"auto\",\r\n flexFlow: \"row\",\r\n display: \"-webkit-inline-box\"\r\n } : {}\r\n }}\r\n >\r\n <div>\r\n\r\n </div>\r\n\r\n {Object.keys(radarCards)\r\n .filter((r, ri) => (!props.max || (props.max && ri < props.max)))\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={radarCards[card]._id}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <Card db=\"cards\" data={radarCards[card]} expanded Avatar Resume showConnectedIn LoadParent />\r\n </GridItem>\r\n )\r\n })}\r\n {loading ?\r\n <RenderSkeleton />\r\n : <React.Fragment></React.Fragment>}\r\n </GridContainer>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, props) => {\r\n return {\r\n cards: store.db.cards,\r\n search: store.search,\r\n users: store.db.users\r\n };\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)(Radar);","//CORE\r\nimport React from 'react'\r\nimport Moment from \"moment-timezone\"\r\nimport utf8 from \"utf8\"\r\nimport isValidUTF8 from \"utf-8-validate\"\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\r\n//COMPONENTS\r\nimport CardTags from \"components/Tags/Card\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport HtmlTooltip from \"components/Tooltip/html\"\r\nimport Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/BrightAndConnected-card.js\"\r\nimport { translate, customApp } from 'functions'\r\n\r\nimport BrightAndConnectedIco from \"assets/icons/BrigthAndConnected\"\r\n\r\n\r\nfunction Component(props) {\r\n const { data, classes } = props\r\n const [image, setImage] = React.useState(data.img)\r\n const [backSize, setBackSize] = React.useState({\r\n backgroundSize: \"contain\",\r\n })\r\n\r\n let cardRef = React.useRef({})\r\n\r\n React.useEffect(() => {\r\n if (!cardRef.current) return; // wait for the elementRef to be available\r\n if (props.onResize) {\r\n const resizeObserver = new ResizeObserver(() => {\r\n let newSize = cardRef.current.clientHeight\r\n props.onResize(newSize)\r\n });\r\n resizeObserver.observe(cardRef.current);\r\n return () => resizeObserver.disconnect(); // clean up \r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const sendToInsight = () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: 'new',\r\n activeModule: 'cardEdit',\r\n db: 'cards',\r\n data: {\r\n _id: 'new',\r\n type: 'link',\r\n name: data.title,\r\n description: data.contentSnippet,\r\n pubDate: data.isoDate ? data.isoDate : data.pubDate,\r\n image: data.img,\r\n url: data.link,\r\n }\r\n })\r\n }\r\n\r\n const onImgLoad = ({ target: img }) => {\r\n if (img && img.width && img.height) {\r\n if (img.width > img.height) {\r\n if (img.width / img.height > 1.75) {\r\n setBackSize({\r\n backgroundSize: \"contain\"\r\n })\r\n\r\n } else {\r\n setBackSize({\r\n backgroundSize: \"cover\"\r\n })\r\n }\r\n } else {\r\n setBackSize({\r\n backgroundSize: \"cover\"\r\n })\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <div className={classes.feed}\r\n ref={cardRef}\r\n onClick={props.clickChannel ? () => props.clickChannel() : null}\r\n style={{\r\n ...props.clickChannel ? { cursor: \"pointer\" } : {},\r\n position: 'relative'\r\n }}\r\n >\r\n <div style={{ display: \"none\" }}>\r\n <img alt=\"MACHEN_IMAGE\" src={image} onError={() => {\r\n setImage(null)\r\n }}\r\n onLoad={onImgLoad}\r\n />\r\n </div>\r\n <div\r\n className={classes.image}\r\n style={\r\n {\r\n position: \"relative\",\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'pointer',\r\n ...image ?\r\n {\r\n backgroundImage: `url(\"${image}\")`,\r\n ...backSize,\r\n } : {\r\n background: customApp('AvatarBackground'),\r\n },\r\n }\r\n }\r\n onClick={() => {\r\n if (!props.clickChannel)\r\n window.open(data.link, \"_blank\")\r\n }}\r\n >\r\n {!image &&\r\n <div style={{ marginTop: \"calc(-48% - 10px)\", display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n <Icon icon={BrightAndConnectedIco} size=\"39px\" color={customApp(\"textColor\")} />\r\n </div>\r\n }\r\n {!props.clickChannel &&\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 7,\r\n right: 7\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__sendToRadar`, '*')}\r\n color={customApp('menu')}\r\n icon={'settings_input_antenna'}\r\n onClick={() => { sendToInsight() }}\r\n size={'25px'}\r\n />\r\n </div>\r\n }\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 0,\r\n backgroundColor: \"rgba(0,0,0,0.5)\",\r\n padding: \"3px 7px\",\r\n color: \"white\",\r\n fontSize: 11\r\n }}\r\n >\r\n {Moment(data.isoDate ? data.isoDate : data.pubDate).format('DD/MM/YYYY HH:MM')}\r\n </div>\r\n </div>\r\n\r\n <HtmlTooltip\r\n // arrow\r\n title={(\r\n <React.Fragment>\r\n {!props.clickChannel &&\r\n <a href={data.link} target=\"_blank\" rel=\"noopener noreferrer\"\r\n style={{ fontSize: \"14px\", fontWeight: \"bold\" }}>\r\n {translate(\"$__clickHereToReadNews\", 1)}\r\n </a>\r\n }\r\n </React.Fragment>\r\n )\r\n } >\r\n <div className={classes.infos}\r\n onClick={() => {\r\n if (!props.clickChannel)\r\n window.open(data.link, \"_blank\")\r\n }}\r\n >\r\n <div className={classes.linkTitle}>\r\n <div\r\n dangerouslySetInnerHTML={{ __html: data && data.title && isValidUTF8(data.title) ? data.title : data.title ? utf8(data.title) : `` }}>\r\n </div>\r\n </div>\r\n <div\r\n dangerouslySetInnerHTML={{ __html: data.contentSnippet && isValidUTF8(data.contentSnippet) ? data.contentSnippet : data.contentSnippet ? utf8(data.contentSnippet) : `` }}\r\n className={classes.linkContent}\r\n />\r\n\r\n <div className={classes.feedFooter}>\r\n <div className={classes.feedLink} >\r\n {!props.clickChannel &&\r\n <a href={data.link} target=\"_blank\" rel=\"noopener noreferrer\" style={{ fontSize: \"14px\", fontWeight: \"bold\" }}>\r\n {translate(\"$__readMore\", 1)}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </HtmlTooltip>\r\n <div style={{ top: -30 }}>\r\n <CardTags\r\n options={props._tags}\r\n // expanded={}\r\n />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = store => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from 'react'\r\nimport Moment from \"moment-timezone\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/BrightAndConnected-card\";\r\nimport { translate, customApp } from 'functions';\r\n\r\nimport BrightAndConnectedIco from \"assets/icons/BrigthAndConnected\";\r\n\r\nfunction Component(props) {\r\n const { data, classes } = props;\r\n\r\n return (\r\n <div className={classes.feed}\r\n onClick={props.clickChannel ? () => props.clickChannel() : null}\r\n >\r\n <div className={classes.image}\r\n style={\r\n {\r\n background: customApp('AvatarBackground'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n }\r\n >\r\n <div style={{ marginTop: \"calc(-48% + 0px)\", display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n <Icon icon={BrightAndConnectedIco} size=\"47px\" color=\"rgba(250,250,250,0.77)\" />\r\n\r\n {/* <img alt=\"MACHEN_IMAGE\"src={BrightAndConnectedIco} style={{ width: '25%' }} /> */}\r\n </div>\r\n </div>\r\n <div className={classes.infos}>\r\n <div className={classes.linkTitle}>\r\n {translate('$__attention')}\r\n </div>\r\n <div\r\n className={classes.linkContent}\r\n >\r\n {translate('$__weHaveNotFoundYetLink')}\r\n </div>\r\n <div className={classes.feedFooter}>\r\n <div className={classes.feedDate}>\r\n {Moment(data.created_at && data.created_at.low ? data.created_at.low : data.created_at).format('DD/MM/YYYY HH:MM')}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Component)","//CORE\r\nimport React from \"react\"\r\nimport CryptoJS from \"crypto-js\"\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 history from \"store/history\"\r\nimport reduxStore from \"store\"\r\n\r\n//COMPONENTS\r\nimport Badge from \"components/Icon/Badge\"\r\nimport Card from \"./card\"\r\nimport HeaderWithIcon from \"components/Header/card\"\r\n\r\n//DEPENDENCIES\r\nimport FeedFakeCard from \"./FeedFakeCard\"\r\n\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/BrightAndConnected-card.js\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\nimport {\r\n translate,\r\n customApp,\r\n getAppAccess,\r\n appAlert\r\n} from \"functions/\"\r\n\r\nfunction Component(props) {\r\n const { db, session } = reduxStore.getState()\r\n let data = props.data\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n if (!data)\r\n return null\r\n\r\n const setTitle = async (title) => {\r\n let id = hashs[0] && hashs[0].length === 36 ? data._parent[hashs[0]].idRel : data._parent[session.account].idRel\r\n if (\r\n data._parent\r\n && Object.keys(data._parent).length === 1\r\n && Object.keys(data._parent).filter(caid => reduxStore.getState().db.cards[caid]).length === 0\r\n && data._parent[Object.keys(data._parent)[0]].idRel\r\n ) {\r\n id = data._parent[Object.keys(data._parent)[0]].idRel\r\n }\r\n api.put(\"/rel/update\", {\r\n _id: id,\r\n customTitle: title\r\n })\r\n let feeds = reduxStore.getState().db.feeds\r\n\r\n if (\r\n data._parent\r\n && Object.keys(data._parent).length === 1\r\n && Object.keys(data._parent).filter(caid => reduxStore.getState().db.cards[caid]).length === 0\r\n && data._parent[Object.keys(data._parent)[0]].idRel\r\n ) {\r\n feeds[data._id] = {\r\n ...feeds[data._id],\r\n _parent: {\r\n ...feeds[data._id]._parent,\r\n [Object.keys(data._parent)[0]]: {\r\n ...feeds[data._id]._parent[Object.keys(data._parent)[0]],\r\n customTitle: title,\r\n }\r\n }\r\n }\r\n } else {\r\n feeds[data._id] = {\r\n ...feeds[data._id],\r\n _parent: {\r\n ...feeds[data._id]._parent,\r\n [hashs[0]]: {\r\n ...feeds[data._id]._parent[hashs[0]],\r\n customTitle: title,\r\n }\r\n }\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n feeds: feeds\r\n })\r\n if (props.onChange)\r\n props.onChange()\r\n }\r\n const deleteChannel = async (pid) => {\r\n appAlert({\r\n message: translate(\"$__confirmDeleteThis\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n confirmDeleteChannel(pid)\r\n }\r\n })\r\n }\r\n const confirmDeleteChannel = async (pid) => {\r\n let deleteId = pid ? pid : hashs[0]\r\n api.delete(`feed/unfollow/${deleteId}__${data._id}`)\r\n\r\n let feeds = {\r\n ...reduxStore.getState().db.feeds\r\n }\r\n if (feeds[data._id] && feeds[data._id]._parent && feeds[data._id]._parent[deleteId]) {\r\n delete feeds[data._id]._parent[deleteId]\r\n }\r\n\r\n\r\n if (pid && feeds[data._id]) {\r\n delete feeds[data._id]\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n feeds: {\r\n ...feeds\r\n }\r\n })\r\n\r\n if (props.onChange)\r\n setTimeout(() => {\r\n props.onChange()\r\n }, 400)\r\n }\r\n\r\n const changeVisible = async (parent, visible = false) => {\r\n api.put(`feed/visible/`, {\r\n feedId: data._id,\r\n visible: data && data.hide ? false : true,\r\n })\r\n let feed = data\r\n feed = {\r\n ...feed,\r\n hide: data && data.hide ? false : true,\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n feeds: {\r\n ...db.feeds,\r\n [data._id]: {\r\n ...db.feeds[data._id],\r\n ...feed\r\n }\r\n }\r\n })\r\n // }\r\n }\r\n\r\n\r\n const ConnectedIn = () => {\r\n if (props.data._parent) {\r\n\r\n let options = []\r\n\r\n Object.keys(props.data._parent).forEach(pid => {\r\n if (reduxStore.getState().db.cards[pid] && reduxStore.getState().db.cards[pid]._users && reduxStore.getState().db.cards[pid]._users[session._id]) {\r\n let parent = reduxStore.getState().db.cards[pid]\r\n options = [...options, {\r\n name: parent.name,\r\n icon: \"view_comfy\",\r\n render: (\r\n <React.Fragment>\r\n <div style={{ marginRight: \"10px\", width: \"100%\", display: \"flex\", color: customApp(\"color\") }}>\r\n <div style={{ width: \"33px\" }}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n icon={parent.type && db && db.dataType ? db.dataType.filter(a => a.name === parent.type)[0].icon : \"topic\"}\r\n title={`$__${parent.type}`}\r\n size=\"22px\"\r\n color={customApp(\"menu\")}\r\n />\r\n </div>\r\n <div style={{ width: \"calc(100% - 7px)\", display: \"flex\", whiteSpace: \"nowrap\", textOverflow: \"ellipsis\", overflow: \"hidden\" }}>\r\n {parent.name}\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n ),\r\n onClick: () => {\r\n history.push(`sp#${pid}/bright-and-connected`)\r\n }\r\n }\r\n ]\r\n } else if (Object.keys(props.data._parent).length === 1) {\r\n options = [...options, {\r\n name: translate(\"$__globalAccount\"),\r\n icon: \"rss_feed\",\r\n render: (\r\n <React.Fragment>\r\n <div style={{ marginRight: \"10px\", width: \"100%\", display: \"flex\" }}>\r\n <div style={{ width: \"33px\" }}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n icon={\"rss_feed\"}\r\n title={translate(`$__globalAccount`)}\r\n size=\"22px\"\r\n color={customApp(\"menu\")}\r\n />\r\n </div>\r\n <div style={{ width: \"calc(100% - 7px)\", display: \"flex\", whiteSpace: \"nowrap\", textOverflow: \"ellipsis\", overflow: \"hidden\" }}>\r\n {translate(`$__globalAccount}`)}\r\n </div>\r\n <div style={{ width: \"16px\" }}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n icon={\"delete_forever\"}\r\n title={translate(\"$__delete\")}\r\n size=\"22px\"\r\n color={\"red\"}\r\n onClick={() => {\r\n deleteChannel(pid)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n ),\r\n onClick: () => {\r\n deleteChannel(pid)\r\n }\r\n }\r\n ]\r\n }\r\n })\r\n return options\r\n }\r\n }\r\n\r\n if (data._parent)\r\n Object.keys(data._parent).forEach(a => {\r\n if (hashs[0] && hashs[0].length === 36 && hashs[0] === a) {\r\n data.customTitle = data._parent[a].customTitle\r\n } else if (Object.keys(data._parent).length > 0) {\r\n data.customTitle = data._parent[Object.keys(data._parent)[0]].customTitle\r\n }\r\n })\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n height: 'auto',\r\n cursor: 'pointer',\r\n width: \"100%\"\r\n }}\r\n >\r\n\r\n <HeaderWithIcon\r\n title={data.customTitle ? data.customTitle : data.name}\r\n icon={'chrome_reader_mode'}\r\n fontSize='20px'\r\n onEdit={(text, id) => setTitle(text)}\r\n color={customApp(\"color\")}\r\n editable={\r\n (\r\n (\r\n\r\n hashs[0] && hashs[0].length === 36 && AppAccess && AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n ||\r\n (\r\n data._parent\r\n && Object.keys(data._parent).length === 1\r\n && Object.keys(data._parent).filter(caid => reduxStore.getState().db.cards[caid]).length === 0\r\n )\r\n )\r\n ? true\r\n : false\r\n }\r\n moreButton={true}\r\n {...(hashs[0]\r\n && hashs[0] === 'tab'\r\n && AppAccess && AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n ?\r\n {\r\n ...data._parent && Object.keys(data._parent).length > 0 && {\r\n options: [\r\n ...[{\r\n name: data.hide ? translate(\"$__folowRSS\") : translate(\"$__hideRSS\"),\r\n icon: data.hide ? \"visibility\" : \"visibility_off\",\r\n onClick: () => {\r\n changeVisible()\r\n }\r\n },\r\n\r\n ],\r\n ...AppAccess && AppAccess.feed && (\r\n AppAccess.feedAdmin\r\n || AppAccess.feedModerate\r\n ) ?\r\n [{\r\n name: translate(\"$__edit\"),\r\n icon: 'settings_suggest',\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: 'feeds',\r\n id: data._id,\r\n module: \"feedEdit\",\r\n activeModule: \"feedEdit\",\r\n data: {\r\n ...data,\r\n _lock: true,\r\n _admin: props.admin ? true : false\r\n },\r\n })\r\n }\r\n }] : [],\r\n ...ConnectedIn()\r\n ]\r\n }\r\n } : (AppAccess && AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )) ? {\r\n options: [\r\n {\r\n name: translate(\"$__deleteRSS\"),\r\n icon: \"delete_forever\",\r\n onClick: () => {\r\n deleteChannel()\r\n }\r\n }\r\n ]\r\n } : {}}\r\n />\r\n <div\r\n style={{\r\n padding: '0',\r\n display: 'flex',\r\n marginBottom: '15px',\r\n flexFlow: 'wrap',\r\n marginTop: '15px',\r\n }}\r\n >\r\n {data.feed && Object.keys(data.feed).length > 0 ?\r\n Object.keys(data.feed).sort((a, b) => {\r\n if (data.feed[a].isoDate && data.feed[b].isoDate && data.feed[a].isoDate < data.feed[b].isoDate)\r\n return 1\r\n return -1\r\n })\r\n .filter((lk, ii) => {\r\n if (data)\r\n if (ii === 0)\r\n return true\r\n return false\r\n })\r\n .map((lk) => {\r\n let link = data.feed[lk]\r\n let id = CryptoJS.MD5(link.link)\r\n return (\r\n <Card\r\n key={id}\r\n data={link}\r\n _tags={data._tags}\r\n clickChannel={() => {\r\n history.push(`${window.location.pathname}${window.location.hash}/${data._id}`)\r\n }}\r\n />\r\n )\r\n })\r\n :\r\n <FeedFakeCard\r\n data={data}\r\n clickChannel={() => {\r\n history.push(`${window.location.pathname}${window.location.hash}/${data._id}`)\r\n }}\r\n />\r\n }\r\n </div>\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = store => ({\r\n store\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))\r\n","//CORE\r\nimport React from \"react\"\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 Card from \"./card\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport SkeletonCard from \"./skeletonCard\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\nimport {\r\n translate,\r\n appAlert\r\n} from \"functions/\"\r\nimport apims from \"apims\"\r\n\r\n\r\nfunction ListLinks(props) {\r\n const { data } = props\r\n const { db } = reduxStore.getState()\r\n const [ended, setEnded] = React.useState(false)\r\n const [hashs, setHashs] = React.useState(window.location.hash.split(\"/\"))\r\n const [links, setLinks] = React.useState([])\r\n const [loading, setLoading] = React.useState(true)\r\n\r\n const refs = React.useRef({})\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n refs.current = {\r\n loading: false\r\n }\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n if (JSON.stringify(Nhashs) !== JSON.stringify(hashs)) {\r\n setHashs(Nhashs)\r\n }\r\n setLoading(true)\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (hashs.length > 0 && mounted.current) {\r\n loadLinks()\r\n if (hashs[2] && hashs[2].length !== 36) {\r\n setLoading(true)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [hashs])\r\n\r\n React.useEffect(() => {\r\n if (mounted.current)\r\n setLoading(false)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [links])\r\n\r\n const loadLinks = async () => {\r\n if (!ended && !refs.current.loading) {\r\n refs.current = {\r\n loading: true\r\n }\r\n if (mounted.current)\r\n setLoading(true)\r\n const response = await apims.post(\"/Feed_Links_V2\", {\r\n ids: hashs[2] && hashs[2].length ? hashs[2] : null,\r\n skip: Object.keys(links).length,\r\n limit: 21\r\n })\r\n\r\n let loadFeeds = Array.from(links)\r\n if (response && response.data) {\r\n response.data.forEach(lk => {\r\n if (loadFeeds.filter(fil => fil.link === lk.link).length === 0)\r\n loadFeeds.push(lk)\r\n })\r\n if (mounted.current)\r\n setLinks(loadFeeds)\r\n }\r\n if (response.data && response.data.length === 0) {\r\n if (mounted.current)\r\n setEnded(true)\r\n }\r\n refs.current = {\r\n loading: false\r\n }\r\n }\r\n }\r\n\r\n const setTitle = async (title) => {\r\n api.put(\"/rel/update\", {\r\n _id: data.idRel,\r\n customTitle: title\r\n })\r\n let feeds = db.cards[hashs[0].replace(\"#\", \"\")]._feeds\r\n feeds[data._id] = {\r\n ...feeds[data._id],\r\n customTitle: title,\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n [hashs[0].replace(\"#\", \"\")]: {\r\n ...db.cards[hashs[0].replace(\"#\", \"\")],\r\n _feeds: feeds,\r\n }\r\n }\r\n });\r\n }\r\n const deleteChannel = async (parent) => {\r\n window.history.back()\r\n let idPlan = parent.replace(\"#\", \"\")\r\n api.delete(`feed/unfollow/${idPlan}__${data._id}`)\r\n let feeds = db.cards[idPlan]._feeds\r\n delete feeds[data._id]\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n [idPlan]: {\r\n ...db.cards[idPlan],\r\n _feeds: feeds,\r\n }\r\n }\r\n });\r\n }\r\n\r\n const scrollFunction = (e) => {\r\n\r\n var scrollDiv = document.getElementById(`linkList`);\r\n\r\n if (!loading && scrollDiv.scrollTop + window.innerHeight + 400 > scrollDiv.scrollHeight && !props.horizontal)\r\n loadLinks()\r\n }\r\n\r\n const RenderSkeleton = () => {\r\n let rows = []\r\n for (var i = 0; i < 21; i++) {\r\n rows.push(<GridItem\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n key={`sk_${i}`}\r\n >\r\n <SkeletonCard />\r\n </GridItem>)\r\n }\r\n return <React.Fragment>{rows}</React.Fragment>\r\n }\r\n\r\n return (\r\n <div>\r\n {data && (data.customTitle || data.name) &&\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n height: 33\r\n }}>\r\n <div style={{ position: \"relative\", width: \"100%\", float: \"left\", marginBottom: \"15px\", display: \"flex\" }}>\r\n <IconButton icon=\"undo\" text={translate(\"$__back\", \"*\")} onClick={() => window.history.back()} />\r\n {hashs[0] && hashs[1] === \"bright-and-connected\" && hashs[2] &&\r\n <IconButton icon=\"delete_sweep\" text={translate(\"$__removeChannel\", \"*\")}\r\n onClick={\r\n () => {\r\n appAlert({\r\n message: translate(\"$__confirmRemoveChannel\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n deleteChannel(hashs[0])\r\n }\r\n })\r\n }\r\n }\r\n />\r\n }\r\n </div>\r\n <HeaderWithIcon\r\n title={`${data.customTitle ? data.customTitle : data.name}`}\r\n icon={\"chrome_reader_mode\"}\r\n fontSize=\"20px\"\r\n onEdit={(text, id) => setTitle(text)}\r\n editable\r\n />\r\n </div>\r\n }\r\n\r\n <div style={{\r\n ...!props.horizontal ? {\r\n position: \"absolute\",\r\n top: data && (data.customTitle || data.name) ? 50 : 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n } : {\r\n position: \"relative\",\r\n width: \"100%\",\r\n },\r\n padding: \"0px 15px\",\r\n overflow: \"auto\"\r\n }}\r\n id={\"linkList\"}\r\n onScroll={(e) => {\r\n scrollFunction(e)\r\n }}\r\n >\r\n <GridContainer\r\n style={{\r\n ...props.horizontal ? {\r\n overflowX: \"auto\",\r\n flexFlow: \"row\",\r\n display: \"-webkit-inline-box\"\r\n } : {}\r\n }}\r\n >\r\n {links.filter((l, li) => !props.max || (props.max && (li < props.max))).sort((a, b) => {\r\n if (a.isoDate && b.isoDate && a.isoDate < b.isoDate)\r\n return 1\r\n if (a.isoDate && b.isoDate && a.isoDate > b.isoDate)\r\n return -1\r\n return 0\r\n }).map(lk => {\r\n return (\r\n <GridItem\r\n key={lk._id}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <Card db=\"cards\" data={lk} />\r\n </GridItem>\r\n )\r\n })}\r\n {!ended && loading ?\r\n <RenderSkeleton />\r\n : <React.Fragment></React.Fragment>}\r\n </GridContainer>\r\n </div>\r\n </div >\r\n )\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(ListLinks)\r\n","//FUNCTIONS\r\nconst style = theme => ({\r\n\r\n})\r\n\r\nexport default style;","import React from \"react\"\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 Channel from \"components/BrightAndConnected/channel\"\r\nimport ListLinks from \"components/BrightAndConnected/listLinks\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\n\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/BrightAndConnected.js\"\r\n\r\n//FUNCTIONS\r\nimport { loadFeeds } from \"functions/feeds\"\r\n\r\nfunction BrightAndConnectedFeed(props) {\r\n const { search, session } = reduxStore.getState()\r\n const [loading, setLoading] = React.useState(true)\r\n const [feeds, setFeeds] = React.useState({})\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n React.useEffect(() => {\r\n iniFeeds()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.store.feeds])\r\n\r\n React.useEffect(() => {\r\n ini()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const ini = async () => {\r\n setLoading(true)\r\n if (hashs[1] === 'hideFeeds'\r\n // && Object.keys(reduxStore.getState().db.feeds).filter(a => reduxStore.getState().db.feeds[a].hide).length === 0\r\n ) {\r\n const loadData = await loadFeeds({ ...props, fnIdentification: 'Views/BrightAndConnected/Feeds -- iniFeeds()' }, { showHidden: true })\r\n if (loadData) {\r\n iniFeeds()\r\n }\r\n } else if (Object.keys(reduxStore.getState().db.feeds).filter(a => !reduxStore.getState().db.feeds[a].hide).length === 0) {\r\n const loadData = await loadFeeds({ ...props, fnIdentification: 'Views/BrightAndConnected/Feeds -- iniFeeds()' })\r\n if (loadData)\r\n iniFeeds()\r\n } else {\r\n iniFeeds()\r\n }\r\n }\r\n\r\n const iniFeeds = () => {\r\n let aFeeds = {}\r\n\r\n if (Object.keys(reduxStore.getState().db.feeds).length > 0)\r\n aFeeds = {\r\n ...aFeeds,\r\n ...reduxStore.getState().db.feeds,\r\n }\r\n\r\n let nfeeds = {}\r\n Object.keys(aFeeds).filter(a =>\r\n (\r\n aFeeds[a] && aFeeds[a].name && aFeeds[a].name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (aFeeds[a].customTitle && aFeeds[a].customTitle.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (aFeeds[a].customDescription && aFeeds[a].customDescription.toLowerCase().indexOf(search.text.toLowerCase()) > -1\r\n )\r\n ).forEach(a => {\r\n if (Object.keys(search.plans.selected).length > 0 && Object.keys(search.plans.selected).map(sp => search.plans.selected[sp] && aFeeds[a]._parent[sp]).length > 0) {\r\n nfeeds = {\r\n ...nfeeds,\r\n [a]: aFeeds[a]\r\n }\r\n } else if (Object.keys(search.plans.selected).length === 0) {\r\n nfeeds = {\r\n ...nfeeds,\r\n [a]: aFeeds[a]\r\n }\r\n }\r\n })\r\n setFeeds(nfeeds)\r\n setLoading(false)\r\n }\r\n\r\n\r\n\r\n if (loading)\r\n return (\r\n <div style={{ position: \"absolute\", top: '0px', bottom: 0, left: 0, right: 0 }}>\r\n <LinearProgress />\r\n </div>\r\n )\r\n\r\n if (hashs[2] && hashs[2].length === 36)\r\n return (\r\n <div>\r\n <ListLinks follow />\r\n </div>\r\n )\r\n\r\n return (\r\n <div style={{\r\n width: 'calc(100% - 20px)',\r\n position: 'relative',\r\n display: 'flex'\r\n }}>\r\n <GridContainer>\r\n {feeds\r\n && Object.keys(feeds).length > 0\r\n && Object.keys(feeds)\r\n .filter(a => {\r\n if (\r\n hashs[0].length === 36\r\n && reduxStore.getState().db.cards[hashs[0]]\r\n && feeds[a]._parent\r\n && Object.keys(feeds[a]._parent).length > 0\r\n && feeds[a]._parent[hashs[0]]\r\n ) {\r\n return true\r\n }\r\n if (hashs[0] === 'tab') {\r\n let hide = false\r\n if (feeds[a].hide) {\r\n hide = true\r\n }\r\n if (!props.showHidden && !hide)\r\n return true\r\n if (props.showHidden && hide)\r\n return true\r\n }\r\n return false\r\n })\r\n .sort((a, b) => {\r\n let nameA = feeds[a].customTitle ? feeds[a].customTitle.toLowerCase().trim() : feeds[a].name.toLowerCase().trim()\r\n let nameB = feeds[b].customTitle ? feeds[b].customTitle.toLowerCase().trim() : feeds[b].name.toLowerCase().trim()\r\n\r\n if (hashs[0] && hashs[0].length !== 36) {\r\n if (session && session.account && feeds[a]._parent && feeds[a]._parent[session.account] && feeds[a]._parent[session.account].customTitle)\r\n nameA = feeds[a]._parent[session.account].customTitle.toLowerCase().trim()\r\n\r\n if (session && session.account && feeds[b]._parent && feeds[b]._parent[session.account] && feeds[b]._parent[session.account].customTitle)\r\n nameB = feeds[b]._parent[session.account].customTitle.toLowerCase().trim()\r\n }\r\n\r\n if (nameA < nameB) {\r\n return -1\r\n } else if (nameA > nameB) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n ).map((f, i) => {\r\n let feed = feeds[f]\r\n return (\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n key={f}\r\n >\r\n <Channel data={feed} follow onChange={() => { iniFeeds() }} />\r\n </GridItem>\r\n )\r\n })\r\n }\r\n\r\n </GridContainer>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n store: {\r\n feeds: store.db.feeds\r\n }\r\n }\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)(withStyles(styles)(BrightAndConnectedFeed))","import React from \"react\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//COMPONENTS\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp,\r\n} from \"functions/\"\r\n\r\n//IMAGES\r\nimport defaultAvatar from \"assets/img/fundo-sonne.png\"\r\n\r\nconst useStyles = makeStyles({\r\n users: {\r\n position: 'relative',\r\n bottom: '0px',\r\n right: '2px',\r\n fontSize: '10px',\r\n '& .MuiAvatarGroup-root': {\r\n justifyContent: 'flex-end',\r\n },\r\n '& .MuiAvatar-root': {\r\n width: '25px',\r\n height: '25px',\r\n fontSize: '10px',\r\n }\r\n }\r\n});\r\n\r\nconst Component = (props) => {\r\n const { session, functions } = reduxStore.getState();\r\n const { socket } = functions;\r\n const [data, setData] = React.useState(props.data)\r\n const classes = useStyles();\r\n\r\n React.useEffect(() => {\r\n setData(props.data)\r\n }, [props.data])\r\n\r\n const reactThis = async (react, d) => {\r\n socket.emit(\"data\", {\r\n module: \"social\",\r\n method: \"post\",\r\n action: \"interact\"\r\n }, {\r\n react: react,\r\n user: session._id,\r\n nodeId: props.data._id,\r\n message: props.data._id,\r\n delete: d\r\n })\r\n\r\n let newData = data\r\n if (newData && newData._reactions && Object.keys(newData._reactions).length > 0)\r\n Object.keys(newData._reactions).filter(r => r !== react).forEach(r => {\r\n if (newData._reactions[r][session._id])\r\n delete newData._reactions[r][session._id]\r\n })\r\n\r\n if (d && data && data._reactions && data._reactions[react] && data._reactions[react][session._id]) {\r\n let newData = data\r\n delete newData._reactions[react][session._id]\r\n setData(newData)\r\n } else {\r\n setData({\r\n ...data,\r\n _reactions: {\r\n ...data._reactions,\r\n [react]: {\r\n [session._id]: {\r\n ...session.displayName ? { displayName: session.displayName } : {},\r\n ...session.name ? { name: session.name } : {},\r\n ...session.image ? { image: session.image } : {},\r\n reactDate: { low: moment().tz('America/Sao_Paulo').unix('X') }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n const ReactionComp = ({ react, color, primaryIcon, secondaryIcon }) => {\r\n if (props.hideDisables\r\n && data && react\r\n && data._reactions\r\n &&\r\n (\r\n !data._reactions[react]\r\n || (\r\n data._reactions[react]\r\n && Object.keys(data._reactions[react]).length === 0\r\n )\r\n )\r\n )\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <IconButton\r\n icon={data._reactions && data._reactions[react] && data._reactions[react][session._id] ? primaryIcon : secondaryIcon ? secondaryIcon : primaryIcon}\r\n iconColor={data._reactions && data._reactions[react] && data._reactions[react][session._id] ? color ? color : customApp(\"menu\") : \"lightgray\"}\r\n size={\"18px\"}\r\n onClick={() => {\r\n reactThis(react, data._reactions && data._reactions[react] && data._reactions[react][session._id] ? true : false)\r\n }}\r\n title={data._reactions && data._reactions[react] && Object.keys(data._reactions[react]).length > 0 ?\r\n <React.Fragment>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n paddingBottom: 3,\r\n borderBottom: \"1px solid lightgray\",\r\n marginBottom: \"7px\",\r\n }}>{translate(`$__${react}`, 1)}</div>\r\n <div className={classes.users}>\r\n {Object.keys(data._reactions[react])\r\n .sort((a, b) => {\r\n if (\r\n data._reactions[react][a].reactDate\r\n && String(data._reactions[react][a].reactDate.low)\r\n && data._reactions[react][b].reactDate\r\n && String(data._reactions[react][b].reactDate.low)\r\n && parseInt(data._reactions[react][a].reactDate.low) < parseInt(data._reactions[react][b].reactDate.low)\r\n ) {\r\n return -1\r\n } else if (\r\n data._reactions[react][a].reactDate\r\n && String(data._reactions[react][a].reactDate.low)\r\n && data._reactions[react][b].reactDate\r\n && String(data._reactions[react][b].reactDate.low)\r\n && parseInt(data._reactions[react][a].reactDate.low) > parseInt(data._reactions[react][b].reactDate.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .map((a, i) => {\r\n return (\r\n <div key={a} style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", }}>\r\n <Avatar alt={data._reactions[react][a].name} src={data._reactions[react][a].image || defaultAvatar} />\r\n <span style={{ paddingLeft: \"7px\" }}>\r\n {data._reactions[react][a].displayName ? data._reactions[react][a].displayName : data._reactions[react][a].name}{data._reactions[react][a].reactDate && data._reactions[react][a].reactDate.low && ` (${moment(data._reactions[react][a].reactDate.low * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")})`}\r\n </span>\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n </React.Fragment>\r\n :\r\n translate(`$__${react}`, 1)\r\n }\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n minWidth: \"fit-content\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <ReactionComp react=\"like\" primaryIcon=\"thumb_up\" secondaryIcon=\"thumb_up_off_alt\" />\r\n <ReactionComp react=\"nolike\" primaryIcon=\"thumb_down\" secondaryIcon=\"thumb_down_off_alt\" />\r\n <ReactionComp react=\"love\" primaryIcon=\"favorite\" secondaryIcon=\"favorite_border\" color=\"red\" />\r\n <ReactionComp react=\"approve\" primaryIcon=\"verified\" color=\"green\" />\r\n <ReactionComp react=\"attention\" primaryIcon=\"report_problem\" color=\"red\" />\r\n {props.children &&\r\n <React.Fragment>\r\n {props.children}\r\n </React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n\r\n );\r\n}\r\n\r\nexport default Component","//CORE\r\nimport React from \"react\"\r\nimport Moment from \"moment-timezone\"\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 Reactions from \"components/Reactions_V2\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/BrightAndConnected-card.js\"\r\nimport { translate, customApp } from \"functions\"\r\n\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const [data, setData] = React.useState({})\r\n\r\n let cardRef = React.useRef({})\r\n\r\n React.useEffect(() => {\r\n if (cardRef.current) {\r\n if (props.onResize) {\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n let newSize = cardRef.current.clientHeight\r\n props.onResize(newSize)\r\n });\r\n resizeObserver.observe(cardRef.current);\r\n return () => resizeObserver.disconnect(); // clean up \r\n }\r\n }\r\n return () => {\r\n\r\n }\r\n // eslint-disable-next-line\r\n }, [cardRef]);\r\n\r\n React.useEffect(() => {\r\n setData(props.data)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const sendToInsight = () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: \"new\",\r\n activeModule: \"cardEdit\",\r\n db: \"cards\",\r\n data: {\r\n _id: \"new\",\r\n type: \"link\",\r\n name: data.title,\r\n description: data.contentSnippet,\r\n pubDate: data.isoDate ? data.isoDate : data.pubDate,\r\n image: data.img,\r\n url: data.link,\r\n }\r\n })\r\n }\r\n return (\r\n <div\r\n ref={cardRef}\r\n className={classes.feed}\r\n style={{ cursor: \"pointer\" }}\r\n onClick={props.onClick ? () => props.onClick() : null}\r\n >\r\n {data && data.img &&\r\n <div\r\n style={\r\n {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }\r\n }\r\n >\r\n <img\r\n alt=\"MACHEN_IMAGE\"\r\n src={data.img}\r\n style={{ width: \"100%\" }}\r\n onError={() => {\r\n setData({\r\n ...data,\r\n img: null\r\n })\r\n }}\r\n />\r\n </div>\r\n }\r\n <div className={classes.infos}>\r\n <div className={classes.linkTitle}\r\n dangerouslySetInnerHTML={{ __html: data.title }}>\r\n </div>\r\n\r\n <div\r\n dangerouslySetInnerHTML={{ __html: data.contentSnippet }}\r\n className={classes.linkContent}\r\n />\r\n <div className={classes.feedFooter} onClick={(e) => { e.stopPropagation() }}>\r\n <div className={classes.feedDate}>{Moment(data.isoDate ? data.isoDate : data.pubDate).format(\"DD/MM/YYYY HH:MM\")}</div>\r\n {data.title && data.title.indexOf('Violet ganham') > -1 && console.log(data)}\r\n <Reactions data={data}>\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <IconButton\r\n icon={\"settings_input_antenna\"}\r\n title={translate(`$__sendToRadar`, 1)}\r\n iconColor={customApp(\"menu\")}\r\n size={\"18px\"}\r\n onClick={() => {\r\n sendToInsight()\r\n }}\r\n />\r\n </div>\r\n </Reactions>\r\n </div>\r\n {/* {!props.hideTimeline &&\r\n <div className={classes.feedFooter} onClick={(e) => { e.stopPropagation() }}>\r\n <Timeline data={data} />\r\n </div>\r\n } */}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n//COMPONENTS\r\nimport Card from \"components/BrightAndConnected/socialCard\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/BrightAndConnected-card.js\"\r\n\r\n//FUNCTIONS\r\nimport apims from \"apims\"\r\n\r\n\r\nfunction BrightAndConnectHomeView(props) {\r\n const { data } = props\r\n const limit = 7\r\n const [hashs, setHashs] = React.useState([])\r\n const [links, setLinks] = React.useState([])\r\n const [loading, setLoading] = React.useState(true)\r\n\r\n const mounted = React.useRef(true)\r\n const execRefs = React.useRef({\r\n endLinks: false\r\n })\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n const loadLinks = async () => {\r\n let p = Object.keys(links).length > 0 ? Math.ceil(Object.keys(links).length / limit) + 1 : 0\r\n let l = limit\r\n if (!execRefs.current.endLinks) {\r\n setLoading(true)\r\n try {\r\n const response = await apims.post(\"/Feed_Social_V2\", {\r\n ids: null,\r\n skip: p * l,\r\n limit: l\r\n })\r\n\r\n let loadFeeds = {}\r\n let total = 0\r\n\r\n if (response && response.data && response.data.length > 0) {\r\n response.data.forEach(lk => {\r\n let reactions = {}\r\n if (lk.reactions && lk.reactions.filter(a => a && a.user && a.user._id).length > 0)\r\n lk.reactions.forEach(r => {\r\n reactions = {\r\n ...reactions,\r\n [r.react.type]: {\r\n ...reactions && reactions[r.react.type] ? reactions && reactions[r.react.type] : {},\r\n [r.user._id]: {\r\n ...r.user,\r\n reactDate: r.react.created_at\r\n }\r\n }\r\n }\r\n })\r\n loadFeeds = {\r\n ...loadFeeds,\r\n [lk.link._id]: {\r\n ...lk.link,\r\n _reactions: reactions\r\n }\r\n }\r\n if (lk.total > total)\r\n total = lk.total\r\n })\r\n } else if (response && response.data && response.data.length === 0) {\r\n execRefs.current = {\r\n ...execRefs.current,\r\n endLinks: true\r\n }\r\n }\r\n // setTotal(total)\r\n setLinks({\r\n ...links,\r\n ...loadFeeds,\r\n })\r\n setLoading(false)\r\n } catch (e) {\r\n console.log(e)\r\n setLoading(false)\r\n }\r\n }\r\n return true\r\n }\r\n\r\n React.useEffect(() => {\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n setHashs(Nhashs)\r\n setLoading(true)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n React.useEffect(() => {\r\n if (hashs.length > 0 && mounted.current) {\r\n loadLinks()\r\n if (hashs[2] && hashs[2].length !== 36) {\r\n setLoading(true)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [hashs])\r\n\r\n React.useEffect(() => {\r\n if (mounted.current)\r\n setLoading(false)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [links])// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\r\n\r\n\r\n const scrollFunction = (e) => {\r\n var scrollDiv = document.getElementById(`linkList`);\r\n if (!loading && scrollDiv.scrollHeight - scrollDiv.scrollTop < 2500 && mounted.current) {\r\n loadLinks()\r\n }\r\n }\r\n\r\n return (\r\n <div style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n }}>\r\n <div style={{\r\n position: \"absolute\",\r\n top: data && (data.customTitle || data.name) ? 50 : 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n padding: \"0px 15px\",\r\n overflow: \"auto\"\r\n }}\r\n id={\"linkList\"}\r\n onScroll={(e) => {\r\n scrollFunction(e)\r\n }}\r\n >\r\n <GridContainer>\r\n {Object.keys(links).sort((a, b) => {\r\n if (links[a].isoDate && links[b].isoDate && links[a].isoDate < links[b].isoDate)\r\n return 1\r\n if (links[a].isoDate && links[b].isoDate && links[a].isoDate > links[b].isoDate)\r\n return -1\r\n return 0\r\n }).map(lk => {\r\n return (\r\n <GridContainer\r\n key={lk}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <GridItem\r\n xs={12}\r\n sm={10}\r\n md={8}\r\n lg={6}\r\n xl={6}\r\n >\r\n <Card\r\n db=\"cards\"\r\n data={links[lk]}\r\n onClick={() => { window.open(links[lk].link, \"_blank\") }}\r\n />\r\n </GridItem>\r\n </GridContainer>\r\n )\r\n })}\r\n </GridContainer>\r\n {(loading) &&\r\n <div style={{ position: \"relative\", width: \"100%\" }}>\r\n <LinearProgress />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(withStyles(styles)(BrightAndConnectHomeView))\r\n","//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n//COMPONENTS\r\nimport Card from \"components/BrightAndConnected/socialCard\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\n\r\n\r\n//FUNCTIONS\r\nimport apims from \"apims\"\r\n\r\nfunction BrightAndConnectReadViews(props) {\r\n const { data } = props\r\n const total = 0\r\n const [hashs, setHashs] = React.useState([])\r\n const [links, setLinks] = React.useState([])\r\n const [loading, setLoading] = React.useState(true)\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n if (JSON.stringify(Nhashs) !== JSON.stringify(hashs)) {\r\n setHashs(Nhashs)\r\n }\r\n setLoading(true)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (hashs.length > 0 && mounted.current) {\r\n loadLink()\r\n if (hashs[2] && hashs[2].length !== 36) {\r\n setLoading(true)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [hashs])\r\n\r\n const loadLink = async (p, l) => {\r\n if ((total === 0 || total > Object.keys(links).length)) {\r\n if (mounted.current)\r\n setLoading(true)\r\n try {\r\n const response = await apims.post(\"/Feed_Social\", {\r\n id: hashs[2],\r\n })\r\n\r\n let loadFeeds = {}\r\n if (response && response.data && response.data.links) {\r\n loadFeeds = {\r\n ...loadFeeds,\r\n ...response.data.links\r\n }\r\n if (mounted.current)\r\n setLinks({\r\n ...links,\r\n ...loadFeeds,\r\n })\r\n if (mounted.current)\r\n setLoading(false)\r\n } else {\r\n if (mounted.current)\r\n setLoading(false)\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <div style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n }}>\r\n <div style={{\r\n position: \"absolute\",\r\n top: data && (data.customTitle || data.name) ? 50 : 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n padding: \"0px 15px\",\r\n overflow: \"auto\"\r\n }}\r\n id={\"linkList\"}\r\n >\r\n <GridContainer>\r\n {Object.keys(links).length > 0 ?\r\n Object.keys(links).sort((a, b) => {\r\n if (links[a].isoDate && links[b].isoDate && links[a].isoDate < links[b].isoDate)\r\n return 1\r\n if (links[a].isoDate && links[b].isoDate && links[a].isoDate > links[b].isoDate)\r\n return -1\r\n return 0\r\n }).map(lk => {\r\n return (\r\n <GridContainer\r\n key={lk}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n >\r\n <Card\r\n db=\"cards\"\r\n data={links[lk]}\r\n onClick={() => { window.open(links[lk].link, \"_blank\") }}\r\n />\r\n </GridItem>\r\n </GridContainer>\r\n )\r\n })\r\n :\r\n <GridContainer\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n >\r\n A feed solicitado não pode ser exibido\r\n </GridItem>\r\n </GridContainer>\r\n }\r\n </GridContainer>\r\n {(loading) &&\r\n <div style={{ position: \"relative\", width: \"100%\" }}>\r\n <LinearProgress />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = store => ({\r\n store\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BrightAndConnectReadViews)\r\n","import React from 'react';\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 history from \"store/history\";\r\n\r\n//COMPONENTS\r\nimport CardsLoader from \"components/Card/loader\";\r\nimport FilterHeader from \"components/Filter/header\";\r\n\r\n//DEPENCIES\r\nimport InsightBoards from \"./InsightBoards\";\r\nimport Radar from \"./Radar\";\r\nimport Feeds from \"./Feeds\";\r\nimport Home from \"./Home\";\r\nimport Read from \"./Read\";\r\nimport ListLinks from \"components/BrightAndConnected/listLinks\"\r\n\r\n//FUNCTIONS\r\n\r\nfunction App(props) {\r\n React.useEffect(() => {\r\n console.log(\"StrategyAndPlans\")\r\n return () => {\r\n // return false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n if (!window.location.hash.split('/')[0].replace('#', '')) {\r\n history.push('bright-and-connected#tab/home')\r\n }\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n return (\r\n <div>\r\n {hashs[1]\r\n && (\r\n hashs[1] === 'radar'\r\n || hashs[1] === 'insight-boards'\r\n )\r\n &&\r\n <CardsLoader />\r\n }\r\n {hashs[1] && hashs[1] === 'home' &&\r\n <React.Fragment>\r\n {/* <FilterHeader /> */}\r\n <Home />\r\n </React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === 'read' &&\r\n <React.Fragment>\r\n <FilterHeader />\r\n <Read />\r\n </React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === 'insight-boards' &&\r\n <React.Fragment>\r\n <FilterHeader />\r\n <InsightBoards />\r\n </React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === 'radar' &&\r\n <div style={{ top: 33 }}>\r\n {/* <FilterHeader /> */}\r\n <Radar />\r\n </div>\r\n }\r\n {hashs[1] && (hashs[1] === 'feeds' || hashs[1] === 'bright-and-connected') &&\r\n <React.Fragment>\r\n <FilterHeader />\r\n <Feeds />\r\n </React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === 'hideFeeds' &&\r\n <React.Fragment>\r\n <FilterHeader />\r\n <Feeds showHidden={true} />\r\n </React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === 'allNews' &&\r\n <React.Fragment>\r\n <FilterHeader />\r\n <div style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n }}>\r\n <ListLinks />\r\n </div>\r\n </React.Fragment>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(App);","import { withStyles } from '@material-ui/core/styles';\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\n\r\nconst HtmlTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: 'rgba(0,0,0,0.5) !important',\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n padding: \"5px !important\",\r\n fontSize: theme.typography.pxToRem(12),\r\n border: 'none',\r\n borderRadius: '7px',\r\n boxShadow: '3px 3px 7px 0px rgba(0,0,0,0.7)',\r\n // display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n}))(Tooltip);\r\n\r\nexport default HtmlTooltip","//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions/\"\r\nimport ButtonOptions from \"componentsV3/Buttons\"\r\n\r\nexport default function SelectCardTypes({ options = [], onChange = () => { } }) {\r\n const { db } = reduxStore.getState()\r\n return (\r\n <ButtonOptions\r\n text={translate(\"$__showActivitiesType\")}\r\n icon={\"collections_bookmark\"}\r\n options={[\r\n ...db.type.filter(x => x.calendar).map(x => {\r\n return {\r\n name: translate(`${x.label}`, 1),\r\n icon: x.icon,\r\n iconColor: options.indexOf(x.value) > -1 ? 'lightgray' : customApp('menu'),\r\n color: options.indexOf(x.value) > -1 ? 'lightgray' : customApp('menu'),\r\n onClick: () => {\r\n let types = Array.from(options)\r\n if (types.indexOf(x.value) === -1) {\r\n types.push(x.value)\r\n } else {\r\n types.splice(types.indexOf(x.value), 1)\r\n }\r\n onChange(types)\r\n }\r\n }\r\n }),\r\n {\r\n name: options.length === db.type.filter(xx => xx.calendar).length ? translate(`$__showAll`, 1) : translate(`$__hideAll`, 1),\r\n icon: 'clear_all',\r\n iconColor: options.length !== db.type.filter(xx => xx.calendar).length ? 'lightgray' : customApp('menu'),\r\n color: options.length !== db.type.filter(xx => xx.calendar).length ? 'lightgray' : customApp('menu'),\r\n onClick: () => {\r\n if (options.length === db.type.filter(xx => xx.calendar).length) {\r\n onChange([])\r\n } else {\r\n let types = []\r\n db.type.filter(xx => xx.calendar).forEach(xx => {\r\n types.push(xx.value)\r\n })\r\n onChange(types)\r\n }\r\n }\r\n }\r\n ]}\r\n />\r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Calendar, momentLocalizer } from \"react-big-calendar\"\r\nimport withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop'\r\nimport moment from \"moment\"\r\nimport 'moment/locale/pt-br';\r\nimport HtmlTooltip from \"components/Tooltip/transparent\"\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 ActivityCard from \"components/Card/\";\r\nimport Badge from \"components/Icon/Badge\";\r\nimport Card from \"components/Card/Card\";\r\nimport CardBody from \"components/Card/CardBody\";\r\nimport CardsLoader from \"components/Card/loader\"\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport MoreMenu from \"components/MoreMenu\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate, hexToRgba } from \"functions\";\r\nimport { updateCardData } from \"functions/cards\"\r\n\r\n//STYLES\r\nimport \"assets/css/components/react-big-calendar.css\"\r\nimport \"assets/css/components/react-big-calendar-resizable.css\"\r\nimport SelectCardTypes from \"componentsV3/SelectCardTypes\";\r\n\r\nconst MachenCalendar = withDragAndDrop(Calendar)\r\n//VARIABLES\r\n\r\nconst messages = {\r\n allDay: translate(\"$__allDay\"),\r\n previous: '<',\r\n next: '>',\r\n today: translate(\"$__today\"),\r\n month: translate(\"$__month\"),\r\n week: translate(\"$__week\"),\r\n day: translate(\"$__aday\"),\r\n agenda: translate(\"$__agenda\"),\r\n date: translate(\"$__date\"),\r\n time: translate(\"$__hour\"),\r\n event: translate(\"$__activity\"),\r\n showMore: (total) => `+ (${total}) ${translate(\"$__activities\")}`,\r\n}\r\n\r\nexport let navigate = {\r\n PREVIOUS: 'PREV',\r\n NEXT: 'NEXT',\r\n TODAY: 'TODAY',\r\n DATE: 'DATE',\r\n}\r\n\r\nfunction CustomToolbar(props) {\r\n let { label } = props\r\n\r\n const navigate = action => {\r\n props.onNavigate(action)\r\n }\r\n\r\n return (\r\n <div className=\"rbc-toolbar\">\r\n <span className=\"rbc-btn-group\">\r\n <button type=\"button\"\r\n onClick={() => { navigate('PREV') }} style={{ backgroundColor: customApp('menu'), borderRadius: 0 }}>{translate(\"$__prev\")}</button>\r\n </span>\r\n <span className=\"rbc-toolbar-label\">{label}</span>\r\n <span className=\"rbc-btn-group\">\r\n <button type=\"button\" onClick={() => { navigate('NEXT') }} style={{ backgroundColor: customApp('menu'), borderRadius: 0 }}>{translate(\"$__next\")}</button>\r\n </span>\r\n <span className=\"rbc-btn-group\">\r\n <button type=\"button\" onClick={() => { navigate('TODAY') }} style={{ backgroundColor: customApp('menu'), borderRadius: 0 }}>{translate(\"$__today\")}</button>\r\n </span>\r\n <span className=\"rbc-btn-group\">\r\n <button type=\"button\" onClick={() => { navigate('day') }} style={{ backgroundColor: customApp('menu'), borderRadius: 0 }}>{translate(\"$__day\")}</button>\r\n </span>\r\n <span className=\"rbc-btn-group\">\r\n <button type=\"button\" onClick={() => { navigate('week') }} style={{ backgroundColor: customApp('menu'), borderRadius: 0 }}>{translate(\"$__week\")}</button>\r\n </span>\r\n <span className=\"rbc-btn-group\">\r\n <button type=\"button\" onClick={() => { navigate('month') }} style={{ backgroundColor: customApp('menu'), borderRadius: 0 }}>{translate(\"$__month\")}</button>\r\n </span>\r\n {/* <span className=\"rbc-btn-group\">\r\n <button type=\"button\" onClick={() => { navigate('agenda') }} style={{ backgroundColor: customApp('menu'), borderRadius: 0 }}>{translate(\"$__agenda\")}</button>\r\n </span> */}\r\n </div >\r\n )\r\n}\r\n\r\nfunction CalendarComponent(props) {\r\n const { reduxFunction, search } = props\r\n const { db, session } = reduxStore.getState()\r\n const [events, setEvents] = React.useState([]);\r\n const [view, setView] = React.useState('week')\r\n const [selectedDate, setSelectedDate] = React.useState(moment().toLocaleString())\r\n const [showAllEvents, setShowAllEvents] = React.useState(false)\r\n const [severalDaysActivities, setSeveralDaysActivities] = React.useState(false)\r\n const [disabledTypes, setDisabledTypes] = React.useState([])\r\n\r\n moment.locale(session.language ? session.language.toLowerCase() : 'pt-br', {\r\n week: {\r\n dow: 1\r\n }\r\n });\r\n const localizer = momentLocalizer(moment);\r\n\r\n React.useEffect(() => {\r\n let preffers = session && session.calendarPreffers ? JSON.parse(session.calendarPreffers) : {}\r\n if (preffers.view)\r\n setView(preffers.view)\r\n if (preffers.view)\r\n setShowAllEvents(preffers.showAllEvents)\r\n if (preffers.severalDaysActivities)\r\n setSeveralDaysActivities(preffers.severalDaysActivities)\r\n if (preffers.disabledTypes)\r\n setDisabledTypes(Array.from(preffers.disabledTypes))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n iniCards()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards, search])\r\n\r\n React.useEffect(() => {\r\n iniCards()\r\n saveCalendarPreffers()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [severalDaysActivities, disabledTypes])\r\n\r\n const saveCalendarPreffers = async () => {\r\n let preffers = session.calendarPreffers ? JSON.parse(session.calendarPreffers) : {}\r\n preffers = {\r\n ...preffers,\r\n disabledTypes: Array.from(disabledTypes),\r\n showAllEvents: showAllEvents,\r\n severalDaysActivities: severalDaysActivities,\r\n view: view,\r\n }\r\n\r\n const { socket } = reduxStore.getState().functions\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"preffers\"\r\n }, {\r\n calendarPreffers: JSON.stringify(preffers)\r\n }, data => {\r\n if (data.error)\r\n console.log(\"hideSupportAndAppBanner\", data.error)\r\n })\r\n }\r\n\r\n const iniCards = async () => {\r\n let CalendarEvents = []\r\n Object.keys(reduxStore.getState().db.cards).filter(dt =>\r\n reduxStore.getState().db.cards[dt]\r\n && reduxStore.getState().db.cards[dt]._users\r\n && reduxStore.getState().db.cards[dt]._users[session._id]\r\n &&\r\n (\r\n !reduxStore.getState().db.cards[dt].checklist\r\n || (\r\n reduxStore.getState().db.cards[dt].checklist\r\n && reduxStore.getState().db.cards[dt].showCard\r\n )\r\n )\r\n && (\r\n moment(reduxStore.getState().db.cards[dt].startDate * 1000).isValid()\r\n && moment(reduxStore.getState().db.cards[dt].endDate * 1000).isValid()\r\n )\r\n && (disabledTypes.length === 0\r\n || (\r\n disabledTypes.length > 0\r\n && disabledTypes.indexOf(reduxStore.getState().db.cards[dt].type) === -1\r\n )\r\n )\r\n && reduxStore.getState().db.cards[dt].type !== \"plan\"\r\n && reduxStore.getState().db.cards[dt].type !== \"chatGroup\"\r\n && reduxStore.getState().db.cards[dt].status !== \"completed\"\r\n && !reduxStore.getState().db.cards[dt].deleted\r\n && (\r\n severalDaysActivities\r\n ||\r\n (\r\n !severalDaysActivities\r\n && (\r\n moment(reduxStore.getState().db.cards[dt].startDate * 1000).format('YYYY-MM-DD') === moment(reduxStore.getState().db.cards[dt].endDate * 1000).format('YYYY-MM-DD')\r\n )\r\n )\r\n )\r\n && (\r\n search.tags.length === 0\r\n ||\r\n (\r\n search.tags.length > 0\r\n && reduxStore.getState().db.cards[dt]._tags\r\n && reduxStore.getState().db.cards[dt]._tags.length > 0\r\n && reduxStore.getState().db.cards[dt]._tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n )\r\n )\r\n && (\r\n search.text === \"\"\r\n || (\r\n search.text !== \"\"\r\n && (\r\n reduxStore.getState().db.cards[dt].name.toLowerCase().indexOf(search.text.toLowerCase()) > -1\r\n || (\r\n reduxStore.getState().db.cards[dt].description\r\n && reduxStore.getState().db.cards[dt].description.toLowerCase().indexOf(search.text.toLowerCase()) > -1\r\n )\r\n )\r\n )\r\n )\r\n && search.cards.status[reduxStore.getState().db.cards[dt].status]\r\n && (\r\n search.cards.priority.all\r\n || (\r\n reduxStore.getState().db.cards[dt].priority\r\n && search.cards.priority[reduxStore.getState().db.cards[dt].priority]\r\n )\r\n )\r\n && (\r\n search.cards.risk.all\r\n || (\r\n reduxStore.getState().db.cards[dt].risk\r\n && search.cards.risk[reduxStore.getState().db.cards[dt].risk]\r\n )\r\n )\r\n && (\r\n search.cards.complexity.all\r\n || (\r\n reduxStore.getState().db.cards[dt].complexity\r\n && search.cards.complexity[reduxStore.getState().db.cards[dt].complexity]\r\n )\r\n )\r\n && (\r\n search.cards.impact.all\r\n || (\r\n reduxStore.getState().db.cards[dt].impact\r\n && search.cards.impact[reduxStore.getState().db.cards[dt].impact]\r\n )\r\n )\r\n && (\r\n Object.keys(search.users.selected).length === 0\r\n || (\r\n Object.keys(search.users.selected).length > 0\r\n && Object.keys(reduxStore.getState().db.cards[dt]._users).filter(uf => search.users.selected[uf]).length > 0\r\n )\r\n )\r\n ).forEach(dt => {\r\n let allDay = false\r\n let startDate = moment(reduxStore.getState().db.cards[dt].startDate * 1000).toDate()\r\n let endDate = moment(reduxStore.getState().db.cards[dt].endDate * 1000).toDate()\r\n let diffDate = moment(reduxStore.getState().db.cards[dt].endDate * 1000).unix('x') - moment(reduxStore.getState().db.cards[dt].startDate * 1000).unix('x')\r\n\r\n if (\r\n (\r\n moment(reduxStore.getState().db.cards[dt].startDate * 1000).format(\"HH:mm:ss\") === \"00:00:00\"\r\n && moment(reduxStore.getState().db.cards[dt].endDate * 1000).format(\"HH:mm:ss\") === \"23:59:59\"\r\n )\r\n ||\r\n (\r\n Math.ceil(diffDate / 60 / 60) > 23\r\n )\r\n )\r\n allDay = true\r\n\r\n CalendarEvents.push(\r\n {\r\n title: reduxStore.getState().db.cards[dt].name,\r\n allDay: allDay,\r\n startDate: startDate,\r\n endDate: endDate,\r\n _id: dt,\r\n }\r\n )\r\n })\r\n setEvents(CalendarEvents)\r\n }\r\n\r\n const addNewEvent = (e) => {\r\n reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: 'cards',\r\n id: 'new',\r\n module: \"cardEdit\",\r\n activeModule: 'cardEdit',\r\n data: {\r\n type: \"task\",\r\n startDate: moment(e.start).unix(\"x\"),\r\n endDate: moment(e.end).unix(\"x\"),\r\n },\r\n })\r\n };\r\n\r\n return (\r\n <div>\r\n <CardsLoader />\r\n <GridContainer>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <MoreMenu\r\n text={translate(\"$__legend\")}\r\n icon={\"style\"}\r\n horizontalButton\r\n transparent\r\n size={'21px'}\r\n color={'lightgray'}\r\n btColor={'lightgray'}\r\n buttonStyle={{ backgroundColor: customApp('menu'), borderRadius: 0 }}\r\n options={[\r\n {\r\n name: translate(\"$__scheduleColor\", 1),\r\n icon: 'label',\r\n iconColor: \"gray\",\r\n color: \"gray\",\r\n disabled: true,\r\n },\r\n {\r\n name: translate(\"$__late\", 1),\r\n icon: 'label',\r\n iconColor: \"red\",\r\n disabled: true\r\n },\r\n ...db.status.map(x => {\r\n return {\r\n name: translate(`${x.label}`, 1),\r\n icon: 'label',\r\n iconColor: x.color,\r\n disabled: true\r\n }\r\n }),\r\n {\r\n name: translate(\"$__scheduleLeftBorderColor\", 1),\r\n icon: 'border_left',\r\n color: 'gray',\r\n iconColor: \"gray\",\r\n disabled: true\r\n },\r\n ...db.priority.map(x => {\r\n return {\r\n name: translate(`${x.label}`, 1),\r\n icon: 'border_left',\r\n color: x.color,\r\n iconColor: x.color,\r\n disabled: true\r\n }\r\n }),\r\n ]}\r\n />\r\n <SelectCardTypes options={disabledTypes} onChange={(d) => { setDisabledTypes(d) }} />\r\n <MoreMenu\r\n text={translate(\"$__options\")}\r\n icon={\"settings\"}\r\n horizontalButton\r\n transparent\r\n size={'21px'}\r\n color={\"lightgray\"}\r\n btColor={\"lightgray\"}\r\n buttonStyle={{ backgroundColor: customApp('menu'), borderRadius: 0 }}\r\n style={{\r\n marginRight: \"15px\"\r\n }}\r\n options={[\r\n {\r\n name: translate(`$__showAllEvents`, '*'),\r\n icon: !showAllEvents ? 'radio_button_unchecked' : 'check_circle_outline',\r\n onClick: () => {\r\n setShowAllEvents(prev => !prev)\r\n },\r\n },\r\n {\r\n name: translate(`$__activitiesTInSeveralDays`, '*'),\r\n icon: !severalDaysActivities ? 'radio_button_unchecked' : 'check_circle_outline',\r\n onClick: () => {\r\n setSeveralDaysActivities(prev => !prev)\r\n },\r\n },\r\n ]}\r\n />\r\n </div>\r\n <GridItem xs={12} sm={12} md={12}>\r\n <Card>\r\n <CardBody>\r\n <MachenCalendar\r\n selectable\r\n localizer={localizer}\r\n events={events}\r\n messages={messages}\r\n defaultDate={new Date()}\r\n onSelectSlot={addNewEvent}\r\n startAccessor=\"startDate\"\r\n endAccessor=\"endDate\"\r\n onView={(x) => {\r\n setView(x)\r\n }}\r\n onSelectEvent={(event) => {\r\n reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: 'cards',\r\n id: event._id,\r\n module: \"cardEdit\",\r\n activeModule: \"cardEdit\",\r\n data: reduxStore.getState().db.cards[event._id],\r\n })\r\n }}\r\n eventPropGetter={\r\n (event, start, end, isSelected) => {\r\n let data = reduxStore.getState().db.cards[event._id]\r\n let statusColor = reduxStore.getState().db.status.filter(x => x.value === reduxStore.getState().db.cards[event._id].status)[0].color\r\n let backgroundColor = statusColor\r\n\r\n\r\n let ini = moment(new Date(start)).unix('x')\r\n let fin = moment(new Date(end)).unix('x')\r\n\r\n if (moment(new Date(end)).unix('x') < moment().unix('x')\r\n ) backgroundColor = \"#ff0000\"\r\n\r\n let percent = (((fin - ini) / 60) / (24 * 60) * 100)\r\n\r\n if (percent > 100)\r\n percent = 100\r\n\r\n let newStyle = {\r\n height: `${percent}%`,\r\n ...view === 'week' || view === \"day\" ? {\r\n minHeight: `${percent}%`\r\n } : {\r\n minHeight: 22,\r\n },\r\n width: \"100%\",\r\n border: \"solid 1px rgba(0,0,0,0.1)\",\r\n borderRadius: 3,\r\n // paddingRight: 7,\r\n boxShadow: \"0px 1x 2px 0px rgba(0,0,0,0.3)\",\r\n backgroundColor:\r\n !isSelected\r\n ? `${hexToRgba(backgroundColor, 0.5)}`\r\n : `${hexToRgba(backgroundColor, 0.3)}`,\r\n ...data.priority && db.priority.filter(a => String(a.value) === String(data.priority)).length > 0 ? {\r\n borderLeft: `solid 5px ${db.priority.filter(a => String(a.value) === String(data.priority))[0].color}`\r\n } : {}\r\n };\r\n\r\n return {\r\n className: \"\",\r\n style: newStyle\r\n };\r\n }\r\n }\r\n components={{\r\n event: ({ event }) => {\r\n let data = reduxStore.getState().db.cards[event._id]\r\n let icon = data.type && db && db.dataType && db.dataType.filter(a => a.name === data.type)[0] ? db.dataType.filter(a => a.name === data.type)[0].icon : \"$__topic\"\r\n\r\n return (\r\n <HtmlTooltip\r\n leaveDelay={800}\r\n title={(\r\n <React.Fragment>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n zIndex: 5000,\r\n }}\r\n >\r\n <ActivityCard data={data}\r\n onlyOption\r\n notGlobalExpanded\r\n />\r\n </div>\r\n </React.Fragment>\r\n )\r\n }>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontSize: 10,\r\n height: \"100%\",\r\n maxWidth: \"100%\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\"\r\n }}>\r\n <div style={{ marginRight: 5 }}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n size={'12px'}\r\n icon={icon}\r\n color={\"bkack\"}\r\n title={translate(`$__${data.type}`)}\r\n />\r\n </div>{event.title}\r\n\r\n </div>\r\n\r\n </HtmlTooltip>\r\n )\r\n },\r\n toolbar: CustomToolbar,\r\n month: {\r\n dateHeader: ({ date, label }) => {\r\n return <div style={{ color: customApp(\"menu\"), cursor: \"pointer\" }}>{label}</div>\r\n },\r\n },\r\n week: {\r\n dateHeader: ({ date, label }) => {\r\n return <div style={{ color: customApp(\"menu\"), cursor: \"pointer\" }}>{label}</div>\r\n },\r\n }\r\n }}\r\n onNavigate={(dt, view, action) => {\r\n if (!selectedDate || moment(dt).format(\"YYYY-MM\") !== moment(selectedDate).format(\"YYYY-MM\"))\r\n setSelectedDate(dt)\r\n if (action !== \"NEXT\" && action !== \"PREV\" && action !== \"TODAY\" && action !== \"DATE\")\r\n setView(action)\r\n\r\n }}\r\n view={view}\r\n onEventResize={(d) => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: d.event._id }\r\n }, {\r\n startDate: moment(d.start).unix('x'),\r\n endDate: moment(d.end).unix('x')\r\n })\r\n }}\r\n onEventDrop={(d) => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: d.event._id }\r\n }, {\r\n startDate: moment(d.start).unix('x'),\r\n endDate: moment(d.end).unix('x')\r\n })\r\n }}\r\n showMultiDayTimes\r\n showAllEvents={showAllEvents}\r\n popup\r\n resizable={true}\r\n defaultView={\"week\"}\r\n />\r\n </CardBody>\r\n </Card>\r\n <div\r\n style={{\r\n height: 300,\r\n width: \"100%\"\r\n }}\r\n ></div>\r\n </GridItem>\r\n </GridContainer>\r\n </div >\r\n );\r\n}\r\n\r\n//EXPORT\r\nconst mapStateToProps = (store) => {\r\n return {\r\n search: store.search,\r\n cards: store.db.cards\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CalendarComponent)\r\n","// ID_CREATED*************************\r\n\r\nimport React, { useState, useMemo, useCallback, memo } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { useCookies } from 'react-cookie';\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\nimport history from \"store/history\";\r\n\r\n//COMPONENTS\r\nimport Button from \"@mui/material/Button\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport Card from \"components/Card\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Icon from \"components/Icon\";\r\nimport Checklist from \"components/Checklist\";\r\nimport ErrorBoundary from \"components/ErrorBoundary\";\r\nimport SelectCardTypes from \"componentsV3/SelectCardTypes\";\r\nimport ButtonOptions from \"componentsV3/Buttons\";\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, nl2br } from \"functions/\";\r\nimport { setMyDay } from \"functions/cards\";\r\n\r\n//ICONS\r\nimport MockupApp from \"assets/img/dashboard/Mockup_App_WEB.png\";\r\nimport MockupSupport from \"assets/img/dashboard/supportMockup.png\";\r\n\r\n// Componente Task Card Moderno\r\nconst ModernTaskCard = memo(({ task, onTaskClick, onAddToMyDay, isFromMyDay = false, index }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const getTaskPriority = useCallback((task) => {\r\n const today = moment().format(\"YYYY-MM-DD\");\r\n const endDate = task.endDate ? moment(task.endDate * 1000).format(\"YYYY-MM-DD\") : null;\r\n const startDate = task.startDate ? moment(task.startDate * 1000).format(\"YYYY-MM-DD\") : null;\r\n\r\n if (endDate && moment(endDate).isBefore(today)) {\r\n return { level: 'high', color: '#f44336', label: 'Atrasada', icon: 'warning' };\r\n }\r\n if (endDate && moment(endDate).isSame(today)) {\r\n return { level: 'urgent', color: '#ff9800', label: 'Hoje', icon: 'today' };\r\n }\r\n if (endDate && moment(endDate).diff(today, 'days') <= 3) {\r\n return { level: 'medium', color: '#2196f3', label: 'Próxima', icon: 'schedule' };\r\n }\r\n return { level: 'low', color: '#4caf50', label: 'Normal', icon: 'check_circle_outline' };\r\n }, []);\r\n\r\n const priority = getTaskPriority(task);\r\n\r\n const cardStyles = useMemo(() => ({\r\n container: {\r\n background: `linear-gradient(135deg, \r\n ${priority.color}10 0%, \r\n rgba(255,255,255,0.95) 20%, \r\n rgba(255,255,255,0.98) 100%)`,\r\n backdropFilter: \"blur(10px)\",\r\n border: `1px solid ${priority.color}30`,\r\n borderLeft: `4px solid ${priority.color}`,\r\n borderRadius: \"12px\",\r\n padding: \"16px\",\r\n marginBottom: \"12px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n animationDelay: `${index * 0.05}s`,\r\n animation: \"slideInLeft 0.5s ease-out forwards\",\r\n opacity: 0,\r\n transform: isHovered ? \"translateX(8px)\" : \"translateX(0)\",\r\n boxShadow: isHovered ?\r\n `0 12px 24px ${priority.color}20, 0 0 0 1px ${priority.color}20` :\r\n \"0 2px 8px rgba(0,0,0,0.08)\"\r\n },\r\n header: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n marginBottom: \"8px\"\r\n },\r\n titleSection: {\r\n flex: 1,\r\n marginRight: \"12px\"\r\n },\r\n title: {\r\n fontSize: \"14px\",\r\n fontWeight: \"700\",\r\n color: \"#1a1a1a\",\r\n marginBottom: \"4px\",\r\n lineHeight: \"1.3\",\r\n display: \"-webkit-box\",\r\n WebkitBoxOrient: \"vertical\",\r\n WebkitLineClamp: 2,\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\"\r\n },\r\n taskType: {\r\n fontSize: \"10px\",\r\n color: \"#666\",\r\n fontWeight: \"500\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.5px\",\r\n backgroundColor: \"#f5f5f5\",\r\n padding: \"2px 6px\",\r\n borderRadius: \"8px\",\r\n display: \"inline-block\"\r\n },\r\n priorityBadge: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"4px\",\r\n backgroundColor: priority.color,\r\n color: \"#fff\",\r\n padding: \"4px 8px\",\r\n borderRadius: \"12px\",\r\n fontSize: \"10px\",\r\n fontWeight: \"600\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.3px\",\r\n boxShadow: `0 2px 8px ${priority.color}40`\r\n },\r\n dateInfo: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\",\r\n fontSize: \"11px\",\r\n color: \"#666\",\r\n marginTop: \"8px\"\r\n },\r\n actionButton: {\r\n position: \"absolute\",\r\n top: \"8px\",\r\n right: \"8px\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n borderRadius: \"50%\",\r\n backgroundColor: priority.color,\r\n color: \"#fff\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontSize: \"14px\",\r\n transition: \"all 0.2s ease\",\r\n opacity: isHovered ? 1 : 0.7,\r\n transform: isHovered ? \"scale(1.1)\" : \"scale(1)\"\r\n }\r\n }), [priority, isHovered, index]);\r\n\r\n const formatDate = useCallback((timestamp) => {\r\n if (!timestamp) return '';\r\n return moment(timestamp * 1000).format('DD/MM');\r\n }, []);\r\n\r\n return (\r\n <>\r\n <style jsx>{`\r\n @keyframes slideInLeft {\r\n from {\r\n opacity: 0;\r\n transform: translateX(-30px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateX(0);\r\n }\r\n }\r\n `}</style>\r\n <div\r\n style={cardStyles.container}\r\n onClick={() => onTaskClick && onTaskClick(task)}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n >\r\n <div style={cardStyles.header}>\r\n <div style={cardStyles.titleSection}>\r\n <div style={cardStyles.title}>\r\n {task.name}\r\n </div>\r\n <div style={cardStyles.taskType}>\r\n {translate(`$__${task.type}`, \"*\") || task.type}\r\n </div>\r\n </div>\r\n <div style={cardStyles.priorityBadge}>\r\n <span className=\"material-icons\" style={{ fontSize: \"10px\" }}>\r\n {priority.icon}\r\n </span>\r\n {priority.label}\r\n </div>\r\n </div>\r\n\r\n <div style={cardStyles.dateInfo}>\r\n {task.startDate && (\r\n <span>📅 Início: {formatDate(task.startDate)}</span>\r\n )}\r\n {task.endDate && (\r\n <span>🎯 Fim: {formatDate(task.endDate)}</span>\r\n )}\r\n </div>\r\n\r\n {!isFromMyDay && onAddToMyDay && (\r\n <button\r\n style={cardStyles.actionButton}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onAddToMyDay(task);\r\n }}\r\n title={translate(\"$__addOnMyDay\")}\r\n >\r\n <span className=\"material-icons\" style={{ fontSize: \"14px\" }}>\r\n add\r\n </span>\r\n </button>\r\n )}\r\n </div>\r\n </>\r\n );\r\n});\r\n\r\n// Header Moderno para Seções\r\nconst SectionHeader = memo(({ title, subtitle, icon, onFilterChange, currentFilter, showSuggestions, onToggleSuggestions }) => {\r\n return (\r\n <div style={{\r\n background: `linear-gradient(135deg, \r\n rgba(255,255,255,0.95) 0%, \r\n rgba(255,255,255,0.8) 100%)`,\r\n backdropFilter: \"blur(20px)\",\r\n borderRadius: \"16px\",\r\n padding: \"20px\",\r\n marginBottom: \"20px\",\r\n border: `1px solid ${customApp('menu')}20`,\r\n boxShadow: `0 4px 16px ${customApp('menu')}10`,\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"12px\"\r\n }}>\r\n <div style={{\r\n width: \"40px\",\r\n height: \"40px\",\r\n borderRadius: \"10px\",\r\n background: `linear-gradient(135deg, ${customApp('menu')}, ${customApp('menu')}dd)`,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n boxShadow: `0 4px 12px ${customApp('menu')}30`\r\n }}>\r\n <span className=\"material-icons\" style={{\r\n fontSize: \"20px\",\r\n color: \"#fff\"\r\n }}>\r\n {icon}\r\n </span>\r\n </div>\r\n <div>\r\n <h3 style={{\r\n fontSize: \"18px\",\r\n fontWeight: \"700\",\r\n color: \"#1a1a1a\",\r\n margin: 0,\r\n letterSpacing: \"-0.3px\"\r\n }}>\r\n {translate(title)}\r\n </h3>\r\n {subtitle && (\r\n <p style={{\r\n fontSize: \"12px\",\r\n color: \"#666\",\r\n margin: 0,\r\n marginTop: \"2px\"\r\n }}>\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div style={{\r\n display: \"flex\",\r\n gap: \"8px\",\r\n alignItems: \"center\"\r\n }}>\r\n {onToggleSuggestions && (\r\n <ButtonOptions\r\n text={showSuggestions ? \"📋 Meu Dia\" : \"💡 Sugestões\"}\r\n active={showSuggestions}\r\n onClick={onToggleSuggestions}\r\n style={{\r\n borderRadius: \"8px\",\r\n padding: \"8px 16px\",\r\n fontSize: \"12px\"\r\n }}\r\n />\r\n )}\r\n\r\n {onFilterChange && (\r\n <div style={{\r\n display: \"flex\",\r\n gap: \"4px\",\r\n background: \"rgba(255,255,255,0.5)\",\r\n padding: \"4px\",\r\n borderRadius: \"8px\"\r\n }}>\r\n <button\r\n onClick={() => onFilterChange('EndDate')}\r\n style={{\r\n padding: \"6px 12px\",\r\n borderRadius: \"6px\",\r\n border: \"none\",\r\n backgroundColor: currentFilter === 'EndDate' ? customApp('menu') : 'transparent',\r\n color: currentFilter === 'EndDate' ? \"#fff\" : \"#666\",\r\n fontSize: \"11px\",\r\n fontWeight: \"600\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.2s ease\"\r\n }}\r\n >\r\n 📅 Data\r\n </button>\r\n <button\r\n onClick={() => onFilterChange('name')}\r\n style={{\r\n padding: \"6px 12px\",\r\n borderRadius: \"6px\",\r\n border: \"none\",\r\n backgroundColor: currentFilter === 'name' ? customApp('menu') : 'transparent',\r\n color: currentFilter === 'name' ? \"#fff\" : \"#666\",\r\n fontSize: \"11px\",\r\n fontWeight: \"600\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.2s ease\"\r\n }}\r\n >\r\n 🔤 Nome\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\n// Componente de Welcome Banner Moderno\r\nconst WelcomeBanner = memo(({ user, timeMessage, onHideBanner }) => {\r\n return (\r\n <div style={{\r\n background: `linear-gradient(135deg, \r\n ${customApp('menu')}15 0%, \r\n transparent 50%, \r\n ${customApp('menu')}05 100%)`,\r\n borderRadius: \"20px\",\r\n padding: \"24px\",\r\n marginBottom: \"32px\",\r\n position: \"relative\",\r\n overflow: \"hidden\"\r\n }}>\r\n <div style={{\r\n fontSize: \"18px\",\r\n fontWeight: \"700\",\r\n color: customApp(\"menu\"),\r\n marginBottom: \"24px\",\r\n textAlign: \"center\"\r\n }}>\r\n {translate(timeMessage, 1)}, {user?.displayName || user?.name || \"\"}! 👋\r\n </div>\r\n\r\n <GridContainer>\r\n <GridItem xs={12} md={6}>\r\n <div style={{\r\n background: \"rgba(255,255,255,0.9)\",\r\n borderRadius: \"16px\",\r\n padding: \"20px\",\r\n backdropFilter: \"blur(10px)\",\r\n border: \"1px solid rgba(255,255,255,0.3)\"\r\n }}>\r\n <img\r\n alt=\"MACHEN_SUPPORT\"\r\n src={MockupSupport}\r\n style={{\r\n width: \"100%\",\r\n height: \"auto\",\r\n borderRadius: \"12px\",\r\n marginBottom: \"16px\"\r\n }}\r\n />\r\n <div style={{\r\n fontSize: \"14px\",\r\n color: \"#555\",\r\n marginBottom: \"16px\",\r\n lineHeight: \"1.5\"\r\n }} dangerouslySetInnerHTML={{\r\n __html: nl2br(translate(\"$__supportWelcomeMessage\", 1))\r\n }} />\r\n <CustomButton\r\n title={translate(`$__clickToaccessSupportPage`, '*')}\r\n text={translate(\"$__clickToaccessSupportPage\")}\r\n color={customApp('menu')}\r\n icon={'help_outline'}\r\n onClick={() => window.open(\"https://support.machen.ai/\", \"_blank\")}\r\n size={'14px'}\r\n />\r\n </div>\r\n </GridItem>\r\n\r\n <GridItem xs={12} md={6}>\r\n <div style={{\r\n background: \"rgba(255,255,255,0.9)\",\r\n borderRadius: \"16px\",\r\n padding: \"20px\",\r\n backdropFilter: \"blur(10px)\",\r\n border: \"1px solid rgba(255,255,255,0.3)\",\r\n position: \"relative\"\r\n }}>\r\n <img\r\n alt=\"MACHEN_APP\"\r\n src={MockupApp}\r\n style={{\r\n width: \"100%\",\r\n height: \"auto\",\r\n borderRadius: \"12px\"\r\n }}\r\n />\r\n <button\r\n onClick={onHideBanner}\r\n style={{\r\n position: \"absolute\",\r\n top: \"12px\",\r\n right: \"12px\",\r\n width: \"32px\",\r\n height: \"32px\",\r\n borderRadius: \"50%\",\r\n backgroundColor: \"rgba(0,0,0,0.7)\",\r\n color: \"#fff\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontSize: \"16px\",\r\n transition: \"all 0.2s ease\"\r\n }}\r\n title={translate(\"$__hideSupportAndAppBanner\")}\r\n >\r\n ✕\r\n </button>\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n});\r\n\r\n// Componente de Planos Favoritos\r\nconst FavoritePlans = memo(({ plans, onPlanClick }) => {\r\n if (plans.length === 0) return null;\r\n\r\n return (\r\n <div style={{\r\n background: `linear-gradient(135deg, \r\n rgba(255,255,255,0.95) 0%, \r\n rgba(255,255,255,0.8) 100%)`,\r\n backdropFilter: \"blur(20px)\",\r\n borderRadius: \"20px\",\r\n padding: \"24px\",\r\n marginBottom: \"32px\",\r\n border: `1px solid ${customApp('menu')}20`,\r\n boxShadow: `0 4px 16px ${customApp('menu')}10`\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginBottom: \"20px\"\r\n }}>\r\n <h3 style={{\r\n fontSize: \"18px\",\r\n fontWeight: \"700\",\r\n color: customApp(\"menu\"),\r\n margin: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\"\r\n }}>\r\n <span className=\"material-icons\">favorite</span>\r\n {translate(\"$__favoritePlans\")}\r\n </h3>\r\n\r\n {plans.length > 3 && (\r\n <CustomButton\r\n title={`${translate(`$__viewAllFavorites`, '*')} (${plans.length})`}\r\n text={`Ver Todos (${plans.length})`}\r\n color={customApp('menu')}\r\n icon={'favorite'}\r\n transparent\r\n onClick={() => history.push(`sp#tab/home`)}\r\n size={'12px'}\r\n />\r\n )}\r\n </div>\r\n\r\n <div style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(auto-fit, minmax(280px, 1fr))\",\r\n gap: \"16px\"\r\n }}>\r\n {plans.slice(0, 6).map((plan, index) => (\r\n <div\r\n key={plan._id}\r\n onClick={() => onPlanClick(plan)}\r\n style={{\r\n background: \"rgba(255,255,255,0.8)\",\r\n borderRadius: \"12px\",\r\n padding: \"16px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.2s ease\",\r\n border: `1px solid ${customApp('menu')}20`,\r\n animationDelay: `${index * 0.1}s`,\r\n animation: \"fadeInUp 0.5s ease-out forwards\"\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.transform = \"translateY(-4px)\";\r\n e.currentTarget.style.boxShadow = `0 8px 24px ${customApp('menu')}20`;\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.transform = \"translateY(0px)\";\r\n e.currentTarget.style.boxShadow = \"none\";\r\n }}\r\n >\r\n <Card\r\n data={plan}\r\n expanded\r\n Avatar\r\n ignoreList\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nfunction ResumeTasks(props) {\r\n const { db, session } = reduxStore.getState();\r\n const { users } = db;\r\n\r\n const [viewSuggestions, setViewSuggestions] = useState(false);\r\n const [nextTasksOrderBy, setNextTasksOrderBy] = useState(\"EndDate\");\r\n const [disabledTypes, setDisabledTypes] = useState([\r\n \"guideline\", \"guidelineD\", \"guidelineR\", \"guidelineC\", \"guidelineE\",\r\n \"objective\", \"goal\", \"link\", \"insight\"\r\n ]);\r\n const [cookies, setCookie] = useCookies(['banner']);\r\n const [myCards, setMyCards] = useState([]);\r\n\r\n // Effects e lógica existente mantidos...\r\n React.useEffect(() => {\r\n let s = Object.keys(db.cards || {})\r\n .filter(a =>\r\n db.cards[a]\r\n && !db.cards[a].checklist\r\n && !db.cards[a].deleted\r\n && (\r\n !props.hidePrivate\r\n || (props.hidePrivate && !db.cards[a].private)\r\n )\r\n ).map(c => db.cards[c]);\r\n if (JSON.stringify(s) !== JSON.stringify(myCards))\r\n setMyCards(s);\r\n }, [props.cards, db.cards, myCards, props.hidePrivate]);\r\n\r\n // Callbacks\r\n const hideSupportAndAppBanner = useCallback(async () => {\r\n const { socket } = reduxStore.getState().functions;\r\n setCookie('banner', true, { path: '/' });\r\n try {\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"preffers\"\r\n }, {\r\n hideSupportAndAppBanner: true\r\n }, data => {\r\n if (data.error) console.log(\"hideSupportAndAppBanner\", data.error);\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }, [setCookie]);\r\n\r\n const handleAddToMyDay = useCallback((task) => {\r\n setMyDay(props, {\r\n _id: task._id,\r\n userId: session._id,\r\n option: true\r\n });\r\n }, [props, session._id]);\r\n\r\n const handleTaskClick = useCallback((task) => {\r\n console.log('Task clicked:', task);\r\n // Implementar navegação para detalhes da task\r\n }, []);\r\n\r\n const handlePlanClick = useCallback((plan) => {\r\n history.push(`sp#${plan._id}/dashboard`);\r\n }, []);\r\n\r\n // Dados processados\r\n const today = moment().format(\"YYYY-MM-DD\");\r\n const user = users && Object.keys(users).length > 0 ?\r\n users[Object.keys(users).find(a => session?._id && users[a]?._id?.indexOf(session._id) > -1)] : {};\r\n\r\n const timeMessage = useMemo(() => {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n if (hour >= 0 && hour < 5) return \"$__goodNight\";\r\n if (hour >= 5 && hour < 12) return \"$__goodMorning\";\r\n if (hour >= 12 && hour < 18) return \"$__goodAfternoon\";\r\n return \"$__goodNight\";\r\n }, []);\r\n\r\n // Sugestões de tarefas\r\n const myDayTasksSuggestions = useMemo(() => {\r\n return myCards\r\n .filter(a => disabledTypes.length === 0 || !disabledTypes.includes(a.type))\r\n .filter(a => {\r\n if (\r\n a && a._users && a._users[session._id] &&\r\n a.status !== \"completed\" &&\r\n a.type !== \"chatGroup\" &&\r\n a.type !== \"plan\"\r\n ) {\r\n const userDay = a._users[session._id].myDay;\r\n const isResponsible = a._users[session._id].isResponsible;\r\n\r\n return (\r\n (userDay && moment(userDay * 1000).format(\"YYYY-MM-DD\") !== today) ||\r\n (isResponsible &&\r\n ((a.endDate && moment(a.endDate * 1000).unix('x') < moment().unix('x')) ||\r\n (a.startDate && moment(a.startDate * 1000).unix('x') > moment(today).subtract(30, \"days\").unix('x'))) &&\r\n (!userDay || moment(userDay * 1000).format(\"YYYY-MM-DD\") !== today))\r\n );\r\n }\r\n return false;\r\n })\r\n .sort((a, b) => {\r\n let compareDateA = a._users[session._id].myDay || a.endDate || a.startDate || 0;\r\n let compareDateB = b._users[session._id].myDay || b.endDate || b.startDate || 0;\r\n return compareDateB - compareDateA;\r\n });\r\n }, [myCards, disabledTypes, session._id, today]);\r\n\r\n // Próximas tarefas\r\n const nextTasks = useMemo(() => {\r\n return myCards.filter(a =>\r\n a.status !== \"completed\" &&\r\n a.name &&\r\n !a.deleted &&\r\n !a.archived &&\r\n a._users &&\r\n a._users[session._id] &&\r\n (!a._users[session._id].myDay ||\r\n moment(a._users[session._id].myDay * 1000).format(\"YYYY-MM-DD\") !== today) &&\r\n ((a.endDate &&\r\n moment(a.endDate * 1000).format(\"YYYY-MM-DD\") >= today &&\r\n moment(a.endDate * 1000).format(\"YYYY-MM-DD\") <= moment(today).add(10, \"days\").format(\"YYYY-MM-DD\")) ||\r\n (a.startDate &&\r\n moment(a.startDate * 1000).format(\"YYYY-MM-DD\") >= today &&\r\n moment(a.startDate * 1000).format(\"YYYY-MM-DD\") <= moment(today).add(10, \"days\").format(\"YYYY-MM-DD\")))\r\n ).sort((a, b) => {\r\n let paramA = a.name.toLowerCase().trim();\r\n let paramB = b.name.toLowerCase().trim();\r\n\r\n if (nextTasksOrderBy === 'IniDate') {\r\n paramA = parseInt(a.startDate || 0);\r\n paramB = parseInt(b.startDate || 0);\r\n }\r\n if (nextTasksOrderBy === 'EndDate') {\r\n paramA = parseInt(a.endDate || 0);\r\n paramB = parseInt(b.endDate || 0);\r\n }\r\n\r\n return paramA < paramB ? -1 : paramA > paramB ? 1 : 0;\r\n });\r\n }, [myCards, session._id, today, nextTasksOrderBy]);\r\n\r\n // Planos favoritos\r\n const favoritePlans = useMemo(() => {\r\n return Object.keys(db.cards || {})\r\n .filter(fil =>\r\n db.cards[fil] &&\r\n !db.cards[fil].deleted &&\r\n !db.cards[fil].archived &&\r\n db.cards[fil].type === \"plan\" &&\r\n db.cards[fil]._users &&\r\n db.cards[fil]._users[session._id] &&\r\n db.cards[fil].status !== \"completed\" &&\r\n db.cards[fil]._isFavorite &&\r\n (!props.hidePrivate || !db.cards[fil].private)\r\n )\r\n .map(id => db.cards[id])\r\n .sort((a, b) => {\r\n let updA = a.updated_at?.low || 0;\r\n let updB = b.updated_at?.low || 0;\r\n return updB - updA;\r\n });\r\n }, [db.cards, session._id, props.hidePrivate]);\r\n\r\n return (\r\n <ErrorBoundary>\r\n <div style={{\r\n width: \"100%\",\r\n background: `linear-gradient(135deg, \r\n ${customApp('menu')}03 0%, \r\n transparent 50%, \r\n ${customApp('menu')}02 100%)`,\r\n borderRadius: \"24px\",\r\n padding: \"20px\",\r\n position: \"relative\"\r\n }}>\r\n {/* Background Pattern */}\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundImage: `radial-gradient(circle at 10% 10%, ${customApp('menu')}05 0%, transparent 50%),\r\n radial-gradient(circle at 90% 90%, ${customApp('menu')}03 0%, transparent 50%)`,\r\n pointerEvents: \"none\"\r\n }} />\r\n\r\n {/* Welcome Banner */}\r\n {!cookies.banner && !session.hideSupportAndAppBanner && (\r\n <WelcomeBanner\r\n user={user}\r\n timeMessage={timeMessage}\r\n onHideBanner={hideSupportAndAppBanner}\r\n />\r\n )}\r\n\r\n {/* Favorite Plans */}\r\n <FavoritePlans\r\n plans={favoritePlans}\r\n onPlanClick={handlePlanClick}\r\n />\r\n\r\n {/* Tasks Sections */}\r\n <GridContainer style={{ position: \"relative\", zIndex: 1 }}>\r\n {/* My Day / Suggestions */}\r\n <GridItem xs={12} md={6} style={{ paddingRight: \"12px\" }}>\r\n <SectionHeader\r\n title={viewSuggestions ? \"$__taskSuggestions\" : \"$__myDay\"}\r\n subtitle={viewSuggestions ?\r\n `${myDayTasksSuggestions.length} sugestões disponíveis` :\r\n \"Suas tarefas para hoje\"\r\n }\r\n icon={viewSuggestions ? \"lightbulb\" : \"today\"}\r\n showSuggestions={viewSuggestions}\r\n onToggleSuggestions={() => setViewSuggestions(!viewSuggestions)}\r\n />\r\n\r\n <div style={{\r\n maxHeight: \"500px\",\r\n overflowY: \"auto\",\r\n paddingRight: \"8px\",\r\n scrollbarWidth: \"thin\",\r\n scrollbarColor: `${customApp('menu')}40 transparent`\r\n }}>\r\n {viewSuggestions ? (\r\n <>\r\n <div style={{ marginBottom: \"16px\" }}>\r\n <SelectCardTypes\r\n options={disabledTypes}\r\n onChange={setDisabledTypes}\r\n />\r\n </div>\r\n {myDayTasksSuggestions.length > 0 ? (\r\n myDayTasksSuggestions.map((task, index) => (\r\n <ModernTaskCard\r\n key={task._id}\r\n task={task}\r\n index={index}\r\n onTaskClick={handleTaskClick}\r\n onAddToMyDay={handleAddToMyDay}\r\n />\r\n ))\r\n ) : (\r\n <div style={{\r\n textAlign: \"center\",\r\n padding: \"40px\",\r\n color: \"#666\",\r\n background: \"rgba(255,255,255,0.5)\",\r\n borderRadius: \"12px\",\r\n backdropFilter: \"blur(10px)\"\r\n }}>\r\n <span className=\"material-icons\" style={{\r\n fontSize: \"48px\",\r\n marginBottom: \"12px\",\r\n display: \"block\",\r\n opacity: 0.3\r\n }}>\r\n lightbulb\r\n </span>\r\n Nenhuma sugestão disponível\r\n </div>\r\n )}\r\n </>\r\n ) : (\r\n <Checklist\r\n noChecklist\r\n noDelete\r\n showCard\r\n myDay\r\n db={\"cards\"}\r\n />\r\n )}\r\n </div>\r\n </GridItem>\r\n\r\n {/* Next Tasks */}\r\n <GridItem xs={12} md={6} style={{ paddingLeft: \"12px\" }}>\r\n <SectionHeader\r\n title=\"$__nextTasks\"\r\n subtitle={`${nextTasks.length} tarefas nos próximos 10 dias`}\r\n icon=\"schedule\"\r\n currentFilter={nextTasksOrderBy}\r\n onFilterChange={setNextTasksOrderBy}\r\n />\r\n\r\n <div style={{\r\n maxHeight: \"500px\",\r\n overflowY: \"auto\",\r\n paddingRight: \"8px\",\r\n scrollbarWidth: \"thin\",\r\n scrollbarColor: `${customApp('menu')}40 transparent`\r\n }}>\r\n {nextTasks.length > 0 ? (\r\n nextTasks.map((task, index) => (\r\n <ModernTaskCard\r\n key={task._id}\r\n task={task}\r\n index={index}\r\n onTaskClick={handleTaskClick}\r\n />\r\n ))\r\n ) : (\r\n <div style={{\r\n textAlign: \"center\",\r\n padding: \"40px\",\r\n color: \"#666\",\r\n background: \"rgba(255,255,255,0.5)\",\r\n borderRadius: \"12px\",\r\n backdropFilter: \"blur(10px)\"\r\n }}>\r\n <span className=\"material-icons\" style={{\r\n fontSize: \"48px\",\r\n marginBottom: \"12px\",\r\n display: \"block\",\r\n opacity: 0.3\r\n }}>\r\n schedule\r\n </span>\r\n Nenhuma tarefa próxima\r\n </div>\r\n )}\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n\r\n <style jsx>{`\r\n @keyframes fadeInUp {\r\n from {\r\n opacity: 0;\r\n transform: translateY(20px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n </ErrorBoundary>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n cards: store.db.cards,\r\n hidePrivate: store.controls.hidePrivate,\r\n});\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ResumeTasks)","import React, { useState, useEffect, createRef, useMemo, useCallback, memo } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\nimport reduxStore from \"store/\";\r\nimport history from \"store/history\";\r\n\r\n// COMPONENTS\r\nimport HeaderWithMenu from \"components/Header/card\";\r\nimport ErrorBoundary from \"components/ErrorBoundary\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport ListLinks from \"components/BrightAndConnected/listLinks\";\r\nimport Radar from \"views/BrightAndConnected/Radar\";\r\nimport Insights from \"views/BrightAndConnected/InsightBoards\";\r\n\r\n//DEPENDENCIES\r\nimport ResumeTasks from \"./resumeTasks\"\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\n// Memoizar o componente Card para evitar re-renders desnecessários\r\nconst Card = memo(({ title, icon, content, expandedBlocks, setExpandedBlocks, keyId }) => {\r\n const contentRef = createRef();\r\n const maxHeight = 177;\r\n const isExpanded = expandedBlocks[keyId];\r\n const [needsExpandButton, setNeedsExpandButton] = useState(false);\r\n\r\n // Memoizar função de toggle para evitar re-criação\r\n const toggleExpand = useCallback(() => {\r\n setExpandedBlocks((prev) => ({\r\n ...prev,\r\n [keyId]: !prev[keyId],\r\n }));\r\n }, [keyId, setExpandedBlocks]);\r\n\r\n useEffect(() => {\r\n const checkHeight = () => {\r\n if (contentRef.current) {\r\n const height = contentRef.current.scrollHeight;\r\n setNeedsExpandButton(height > maxHeight);\r\n }\r\n };\r\n\r\n // Usar requestAnimationFrame para melhor performance\r\n const rafId = requestAnimationFrame(() => {\r\n const timeout = setTimeout(checkHeight, 50);\r\n return () => clearTimeout(timeout);\r\n });\r\n\r\n return () => cancelAnimationFrame(rafId);\r\n }, [content, maxHeight]);\r\n\r\n // Memoizar estilos para evitar recálculos\r\n const cardStyles = useMemo(() => ({\r\n container: {\r\n position: \"relative\",\r\n backgroundColor: \"#fff\",\r\n boxShadow: \"0px 2px 8px rgba(0,0,0,0.12)\",\r\n borderRadius: \"12px\",\r\n padding: \"0px 0px 30px 0px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n transition: \"box-shadow 0.2s ease, transform 0.2s ease\",\r\n cursor: \"default\",\r\n },\r\n content: {\r\n overflow: isExpanded ? \"visible\" : \"hidden\",\r\n transition: \"height 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n padding: \"15px 15px 0px 15px\",\r\n height: isExpanded ? \"auto\" : `${maxHeight}px`,\r\n position: \"relative\",\r\n },\r\n expandButton: {\r\n position: \"absolute\",\r\n paddingBottom: 15,\r\n paddingLeft: 15,\r\n paddingTop: 15,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n marginTop: 8,\r\n alignSelf: \"flex-start\",\r\n background: \"linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 30%, rgba(255,255,255,1) 100%)\",\r\n border: \"none\",\r\n color: customApp(\"primaryColor\") || \"#007BFF\",\r\n cursor: \"pointer\",\r\n fontSize: \"14px\",\r\n fontWeight: \"500\",\r\n borderRadius: \"0 0 12px 12px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n transition: \"background 0.2s ease\",\r\n }\r\n }), [isExpanded, maxHeight]);\r\n\r\n return (\r\n <div\r\n style={cardStyles.container}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.transform = \"translateY(-2px)\";\r\n e.currentTarget.style.boxShadow = \"0px 4px 16px rgba(0,0,0,0.15)\";\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.transform = \"translateY(0px)\";\r\n e.currentTarget.style.boxShadow = \"0px 2px 8px rgba(0,0,0,0.12)\";\r\n }}\r\n >\r\n <HeaderWithMenu\r\n title={translate(title, 1)}\r\n icon={icon}\r\n color={customApp(\"colorText\")}\r\n style={{\r\n background: `linear-gradient(135deg, ${customApp(\"ColumnTitleColor\")}, ${customApp(\"ColumnTitleColor\")}dd)`,\r\n padding: \"18px 15px\",\r\n borderRadius: \"12px 12px 0px 0px\",\r\n height: 40,\r\n boxShadow: \"0px 2px 4px rgba(0,0,0,0.1)\"\r\n }}\r\n />\r\n <div ref={contentRef} style={cardStyles.content}>\r\n <div\r\n dangerouslySetInnerHTML={{ __html: content }}\r\n style={{\r\n lineHeight: \"1.6\",\r\n fontSize: \"14px\",\r\n color: \"#444\"\r\n }}\r\n />\r\n </div>\r\n {needsExpandButton && (\r\n <button\r\n onClick={toggleExpand}\r\n style={cardStyles.expandButton}\r\n onMouseEnter={(e) => {\r\n e.target.style.background = \"linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(240,248,255,0.9) 30%, rgba(240,248,255,1) 100%)\";\r\n }}\r\n onMouseLeave={(e) => {\r\n e.target.style.background = \"linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 30%, rgba(255,255,255,1) 100%)\";\r\n }}\r\n >\r\n {isExpanded ?\r\n `↑ ${translate(\"$__readLess\", 1)}` :\r\n `↓ ${translate(\"$__readMore\", 1)}`\r\n }\r\n </button>\r\n )}\r\n </div>\r\n );\r\n});\r\n\r\n// Memoizar seções do dashboard\r\nconst DashboardSection = memo(({ title, icon, component, redirect }) => {\r\n const sectionStyles = useMemo(() => ({\r\n container: {\r\n position: \"relative\",\r\n backgroundColor: \"#fff\",\r\n boxShadow: \"0px 2px 8px rgba(0,0,0,0.08)\",\r\n borderRadius: \"12px\",\r\n marginBottom: \"24px\",\r\n overflow: \"hidden\",\r\n transition: \"box-shadow 0.2s ease\",\r\n },\r\n header: {\r\n position: \"relative\",\r\n height: \"50px\",\r\n marginBottom: \"15px\"\r\n },\r\n headerContent: {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n height: \"50px\",\r\n background: `linear-gradient(135deg, ${customApp(\"ColumnTitleColor\")}, ${customApp(\"ColumnTitleColor\")}dd)`,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n color: customApp(\"colorText\"),\r\n padding: \"0 20px\",\r\n boxShadow: \"0px 2px 4px rgba(0,0,0,0.1)\"\r\n }\r\n }), []);\r\n\r\n return (\r\n <div\r\n style={sectionStyles.container}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.boxShadow = \"0px 4px 16px rgba(0,0,0,0.12)\";\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.boxShadow = \"0px 2px 8px rgba(0,0,0,0.08)\";\r\n }}\r\n >\r\n <div style={sectionStyles.header}>\r\n <div style={sectionStyles.headerContent}>\r\n <div style={{\r\n fontSize: \"16px\",\r\n fontWeight: \"600\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\"\r\n }}>\r\n <span className=\"material-icons\" style={{ fontSize: \"20px\" }}>\r\n {icon}\r\n </span>\r\n {translate(title, \"*\")}\r\n </div>\r\n <CustomButton\r\n title={translate(`$__save`, \"*\")}\r\n text={translate(`$__viewAll${title.split(\"$__\")[1]}`)}\r\n color={\"white\"}\r\n icon={icon}\r\n transparent\r\n onClick={() => history.push(redirect)}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n </div>\r\n <div style={{ padding: \"0 20px 20px 20px\" }}>\r\n <ErrorBoundary>{component}</ErrorBoundary>\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nfunction DashboardResume() {\r\n const { session } = reduxStore.getState();\r\n const [expandedBlocks, setExpandedBlocks] = useState({});\r\n\r\n // Memoizar configuração das seções para melhor performance\r\n const dashboardSections = useMemo(() => [\r\n {\r\n title: \"$__lastNews\",\r\n icon: \"feed\",\r\n component: <ListLinks max={6} horizontal />,\r\n redirect: \"bright-and-connected#tab/allNews\",\r\n },\r\n {\r\n title: \"$__lastAddRadar\",\r\n icon: \"settings_input_antenna\",\r\n component: <Radar max={6} horizontal noPagination />,\r\n redirect: \"bright-and-connected#tab/radar\",\r\n },\r\n {\r\n title: \"$__lastAddInsights\",\r\n icon: \"lightbulb\", // ← MUDANÇA AQUI: de \"Ideas\" para \"lightbulb\"\r\n component: <Insights max={6} horizontal noPagination />,\r\n redirect: \"bright-and-connected#tab/insight-boards\",\r\n }\r\n ], []);\r\n\r\n return (\r\n <div style={{ width: \"100%\", padding: \"16px\" }}>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(2, 1fr)\", // Duas colunas\r\n gap: \"16px\",\r\n alignItems: \"start\",\r\n }}\r\n >\r\n {session.GlobalData.strategicStatement && (\r\n <Card\r\n title=\"$__strategicStatement\"\r\n icon=\"history_edu\"\r\n content={session.GlobalData.strategicStatement}\r\n expandedBlocks={expandedBlocks}\r\n setExpandedBlocks={setExpandedBlocks}\r\n keyId=\"strategicStatement\"\r\n />\r\n )}\r\n {session.GlobalData.message && (\r\n <Card\r\n title=\"$__presidentMessage\"\r\n icon=\"account_box\"\r\n content={session.GlobalData.message}\r\n expandedBlocks={expandedBlocks}\r\n setExpandedBlocks={setExpandedBlocks}\r\n keyId=\"message\"\r\n />\r\n )}\r\n {session.GlobalData.vocation && (\r\n <Card\r\n title=\"$__vocation\"\r\n icon=\"spoke\"\r\n content={session.GlobalData.vocation}\r\n expandedBlocks={expandedBlocks}\r\n setExpandedBlocks={setExpandedBlocks}\r\n keyId=\"vocation\"\r\n />\r\n )}\r\n {session.GlobalData.history && (\r\n <Card\r\n title=\"$__history\"\r\n icon=\"menu_book\"\r\n content={session.GlobalData.history}\r\n expandedBlocks={expandedBlocks}\r\n setExpandedBlocks={setExpandedBlocks}\r\n keyId=\"history\"\r\n />\r\n )}\r\n {session.GlobalData.values && (\r\n <Card\r\n title=\"$__values\"\r\n icon=\"join_inner\"\r\n content={session.GlobalData.values}\r\n expandedBlocks={expandedBlocks}\r\n setExpandedBlocks={setExpandedBlocks}\r\n keyId=\"values\"\r\n />\r\n )}\r\n {session.GlobalData.legacy && (\r\n <Card\r\n title=\"$__legacy\"\r\n icon=\"subtitles\"\r\n content={session.GlobalData.legacy}\r\n expandedBlocks={expandedBlocks}\r\n setExpandedBlocks={setExpandedBlocks}\r\n keyId=\"legacy\"\r\n />\r\n )}\r\n </div>\r\n\r\n {/* Resume Tasks */}\r\n <ErrorBoundary>\r\n <ResumeTasks />\r\n </ErrorBoundary>\r\n\r\n {/* Other sections */}\r\n <div style={{ marginTop: \"16px\", paddingBottom: \"33px\" }}>\r\n {dashboardSections.map(({ title, icon, component, redirect }) => (\r\n <DashboardSection\r\n key={title}\r\n title={title}\r\n icon={icon}\r\n component={component}\r\n redirect={redirect}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch) => bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(null, mapDispatchToProps)(DashboardResume);","import React from \"react\";\r\nimport moment from \"moment-timezone\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//COMPONENTS\r\nimport Card from \"components/Card\";\r\n\r\n//IMAGES\r\nimport userCover from \"assets/img/userCover.jpg\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp\r\n} from \"functions/\";\r\n\r\nfunction Dashboard(props) {\r\n const { session } = reduxStore.getState()\r\n const { data } = props\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n const [ImagePreview, setImagePreview] = React.useState(null)\r\n\r\n let myCards = Object.keys(reduxStore.getState().db.cards).filter(a => reduxStore.getState().db.cards[a]).map(c => reduxStore.getState().db.cards[c])\r\n\r\n let myDayTasksContent = myCards.filter(a =>\r\n a._users\r\n && !a.checklist\r\n && !a.deleted\r\n && a._users[data._id]\r\n && a._users[data._id].myDay\r\n && (\r\n !a.private\r\n ||\r\n (\r\n a.private\r\n && a._users[session._id]\r\n )\r\n )\r\n && (\r\n moment(new Date(parseInt(a._users[data._id].myDay) * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today\r\n )\r\n ).sort((a, b) => {\r\n if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'ASC'\r\n && a.name.toLowerCase().trim() < b.name.toLowerCase().trim()\r\n ) {\r\n return -1\r\n } else if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'DESC'\r\n && a.name.toLowerCase().trim() > b.name.toLowerCase().trim()\r\n ) {\r\n return -1\r\n } else if (reduxStore.getState().db.orderByTitle) {\r\n return 0\r\n } else if (!reduxStore.getState().db.orderByTitle && String(a.order) && String(b.order) && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low)) {\r\n return -1\r\n } else {\r\n return 1\r\n }\r\n }\r\n ).map((a, i) => <Card db=\"cards\" key={i} data={a} showStatus onlyOption />)\r\n\r\n return (\r\n <div style={{\r\n width: \"100%\",\r\n minHeight: \"120px\",\r\n backgroundColor: \"#FFFFFF\",\r\n boxShadow: \"0 0 9px 3px rgba(0,0,0,0.2)\",\r\n position: \"relative\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: customApp('menu'),\r\n height: \"43px\",\r\n paddingLeft: \"45px\",\r\n fontSize: \"12px\",\r\n color: \"#FFFFFF\",\r\n fontWeight: \"bold\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n <div style={{\r\n maxWidth: 'calc(100% - 10px)',\r\n textOverflow: \"ellipsis \",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n }}>\r\n {data.name ? data.name : data.name} ({myDayTasksContent.length})\r\n </div>\r\n </div>\r\n {(!ImagePreview || (data.image && data.image !== ImagePreview)) ?\r\n <img\r\n style={{\r\n width: \"37px\",\r\n height: \"37px\",\r\n top: \"3x\",\r\n left: \"3px\",\r\n borderRadius: '50%',\r\n border: `solid 2px ${customApp('color')}`,\r\n zIndex: '5 !important',\r\n position: 'absolute',\r\n backgroundColor: `${customApp('color')}`,\r\n }}\r\n src={`${data.image ? data.image : userCover}`}\r\n onError={(e) => {\r\n e.target.src = `${userCover}`\r\n }}\r\n onLoad={(e) => {\r\n setImagePreview(`${data.image ? data.image : userCover}`)\r\n }}\r\n width=\"100%\"\r\n alt=\"MACHEN_IMG\"\r\n />\r\n :\r\n <div\r\n style={{\r\n width: \"37px\",\r\n height: \"37px\",\r\n top: \"3px\",\r\n left: \"3px\",\r\n borderRadius: '50%',\r\n border: `solid 2px ${customApp('color')}`,\r\n zIndex: '5 !important',\r\n position: 'absolute',\r\n backgroundColor: `${customApp('color')}`,\r\n backgroundImage: `url(\"${ImagePreview}\")`,\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\"\r\n }}\r\n >\r\n </div>\r\n }\r\n <React.Fragment>\r\n {/* <div style={{\r\n width: '100%',\r\n height: '333px',\r\n overflowX: 'hide'\r\n }}\r\n >\r\n <ResponsivePie\r\n data={[\r\n ...db.status.map((st, index) => {\r\n return {\r\n id: translate(st.label, 1),\r\n label: translate(st.label, 1),\r\n value: Object.keys(db.cards).filter(fil =>\r\n db.cards[fil]\r\n && !db.cards[fil].deleted\r\n && db.cards[fil]._users\r\n && db.cards[fil]._users[data._id]\r\n && db.cards[fil]._users[data._id].myDay\r\n && (moment(new Date(parseInt(db.cards[fil]._users[data._id].myDay) * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today)\r\n && db.cards[fil].status\r\n && db.cards[fil].status === st.value\r\n ).length,\r\n color: st.color\r\n }\r\n })\r\n ]}\r\n activeOuterRadiusOffset={8}\r\n arcLabelsSkipAngle={10}\r\n arcLabelsTextColor={\"#FFFFFF\"}\r\n arcLinkLabelsColor={{ from: 'color' }}\r\n arcLinkLabelsSkipAngle={10}\r\n arcLinkLabelsTextColor=\"#333333\"\r\n arcLinkLabelsThickness={7}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n borderWidth={1}\r\n colors={['#929497', '#011E41', '#EBA900', '#5A7F71']}\r\n cornerRadius={3}\r\n enableArcLinkLabels={false}\r\n innerRadius={0.5}\r\n margin={{ top: 40, right: 40, bottom: 40, left: 40 }}\r\n padAngle={1.3}\r\n />\r\n </div> */}\r\n <div style={{\r\n width: '100%',\r\n maxHeight: 'calc(50vh - 90px)',\r\n overflowX: 'auto'\r\n }}>\r\n {myDayTasksContent}\r\n </div>\r\n </React.Fragment>\r\n </div >\r\n );\r\n}\r\n\r\n//EXPORT\r\nexport default Dashboard","import React, { memo } from \"react\";\r\nimport moment from \"moment-timezone\";\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 DayList from \"components/User/dayList\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n getAppAccess,\r\n translate,\r\n} from \"functions/\";\r\n\r\n\r\nfunction Dashboard(props) {\r\n const { db } = reduxStore.getState()\r\n const { users } = db\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n const [mounted, setMounted] = React.useState(false)\r\n let AppAccess = getAppAccess()\r\n\r\n React.useEffect(() => {\r\n if (!mounted) {\r\n if (!reduxStore.getState().session.cards.adminViewLoader)\r\n setAdminView()\r\n setMounted(true)\r\n }\r\n return function cleanup() {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n cards: {\r\n ...reduxStore.getState().session.cards,\r\n adminView: false\r\n }\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards, props.users])\r\n\r\n if (AppAccess && AppAccess.plan && (\r\n !AppAccess.planAdmin\r\n && !AppAccess.planModerate\r\n )) {\r\n return <React.Fragment></React.Fragment>\r\n }\r\n\r\n const setAdminView = async (enabled) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n cards: {\r\n ...reduxStore.getState().session.cards,\r\n adminView: !reduxStore.getState().session.cards.adminView\r\n }\r\n });\r\n }\r\n\r\n let myCards = Object.keys(reduxStore.getState().db.cards).filter(a =>\r\n reduxStore.getState().db.cards[a]\r\n && reduxStore.getState().db.cards[a]._users\r\n && Object.keys(reduxStore.getState().db.cards[a]._users).filter(ua =>\r\n reduxStore.getState().db.cards[a]._users[ua].myDay\r\n && (moment(new Date(parseInt(reduxStore.getState().db.cards[a]._users[ua].myDay) * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today)\r\n ).length > 0\r\n ).map(c => reduxStore.getState().db.cards[c])\r\n console.log('----------------------------------------------', myCards.length)\r\n\r\n let filtered = Object.keys(users).filter(fil =>\r\n !users[fil].deleted &&\r\n users[fil].type === 'user' &&\r\n (!users[fil]._parent || users[fil]._parent === \"\")\r\n && myCards.filter(a =>\r\n a._users\r\n && a._users[fil]\r\n && a._users[fil].myDay\r\n && (moment(new Date(parseInt(a._users[fil].myDay) * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today)\r\n ).length > 0\r\n ).sort((a, b) => {\r\n if (users[a].name < users[b].name) {\r\n return -1\r\n } else if (users[a].name > users[b].name) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n ).map(a => users[a])\r\n\r\n return (\r\n <div style={{ width: '100%' }}>\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n }}\r\n >\r\n <div style={{\r\n fontSize: '33px',\r\n padding: '15px 0',\r\n fontWeight: 'bold',\r\n color: customApp('menu')\r\n }}>\r\n {translate('$__dayTasks', 1)}\r\n </div>\r\n\r\n </GridItem>\r\n {filtered.map(a =>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={3}\r\n lg={3}\r\n xl={3}\r\n key={a._id}\r\n style={{\r\n marginBottom: '7px'\r\n }}\r\n >\r\n <DayList data={a} />\r\n </GridItem>\r\n )}\r\n\r\n </GridContainer>\r\n </div >\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n cards: store.db.cards,\r\n users: store.db.users\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Dashboard)","import React, { useMemo } from \"react\";\r\n\r\n// REDUX\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\n\r\n// COMPONENTS\r\nimport CardsLoader from \"components/Card/loader\";\r\n\r\n// DEPENDENCIES\r\nimport Resume from \"./resume\";\r\nimport DayTasks from \"./daytasks\";\r\n\r\n// COMPONENTS\r\nimport ErrorBoundary from \"components/ErrorBoundary\";\r\n\r\nfunction Dashboard() {\r\n // Extract hash values\r\n const hashs = useMemo(() => {\r\n const parts = window.location.hash.split(\"/\");\r\n return parts.map((part, index) => (index === 0 ? part.replace(\"#\", \"\") : part));\r\n // eslint-disable-next-line\r\n }, [window.location.hash]);\r\n\r\n // Render content based on hash\r\n const renderContent = () => {\r\n if (hashs[0] === \"tab\") {\r\n switch (hashs[1]) {\r\n case \"resume\":\r\n return (\r\n <ErrorBoundary>\r\n <Resume />\r\n </ErrorBoundary>\r\n );\r\n case \"dayTasks\":\r\n return (\r\n <ErrorBoundary>\r\n <DayTasks />\r\n </ErrorBoundary>\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n <div style={{ minHeight: \"100vh\" }}>\r\n {/* Loader */}\r\n <CardsLoader />\r\n\r\n {/* Dynamic Content */}\r\n {renderContent()}\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => bindActionCreators(reduxActions, dispatch);\r\n\r\n// EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Dashboard);","import { title, whiteColor } from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst errorPageStyles = () => ({\r\n contentCenter: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n zIndex: \"3\",\r\n transform: \"translate(-50%,-50%)\",\r\n textAlign: \"center\",\r\n color: whiteColor,\r\n padding: \"0 15px\",\r\n width: \"100%\",\r\n maxWidth: \"880px\"\r\n },\r\n title: {\r\n ...title,\r\n fontSize: \"13.7em\",\r\n color: whiteColor,\r\n letterSpacing: \"14px\",\r\n fontWeight: \"700\"\r\n },\r\n subTitle: {\r\n fontSize: \"2.25rem\",\r\n marginTop: \"0\",\r\n marginBottom: \"8px\"\r\n },\r\n description: {\r\n fontSize: \"1.125rem\",\r\n marginTop: \"0\",\r\n marginBottom: \"8px\"\r\n }\r\n});\r\n\r\nexport default errorPageStyles;\r\n","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n// core components\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/errorPageStyles\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function ErrorPage() {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.contentCenter}>\r\n <GridContainer>\r\n <GridItem md={12}>\r\n <h1 className={classes.title}>404</h1>\r\n <h2 className={classes.subTitle}>Page not found :(</h2>\r\n <h4 className={classes.description}>\r\n Ooooups! Looks like you got lost.\r\n </h4>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\"\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 CustomButton from \"components/Buttons/custom\"\r\nimport File from \"components/Files/file_V2\"\r\nimport HeaderWithIcon from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\nimport TextField from \"components/TextField/\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport TablePagination from \"@material-ui/core/TablePagination\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport { customApp } from \"functions\"\r\n\r\nimport { navFiles, navFolders } from \"functions/files\"\r\n\r\nfunction LibraryView(props) {\r\n const { db, session } = reduxStore.getState()\r\n const [mounted, setMounted] = React.useState(false)\r\n const [selectedParent, setSelectedParent] = React.useState(null)\r\n const [page, setPage] = React.useState(0)\r\n const [limit, setLimit] = React.useState(10)\r\n const [files, setFiles] = React.useState([])\r\n const [countFiles, setCountFiles] = React.useState(0)\r\n const [orderBy, setOrderBy] = React.useState('created_at')\r\n const [orderDESC, setorderDESC] = React.useState(true)\r\n const [searchText, setSearchText] = React.useState(\"\")\r\n const [preloader, setPreloader] = React.useState(true)\r\n const [folders, setFolders] = React.useState({})\r\n const [searchFolder, setSearchFolder] = React.useState(\"\")\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n let idPlan = null\r\n if (\r\n hashs[0]\r\n && hashs[0].length === 36\r\n && reduxStore.getState().db.cards[hashs[0]]\r\n && reduxStore.getState().db.cards[hashs[0]]._users\r\n && reduxStore.getState().db.cards[hashs[0]]._users[session._id]\r\n ) {\r\n idPlan = hashs[0]\r\n }\r\n\r\n React.useEffect(() => {\r\n reqFolders({ id: idPlan })\r\n navFolders()\r\n return () => {\r\n setFiles([])\r\n setFolders({})\r\n setPreloader(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (selectedParent)\r\n reqFiles({ id: selectedParent })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedParent])\r\n\r\n React.useEffect(() => {\r\n setPage(0)\r\n setPreloader(true)\r\n if (!mounted) {\r\n setMounted(true)\r\n }\r\n const timer = setTimeout(() => {\r\n files && reqFiles({ id: idPlan })\r\n }, 1000)\r\n return () => clearTimeout(timer)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchText])\r\n\r\n React.useEffect(() => {\r\n reqFiles({ id: idPlan })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [page, limit, orderBy, orderDESC])\r\n\r\n\r\n const reqFolders = async (data, fds) => {\r\n let lf = await navFolders({\r\n ids: data && data.id ? [data.id] : [],\r\n childrens: false,\r\n type: data.type ? data.type : null\r\n })\r\n if (lf) {\r\n let ff = fds ? fds : folders\r\n if (idPlan) {\r\n ff = {\r\n ...ff,\r\n [idPlan]: {\r\n name: reduxStore.getState().db.cards[idPlan].name,\r\n parent: reduxStore.getState().db.cards[idPlan]._parent,\r\n private: null,\r\n type: \"plan\",\r\n _id: idPlan,\r\n open: true,\r\n }\r\n }\r\n }\r\n lf.forEach(folder => {\r\n ff = {\r\n ...ff,\r\n [folder._id]: {\r\n ...ff[folder._id] ? ff[folder._id] : {},\r\n ...folder,\r\n }\r\n }\r\n })\r\n setFolders(ff)\r\n }\r\n }\r\n\r\n const reqFiles = async (data) => {\r\n let lf = await navFiles({\r\n ids: data && data.id ? [data.id] : [],\r\n type: (data && data.type) || \"cards\",\r\n limit,\r\n skip: page * limit,\r\n asc: !orderDESC,\r\n orderBy: orderBy || \"created_at\",\r\n search: searchText\r\n })\r\n if (lf) {\r\n setCountFiles(lf && lf[0] && lf[0].total ? parseInt(lf[0].total) : 0)\r\n setFiles(lf)\r\n setPreloader(false)\r\n }\r\n }\r\n\r\n\r\n\r\n let lightBoxfiles = []\r\n\r\n\r\n const openLightBox = (f) => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n open: true,\r\n files: lightBoxfiles,\r\n file: f\r\n })\r\n }\r\n\r\n const order = (by) => {\r\n let ob = orderBy\r\n let desc = orderDESC\r\n if (orderBy === by) {\r\n desc = !orderDESC\r\n } else {\r\n ob = by\r\n }\r\n setOrderBy(ob)\r\n setorderDESC(desc)\r\n }\r\n\r\n const openFolder = async (data, option = false) => {\r\n const { id = null, type = null } = data\r\n let nFolders = folders\r\n\r\n nFolders = {\r\n ...nFolders,\r\n [id]: {\r\n ...nFolders[id],\r\n open: option,\r\n loading: true,\r\n }\r\n }\r\n if (Object.keys(folders).filter(a => folders[a].parent === id).length === 0) {\r\n reqFolders({ id, type }, nFolders)\r\n } else {\r\n setFolders(nFolders)\r\n }\r\n }\r\n\r\n const RenderFolder = (folder, f) => (\r\n <div\r\n key={f}\r\n style={{\r\n cursor: \"pointer\",\r\n borderLeft: \"solid 0.5px lightgray\",\r\n paddingLeft: 7,\r\n color: customApp(\"color\")\r\n }}\r\n onClick={(e) => {\r\n if (!folder.private ||\r\n (folder.private && reduxStore.getState().controls.lockPrivate)\r\n ) {\r\n openFolder({\r\n id: f,\r\n }, folders[f] && folders[f].open ? false : true)\r\n setSelectedParent(f)\r\n } else {\r\n\r\n }\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n >\r\n <HeaderWithIcon\r\n private={folder.private && !reduxStore.getState().controls.lockPrivate ? true : false}\r\n unlockedPrivates={props.unlockedPrivates}\r\n setPrivate={(a) => {\r\n let value = a ? 1 : -1\r\n if (!a && props.unlockedPrivates === 0)\r\n value = 0\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n unlockedPrivates: reduxStore.getState().controls.unlockedPrivates + value,\r\n })\r\n }}\r\n moreButton={true}\r\n title={folder.name}\r\n tooltipText={`${folder.private && !reduxStore.getState().controls.lockPrivate ? translate(\"$__private\") : folder.name}`}\r\n icon={(folder.type && db && db.dataType && db.dataType.filter(a => a.name === folder.type)[0].icon) || \"$__topic\"}\r\n fontSize=\"12px\"\r\n color={customApp(\"color\")}\r\n />\r\n {folders[f] && folders[f].open ? reqSubFolders(f) : <React.Fragment></React.Fragment>}\r\n </div>\r\n )\r\n\r\n const reqSubFolders = (id = null) => {\r\n return (\r\n <div style={{\r\n marginLeft: 7\r\n }}>\r\n {Object.keys(folders).filter(folder =>\r\n (\r\n (\r\n !id\r\n )\r\n ||\r\n (\r\n id &&\r\n folders[folder].parent === id\r\n )\r\n )\r\n ).length > 0 ?\r\n Object.keys(folders).filter(folder =>\r\n (\r\n (\r\n !id\r\n )\r\n ||\r\n (\r\n id &&\r\n folders[folder].parent === id\r\n )\r\n )\r\n ).sort((a, b) => {\r\n if (folders[a].name.toLowerCase().trim() < folders[b].name.toLowerCase().trim())\r\n return -1\r\n if (folders[a].name.toLowerCase().trim() > folders[b].name.toLowerCase().trim())\r\n return 1\r\n return 0\r\n }).map(f => {\r\n return RenderFolder(folders[f], f)\r\n }) : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <ErrorBoundary>\r\n <div>\r\n <div style={{\r\n backgroundColor: \"#FFFFFF\",\r\n position: \"relative\",\r\n padding: \"7px 15px\",\r\n float: \"right\",\r\n boxShadow: \"0px 0px 7px 3px rgba(0,0,0,0.1)\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <TextField\r\n label={translate('$__search', '*')}\r\n variant={'standard'}\r\n autoFocus\r\n value={searchText}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearchText(e.target.value)\r\n },\r\n onKeyDown: e => {\r\n // if (String(e.which) === '27')\r\n // setviewSearch(false)\r\n }\r\n }}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <CustomButton\r\n id={`sideModule_saveButton`}\r\n title={orderBy === \"created_at\" && orderDESC ? translate(`$__mostRecent`, 1) : translate(`$__olderFirst`, 1)}\r\n color={orderBy === \"created_at\" ? customApp(\"color\") : 'gray'}\r\n icon={\"calendar_month\"}\r\n onClick={() => { order('created_at') }}\r\n size={\"25px\"}\r\n />\r\n {orderBy === \"created_at\" &&\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n ...orderDESC ? { bottom: 0 } : { top: 0 },\r\n right: -5\r\n }}>\r\n <Icon\r\n size=\"15px\"\r\n color={customApp(\"menu\")}\r\n style={{ marginLeft: \"-3px\" }}\r\n >{orderDESC ? \"south\" : \"north\"}</Icon>\r\n </div>\r\n }\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <CustomButton\r\n id={`sideModule_saveButton`}\r\n title={orderBy === \"name\" && orderDESC ? translate(`$__nameDesc`, 1) : translate(`$__nameAsc`, 1)}\r\n color={orderBy === \"name\" ? customApp(\"color\") : 'gray'}\r\n icon={\"sort_by_alpha\"}\r\n onClick={() => { order('name') }}\r\n size={\"25px\"}\r\n />\r\n {orderBy === \"name\" &&\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n ...orderDESC ? { bottom: 0 } : { top: 0 },\r\n right: -5\r\n }}>\r\n <Icon\r\n size=\"15px\"\r\n color={customApp(\"menu\")}\r\n style={{ marginLeft: \"-3px\" }}\r\n >{orderDESC ? \"south\" : \"north\"}</Icon>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n backgroundColor: \"#FFFFFF\",\r\n boxShadow: \"0px 0px 7px 3px rgba(0,0,0,0.1)\",\r\n clear: \"both\",\r\n marginTop: -10,\r\n minHeight: \"calc(100vh - 150px)\"\r\n }}>\r\n <div style={{\r\n position: \"absolute\",\r\n width: 333,\r\n height: \"100%\",\r\n minHeight: 1,\r\n padding: 15,\r\n backgroundColor: \"#f4f4f4\",\r\n borderRight: \"solid 0.77px lightGray\",\r\n display: \"flow-root\"\r\n }}>\r\n <div style={{ display: \"flex\", marginTop: -10 }}>\r\n <HeaderWithIcon\r\n title={translate(\"$__folders\", 1)}\r\n icon={\"folder\"}\r\n fontSize=\"20px\"\r\n color={customApp(\"menu\")}\r\n />\r\n <TextField\r\n label={translate('$__search', '*')}\r\n variant={'standard'}\r\n autoFocus\r\n value={searchFolder}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('lightgray')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearchFolder(e.target.value)\r\n },\r\n onKeyDown: e => {\r\n // if (String(e.which) === '27')\r\n // setviewSearch(false)\r\n }\r\n }}\r\n />\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n height: \"calc(100% - 33px)\",\r\n overflowX: \"auto\",\r\n backgroundColor: \"rgba(250,250,250,0.9)\",\r\n borderRadius: \"solid 0.5px rgba(0,0,0,0.1)\",\r\n padding: 15\r\n }}>\r\n {Object.keys(folders).filter(folder =>\r\n (\r\n (\r\n (\r\n !hashs[0]\r\n ||\r\n (\r\n hashs[0]\r\n && hashs[0].length !== 36\r\n )\r\n )\r\n &&\r\n !folders[folder].parent\r\n )\r\n ||\r\n (\r\n (\r\n hashs\r\n && hashs[0]\r\n && hashs[0].length === 36\r\n )\r\n && (\r\n (\r\n folders[folder]._id === hashs[0]\r\n )\r\n )\r\n )\r\n )\r\n &&\r\n (\r\n searchFolder === \"\"\r\n ||\r\n (\r\n searchFolder\r\n && folders[folder].name.toLowerCase().indexOf(searchFolder.toLowerCase().trim()) > -1\r\n )\r\n )\r\n ).sort((a, b) => {\r\n if (folders[a].name.toLowerCase().trim() < folders[b].name.toLowerCase().trim())\r\n return -1\r\n if (folders[a].name.toLowerCase().trim() > folders[b].name.toLowerCase().trim())\r\n return 1\r\n return 0\r\n }).map(f => {\r\n return RenderFolder(folders[f], f)\r\n }\r\n )}\r\n </div>\r\n </div>\r\n <div style={{ position: \"relative\", float: \"left\", marginLeft: 333, width: \"calc(100% - 333px)\", overflowY: \"auto\" }}>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: \"15px\",\r\n }}>\r\n <div style={{ position: \"relative\", float: \"left\", minWidth: 177 }}>\r\n <HeaderWithIcon\r\n title={translate(\"$__files\", 1)}\r\n icon={\"cloud\"}\r\n fontSize=\"20px\"\r\n color={customApp(\"menu\")}\r\n />\r\n </div>\r\n <div style={{ position: \"relative\", float: \"right\", display: \"flex\", alignItems: \"center\", marginTop: -10 }}>\r\n {/* PAGINATION */}\r\n {translate(\"$__page\")} {page + 1} {translate(\"$__of\")} {Math.ceil(countFiles / limit)}\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={countFiles}\r\n page={page}\r\n onPageChange={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onRowsPerPageChange={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate(\"$__filesPerPage\")}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n {preloader ?\r\n <LinearProgress />\r\n :\r\n files && files.length > 0 ? files.map((f, fi) => {\r\n lightBoxfiles.push(f.data)\r\n let file = {\r\n ...f.data,\r\n createdBy: f.createdBy,\r\n in: f.in,\r\n // parents: f.parents.filter(a => a._id).length > 0 ? f.parents.reverse() : []\r\n }\r\n return (\r\n <div\r\n key={`file_${file._id}${fi}`}\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n paddingTop: \"7px\",\r\n paddingLeft: \"15px\",\r\n clear: \"both\"\r\n }}\r\n >\r\n <File\r\n data={file}\r\n openLightBox={\r\n () => openLightBox(file._id)\r\n }\r\n admin={\r\n file.createdBy._id === session._id\r\n ||\r\n file.in._id === session._id\r\n ||\r\n (file.access && parseInt(file.access) > 2)\r\n ? true : false\r\n }\r\n />\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n }\r\n ) : <React.Fragment></React.Fragment>}\r\n {\r\n countFiles > 10 ?\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: \"15px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n {/* PAGINATION */}\r\n {translate(\"$__page\")} {page + 1} {translate(\"$__of\")} {Math.ceil(countFiles / limit)}\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={countFiles}\r\n page={page}\r\n onPageChange={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onRowsPerPageChange={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate(\"$__filesPerPage\")}\r\n />\r\n </div>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n\r\n </div >\r\n </ErrorBoundary>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n showPrivate: store.controls.lockPrivate,\r\n history: store.db.history,\r\n unlockedPrivates: store.controls.unlockedPrivates,\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)(LibraryView)","import {\r\n primaryColor,\r\n dangerColor,\r\n successColor,\r\n defaultFont,\r\n whiteColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst customInputStyle = {\r\n disabled: {\r\n \"&:before\": {\r\n borderColor: \"transparent !important\"\r\n }\r\n },\r\n underline: {\r\n \"&:hover:not($disabled):before,&:before\": {\r\n borderColor: grayColor[4] + \"!important\",\r\n borderWidth: \"1px !important\"\r\n },\r\n \"&:after\": {\r\n borderColor: primaryColor[0]\r\n },\r\n \"& + p\": {\r\n fontWeight: \"300\"\r\n }\r\n },\r\n underlineError: {\r\n \"&:after\": {\r\n borderColor: dangerColor[0]\r\n }\r\n },\r\n underlineSuccess: {\r\n \"&:after\": {\r\n borderColor: successColor[0]\r\n }\r\n },\r\n labelRoot: {\r\n ...defaultFont,\r\n color: grayColor[3] + \" !important\",\r\n fontWeight: \"400\",\r\n fontSize: \"12px\",\r\n lineHeight: \"1.42857\",\r\n top: \"10px\",\r\n letterSpacing: \"unset\",\r\n \"& + $underline\": {\r\n marginTop: \"0px\"\r\n }\r\n },\r\n labelRootError: {\r\n color: dangerColor[0] + \" !important\"\r\n },\r\n labelRootSuccess: {\r\n color: successColor[0] + \" !important\"\r\n },\r\n formControl: {\r\n margin: \"0 0 16px 0\",\r\n paddingTop: \"27px\",\r\n position: \"relative\",\r\n verticalAlign: \"unset\",\r\n \"& svg,& .fab,& .far,& .fal,& .fas,& .material-icons\": {\r\n color: grayColor[14]\r\n }\r\n },\r\n whiteUnderline: {\r\n \"&:hover:not($disabled):before,&:before\": {\r\n backgroundColor: whiteColor\r\n },\r\n \"&:after\": {\r\n backgroundColor: whiteColor\r\n }\r\n },\r\n input: {\r\n color: grayColor[14],\r\n height: \"unset\",\r\n \"&,&::placeholder\": {\r\n fontSize: \"12px\",\r\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n fontWeight: \"400\",\r\n lineHeight: \"1.42857\",\r\n opacity: \"1\"\r\n },\r\n \"&::placeholder\": {\r\n color: grayColor[3]\r\n }\r\n },\r\n whiteInput: {\r\n \"&,&::placeholder\": {\r\n color: whiteColor,\r\n opacity: \"1\"\r\n }\r\n }\r\n};\r\n\r\nexport default customInputStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport Input from \"@material-ui/core/Input\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/customInputStyle\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CustomInput(props) {\r\n const classes = useStyles();\r\n const {\r\n formControlProps,\r\n labelText,\r\n id,\r\n labelProps,\r\n inputProps,\r\n error,\r\n white,\r\n inputRootCustomClasses,\r\n success,\r\n helperText\r\n } = props;\r\n\r\n const labelClasses = classNames({\r\n [\" \" + classes.labelRootError]: error,\r\n [\" \" + classes.labelRootSuccess]: success && !error\r\n });\r\n const underlineClasses = classNames({\r\n [classes.underlineError]: error,\r\n [classes.underlineSuccess]: success && !error,\r\n [classes.underline]: true,\r\n [classes.whiteUnderline]: white\r\n });\r\n const marginTop = classNames({\r\n [inputRootCustomClasses]: inputRootCustomClasses !== undefined\r\n });\r\n const inputClasses = classNames({\r\n [classes.input]: true,\r\n [classes.whiteInput]: white\r\n });\r\n var formControlClasses;\r\n if (formControlProps !== undefined) {\r\n formControlClasses = classNames(\r\n formControlProps.className,\r\n classes.formControl\r\n );\r\n } else {\r\n formControlClasses = classes.formControl;\r\n }\r\n var helpTextClasses = classNames({\r\n [classes.labelRootError]: error,\r\n [classes.labelRootSuccess]: success && !error\r\n });\r\n return (\r\n <FormControl {...formControlProps} className={formControlClasses}>\r\n {labelText !== undefined ? (\r\n <InputLabel\r\n className={classes.labelRoot + \" \" + labelClasses}\r\n htmlFor={id}\r\n {...labelProps}\r\n >\r\n {labelText}\r\n </InputLabel>\r\n ) : null}\r\n <Input\r\n classes={{\r\n input: inputClasses,\r\n root: marginTop,\r\n disabled: classes.disabled,\r\n underline: underlineClasses\r\n }}\r\n id={id}\r\n {...inputProps}\r\n />\r\n {helperText !== undefined ? (\r\n <FormHelperText id={id + \"-text\"} className={helpTextClasses}>\r\n {helperText}\r\n </FormHelperText>\r\n ) : null}\r\n </FormControl>\r\n );\r\n}\r\n\r\nCustomInput.propTypes = {\r\n labelText: PropTypes.node,\r\n labelProps: PropTypes.object,\r\n id: PropTypes.string,\r\n inputProps: PropTypes.object,\r\n formControlProps: PropTypes.object,\r\n inputRootCustomClasses: PropTypes.string,\r\n error: PropTypes.bool,\r\n success: PropTypes.bool,\r\n white: PropTypes.bool,\r\n helperText: PropTypes.node\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { encode as base64_encode } from 'base-64';\r\nimport bcrypt from 'bcryptjs';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport Icon from \"@material-ui/core/Icon\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\"; // Adicionado para o spinner\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\nimport Email from \"@material-ui/icons/Email\";\r\nimport Button from \"components/CustomButtons/Button\";\r\nimport Card from \"components/Card/Card\";\r\nimport CardBody from \"components/Card/CardBody\";\r\nimport CardFooter from \"components/Card/CardFooter\";\r\nimport CardHeader from \"components/Card/CardHeader\";\r\nimport CustomInput from \"components/CustomInput/CustomInput\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport TextField from \"components/TextField\";\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/loginPageStyle\";\r\nimport apims from \"apims/\";\r\nimport { translate, customApp } from \"functions/\";\r\nrequire('dotenv').config();\r\n\r\nconst LKEY = process.env.REACT_APP_PROD === \"true\"\r\n ? process.env.REACT_APP_KP\r\n : process.env.REACT_APP_KL;\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nfunction LoginPage(props) {\r\n const [state, setState] = useState({\r\n email: '',\r\n password: '',\r\n token: '',\r\n reqTwoFactor: false,\r\n loginToken: null,\r\n isLoading: false,\r\n });\r\n\r\n const classes = useStyles();\r\n\r\n const handleChange = (field, value) => {\r\n setState((prev) => ({ ...prev, [field]: value }));\r\n };\r\n\r\n const showAlert = (variant, messageKey) => {\r\n props.callback({\r\n fn: 'alert',\r\n variant,\r\n horizontal: \"center\",\r\n message: translate(messageKey, 1),\r\n });\r\n };\r\n\r\n const emailLogin = async () => {\r\n const { email, password } = state;\r\n\r\n if (!email) {\r\n return showAlert('warning', '$__alertLoginEmptyEmail');\r\n }\r\n if (!password) {\r\n return showAlert('warning', '$__alertLoginEmptyPassword');\r\n }\r\n\r\n setState((prev) => ({ ...prev, isLoading: true }));\r\n\r\n try {\r\n const hashedPassword = await bcrypt.hash(password, 10);\r\n const payload = base64_encode(\r\n base64_encode(\r\n JSON.stringify({\r\n lp: base64_encode(`${hashedPassword}//${LKEY}`),\r\n login: email,\r\n password: base64_encode(`${hashedPassword}///${base64_encode(password)}///${hashedPassword}`),\r\n })\r\n )\r\n );\r\n\r\n const res = await apims.post('/Login', payload);\r\n handleLoginResponse(res);\r\n\r\n } catch (error) {\r\n console.error(error);\r\n showAlert('warning', '$__alertServerConectionLogin');\r\n setState((prev) => ({ ...prev, isLoading: false }));\r\n } finally {\r\n }\r\n };\r\n\r\n const handleLoginResponse = (res) => {\r\n if (res?.data?.code === 400) {\r\n showAlert('warning', `$__${res.data.error}`);\r\n } else if (res?.data?.twoFactor) {\r\n setState((prev) => ({ ...prev, reqTwoFactor: true, loginToken: res.data.token, isLoading: false }));\r\n } else if (res?.data?.token) {\r\n localStorage.setItem('TOKEN', res.data.token);\r\n props.callback({ fn: 'login', token: res.data.token });\r\n }\r\n };\r\n\r\n const validateToken = async () => {\r\n const { token, loginToken } = state;\r\n\r\n if (!token || token.length !== 6) {\r\n return showAlert('warning', '$__invalidToken');\r\n }\r\n\r\n setState((prev) => ({ ...prev, isLoading: true }));\r\n\r\n try {\r\n const res = await apims.post('/M_User_TwoFactor', {\r\n action: 'verify',\r\n code: token,\r\n token: loginToken,\r\n });\r\n\r\n if (res?.data?.result) {\r\n localStorage.setItem('TOKEN', loginToken);\r\n props.callback({ fn: 'login', token: loginToken });\r\n } else {\r\n showAlert('warning', '$__invalidToken');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n setState((prev) => ({ ...prev, token: '', isLoading: false }));\r\n }\r\n };\r\n\r\n const recoveryPassword = async (email) => {\r\n if (!email) {\r\n return showAlert('warning', '$__loginAlertRecoveryEmailEmpty');\r\n }\r\n\r\n try {\r\n const res = await apims.get(`/M_User_RecoveryPass/?email=${email}`);\r\n if (res?.data) {\r\n showAlert('success', '$__loginAlertRecoveryEmailSended');\r\n } else {\r\n showAlert('warning', '$__loginAlertRecoveryInvalidEmail');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n showAlert('error', '$__loginAlertRecoveryError');\r\n }\r\n };\r\n\r\n return (\r\n <div className={classes.container}>\r\n <GridContainer style={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <GridItem xl={4} lg={4} md={4} sm={12} xs={12}>\r\n <Card login>\r\n <CardHeader className={`${classes.cardHeader} ${classes.textCenter}`} color=\"primary\"\r\n style={{\r\n background: customApp(\"ColumnTitleColor\"),\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(15,18,35,0.14), 0 7px 10px -5px rgba(15,18,35,0.4)\"\r\n }}>\r\n <h4 className={classes.cardTitle}>{translate('$__login')}</h4>\r\n </CardHeader>\r\n <CardBody>\r\n {!state.reqTwoFactor ? (\r\n <>\r\n <CustomInput\r\n labelText={translate('$__email')}\r\n id=\"email\"\r\n formControlProps={{ fullWidth: true }}\r\n inputProps={{\r\n onChange: (e) => handleChange('email', e.target.value),\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Email className={classes.inputAdornmentIcon} />\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n <CustomInput\r\n labelText={translate('$__password')}\r\n id=\"password\"\r\n formControlProps={{ fullWidth: true }}\r\n inputProps={{\r\n onChange: (e) => handleChange('password', e.target.value),\r\n onKeyDown: (e) => e.keyCode === 13 && emailLogin(),\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon className={classes.inputAdornmentIcon}>lock_outline</Icon>\r\n </InputAdornment>\r\n ),\r\n type: \"password\",\r\n autoComplete: \"off\",\r\n }}\r\n />\r\n <IconButton\r\n icon=\"lock\"\r\n text={translate('$__recoveryPass', '*')}\r\n reverse\r\n style={{ float: 'right' }}\r\n onClick={() => recoveryPassword(state.email)}\r\n />\r\n </>\r\n ) : (\r\n <TextField\r\n labelText=\"Token\"\r\n value={state.token}\r\n placeholder=\"Digite o token aqui\"\r\n formControlProps={{ fullWidth: true }}\r\n inputProps={{\r\n onChange: (e) => handleChange('token', e.target.value),\r\n type: \"number\",\r\n }}\r\n />\r\n )}\r\n </CardBody>\r\n <CardFooter className={classes.justifyContentCenter} style={{ justifyContent: \"center\" }}>\r\n <Button\r\n style={{\r\n backgroundColor: state.isLoading ? 'gray' : customApp(\"menu\"),\r\n color: \"#FFF\",\r\n position: \"relative\",\r\n float: \"right\",\r\n padding: \"12px 27px\",\r\n fontSize: \"18px\",\r\n fontWeight: \"bold\"\r\n }}\r\n simple\r\n size=\"lg\"\r\n block\r\n onClick={state.reqTwoFactor ? validateToken : emailLogin}\r\n disabled={state.isLoading}\r\n >\r\n {state.isLoading ? (\r\n <CircularProgress\r\n size={24}\r\n style={{\r\n color: \"#FFF\",\r\n }}\r\n />\r\n ) : (\r\n translate(state.reqTwoFactor ? '$__validateTokenAndSigin' : '$__sigin')\r\n )}\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = () => ({});\r\nconst mapDispatchToProps = (dispatch) => bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginPage);","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n// core components\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/errorPageStyles\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function ErrorPage() {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.contentCenter}>\r\n <GridContainer>\r\n <GridItem md={12}>\r\n <h1 className={classes.title}>\\o/</h1>\r\n <h2 className={classes.subTitle}>Plataforma em atualização :)</h2>\r\n <h4 className={classes.description} style={{ color: '#FFFFFF' }}>\r\n Tente acessar novamente em alguns minutos. Estamos implementando melhorias para melhor produtividade no seu dia a dia.\r\n </h4>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n// core components\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/errorPageStyles\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function ErrorPage() {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.contentCenter}>\r\n <GridContainer>\r\n <GridItem md={12}>\r\n <h1 className={classes.title}>\"/</h1>\r\n <h2 className={classes.subTitle}>Parece que você está OFF-LINE</h2>\r\n <h4 className={classes.description} style={{ color: '#FFFFFF' }}>\r\n Verifique a conexão de sua internet e tente novamente.\r\n </h4>\r\n <h4 className={classes.description} style={{ color: '#FFFFFF' }}>\r\n Caso você esteja com conexão de internet ativa e ainda esteja visualizando esta página após algumas tentativas, favor entrar em contato com nosso suporte.\r\n </h4>\r\n <h4 className={classes.description} style={{ color: '#FFFFFF' }}>\r\n <a href=\"/login\" target=\"_self\">Clique aqui para tentar novamente</a>\r\n </h4>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = {\r\n container: {\r\n borderRadius: '2px',\r\n marginRight: '7px',\r\n marginLeft: '7px',\r\n marginBottom: '15px',\r\n height: 'min-content',\r\n width: '100%',\r\n },\r\n title: {\r\n ...defaultFont,\r\n padding: '3px 0px',\r\n width: '100%',\r\n margin: '0px',\r\n background: customApp('ColumnTitleColor'),\r\n \"&$reverse\": {},\r\n },\r\n reverse: {\r\n flexDirection: \"row-reverse\",\r\n },\r\n cardList: {\r\n //height: 'auto',\r\n width: 'calc(100% - 6px)',\r\n padding: '0px',\r\n minHeight: '30px',\r\n \"&::-webkit-scrollbar-track\": {\r\n // boxShadow: 'inset 0 0 5px grey',\r\n borderRadius: '0px',\r\n },\r\n \"&::-webkit-scrollbar\": {\r\n width: '7px',\r\n },\r\n \"&::-webkit-scrollbar-thumb\": {\r\n background: customApp('medium'),\r\n opacity: '0.5 !important',\r\n borderRadius: '0px',\r\n }\r\n\r\n },\r\n button: {\r\n padding: '3px auto',\r\n cursor: 'pointer',\r\n alignItems: 'center',\r\n display: 'flex',\r\n opacity: 1,\r\n transition: 'visibility 0.1s, opacity 0.5s linear'\r\n },\r\n cardAdd: {\r\n position: 'relative',\r\n border: `0.5px solid ${customApp('light')}`,\r\n borderRadius: '2px',\r\n display: 'block',\r\n backgroundColor: '#FFFFFF',\r\n boxShadow: '0px 0px 10px rgba(0,0,0,0.1)',\r\n overflow: 'hidden',\r\n padding: '3px'\r\n }\r\n};\r\n\r\nexport default style;\r\n","import React, { useRef, memo } from 'react';\r\nimport MD5 from \"crypto-js/md5\"\r\nimport styled from 'styled-components';\r\nimport { Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { VariableSizeList as List } from \"react-window\";\r\nimport AutoSizer from \"react-virtualized-auto-sizer\";\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 HeaderWithIcon from \"components/Header/withIcon\";\r\nimport Card from \"components/Card\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\nimport { updateCardData, getCardColor, filterCards } from \"functions/cards\";\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Agile-Column\";\r\n\r\n\r\nfunction Column(props) {\r\n const { session } = reduxStore.getState()\r\n\r\n let searchID = MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n const search = props.searchs && props.searchs[searchID] ? props.searchs[searchID] : null\r\n\r\n // References\r\n const listRef = React.createRef();\r\n const rowHeights = useRef({});\r\n const rowExpandeds = useRef({});\r\n const separators = useRef({});\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n React.useEffect(() => {\r\n if (!props.groupByColor)\r\n separators.current = {}\r\n }, [props.groupByColor, props.cards])\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n const trackingTreeParents = (id) => {\r\n let name = reduxStore.getState().db.cards[id]?.name?.trim()?.toLowerCase() || ``\r\n if (reduxStore.getState().db.cards[id] && reduxStore.getState().db.cards[id].type !== \"plan\" && reduxStore.getState().db.cards[id]._parent)\r\n name = `${trackingTreeParents(reduxStore.getState().db.cards[id]._parent)}-${name}`\r\n return name\r\n }\r\n\r\n const resolveOrder = (a, b) => {\r\n let orderA = a?.order?.low || !isNaN(a?.order) ? parseInt(a.order) : String(a.order) ? parseInt(a.order) : 0\r\n let orderB = b?.order?.low || !isNaN(b?.order) ? parseInt(b.order) : String(b.order) ? parseInt(b.order) : 0\r\n\r\n if (props.agileOrderBy === 'name') {\r\n orderA = a.name && a.name.trim() ? `${a.name?.trim()?.toLowerCase()}` : ``\r\n orderB = b.name && b.name.trim() ? `${b.name?.trim()?.toLowerCase()}` : ``\r\n }\r\n\r\n if (props.agileOrderBy === 'startDate') {\r\n orderA = a.startDate ? `${props.agileOrderDesc === 'ASC' ? `Z` : `A`}${String(a.startDate)}` : `${props.agileOrderDesc === 'ASC' ? `A` : `Z`}${a.name}`\r\n orderB = b.startDate ? `${props.agileOrderDesc === 'ASC' ? `Z` : `A`}${String(b.startDate)}` : `${props.agileOrderDesc === 'ASC' ? `A` : `Z`}${b.name}`\r\n }\r\n\r\n if (props.agileOrderBy === 'endDate') {\r\n orderA = a.endDate ? `${props.agileOrderDesc === 'ASC' ? `Z` : `A`}${String(a.endDate)}` : `${props.agileOrderDesc === 'ASC' ? `A` : `Z`}${a.name}`\r\n orderB = b.endDate ? `${props.agileOrderDesc === 'ASC' ? `Z` : `A`}${String(b.endDate)}` : `${props.agileOrderDesc === 'ASC' ? `A` : `Z`}${b.name}`\r\n }\r\n\r\n // console.log(hashs.indexOf('overview'))\r\n\r\n if (hashs.indexOf('overview') > -1) {\r\n orderA = `${trackingTreeParents(a._parent)}-${orderA}`\r\n orderB = `${trackingTreeParents(b._parent)}-${orderB}`\r\n }\r\n\r\n if (props.agileOrderDesc === 'DESC') {\r\n if (orderA < orderB)\r\n return -1\r\n if (orderA > orderB)\r\n return 1\r\n }\r\n if (props.agileOrderDesc === 'ASC') {\r\n if (orderA > orderB)\r\n return -1\r\n if (orderA < orderB)\r\n return 1\r\n }\r\n return 0\r\n }\r\n\r\n let filtered = props.cards.map(a => reduxStore.getState().db.cards[a])\r\n\r\n if (!props.showCatenation) {\r\n filtered = filtered.filter(ai => {\r\n if (filtered.filter(xc => xc._id === ai._parent).length === 0)\r\n return true\r\n return false\r\n }\r\n )\r\n }\r\n\r\n if (search)\r\n filtered = filterCards(filtered, search)\r\n\r\n if (!props.showDeleted && !reduxStore.getState().controls.deleted) {\r\n filtered = filtered.filter(fil => !fil.deleted).map(res => res)\r\n }\r\n\r\n\r\n\r\n // console.log(props.agileOrderBy)\r\n\r\n\r\n\r\n filtered = filtered.sort((a, b) => resolveOrder(a, b)).map(res => res)\r\n\r\n let columnName = translate(props.column.name, 1)\r\n let columnIcon = null\r\n let customColumns = {}\r\n if (reduxStore.getState().db.cards[hashs[0]] && reduxStore.getState().db.cards[hashs[0]].customColumns)\r\n customColumns = JSON.parse(reduxStore.getState().db.cards[hashs[0]].customColumns)\r\n\r\n if (\r\n customColumns\r\n && customColumns[props.column.name.replace(\"$__\", \"\")]\r\n && customColumns[props.column.name.replace(\"$__\", \"\")].name\r\n )\r\n columnName = translate(customColumns[props.column.name.replace(\"$__\", \"\")].name, 1)\r\n\r\n if (\r\n customColumns\r\n && customColumns[props.column.name.replace(\"$__\", \"\")]\r\n && customColumns[props.column.name.replace(\"$__\", \"\")].icon\r\n )\r\n columnIcon = translate(customColumns[props.column.name.replace(\"$__\", \"\")].icon, 1)\r\n\r\n\r\n let cardbyGroup = []\r\n\r\n\r\n //INI VIRTUALIZED\r\n function Row({ index, style }) {\r\n const card = filtered[index]\r\n const childrens = filtered.filter(fil => fil._parent === card._id).length || 0\r\n let separatorTitle = ``\r\n let separatorColor = ``\r\n if (props.groupByColor && hashs.indexOf(\"overview\") > -1) {\r\n let a = getCardColor(card)\r\n if (cardbyGroup.indexOf(a.parentId) === -1 && reduxStore.getState().db.cards[a.parentId] && reduxStore.getState().db.cards[a.parentId].type !== \"plan\") {\r\n separatorTitle = reduxStore.getState().db.cards[a.parentId].name\r\n separatorColor = a.color\r\n cardbyGroup.push(a.parentId)\r\n separators.current = {\r\n ...separators.current,\r\n [card._id]: {\r\n title: reduxStore.getState().db.cards[a.parentId].name,\r\n color: a.color || \"#FFFFFF\"\r\n }\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Draggable\r\n draggableId={card._id}\r\n index={index}\r\n key={card._id}\r\n isDragDisable={props.isDragDisable || false}\r\n >\r\n {(provided, snapshot) => (\r\n <div style={{\r\n ...style,\r\n ...filtered.filter(fil => fil._id === card._parent).length > 0 ? {\r\n paddingLeft: 10,\r\n borderLeft: \"solid 2px rgba(0,0,0,0.3)\",\r\n marginLeft: 10,\r\n width: \"calc(100% - 20px)\"\r\n } : {}\r\n }}>\r\n {props.groupByColor && separators.current[card._id] && hashs.indexOf(\"overview\") > -1 ?\r\n <div style={{\r\n width: \"100%\",\r\n padding: 3,\r\n color: \"gray\",\r\n marginTop: 17,\r\n borderBottom: `solid 3px ${separators.current[card._id]?.color || ``}`\r\n }}>{separators.current[card._id].title}</div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <Item\r\n separator={props.groupByColor && hashs.indexOf(\"overview\") > -1 && separatorTitle ? { title: separatorTitle, color: separatorColor } : null}\r\n provided={provided}\r\n isDragging={snapshot?.isDragging}\r\n index={index}\r\n snapshot={snapshot}\r\n clone=\"CL\"\r\n childrens={childrens}\r\n />\r\n </div>\r\n )}\r\n </Draggable>\r\n </React.Fragment>\r\n )\r\n }\r\n\r\n function Item({ provided, index, snapshot, clone, childrens = 0 }) {\r\n let card = filtered[index]\r\n return (\r\n <div\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n ref={provided.innerRef}\r\n >\r\n <Card\r\n cardId={card._id}\r\n separator={props.groupByColor && hashs.indexOf(\"overview\") > -1 && separators?.current[card._id]?.title ? separators?.current[card._id] : null}\r\n db={props.db}\r\n showOrder={props.showOrder || false}\r\n showSelected={props.showSelected || false}\r\n showSelectBox={props?.showCheck}\r\n selectedCard={props?.selectedCards && props.selectedCards.includes(card._id)}\r\n // || props.selectedCards.includes(card._parent)\r\n locked={props.locked || false}\r\n viewButton={props.viewButton || false}\r\n showConnectedIn={props.showConnectedIn ? true : false}\r\n isDragging={snapshot.isDragging && !snapshot.isDropAnimating}\r\n snapshot={snapshot}\r\n cardColorPicker={props.cardColorPicker ? true : false}\r\n manualExpanded={rowExpandeds?.current[card._id] || false}\r\n onSelect={(id) => {\r\n props.setSelectedCards(id)\r\n }}\r\n onResize={(size) => {\r\n // if (reduxStore.getState().db.cards[card._id].name === 'Coffe')\r\n // console.log(size)\r\n setRowHeight(card._id, size)\r\n }}\r\n onExpand={(expanded) => {\r\n if (mounted.current)\r\n if ((!rowExpandeds.current[card._id] && expanded) || (String(expanded) === \"false\" && rowExpandeds.current[card._id]))\r\n setRowExpanded(card._id, expanded)\r\n }}\r\n hasChildrens={childrens}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n function getRowHeight(index) {\r\n let card = filtered[index]\r\n return rowHeights.current[card._id] + 7 || 67;\r\n }\r\n\r\n function setRowHeight(index, size) {\r\n rowHeights.current = {\r\n ...rowHeights.current, [index]: size\r\n }\r\n if (listRef?.current?.resetAfterIndex)\r\n listRef.current.resetAfterIndex(0);\r\n }\r\n\r\n function setRowExpanded(index, expanded) {\r\n if (listRef?.current?.resetAfterIndex)\r\n listRef.current.resetAfterIndex(0);\r\n\r\n rowExpandeds.current = {\r\n ...rowExpandeds.current, [index]: expanded\r\n }\r\n }\r\n\r\n\r\n return (\r\n <Draggable draggableId={props.columnId ? String(props.columnId) : 'NOT_ID_SENDED'} index={props.index} >\r\n {provided => (\r\n <Container\r\n {...!props.isDropDisabled && provided.draggableProps}\r\n {...props}\r\n ref={provided.innerRef}\r\n >\r\n <div {...provided.draggableProps}{...provided.dragHandleProps} style={{ display: 'none' }}></div>\r\n <div {...!props.isDropDisabled && provided.dragHandleProps}>\r\n <HeaderWithIcon\r\n title={columnName}\r\n icon={columnIcon || props.column.icon || \"topic\"}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n {...hashs.length > 0\r\n && hashs[1]\r\n && hashs[1] === 'overview'\r\n && reduxStore.getState().db.cards[hashs[0]]\r\n && reduxStore.getState().db.cards[hashs[0]].planType\r\n && reduxStore.getState().db.cards[hashs[0]].planType === 'flow'\r\n && reduxStore.getState().db.cards[hashs[0]]._users\r\n && reduxStore.getState().db.cards[hashs[0]]._users[session._id]\r\n && reduxStore.getState().db.cards[hashs[0]]._users[session._id].access\r\n && parseInt(reduxStore.getState().db.cards[hashs[0]]._users[session._id].access) > 3\r\n ? {\r\n permitIcon: true,\r\n editable: true,\r\n onEdit: (x) => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: hashs[0] }\r\n }, {\r\n customColumns: JSON.stringify({\r\n ...reduxStore.getState().db.cards[hashs[0]] && reduxStore.getState().db.cards[hashs[0]].customColumns ? JSON.parse(reduxStore.getState().db.cards[hashs[0]].customColumns) : {},\r\n [props.column.name.replace(\"$__\", \"\")]: x\r\n })\r\n })\r\n },\r\n placeholder: translate(\"$__columnName\")\r\n } : {}}\r\n customButtons={[\r\n props.columnsSettings &&\r\n {\r\n name: \"settings\",\r\n icon: \"more_horiz\",\r\n color: customApp('color'),\r\n onClick: () => console.log('s'),\r\n show: 'hover'\r\n },\r\n ]}\r\n\r\n periodFilter={props && props.periodFilter ? true : false}\r\n />\r\n <div style={{ position: 'absolute', display: 'flex', right: 0, top: 15, fontWeight: 'bold' }}>{props.columnId && props.columnId === \"completed\" ? filtered.sort((a, b) => {\r\n let ca = a.completed_at && String(a.completed_at.low) ? String(a.completed_at.low) : a.completed_at\r\n let cb = b.completed_at && String(b.completed_at.low) ? String(b.completed_at.low) : b.completed_at\r\n if (ca && cb && ca > cb)\r\n return -1\r\n if (ca && cb && ca < cb)\r\n return 1\r\n return 0\r\n }).length : filtered.length}\r\n </div>\r\n </div>\r\n <Droppable\r\n droppableId={props.columnId ? String(props.columnId) : 'NOT_ID_SENDED'}\r\n type=\"card\"\r\n isDropDisabled={props.column.isDropDisabled}\r\n direction={`${props.inLine ? 'horizontal' : 'vertical'}`}\r\n isCombineEnabled={props.isCombineEnabled}\r\n mode={\"virtual\"}\r\n renderClone={(provided, snapshot, rubric) => {\r\n return (\r\n <Item\r\n provided={provided}\r\n isDragging={snapshot?.isDragging}\r\n index={rubric.source.index}\r\n snapshot={snapshot}\r\n style={{ margin: 0 }}\r\n clone={true}\r\n />\r\n )\r\n }}\r\n >\r\n {(provided) => (\r\n <div\r\n ref={provided.innerRef}\r\n style={{\r\n width: \"100%\",\r\n overflowX: \"hidden\",\r\n height: props.inLineAdd ? \"calc(100% - 60px)\" : \"calc(100% - 10px)\"\r\n }}\r\n >\r\n <AutoSizer style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n overflowX: \"hidden\",\r\n }}\r\n >\r\n {({ height, width }) => (\r\n <List\r\n className=\"List\"\r\n height={height}\r\n width={width}\r\n ref={listRef}\r\n itemCount={filtered.length}\r\n itemSize={getRowHeight}\r\n outerRef={provided.innerRef}\r\n itemData={props.columnId && props.columnId === \"completed\" ? filtered.sort((a, b) => {\r\n let ca = a.completed_at && String(a.completed_at.low) ? String(a.completed_at.low) : a.completed_at\r\n let cb = b.completed_at && String(b.completed_at.low) ? String(b.completed_at.low) : b.completed_at\r\n if (ca && cb && ca > cb)\r\n return -1\r\n if (ca && cb && ca < cb)\r\n return 1\r\n return 0\r\n }) : filtered}\r\n style={{\r\n height: \"100%\",\r\n overflowX: \"hidden\"\r\n }}\r\n >\r\n {Row}\r\n </List>\r\n )}\r\n </AutoSizer>\r\n </div>\r\n )}\r\n </Droppable>\r\n <div id=\"Agilev2_Column_552\" style={{ position: 'relative', float: 'left', width: '100%', padding: '7px' }}>\r\n <IconButton\r\n text={translate(\"$__add\", '*')}\r\n icon=\"add_box\"\r\n iconColor={customApp('medium')}\r\n onClick={() => {\r\n const { dataType } = reduxStore.getState().db\r\n let addType = props.typeAdd || props.columnId\r\n // console.log(props.addInitialData)\r\n if (dataType.filter(a => a.name.indexOf(addType) > -1).length === 0)\r\n addType = \"task\"\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n addCard: {\r\n _parent: props.selectedParent ? props.selectedParent : hashs[0] ? hashs[0] : null,\r\n // _planId: hashs[0] && hashs[0].length === 36 ? hashs[0] : null,\r\n rows: filtered.length,\r\n initialData: {\r\n type: addType,\r\n ...props.addInitialData || {},\r\n }\r\n },\r\n })\r\n }}\r\n />\r\n </div>\r\n </Container>\r\n )\r\n }\r\n </Draggable>\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n margin:0 7px;\r\n min-width:180px;\r\n ${props => props.columnStyle && props.columnStyle.width ? `width:calc(${props.columnStyle.width} - 14px);` : `width:calc(100% - 14px);`}\r\n @media(min-width: 960px) {\r\n position:relative;\r\n max-height:${props => props.columnStyle && props.columnStyle.maxHeight ? props.columnStyle.maxHeight : 'calc(100% - 0px)'};\r\n \r\n ${props => props.inLine\r\n ? `display:block;\r\n `\r\n : `margin-bottom:0px !important;\r\n ${props => props.columnStyle && props.columnStyle.width ? `width:${props.columnStyle.width};` : `width:100%;`}\r\n `\r\n }\r\n }\r\n @media(max-width: 959px) {\r\n float:left;\r\n position: relative;\r\n }\r\n @media(max-width: 599px) {\r\n float:left;\r\n position: relative;\r\n }\r\n `\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n searchs: store.searchs,\r\n agileOrderBy: store.controls.agileOrderBy,\r\n agileOrderDesc: store.controls.agileOrderDesc,\r\n groupByColor: store.db.groupByColor,\r\n orderByTitle: store.db.orderByTitle,\r\n orderByTitlePosition: store.db.orderByTitlePosition,\r\n cardsExpanded: store.db.cardsExpanded,\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(memo(Column)));","import React from \"react\";\r\nimport { DragDropContext, Droppable } from \"react-beautiful-dnd\";\r\nimport styled from \"styled-components\";\r\nimport moment from \"moment-timezone\";\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//DEPENDENCIES\r\nimport Column from \"./Column\";\r\n\r\nfunction App(props) {\r\n const { db } = reduxStore.getState()\r\n\r\n React.useEffect(() => {\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onDragEnd = async result => {\r\n const { socket } = reduxStore.getState().functions\r\n const { destination, source, draggableId } = result\r\n let newCardsOrder = db.cards\r\n if (result.combine) {\r\n return;\r\n }\r\n\r\n\r\n if (!destination) return false\r\n\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false\r\n\r\n const sourceColumn = source.droppableId\r\n const destinationColumn = destination.droppableId\r\n\r\n const sourceCardIds = Array.from(props.cards.filter(c => reduxStore.getState().db.cards[c].status === sourceColumn).sort((ca, cb) => {\r\n let a = reduxStore.getState().db.cards[ca]\r\n let b = reduxStore.getState().db.cards[cb]\r\n if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }\r\n ).map(a => a))\r\n\r\n //When move Card in single Column\r\n\r\n if (sourceColumn === destinationColumn && !reduxStore.getState().db.orderByTitle) {\r\n const newCardsIds = Array.from(props.cards.filter(c => reduxStore.getState().db.cards[c].status === sourceColumn).sort((ca, cb) => {\r\n let a = reduxStore.getState().db.cards[ca]\r\n let b = reduxStore.getState().db.cards[cb]\r\n if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }\r\n ).map(a => a._id))\r\n\r\n newCardsIds.splice(source.index, 1)\r\n newCardsIds.splice(destination.index, 0, draggableId)\r\n newCardsIds.forEach((card, i) => {\r\n newCardsOrder[card] = {\r\n ...newCardsOrder[card],\r\n order: {\r\n low: i\r\n }\r\n }\r\n })\r\n\r\n const newState = {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...db.cards,\r\n ...newCardsOrder,\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...newState,\r\n });\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"inColumn\",\r\n }, {\r\n node: draggableId,\r\n source: source.droppableId,\r\n destination: destination.droppableId,\r\n destinationCards: newCardsIds,\r\n sourceCards: [],\r\n columnName: 'status',\r\n })\r\n return\r\n }\r\n\r\n //When move Card in mult Column\r\n sourceCardIds.splice(source.index, 1)\r\n\r\n const destinationCardIds = Array.from(props.cards.filter(c => reduxStore.getState().db.cards[c].status === destinationColumn).sort((ca, cb) => {\r\n let a = reduxStore.getState().db.cards[ca]\r\n let b = reduxStore.getState().db.cards[cb]\r\n if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }\r\n ).map(a => a._id))\r\n destinationCardIds.splice(destination.index, 0, draggableId)\r\n\r\n sourceCardIds.forEach((a, i) => {\r\n if (!db.cards[a].order || !db.cards[a].order.low) {\r\n db.cards[a] = {\r\n ...db.cards[a],\r\n order: {\r\n low: parseInt(i)\r\n }\r\n }\r\n } else {\r\n db.cards[a].order.low = parseInt(i)\r\n }\r\n })\r\n\r\n destinationCardIds.forEach((a, i) => {\r\n if (!db.cards[a]?.order || !db.cards[a]?.order?.low) {\r\n db.cards[a] = {\r\n ...db.cards[a],\r\n order: {\r\n low: parseInt(i)\r\n }\r\n }\r\n } else {\r\n db.cards[a] = {\r\n ...db.cards[a],\r\n order: {\r\n low: parseInt(i)\r\n }\r\n }\r\n }\r\n })\r\n\r\n const newState = {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n [draggableId]: {\r\n ...db.cards[draggableId],\r\n status: destinationColumn,\r\n completed_at: destinationColumn === 'completed' ? {\r\n low: moment().tz('America/Sao_Paulo').unix('x'),\r\n } : null,\r\n updated_at: {\r\n low: moment().tz('America/Sao_Paulo').unix('x'),\r\n },\r\n order: {\r\n low: destination.index\r\n }\r\n }\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...newState,\r\n });\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"inColumn\",\r\n }, {\r\n node: draggableId,\r\n source: source.droppableId,\r\n destination: destination.droppableId,\r\n destinationCards: destinationCardIds,\r\n columnName: 'status',\r\n sourceCards: sourceCardIds,\r\n })\r\n\r\n }\r\n const onDragStart = async result => {\r\n }\r\n const onDragUpdate = async result => {\r\n }\r\n\r\n return (\r\n <DragDropContext\r\n onDragEnd={onDragEnd}\r\n onDragStart={onDragStart}\r\n onDragUpdate={onDragUpdate}\r\n >\r\n <Droppable\r\n droppableId=\"ALL-COLUMNS-STATUS\"\r\n type=\"column\"\r\n direction={`${props.inLine ? 'vertical' : 'horizontal'}`}\r\n isDropDisabled={true}\r\n >\r\n {provided => (\r\n <Container\r\n {...props}\r\n ref={provided.innerRef}\r\n >\r\n {reduxStore.getState().db.status.map((st, index) => {\r\n const theColumn = {\r\n name: st.label,\r\n icon: st.icon,\r\n cards: [],\r\n emptyHide: false,\r\n }\r\n return <Column\r\n {...props}\r\n key={`${st.value}`}\r\n columnId={`${st.value}`}\r\n isDropDisabled\r\n column={theColumn}\r\n cards={props?.cards?.filter(c => reduxStore.getState().db.cards[c].status === st.value || (st.value === 'notStarted' && !reduxStore.getState().db.cards[c].status)).map(a => a)}\r\n index={index}\r\n columnsSettings={false}\r\n locked={false}\r\n columnStyle={{\r\n flex: index,\r\n width: \"25%\",\r\n ...props.columnStyle ? props.columnStyle : {}\r\n\r\n }}\r\n viewButton={props.viewButton || false}\r\n periodFilter={st.props && st.props.periodFilter ? true : false}\r\n addInitialData={{\r\n status: st.value\r\n }}\r\n />\r\n })}\r\n {provided.placeholder}\r\n <div style={{ clear: 'both' }}></div>\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n )\r\n}\r\n\r\n//STYLEDS\r\nconst Container = styled.div`\r\nheight:100%;\r\n${props =>\r\n props.inLine ?\r\n `display: block;\r\n width: -webkit-fill-available;\r\n position:relative;\r\n ${props.style}`\r\n :\r\n ` display: flex;\r\n width: 100%;\r\n ${props.style}\r\n @media(min-width: 960px) {\r\n display: flex;\r\n }\r\n `\r\n }\r\n @media(max-width: 959px) {\r\n display: contents !important;\r\n width: -webkit-fill-available;\r\n height:auto;\r\n }\r\n `\r\n\r\n//REACT\r\n\r\nconst mapStateToProps = (store) => ({\r\n dbcards: store.db.cards\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(App);","import React from \"react\";\r\nimport moment from \"moment-timezone\"\r\nimport MD5 from \"crypto-js/md5\"\r\n\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 Icon from \"components/Icon\";\r\nimport SelectUsers from \"components/User/select\";\r\n\r\n//@MATERIAL\r\nimport Filter from \"./index\";\r\nimport ButtonOptions from \"componentsV3/Buttons\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, textColor } from \"functions/\";\r\n\r\nconst initialIndicators = JSON.stringify({\r\n status: {\r\n all: true,\r\n notStarted: true,\r\n awaitAction: true,\r\n paused: true,\r\n inProgress: true,\r\n completed: true,\r\n },\r\n priority: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n risk: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n complexity: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n impact: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n})\r\n\r\nfunction MenuFilter(props) {\r\n const [searchID, setSearchId] = React.useState(props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString())\r\n const contentRef = React.useRef()\r\n\r\n React.useEffect(() => {\r\n let newId = props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n if (searchID !== newId)\r\n setSearchId(newId)\r\n // eslint-disable-next-line\r\n }, [props.nodeId])\r\n\r\n const filters = {\r\n ...props.defaultValues || {},\r\n ...reduxStore.getState().searchs[searchID] || {}\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.defaultValues) {\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...props.defaultValues || {},\r\n ...reduxStore.getState().searchs[searchID] || {}\r\n },\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchID])\r\n\r\n const RenderSelected = ({ card, type, order }) => {\r\n return (\r\n <div\r\n key={card}\r\n style={{\r\n padding: \"3px 7px\",\r\n backgroundColor: \"rgba(0,0,0,0.1)\",\r\n boxShadow: \"rgba(0,0,0,0.2) 0px 0px 3px 3px 3px\",\r\n margin: \"3px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"fit-content\",\r\n borderRadios: \"0px 0px 8px 0px\",\r\n }}\r\n\r\n >{reduxStore.getState().db.cards[card].name.substr(0, 20)} <Icon\r\n icon={\"close\"}\r\n color={\"lightGray\"}\r\n style={{\r\n marginLeft: 10,\r\n width: 10,\r\n height: 10,\r\n padding: 7,\r\n backgroundColor: \"#80808087\",\r\n borderRadius: 7\r\n }}\r\n size={10}\r\n onClick={() => {\r\n let selectedCards = reduxStore.getState().searchs[searchID].selectedCards\r\n if (order === 0) {\r\n delete selectedCards.guideline\r\n delete selectedCards.objective\r\n delete selectedCards.goal\r\n delete selectedCards.action\r\n }\r\n if (order === 1) {\r\n delete selectedCards.objective\r\n delete selectedCards.goal\r\n delete selectedCards.action\r\n }\r\n if (order === 2) {\r\n delete selectedCards.goal\r\n delete selectedCards.action\r\n }\r\n if (order === 3)\r\n delete selectedCards.action\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...reduxStore.getState().searchs[searchID] || {},\r\n selectedCards: selectedCards\r\n },\r\n })\r\n }}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n // zIndex: 100,\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n ...props.style,\r\n }}\r\n >\r\n <div style={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}>\r\n <ButtonOptions\r\n text={translate(\"$__filter\")}\r\n icon=\"filter_alt\"\r\n popper={\r\n <div style={{ padding: 15, zIndex: 1 }} ref={contentRef} id=\"cal-menufilter\">\r\n <Filter\r\n {...props}\r\n onChange={(data) => props.onChange && props.onChange(data)}\r\n />\r\n </div>\r\n }\r\n />\r\n {props && props.fields && props.fields.filter(a => a === 'usersMode').length > 0 ?\r\n <div style={{ padding: \"3px 15px\", display: \"flex\", cursor: \"pointer\" }}>\r\n <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission\r\n data={reduxStore.getState().db.cards[searchID]}\r\n noLimit\r\n multiple\r\n onSelect={(e) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...JSON.parse(initialIndicators),\r\n ...reduxStore.getState().searchs[searchID],\r\n ...reduxStore.getState().searchs[searchID]?.appliedFilters,\r\n users: e\r\n },\r\n })\r\n }\r\n }\r\n selected={filters.users}\r\n transparent\r\n />\r\n </div> : <></>\r\n }\r\n {props.showFilters && (\r\n <div style={{ padding: \"3px 15px\", display: \"flex\", cursor: \"pointer\" }}>\r\n {Object.entries({\r\n text: filters.text,\r\n ref1: filters.ref1,\r\n ref2: filters.ref2,\r\n tagsByText: filters.tagsByText,\r\n }).map(\r\n ([key, value]) =>\r\n value && (\r\n <div\r\n key={key}\r\n style={{\r\n color: \"gray\",\r\n padding: \"0px 15px\",\r\n borderRight: \"solid 1px gray\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {props.title?.[key] || translate(`$__${key}`)}:{\" \"}\r\n <span style={{ color: customApp(\"darkText\") }}>{value}</span>\r\n </div>\r\n )\r\n )}\r\n {filters.startDate && filters.endDate && (\r\n <div\r\n style={{\r\n color: \"gray\",\r\n padding: \"0px 15px\",\r\n borderRight: \"solid 1px gray\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {[\"startDate\", \"endDate\"].map((dateKey) => (\r\n <div\r\n key={dateKey}\r\n style={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n fontSize: \"12px\",\r\n fontWeight: 400,\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <label\r\n style={{\r\n marginRight: 7,\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}\r\n >\r\n {moment(filters[dateKey] * 1000).format(\"YYYY-MM-DD HH:mm:ss\")}\r\n </label>\r\n <Icon\r\n size=\"22px\"\r\n color={customApp(\"color\")}\r\n icon=\"today\"\r\n onClick={props.onClick}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n {filters.responsible?.length > 0 && (\r\n <div style={{ display: \"flex\", fontSize: 11, width: 150 }}>\r\n <SelectUsers\r\n avatarSize=\"23px\"\r\n data={reduxStore.getState().db.cards[searchID]}\r\n selected={filters.responsible}\r\n transparent\r\n />\r\n </div>\r\n )}\r\n {filters.tags && (\r\n <div style={{ display: \"flex\", fontSize: 11 }}>\r\n {filters.tags.map((tag) => (\r\n <div\r\n key={tag.value}\r\n style={{\r\n backgroundColor: tag.color || \"lightgray\",\r\n color: tag.color ? textColor(tag.color, true) : \"#FFF\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"3px 7px\",\r\n borderRadius: \"7px\",\r\n marginLeft: 5,\r\n whiteSpace: \"nowrap\",\r\n }}\r\n >\r\n {tag.parent && reduxStore.getState().db.tag.some((t) => t.value === tag.parent) && (\r\n <div style={{ fontSize: 8, marginRight: 3 }}>\r\n {\r\n reduxStore.getState().db.tag.find(\r\n (t) => t.value === tag.parent\r\n ).label\r\n }{\" \"}\r\n /\r\n </div>\r\n )}\r\n {tag.label}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {filters.selectedCards && Object.keys(filters.selectedCards).length > 0 && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n gap: 10,\r\n color: \"gray\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {[\"guideline\", \"objective\", \"goal\", \"action\"].map(\r\n (type, index) =>\r\n filters.selectedCards[type] && (\r\n <RenderSelected\r\n key={type}\r\n card={filters.selectedCards[type]}\r\n type={type}\r\n order={index}\r\n />\r\n )\r\n )}\r\n {Object.keys(filters.selectedCards).length > 1 && (\r\n <Icon\r\n title={translate(\"$__clearAll\")}\r\n icon=\"clear_all\"\r\n color=\"#80808087\"\r\n size={17}\r\n onClick={() =>\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...reduxStore.getState().searchs[searchID],\r\n selectedCards: {},\r\n },\r\n })\r\n }\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n {props.children}\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n searchs: store.searchs\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MenuFilter)","//CORE\r\nimport React from \"react\"\r\nimport moment from \"moment-timezone\"\r\nimport MD5 from \"crypto-js/md5\"\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\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport AgileStatus from \"components/AgileV2/status\"\r\nimport Filter from \"componentsV3/Filter/menuFilter\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport CardsLoader from \"components/Card/loader\"\r\nimport SelectCardTypes from \"componentsV3/SelectCardTypes\"\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\"\r\nimport { countNotifications } from \"functions/cards\"\r\n\r\nfunction MyTasksView(props) {\r\n const { db, session } = reduxStore.getState()\r\n const { dataType } = db\r\n const [disabledTypes, setDisabledTypes] = React.useState([])\r\n\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD')\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let searchID = props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n\r\n if (!window.location.hash.split('/')[0].replace('#', '')) {\r\n history.push('t#tab/myTasks')\r\n }\r\n\r\n if (!db.cards)\r\n return (null)\r\n\r\n let myCards = Object.keys(props.cards).filter(a =>\r\n props.cards[a]\r\n && props.cards[a].type !== 'chatGroup'\r\n && props.cards[a].type !== 'plan'\r\n && props.cards[a].type !== 'step'\r\n && dataType.filter(dt => dt.name === props.cards[a].type\r\n && dt.module !== \"swot\"\r\n && dt.module !== \"step\"\r\n ).length > 0\r\n &&\r\n (\r\n !props.cards[a].checklist\r\n ||\r\n (\r\n props.cards[a].checklist\r\n && props.cards[a].showCard\r\n )\r\n )\r\n && !props.cards[a].deleted\r\n ).map(c => props.cards[c])\r\n\r\n if (!reduxStore.getState().session.cards.adminView) {\r\n myCards = myCards.filter(c =>\r\n c._users\r\n && Object.keys(c._users).filter(u => u === session._id).length > 0\r\n && (\r\n (c._createdBy\r\n && !c._createdBy.channel\r\n )\r\n || (\r\n c._createdBy\r\n && c._createdBy.channel\r\n && c._createdBy._id === session._id\r\n )\r\n )\r\n )\r\n } else {\r\n myCards = myCards.filter(c => {\r\n if (\r\n !c.private\r\n || (\r\n c.private\r\n && c._users\r\n && Object.keys(c._users).filter(u => u === session._id).length > 0\r\n\r\n )\r\n )\r\n return true\r\n return false\r\n })\r\n }\r\n\r\n\r\n if (\r\n (\r\n hashs[0] === 'tab'\r\n && hashs[1] !== 'myDay'\r\n )\r\n && disabledTypes\r\n && disabledTypes.length > 0\r\n )\r\n myCards = myCards.filter(c =>\r\n disabledTypes.indexOf(c.type) === -1\r\n )\r\n\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'unreaded') {\r\n myCards = myCards.filter(c => {\r\n let notifications = countNotifications(c._id)\r\n if (notifications.total > 0) return true\r\n return false\r\n }\r\n )\r\n }\r\n if (hashs[0] === 'tab' && hashs[1] === 'myTasks') {\r\n myCards = myCards.filter(a =>\r\n a._users\r\n && a._users[session._id]\r\n && (\r\n a._users[session._id].isResponsible\r\n ||\r\n (\r\n !a._users[session._id].isResponsible\r\n && Object.keys(a._users).length === 1\r\n )\r\n )\r\n ).map(a => a)\r\n }\r\n\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'myDay') {\r\n myCards = myCards.filter(a =>\r\n a._users\r\n && a._users[session._id]\r\n && a._users[session._id].myDay\r\n && (moment(new Date(a._users[session._id].myDay * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today\r\n )\r\n ).map(a => a)\r\n }\r\n if (hashs[0] === 'tab' && hashs[1] === 'ourDay') {\r\n myCards = myCards.filter(a => {\r\n if (a && a._users) {\r\n let result = Object.keys(a._users).filter(us =>\r\n us && a._users[us] && a._users[us].myDay && (moment(new Date(a._users[us].myDay * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today)\r\n )\r\n if (result.length > 0)\r\n return true\r\n return false\r\n } else {\r\n return false\r\n }\r\n }\r\n ).map(a => a)\r\n }\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'private') {\r\n myCards = myCards.filter(c =>\r\n c.private\r\n ).map(a => a)\r\n }\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'nextTasks') {\r\n myCards = myCards.filter(a =>\r\n (\r\n (a.endDate\r\n && moment(new Date(a.endDate * 1000)).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\") >= moment().format(\"YYYY-MM-DD\")\r\n && moment(new Date(a.endDate * 1000)).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\") <= moment(new Date(today)).add(10, \"days\").format(\"YYYY-MM-DD\")\r\n )\r\n ||\r\n (a.startDate\r\n && moment(new Date(a.startDate * 1000)).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\") >= moment().format(\"YYYY-MM-DD\")\r\n && moment(new Date(a.startDate * 1000)).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\") <= moment(new Date(today)).add(10, \"days\").format(\"YYYY-MM-DD\")\r\n )\r\n )\r\n ).map(a => a)\r\n }\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'lateTasks') {\r\n myCards = myCards.filter(c =>\r\n c.endDate && moment(new Date(c.endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format() && c.status !== 'completed'\r\n ).map(a => a)\r\n }\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'unlinkedCards') {\r\n myCards = myCards.filter(c =>\r\n !c.parent && !c._parent\r\n ).map(a => a)\r\n }\r\n\r\n return (\r\n <div style={props.expanded ? { width: 'calc(100% - 220px)', marginLeft: '220px' } : { width: 'calc(100% - 0px)', marginLeft: '0px' }}>\r\n\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n {(\r\n hashs[0] === 'tab'\r\n && hashs[1] !== 'myDay'\r\n ) ?\r\n <SelectCardTypes options={disabledTypes} onChange={(d) => { setDisabledTypes(d) }} />\r\n : <></>\r\n }\r\n <Filter\r\n fields={['text', 'date', 'users', 'responsible', 'tags', 'tagsByText', 'priority', 'complexity', 'risk', 'impact']}\r\n showFilters\r\n nodeId={searchID}\r\n style={{ marginLeft: 7 }}\r\n onChange={(e) => {\r\n console.log(e)\r\n }}\r\n />\r\n </div>\r\n <HeaderWithIcon\r\n title={null}\r\n icon={null}\r\n color={customApp('menu')}\r\n style={{\r\n background: 'transparent',\r\n padding: '7px'\r\n }}\r\n customButtons={[\r\n {\r\n title: \"$__orderByStartDate\",\r\n icon: \"today\",\r\n color: props.agileOrderBy === \"startDate\" ? customApp('color') : customApp('menu'),\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().db,\r\n agileOrderBy: 'startDate'\r\n })\r\n },\r\n },\r\n {\r\n title: \"$__orderByEndDate\",\r\n icon: \"event\",\r\n color: props.agileOrderBy === \"endDate\" ? customApp('color') : customApp('menu'),\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().db,\r\n agileOrderBy: 'endDate'\r\n })\r\n },\r\n },\r\n {\r\n title: \"$__orderByName\",\r\n icon: \"sort\",\r\n color: props.agileOrderBy === \"name\" ? customApp('color') : customApp('menu'),\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n agileOrderBy: 'name'\r\n })\r\n },\r\n },\r\n {\r\n title: props.agileOrderDesc === 'DESC' ? \"$__asc\" : \"$__desc\",\r\n icon: props.agileOrderDesc === 'DESC' ? \"text_rotation_down\" : \"text_rotate_up\",\r\n color: customApp('menu'),\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n agileOrderDesc: props.agileOrderDesc === 'DESC' ? 'ASC' : 'DESC'\r\n })\r\n },\r\n },\r\n ]}\r\n />\r\n </div>\r\n <div>\r\n <CardsLoader />\r\n </div>\r\n <div\r\n style={{\r\n position: 'relative',\r\n minHeight: 'calc(100vh - 150px)',\r\n marginTop: '7px',\r\n width: '100%',\r\n overflowX: 'auto',\r\n overflowY: 'hidden',\r\n }}\r\n >\r\n <AgileStatus cards={myCards.map(a => a._id)} inLine={db.viewList} showConnectedIn\r\n columnStyle={{\r\n ...db.viewList ? { width: \"100%\" } : { maxHeight: \"calc(100vh - 190px)\", width: \"25%\" },\r\n }}\r\n />\r\n <div style={{ clear: 'both' }}></div>\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history,\r\n cards: store.db.cards,\r\n viewList: store.db.viewList,\r\n agileOrderBy: store.controls.agileOrderBy,\r\n agileOrderDesc: store.controls.agileOrderDesc,\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyTasksView)\r\n","import React from 'react';\r\n\r\n//REDUX\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as reduxActions from 'store/actions';\r\n\r\n//@MATERIAL\r\n\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Backoffice-languages\";\r\n\r\n\r\nfunction MasterAdminView(props) {\r\n return (\r\n <div style={{ width: '100%' }}>\r\n Resume\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n languages: store.languages\r\n }\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(MasterAdminView));","//CORE\r\nimport React from \"react\";\r\nimport ReactExport from \"react-data-export\";\r\nimport moment from \"moment-timezone\";\r\n\r\n//@MATERIAL\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions/\";\r\n\r\nfunction ExportAll(props) {\r\n const ExcelFile = ReactExport.ExcelFile;\r\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n const data = props.data\r\n let allUsers = []\r\n let deletedUsers = []\r\n\r\n data.forEach(acc => {\r\n acc.users.filter(u => !u.deleted).sort((a, b) => a.name.toLowerCase() < b.name.toLowerCase()).forEach(u => {\r\n if (allUsers.filter(au => au.id === u.id).length === 0)\r\n allUsers.push(u)\r\n })\r\n acc.users.filter(u => u.deleted).sort((a, b) => a.name.toLowerCase() < b.name.toLowerCase()).forEach(u => {\r\n if (deletedUsers.filter(au => au.id === u.id).length === 0)\r\n deletedUsers.push(u)\r\n })\r\n })\r\n return (\r\n <ExcelFile\r\n filename={`${moment().tz('America/Sao_Paulo').format('YYYY-MM-DDTHHMM')}_${translate(\"$__companies\")}_${translate(\"$__users\")}`}\r\n element={\r\n <CustomButton\r\n title={translate(\"$__export\")}\r\n text={translate(\"$__export\")}\r\n icon={\"file_download\"}\r\n size={\"25px\"}\r\n />\r\n }\r\n >\r\n <ExcelSheet data={data.sort((a, b) => a.name < b.name)} name={translate(\"$__accounts\")}>\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__id', 1)}`} value=\"id\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__company', 1)}`} value=\"name\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__createdAt', 1)}`} value=\"created_at\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__signaturePlan', 1)}`} value=\"plan\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__activeUsersCount', 1)}`} value=\"usersCount\" />\r\n {/* <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__adminLimitUsers', 1)}`} value=\"adminsLimit\" /> */}\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__usedDisk', 1)}`} value=\"diskUsed\" />\r\n </ExcelSheet>\r\n <ExcelSheet data={allUsers.sort((a, b) => a.name < b.name)} name={\"USUARIOS ATIVOS\"}>\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__id', 1)}`} value=\"id\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__name', 1)}`} value=\"name\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__unity', 1)}`} value=\"unity\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__email', 1)}`} value=\"email\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__createdAt', 1)}`} value=\"created_at\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__lastSessionDate', 1)}`} value=\"lastSession\" />\r\n </ExcelSheet>\r\n <ExcelSheet data={deletedUsers.sort((a, b) => a.name < b.name)} name={\"USUÁRIOS REMOVIDOS\"}>\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__id', 1)}`} value=\"id\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__name', 1)}`} value=\"name\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__unity', 1)}`} value=\"unity\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__email', 1)}`} value=\"email\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__createdAt', 1)}`} value=\"created_at\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__lastSessionDate', 1)}`} value=\"lastSession\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__removed', 1)}`} value=\"deleted\" />\r\n </ExcelSheet>\r\n {data.map((acc, i) => {\r\n return (\r\n <ExcelSheet data={acc.users} name={acc.name} key={i}>\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__id', 1)}`} value=\"id\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__name', 1)}`} value=\"name\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__unity', 1)}`} value=\"unity\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__email', 1)}`} value=\"email\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__createdAt', 1)}`} value=\"created_at\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__lastSessionDate', 1)}`} value=\"lastSession\" />\r\n <ExcelColumn width={350} style={{ alignment: { wrapText: true } }} label={`${translate('$__removed', 1)}`} value=\"deleted\" />\r\n </ExcelSheet>\r\n )\r\n })}\r\n\r\n </ExcelFile>\r\n )\r\n}\r\nexport default ExportAll","import React from \"react\"\r\nimport moment from \"moment\"\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 CustomButton from \"components/Buttons/custom\"\r\nimport ExportAll from \"components/Account/exportAll\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Backoffice-languages.js\"\r\n\r\n//APIMS\r\nimport apims from \"apims\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n formatSizeUnits,\r\n getDate,\r\n translate,\r\n} from \"functions/\"\r\n\r\nfunction MasterAdminAccountView(props) {\r\n const [Accounts, SetAccounts] = React.useState([])\r\n const [AccountsExport, SetAccountsExport] = React.useState([])\r\n const [viewAccountDetail, setViewAccountDetail] = React.useState(null)\r\n const [userOrderBy, setUserOrderBy] = React.useState(\"name\")\r\n const [userOrderASC, setUserOrderASC] = React.useState(true)\r\n const { plans } = reduxStore.getState().db\r\n\r\n\r\n React.useEffect(() => {\r\n ini()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const ini = async () => {\r\n const ReqAccounts = await apims.post(\"Adm_ReqAccounts\")\r\n\r\n let AE = []\r\n if (ReqAccounts) {\r\n ReqAccounts.data.forEach(acc => {\r\n let diskUsed = 0\r\n if (AE.filter(aa => aa.id === acc.id).length === 0) {\r\n acc.users.filter(a => a.filesSize).forEach(a => {\r\n diskUsed = diskUsed + parseInt(a.filesSize)\r\n })\r\n if (diskUsed > 0)\r\n diskUsed = formatSizeUnits(diskUsed)\r\n\r\n let cd = acc.account.created_at && acc.account.created_at.low ? String(acc.account.created_at.low) : acc.account.created_at\r\n let plan = acc && acc.account && acc.account.plan && plans.filter(pl => pl.value.indexOf(acc.account.plan)).length > 0 ? acc.account.plan : \"p0\"\r\n\r\n let users = Array.from(acc.users)\r\n\r\n users.flatMap(us => {\r\n if (us.deleted || us.unityDeleted)\r\n us.deleted = \"SIM\"\r\n us.created_at = moment(us.created_at * 1000).format(\"DD/MM/YYYY HH:mm:ss\")\r\n us.lastSession = us.lastSession ? moment(us.lastSession * 1000).format(\"DD/MM/YYYY HH:mm:ss\") : ``\r\n })\r\n\r\n AE.push({\r\n id: acc.id,\r\n ...acc.account,\r\n created_at: moment(cd * 1000).format(\"DD/MM/YYYY HH:mm:ss\"),\r\n plan: translate(plans.filter(pl => pl.value.indexOf(plan) > -1)[0].label, '*'),\r\n diskUsed: diskUsed,\r\n usersCount: acc.users.length,\r\n users: users\r\n })\r\n if (acc.account.name === \"ENEVA\") {\r\n console.log(acc, {\r\n id: acc.id,\r\n ...acc.account,\r\n created_at: moment(cd * 1000).format(\"DD/MM/YYYY HH:mm:ss\"),\r\n plan: translate(plans.filter(pl => pl.value.indexOf(plan) > -1)[0].label, '*'),\r\n diskUsed: diskUsed,\r\n usersCount: acc.users.length,\r\n users: users\r\n })\r\n }\r\n }\r\n })\r\n\r\n SetAccounts(ReqAccounts.data)\r\n SetAccountsExport(AE)\r\n }\r\n\r\n }\r\n\r\n const u_orderBy = (x) => {\r\n if (userOrderBy === x) {\r\n setUserOrderASC(prev => !prev)\r\n } else {\r\n setUserOrderBy(x)\r\n }\r\n }\r\n const User = ({ data, index }) => {\r\n let diskUsed = data.filesSize ? parseInt(data.filesSize) : 0\r\n if (diskUsed > 0)\r\n diskUsed = formatSizeUnits(diskUsed)\r\n return (\r\n <div>\r\n <div\r\n style={{\r\n border: \"solid 1px #f6f6f6\",\r\n width: \"100%\",\r\n padding: 7,\r\n overflowY: \"auto\",\r\n display: \"flex\",\r\n ...data.deleted ? { color: \"red\" } : {},\r\n marginBottom: 7,\r\n ...index % 2 ? { background: \"linear-gradient(33deg, rgba(255, 255, 255, 1), rgba(247,247,247, 1))\" }\r\n : { background: \"linear-gradient(77deg, rgba(247,247,247, 1), rgba(255, 255, 255, 1))\" },\r\n }}\r\n >\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>#{data.id}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"150px\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}><div style={{ width: \"100%\", position: \"relative\", float: \"left\" }}>{data.name}</div> {data.unity ? <div style={{ fontSize: 10, width: \"100%\", position: \"relative\", float: \"left\" }}>({data.unity})</div> : ``}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"300px\" }}>{data.email}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"150px\" }}>{data.created_at}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"150px\" }}>{data.lastSession}</div>\r\n {/* <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>\r\n <fieldset>\r\n <legend>{translate(`$__userInformations`)}</legend>\r\n </fieldset>\r\n </div> */}\r\n </div>\r\n </div>)\r\n }\r\n\r\n const Item = ({ data, index }) => {\r\n let plan = data && data.account && data.account.plan && plans.filter(pl => pl.value.indexOf(data.account.plan) > -1).length > 0 ? data.account.plan : \"p0\"\r\n let users = data.users.filter(a => !a.deleted).length\r\n let diskUsed = 0\r\n data.users.filter(a => a.filesSize).forEach(a => {\r\n diskUsed = diskUsed + parseInt(a.filesSize)\r\n })\r\n if (diskUsed > 0)\r\n diskUsed = formatSizeUnits(diskUsed)\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: 7,\r\n marginBottom: 3,\r\n ...data.account.deleted ? {\r\n ...index % 2 ? { background: \"linear-gradient(33deg, rgba(237,20,61,0.1), rgba(237,20,61,0.2))\" }\r\n : { background: \"linear-gradient(33deg, rgba(237,20,61,0.2), rgba(237,20,61,0.1))\" },\r\n } : {\r\n ...index % 2 ? { background: \"linear-gradient(33deg, rgba(255, 255, 255, 1), rgba(247,247,247, 1))\" }\r\n : { background: \"linear-gradient(77deg, rgba(247,247,247, 1), rgba(255, 255, 255, 1))\" },\r\n },\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: \"100%\",\r\n padding: 7,\r\n overflowY: \"auto\",\r\n display: \"flex\",\r\n marginBottom: 3,\r\n }}\r\n >\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>#{data.id}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"300px\" }}>{data.account.name}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"200px\" }}>{getDate(data.account.created_at)}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"200px\" }}>{plans.filter(pl => pl.value.indexOf(plan) > -1)[0] && plans.filter(pl => pl.value.indexOf(plan) > -1)[0].label ? translate(`${plans.filter(pl => pl.value.indexOf(plan) > -1)[0].label}`) : ``}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\", cursor: \"pointer\", display: \"flex\" }}\r\n onClick={() => {\r\n if (viewAccountDetail === data.id) {\r\n setViewAccountDetail(null)\r\n } else {\r\n setViewAccountDetail(data.id)\r\n }\r\n }}\r\n ><CustomButton\r\n transparent\r\n title={translate(`$__showUsers`, \"*\")}\r\n color={customApp(\"lightgrey\")}\r\n icon={viewAccountDetail === data.id ? \"expand_less\" : \"expand_more\"}\r\n onClick={() => {\r\n setViewAccountDetail(viewAccountDetail === data.id ? null : data.id)\r\n }}\r\n size={\"25px\"}\r\n />\r\n {users}\r\n {/* {data.account.maxUsers && data.account.maxUsers.low ? ` ${translate(\"$__of\")} ${data.account.maxUsers.low}` : ``} */}\r\n </div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>{diskUsed}</div>\r\n </div>\r\n {\r\n viewAccountDetail === data.id\r\n ?\r\n <fieldset\r\n style={{\r\n borderRadius: 5,\r\n // padding: 7,\r\n width: \"100%\",\r\n overflow: \"auto\",\r\n position: \"relative\",\r\n }}\r\n >\r\n <legend style={{ display: \"flex\" }}>{translate(`$__users`)}<CustomButton\r\n transparent\r\n title={translate(`$__hide`, \"*\")}\r\n color={customApp(\"lightgrey\")}\r\n icon={\"expand_less\"}\r\n onClick={() => {\r\n setViewAccountDetail(null)\r\n }}\r\n size={\"25px\"}\r\n /></legend>\r\n\r\n <div\r\n style={{\r\n border: \"solid 1px #f6f6f6\",\r\n width: \"100%\",\r\n padding: 3,\r\n overflowY: \"auto\",\r\n display: \"flex\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"menu\"),\r\n fontSize: \"11px\"\r\n }}\r\n >\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}\r\n onClick={() => {\r\n u_orderBy(\"id\")\r\n }}\r\n >#{translate(\"$__id\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"150px\" }}\r\n onClick={() => {\r\n u_orderBy(\"name\")\r\n }}\r\n >{translate(\"$__name\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"300px\" }}\r\n onClick={() => {\r\n u_orderBy(\"email\")\r\n }}\r\n >{translate(\"$__email\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"150px\" }}\r\n onClick={() => {\r\n u_orderBy(\"createdAt\")\r\n }}\r\n >{translate(\"$__createdDate\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"150px\" }}\r\n onClick={() => {\r\n u_orderBy(\"lastSession\")\r\n }}\r\n >{translate(\"$__lastSession\")}</div>\r\n {/* <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>{translate(\"$__infos\")}</div> */}\r\n </div>\r\n {data.users\r\n .sort((a, b) => {\r\n let A = \"\"\r\n let B = \"\"\r\n if (userOrderBy === \"id\") {\r\n A = a.id\r\n B = b.id\r\n }\r\n if (userOrderBy === \"name\") {\r\n A = a.name.toLowerCase()\r\n B = b.name.toLowerCase()\r\n }\r\n if (userOrderBy === \"email\") {\r\n A = a.email.toLowerCase()\r\n B = b.email.toLowerCase()\r\n }\r\n if (userOrderBy === \"createdAt\") {\r\n A = a.created_at\r\n B = b.created_at\r\n }\r\n if (userOrderBy === \"lastSession\") {\r\n A = a.lastSession\r\n B = b.lastSession\r\n }\r\n if (A < B)\r\n return userOrderASC ? -1 : 1\r\n if (A > B)\r\n return userOrderASC ? 1 : -1\r\n return 0\r\n })\r\n .map((us, usi) => (\r\n <User data={us} index={usi} key={usi} />\r\n ))}\r\n </fieldset>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n </div>)\r\n }\r\n return (\r\n <div style={{ width: \"100%\" }}>\r\n <ExportAll data={AccountsExport} />\r\n <div\r\n style={{\r\n border: \"solid 1px #f6f6f6\",\r\n width: \"100%\",\r\n padding: 3,\r\n overflowY: \"auto\",\r\n display: \"flex\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"menu\")\r\n }}\r\n >\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>#{translate(\"$__id\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"300px\" }}>{translate(\"$__company\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"200px\" }}>{translate(\"$__createdDate\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"200px\" }}>{translate(\"$__plan\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>{translate(\"$__users\")}</div>\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100px\" }}>{translate(\"$__diskUsed\")}</div>\r\n </div>\r\n <div>\r\n\r\n {Accounts\r\n .filter(x => !viewAccountDetail || viewAccountDetail === x.id)\r\n .sort((a, b) => {\r\n let nameA = a.account.name.toLowerCase()\r\n let nameB = b.account.name.toLowerCase()\r\n if (nameA < nameB)\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0\r\n })\r\n .map((acc, i) => <Item index={i} data={acc} key={acc.account._id} />)}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n languages: store.languages\r\n }\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(MasterAdminAccountView));","import React from 'react';\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//@MATERIAL\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//COMPONENTS\r\nimport HeaderWithIcon from \"components/Header/withIcon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport TextField from \"components/TextField\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Backoffice-languages\";\r\nimport { translate, customApp } from 'functions';\r\n\r\nfunction LanguagesView(props) {\r\n const { classes } = props\r\n const [languages, setLanguages] = React.useState({})\r\n const { socket } = reduxStore.getState().functions\r\n const [onlyEmpty, setOnlyEmpty] = React.useState(false)\r\n const [page, setPage] = React.useState(0)\r\n const [limit, setLimit] = React.useState(25)\r\n const [filter, setFilter] = React.useState(\"\")\r\n\r\n React.useEffect(() => {\r\n setLanguages(reduxStore.getState().languages)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [JSON.stringify(reduxStore.getState().languages)])\r\n\r\n\r\n\r\n //AQUI TEM QUE ATUALIZAR O DB LOCAL \r\n const updateLanguage = async (id, alias, locale, text) => {\r\n // console.log(id, alias, locale, text)\r\n if (!id) {\r\n socket.emit(\"data\", {\r\n module: \"language\",\r\n method: \"post\",\r\n action: \"addLocale\"\r\n }, {\r\n alias,\r\n locale,\r\n text\r\n })\r\n } else {\r\n socket.emit('language.UPD', {\r\n alias,\r\n locale,\r\n text\r\n })\r\n }\r\n }\r\n\r\n return (\r\n <div style={{ width: '100%' }}>\r\n <div style={{\r\n position: \"relative\",\r\n float: 'left',\r\n width: '100%',\r\n left: '0px',\r\n right: '0px',\r\n padding: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n {/* PAGINATION */}\r\n {translate('$__page')} {page + 1} {translate('$__of')} {Math.ceil(Object.keys(languages).length / limit)}\r\n <div style={{ display: 'flex', alignItems: 'center' }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={Object.keys(languages).length}\r\n page={page}\r\n onChangePage={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onChangeRowsPerPage={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate('$__aliasPerPage')}\r\n />\r\n </div>\r\n </div>\r\n <div style={{ width: \"100%\", display: 'flex', alignItems: 'center' }}>\r\n <TextField\r\n label={translate('$__search', 1)}\r\n variant={customApp('fieldVariant')}\r\n value={filter}\r\n onChange={(e) => {\r\n setFilter(e.target.value)\r\n }}\r\n />\r\n <IconButton\r\n text={onlyEmpty ? translate(\"$__all\", '*') : translate(\"$__onlyEmpty\", '*')}\r\n icon={onlyEmpty ? \"subtitles_off\" : \"subtitles\"}\r\n iconColor={customApp('medium')}\r\n onClick={() => {\r\n setOnlyEmpty(!onlyEmpty);\r\n }}\r\n />\r\n </div>\r\n <Paper className={classes.root}>\r\n <div className={classes.header}>\r\n <div className={classes.column}>\r\n {translate(`$__alias`, 1)}\r\n </div>\r\n <div className={classes.column}>\r\n {translate(`$__translation`, 1)}\r\n </div>\r\n </div>\r\n <div className={classes.body}>\r\n <ul>\r\n {languages\r\n && Object.keys(languages)\r\n && Object.keys(languages).length > 0\r\n && Object.keys(languages)\r\n .filter(alias => {\r\n if (\r\n (\r\n !filter\r\n ||\r\n (\r\n filter\r\n && (\r\n alias.indexOf(filter) > -1\r\n ||\r\n (\r\n languages[alias]\r\n && languages[alias].locales\r\n && languages[alias].locales.filter(a =>\r\n a.name.toLowerCase().indexOf(filter.toLowerCase()) > -1\r\n ).length > 0\r\n )\r\n )\r\n )\r\n )\r\n &&\r\n (\r\n (onlyEmpty\r\n && languages[alias]\r\n &&\r\n (\r\n !languages[alias].locales\r\n ||\r\n (\r\n languages[alias].locales &&\r\n (\r\n (\r\n !languages[alias].locales.filter(lc => lc.locale === 'pt-BR').length === 0\r\n || (\r\n languages[alias].locales.filter(lc => lc.locale === 'pt-BR').length > 0 &&\r\n !languages[alias].locales.filter(lc => lc.locale === 'pt-BR')[0].name\r\n )\r\n )\r\n || (\r\n languages[alias].locales.filter(lc => lc.locale === 'en-US').length === 0\r\n || (\r\n languages[alias].locales.filter(lc => lc.locale === 'en-US').length > 0 &&\r\n !languages[alias].locales.filter(lc => lc.locale === 'en-US')[0].name\r\n )\r\n )\r\n || (\r\n languages[alias].locales.filter(lc => lc.locale === 'es-ES').length === 0\r\n || (\r\n languages[alias].locales.filter(lc => lc.locale === 'es-ES').length > 0 &&\r\n !languages[alias].locales.filter(lc => lc.locale === 'es-ES')[0].name\r\n )\r\n )\r\n )\r\n )\r\n )\r\n )\r\n ||\r\n !onlyEmpty\r\n )\r\n )\r\n return true\r\n return false\r\n }\r\n )\r\n .sort((a, b) => {\r\n if (a < b) {\r\n return -1\r\n } else if (a > b) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .filter((alias, i) => i <= ((page + 1) * limit) && i >= page * limit)\r\n .map((alias, i) => {\r\n return (<li key={alias.trim()}>\r\n <div className={classes.column}>\r\n {alias}\r\n </div>\r\n <div className={classes.column2}>\r\n <fieldset style={{ marginBottom: 15 }}>\r\n <legend>Português - Brasil</legend>\r\n <div style={{ position: 'relative' }}>\r\n <HeaderWithIcon\r\n key={`${alias}_pt-BR`}\r\n title={languages[alias].locales && languages[alias].locales.length > 0 && languages[alias].locales.filter(lc => lc.locale === 'pt-BR').length > 0 && languages[alias].locales.filter(lc => lc.locale === 'pt-BR')[0].name}\r\n _id={languages[alias].locales && languages[alias].locales.length > 0 && languages[alias].locales.filter(lc => lc.locale === 'pt-BR').length > 0 && languages[alias].locales.filter(lc => lc.locale === 'pt-BR')[0]._id}\r\n editable\r\n onEdit={(text, id) => {\r\n updateLanguage(id, alias, 'pt-BR', text.name)\r\n\r\n }\r\n }\r\n color={customApp('menu')}\r\n noAutoFocus={true}\r\n multiline\r\n noCancel\r\n />\r\n </div>\r\n </fieldset>\r\n <fieldset style={{ marginBottom: 15 }}>\r\n <legend>Inglês - Internacional</legend>\r\n <HeaderWithIcon\r\n key={`${alias}_en-US`}\r\n editable\r\n title={languages[alias].locales && languages[alias].locales.length > 0 && languages[alias].locales.filter(lc => lc.locale === 'en-US').length > 0 && languages[alias].locales.filter(lc => lc.locale === 'en-US')[0].name}\r\n _id={languages[alias].locales && languages[alias].locales.length > 0 && languages[alias].locales.filter(lc => lc.locale === 'en-US').length > 0 && languages[alias].locales.filter(lc => lc.locale === 'en-US')[0]._id}\r\n onEdit={(text, id) => {\r\n updateLanguage(id, alias, 'en-US', text.name)\r\n }\r\n }\r\n color={customApp('menu')}\r\n noAutoFocus={true}\r\n multiline\r\n noCancel\r\n />\r\n </fieldset>\r\n <fieldset style={{ marginBottom: 15 }}>\r\n <legend>Espanhol</legend>\r\n <HeaderWithIcon\r\n key={`${alias}_es-ES`}\r\n editable\r\n title={languages[alias].locales && languages[alias].locales.length > 0 && languages[alias].locales.filter(lc => lc.locale === 'es-ES').length > 0 && languages[alias].locales.filter(lc => lc.locale === 'es-ES')[0].name}\r\n _id={languages[alias].locales && languages[alias].locales.length > 0 && languages[alias].locales.filter(lc => lc.locale === 'es-ES').length > 0 && languages[alias].locales.filter(lc => lc.locale === 'es-ES')[0]._id}\r\n onEdit={(text, id) => {\r\n updateLanguage(id, alias, 'es-ES', text.name)\r\n }\r\n }\r\n color={customApp('menu')}\r\n noAutoFocus={true}\r\n multiline\r\n noCancel\r\n />\r\n </fieldset>\r\n </div>\r\n </li>\r\n )\r\n })}\r\n </ul>\r\n </div>\r\n </Paper >\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n languages: store.languages\r\n }\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(LanguagesView));","\r\nconst dashboardStyle = {\r\n widgetsContent: {\r\n backgroundColor: '#FFFFFF',\r\n // boxShadow: \"0 3px 3px 3px rgba(0,0,0,0.05)\",\r\n // padding: '7px',\r\n height: 'calc(100vh - 200px)',\r\n maxHeight: 'calc(100vh - 350px)',\r\n position: 'relative',\r\n overflowX: 'auto'\r\n }\r\n};\r\n\r\nexport default dashboardStyle;\r\n\r\n","import React from \"react\"\r\nimport moment from \"moment-timezone\"\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// @MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//DEPENDENCIES\r\nimport Resume from \"./Resume\"\r\nimport Accounts from \"./Accounts\"\r\nimport Languages from \"./Languages\"\r\nimport DataPicker from \"components/DataPicker\"\r\n\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/dashboard\"\r\n\r\n\r\nfunction Dashboard() {\r\n const { session } = reduxStore.getState()\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n const [sd, setSD] = React.useState(null)\r\n const [ed, setED] = React.useState(null)\r\n\r\n if (!session._access.master)\r\n return (<div>ACCESS DENIED</div>)\r\n\r\n if (!window.location.hash.split('/')[0].replace('#', '')) {\r\n // history.push('masterAdmin#tab/languages')\r\n }\r\n\r\n return (\r\n <div>\r\n {!hashs[0] &&\r\n <Resume />\r\n }\r\n {(hashs[0] === 'tab' && hashs[1] === 'accounts') &&\r\n <Accounts />\r\n }\r\n {(hashs[0] === 'tab' && hashs[1] === 'languages') &&\r\n <Languages />\r\n }\r\n\r\n {(hashs[0] === 'tab' && hashs[1] === 'tests') &&\r\n <div style={{ width: \"300px\" }}>\r\n <DataPicker\r\n type=\"datetime\"\r\n onChangeStartDate={(d) => {\r\n console.log(moment(d).format(\"YYYY-MM-DD 23:59:59\").unix('X'))\r\n setSD(moment(d).unix('X'))\r\n }}\r\n onChangeEndDate={(d) => {\r\n setED(moment(d).unix('X'))\r\n }}\r\n range\r\n // horizontal\r\n startDate={sd ? new Date(sd * 1000) : null}\r\n endDate={ed ? new Date(ed * 1000) : null}\r\n onClear={() => {\r\n setSD(null)\r\n setED(null)\r\n }}\r\n />\r\n </div>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\n//EXPORT\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Dashboard))","import {\r\n infoColor,\r\n primaryColor,\r\n successColor,\r\n dangerColor,\r\n warningColor,\r\n whiteColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nimport { customApp } from \"functions/\";;\r\nconst timelineStyle = theme => ({\r\n root: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto'\r\n },\r\n content: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto',\r\n backgroundColor: 'rgba(249,249,249,1)'\r\n },\r\n timeline: {\r\n listStyle: \"none\",\r\n padding: \"0\",\r\n position: \"absolute\",\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n width: '100%',\r\n '& .file-drop-target': {\r\n width: '100%'\r\n }\r\n },\r\n scrollEnd: {\r\n marginTop: '160px',\r\n position: 'relative',\r\n width: '100%',\r\n height: '0px',\r\n marginBottom: '-100px'\r\n },\r\n scrollEndNoEditor: {\r\n marginTop: '30px',\r\n position: 'relative',\r\n width: '100%',\r\n height: '0px',\r\n marginBottom: '-100px'\r\n },\r\n timelineSimple: {\r\n position: 'relative',\r\n // overflowX: 'auto',\r\n overflow: \"hidden\",\r\n marginTop: \"0px\",\r\n padding: \"0 0 50px\",\r\n width: '-webkit-fill-available',\r\n \"&:before\": {\r\n left: \"15px\"\r\n },\r\n },\r\n timelineSimpleWithHeader: {\r\n position: 'relative',\r\n overflowX: 'auto',\r\n marginTop: \"60px\",\r\n padding: \"0 0 50px\",\r\n width: '-webkit-fill-available',\r\n \"&:before\": {\r\n left: \"15px\"\r\n },\r\n },\r\n item: {\r\n marginBottom: \"5px\",\r\n position: \"relative\",\r\n paddingLeft: \"15px\",\r\n width: 'calc(100% - 15px)',\r\n \"&:before,&:after\": {\r\n content: '\" \"',\r\n display: \"table\"\r\n },\r\n \"&:after\": {\r\n clear: \"both\"\r\n }\r\n },\r\n timelineBadge: {\r\n color: whiteColor,\r\n width: \"30px\",\r\n height: \"30px\",\r\n lineHeight: \"25px\",\r\n fontSize: \"12px\",\r\n textAlign: \"center\",\r\n position: \"absolute\",\r\n bottom: \"23px\",\r\n left: \"50%\",\r\n marginLeft: \"-7px\",\r\n zIndex: \"1\",\r\n borderTopRightRadius: \"50%\",\r\n borderTopLeftRadius: \"50%\",\r\n borderBottomRightRadius: \"50%\",\r\n borderBottomLeftRadius: \"50%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n\r\n },\r\n timelineSimpleBadge: {\r\n left: \"7px\"\r\n },\r\n timelineBadgeInverted: {\r\n color: whiteColor,\r\n width: \"30px\",\r\n height: \"30px\",\r\n lineHeight: \"25px\",\r\n fontSize: \"12px\",\r\n textAlign: \"center\",\r\n position: \"absolute\",\r\n bottom: \"23px\",\r\n right: \"50%\",\r\n marginRight: \"-7px\",\r\n zIndex: \"1\",\r\n borderTopRightRadius: \"50%\",\r\n borderTopLeftRadius: \"50%\",\r\n borderBottomRightRadius: \"50%\",\r\n borderBottomLeftRadius: \"50%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n\r\n },\r\n timelineSimpleBadgeInverted: {\r\n right: \"7px\"\r\n },\r\n custom: {\r\n backgroundColor: customApp('color'),\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.4)\"\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.4)\"\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.4)\"\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.4)\"\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.4)\"\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.4)\"\r\n },\r\n badgeIcon: {\r\n width: \"14px\",\r\n height: \"14px\"\r\n },\r\n timelinePanel: {\r\n maxWidth: \"calc(100% - 70px)\",\r\n float: \"right\",\r\n padding: \"7px\",\r\n marginBottom: \"5px\",\r\n marginRight: \"40px\",\r\n position: \"relative\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: customApp('timelineMyMessage'),\r\n },\r\n timelinePanelInverted: {\r\n maxWidth: \"calc(100% - 70px)\",\r\n float: \"left\",\r\n padding: \"7px\",\r\n marginLeft: \"40px\",\r\n marginBottom: \"5px\",\r\n position: \"relative\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: '#ffffff',\r\n },\r\n\r\n\r\n timelineHeading: {\r\n marginBottom: \"0px\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n timelineDate: {\r\n display: 'flex',\r\n alignItems: \"center\",\r\n padding: '5px',\r\n backgroundColor: '#CCCCCC'\r\n },\r\n timelineBody: {\r\n overflowWrap: \"anywhere\",\r\n fontSize: \"12px\",\r\n lineHeight: \"21px\",\r\n position: 'relative',\r\n width: '100%',\r\n float: 'left',\r\n },\r\n timelineLog: {\r\n fontSize: \"12px\",\r\n lineHeight: \"21px\",\r\n // display: 'flex',\r\n },\r\n timelineFooter: {\r\n zIndex: \"1\",\r\n position: \"relative\",\r\n float: \"left\",\r\n width: '100%',\r\n display: \"inline-flex\",\r\n justifyContent: \"space-between\"\r\n },\r\n footerUser: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontSize: '12px',\r\n fontWeight: 'bold',\r\n color: customApp('medium'),\r\n padding: '0 7px',\r\n },\r\n footerLine: {\r\n position: 'relative',\r\n marginTop: \"10px\",\r\n marginBottom: \"5px\"\r\n },\r\n dropFile: {\r\n display: 'none',\r\n },\r\n onDropFile: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#FFFFFF',\r\n backgroundColor: 'rgba(0,0,0,0.77)',\r\n zIndex: 1,\r\n },\r\n editor: {\r\n position: 'absolute',\r\n bottom: '0px',\r\n minHeight: '50px',\r\n padding: '10px',\r\n height: 'auto',\r\n width: 'calc(100% - 0px)',\r\n backgroundColor: 'rgba(240,240,240,1)',\r\n zIndex: 10,\r\n },\r\n files: {\r\n display: 'inline-table',\r\n position: 'relative'\r\n },\r\n textEditor: {\r\n //display: 'flex'\r\n },\r\n textEditorIcon: {\r\n cursor: 'pointer',\r\n color: customApp('color'),\r\n },\r\n progressBar: {\r\n backgroundColor: `${customApp('color', '0.1')} !important`,\r\n '& .MuiLinearProgress-indeterminate': {\r\n backgroundColor: `${customApp('color')} !important`\r\n },\r\n '& .MuiLinearProgress-bar': {\r\n backgroundColor: `${customApp('color')} !important`\r\n },\r\n },\r\n actionButton: {\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n float: 'left',\r\n height: '30px',\r\n position: 'relative',\r\n textAlign: 'center',\r\n width: '30px',\r\n },\r\n sendingMessage: {\r\n width: '100%'\r\n },\r\n valuePositive: {\r\n positive: 'relative',\r\n float: 'left',\r\n color: 'blue',\r\n },\r\n valueNegative: {\r\n positive: 'relative',\r\n float: 'left',\r\n color: 'red',\r\n },\r\n lastValue: {\r\n positive: 'relative',\r\n float: 'right',\r\n color: 'grey',\r\n },\r\n timeInfo: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'grey',\r\n width: '100%',\r\n position: 'relative',\r\n float: 'left',\r\n marginBottom: '7px',\r\n '& .text': {\r\n marginLeft: '7px',\r\n }\r\n },\r\n urlPreview: {\r\n position: 'relative',\r\n float: 'left',\r\n marginBottom: '33px',\r\n '& img': {\r\n maxWidth: '20%',\r\n height: 'auto',\r\n // position: 'relative',\r\n // float: 'left',\r\n marginTop: '30px',\r\n marginRight: '7px'\r\n },\r\n '& .data': {\r\n // position: 'relative',\r\n // float: 'left',\r\n //width: '75%',\r\n '& .title': {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n },\r\n '& .siteName': {\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n color: '#909090'\r\n },\r\n '& .contentSnippet': {\r\n fontSize: '12px',\r\n color: '#909090'\r\n }\r\n }\r\n },\r\n users: {\r\n position: 'relative',\r\n bottom: '0px',\r\n right: '2px',\r\n fontSize: '10px',\r\n '& .MuiAvatarGroup-root': {\r\n justifyContent: 'flex-end',\r\n },\r\n '& .MuiAvatar-root': {\r\n width: '25px',\r\n height: '25px',\r\n fontSize: '10px',\r\n }\r\n }\r\n});\r\n\r\nexport default timelineStyle;\r\n","import React from \"react\";\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//DEPENDENCIES\r\nimport SendingMessage from \"./sending\"\r\nimport Message from \"./message.jsx\";\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/timelineMiniStyle\";\r\n\r\nconst Timeline = (props) => {\r\n const { classes } = props;\r\n const { db, session, functions, timeline } = reduxStore.getState();\r\n const { socket } = functions;\r\n const [stories, setStories] = React.useState(props.stories || {})\r\n\r\n let files = []; //USED IN LIGHTBOX;\r\n\r\n React.useEffect(() => {\r\n ini()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.stories, props.nodeId, JSON.stringify(timeline)])\r\n\r\n const ini = () => {\r\n let userStories = {}\r\n if (timeline[session._id])\r\n Object.keys(timeline[session._id])\r\n .filter(a =>\r\n timeline[session._id][a]\r\n && timeline[session._id][a].user\r\n && timeline[session._id][a].user._id\r\n && timeline[session._id][a].user._id === props.nodeId\r\n ).forEach(a => {\r\n userStories = {\r\n ...userStories,\r\n [a]: timeline[session._id][a]\r\n }\r\n })\r\n if (timeline[props.nodeId]) {\r\n Object.keys(timeline[props.nodeId])\r\n .forEach(a => {\r\n userStories = {\r\n ...userStories,\r\n [a]: timeline[props.nodeId][a]\r\n }\r\n })\r\n }\r\n setStories(userStories)\r\n }\r\n\r\n\r\n const openLightBox = (f) => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n open: true,\r\n files: files,\r\n file: f\r\n })\r\n }\r\n\r\n const readMessages = async () => {\r\n socket.emit(\"data\", {\r\n module: \"chat\",\r\n method: \"put\",\r\n action: \"read\"\r\n }, {\r\n readedBy: session._id,\r\n id: props.nodeId,\r\n db: db.cards[props.nodeId] ? 'cards' : 'users',\r\n type: props.type ? props.type : \"comment\"\r\n })\r\n }\r\n\r\n return (\r\n <div style={{ position: \"relative\", float: \"left\", width: \"100%\", marginBottom: '15px' }}>\r\n <ul className={classes.timelineSimple}\r\n id={`tms_${props.nodeId}`}\r\n style={{ zIndex: 1 }}\r\n >\r\n {stories\r\n && Object.keys(stories).length > 0\r\n && Object.keys(stories).sort((a, b) => {\r\n if (parseInt(stories[a].created_at) < parseInt(stories[b].created_at)) {\r\n return -1\r\n } else if (parseInt(stories[a].created_at) > parseInt(stories[b].created_at)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n ).forEach((id, key) => {\r\n let storie = stories[id]\r\n if (!props.showUnReaded && key > Object.keys(stories).length - 4) {\r\n if (storie.files && Object.keys(storie.files).length > 0)\r\n Object.keys(storie.files).forEach((id, i) => {\r\n let file = storie.files[id]\r\n files.push(file)\r\n })\r\n return (\r\n <li\r\n className={classes.item}\r\n key={id}\r\n style={{\r\n }}>\r\n <Message\r\n openLightBox={(e) => { openLightBox(e) }}\r\n storie={storie}\r\n reply={storie.reply ? stories[storie.reply] : null}\r\n hideCards={props.hideCards ? true : false}\r\n db={props.db}\r\n nodeId={props.nodeId}\r\n />\r\n </li>\r\n );\r\n } else if (\r\n props.showUnReaded\r\n && storie\r\n && storie.user\r\n && storie.user._id !== session._id\r\n && (\r\n !storie.readedBy\r\n ||\r\n (\r\n storie.readedBy\r\n && !storie.readedBy[session._id]\r\n )\r\n )\r\n ) {\r\n if (storie.files && Object.keys(storie.files).length > 0)\r\n Object.keys(storie.files).forEach((id, i) => {\r\n let file = storie.files[id]\r\n files.push(file)\r\n })\r\n return (\r\n <li\r\n className={classes.item}\r\n key={id}\r\n style={{\r\n }}>\r\n <Message\r\n openLightBox={(e) => { openLightBox(e) }}\r\n storie={storie}\r\n reply={storie.reply ? stories[storie.reply] : null}\r\n hideCards={props.hideCards ? true : false}\r\n db={props.db}\r\n nodeId={props.nodeId}\r\n />\r\n </li>\r\n );\r\n }\r\n })}\r\n <div style={{ marginBottom: '15px', clear: 'both' }}></div>\r\n </ul>\r\n {/* {Object.keys(stories).filter(a =>\r\n stories[a]\r\n && stories[a].user\r\n && stories[a].user._id\r\n && stories[a].user._id !== session._id\r\n && (\r\n !stories[a].readedBy\r\n ||\r\n (\r\n stories[a].readedBy\r\n && !stories[a].readedBy[session._id]\r\n )\r\n )\r\n ).length > 0 &&\r\n <div\r\n style={{\r\n // position: 'absolute',\r\n // bottom: '6px',\r\n // left: '-36px',\r\n // zIndex: 100\r\n }}>\r\n <Badge\r\n badgeContent={Object.keys(stories).filter(a =>\r\n stories[a]\r\n && stories[a].user\r\n && stories[a].user._id\r\n && stories[a].user._id !== session._id\r\n && (\r\n !stories[a].readedBy\r\n ||\r\n (\r\n stories[a].readedBy\r\n && !stories[a].readedBy[session._id]\r\n )\r\n )\r\n ).length}\r\n overlap=\"circular\"\r\n anchorOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n variant={\"standard\"}\r\n >\r\n <Icon onClick={\r\n () => {\r\n readMessages()\r\n }\r\n }>mark_chat_read</Icon>\r\n </Badge>\r\n </div>\r\n } */}\r\n <SendingMessage nodeId={props.nodeId} onSending={() => { readMessages() }} />\r\n </div >\r\n );\r\n}\r\n//REACT\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Timeline));","//CORE\r\nimport React from 'react';\r\nimport moment from \"moment-timezone\";\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport reduxStore from \"store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport Avatar from \"components/Avatar\";\r\nimport Card from \"components/Card\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Icon from \"components/Icon\";\r\nimport Message from \"componentsV3/Timeline/message\";\r\nimport MiniTimeline from \"componentsV3/Timeline/Mini\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from 'functions/';\r\nimport { loadTimeline } from \"functions/chat\";\r\n\r\nconst useStyles = makeStyles(() => ({\r\n unReaded: {\r\n background: 'linear-gradient(33deg, rgba(250, 250, 250, 1), rgba(250, 250, 250, 0))',\r\n padding: '7px',\r\n borderBottom: 'solid 1px rgba(0,0,0,0.1)',\r\n width: '100%',\r\n maxWidth: '100%',\r\n opacity: 1\r\n },\r\n Readed: {\r\n padding: '7px',\r\n borderBottom: 'solid 1px rgba(0,0,0,0.1)',\r\n width: '100%',\r\n opacity: 0.6,\r\n maxWidth: '100%',\r\n \"&:hover\": {\r\n opacity: 1,\r\n }\r\n }\r\n}));\r\n\r\nfunction Component(props) {\r\n const { db, chat, timeline } = reduxStore.getState()\r\n const { data } = props\r\n const classes = useStyles();\r\n\r\n let dbNotify = 'cards'\r\n if (data.nodeId && reduxStore.getState().db.users[data.nodeId]) {\r\n dbNotify = 'users'\r\n }\r\n\r\n const openChat = async (nodeId, dbProps) => {\r\n if (!reduxStore.getState().db[dbProps][nodeId]._loadTimeline) {\r\n loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Notifications/Index/openChat()\"\r\n },\r\n {\r\n id: [nodeId],\r\n db: dbProps\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n open: true,\r\n db: dbProps,\r\n nodeId: nodeId,\r\n loading: true,\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n open: true,\r\n db: dbProps,\r\n nodeId: nodeId,\r\n loading: false,\r\n })\r\n }\r\n props.openChat(nodeId, dbProps)\r\n\r\n }\r\n\r\n if (data.module === 'timeline'\r\n && (!data.inNode\r\n || !data.inNode.type\r\n || !reduxStore.getState().db\r\n || !reduxStore.getState().db[dbNotify]))\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n if (\r\n (\r\n !data.byUser\r\n ||\r\n (\r\n data.byUser &&\r\n !db.users[data.byUser]\r\n )\r\n )\r\n || (\r\n data.inNode\r\n && data.inNode.type\r\n && data.inNode._id\r\n && !reduxStore.getState().db[dbNotify][data.inNode._id]\r\n )\r\n ) {\r\n return (<React.Fragment></React.Fragment>)\r\n }\r\n\r\n const Header = () => {\r\n let time = ``\r\n if (moment().tz('America/Sao_Paulo').format('DD/MM/YYYY') === moment(data.created_at * 1000).tz('America/Sao_Paulo').format('DD/MM/YYYY')) {\r\n time = `${translate('$__today', 1)} ${moment(data.created_at * 1000).tz('America/Sao_Paulo').format('HH:MM')}`\r\n } else if (moment().tz('America/Sao_Paulo').format('YYYY') === moment(data.created_at * 1000).tz('America/Sao_Paulo').format('YYYY')) {\r\n time = `${moment(data.created_at * 1000).tz('America/Sao_Paulo').format('DD/MM HH:MM')}`\r\n } else {\r\n time = `${moment(data.created_at * 1000).tz('America/Sao_Paulo').format('YYYY/DD/MM HH:MM')}`\r\n }\r\n return (\r\n <div style={{\r\n position: 'relative',\r\n }}>\r\n <div style={{\r\n position: 'relative',\r\n alignItems: 'center',\r\n display: 'flex',\r\n textSize: '10px',\r\n width: '100%',\r\n color: customApp(\"medium\"),\r\n justifyContent: 'space-between'\r\n }}>\r\n <Avatar alt={db.users[data.byUser].name} src={db.users[data.byUser].image || null} size={'sm'} >\r\n {db.users[data.byUser].name.substr(0, 1)}\r\n </Avatar>\r\n <div style={{ display: 'flex', alignItems: 'center' }}>\r\n {translate(data.description)} - {time}\r\n {data.readed &&\r\n <Icon\r\n icon={'done_all'}\r\n color={customApp('medium')}\r\n title=\"$__readed\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className={data.readed ? classes.Readed : classes.unReaded} >\r\n <div style={{\r\n textAlign: \"center\",\r\n width: '100%',\r\n padding: \"7px\",\r\n maxWidth: '100%',\r\n }}>\r\n\r\n </div>\r\n {data.module === 'timeline' && !props.showTimeline\r\n && data.inNode\r\n && data.inNode.type\r\n && data.inNode._id\r\n && reduxStore.getState().db[dbNotify]\r\n && reduxStore.getState().db[dbNotify][data.inNode._id]\r\n && timeline[data.inNode._id]\r\n && timeline[data.inNode._id][data.nodeId]\r\n &&\r\n <div\r\n style={{ display: 'flex', cursor: 'pointer' }}\r\n onClick={() => {\r\n if (data.inNode.type === 'User') {\r\n let userId\r\n if (data && data.inNode && data.inNode._id\r\n && reduxStore.getState().db\r\n && reduxStore.getState().db.users\r\n && reduxStore.getState().db.users[data.inNode._id]\r\n && timeline[data.inNode._id]\r\n && Object.keys(timeline[data.inNode._id]).length > 0\r\n && timeline[data.inNode._id][data.nodeId])\r\n userId = timeline[data.inNode._id][data.nodeId].user._id\r\n openChat(userId, 'users')\r\n }\r\n if (data.inNode.type === 'Card') {\r\n if (reduxStore.getState().db.cards[data.inNode._id].type !== 'chatGroup') {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideMudule,\r\n db: 'cards',\r\n id: data.inNode._id,\r\n module: \"cardEdit\",\r\n activeModule: 'timeline',\r\n data: reduxStore.getState().db.cards[data.inNode._id],\r\n });\r\n } else {\r\n openChat(data.inNode._id, 'cards')\r\n }\r\n }\r\n }}\r\n >\r\n <Message\r\n storie={data && data.inNode && data.inNode._id\r\n && reduxStore.getState().db\r\n && reduxStore.getState().db[dbNotify]\r\n && reduxStore.getState().db[dbNotify][data.inNode._id]\r\n && timeline[data.inNode._id]\r\n && Object.keys(timeline[data.inNode._id]).length > 0\r\n && timeline[data.inNode._id][data.nodeId]\r\n ? timeline[data.inNode._id][data.nodeId]\r\n : {}\r\n } boxStyle={{ width: \"calc(100% - 10px) !important\" }} db={dbNotify} />\r\n </div>\r\n }\r\n {(\r\n data.module === 'card'\r\n && db[dbNotify] && db[dbNotify][data.nodeId]\r\n )\r\n &&\r\n <div\r\n style={reduxStore.getState().db.cards[data.nodeId].type === 'chatGroup' ? { cursor: 'pointer' } : {}}\r\n onClick={(e) => {\r\n if (reduxStore.getState().db.cards[data.nodeId].type === 'chatGroup') {\r\n openChat(data.nodeId, 'cards')\r\n }\r\n }}\r\n >\r\n <Header />\r\n <Card db=\"cards\" data={reduxStore.getState().db.cards[data.nodeId]} expanded\r\n onlyOption={reduxStore.getState().db.cards[data.nodeId].type === 'chatGroup' ? true : false}\r\n onClick={(e) => {\r\n if (reduxStore.getState().db.cards[data.nodeId].type === 'chatGroup') {\r\n openChat(data.nodeId, 'cards')\r\n }\r\n }}\r\n />\r\n\r\n </div>\r\n }\r\n\r\n\r\n {\r\n (\r\n props.showTimeline && db[dbNotify] && db[dbNotify][data.inNode._id]\r\n )\r\n &&\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n >\r\n <div\r\n style={reduxStore.getState().db.cards[data.inNode._id].type === 'chatGroup' ? { cursor: 'pointer' } : {}}\r\n onClick={(e) => {\r\n if (reduxStore.getState().db.cards[data.inNode._id].type === 'chatGroup') {\r\n openChat(data.inNode._id, 'cards')\r\n }\r\n }}\r\n >\r\n <Header />\r\n <Card db=\"cards\" data={reduxStore.getState().db.cards[data.inNode._id]} expanded\r\n onlyOption={reduxStore.getState().db.cards[data.inNode._id].type === 'chatGroup' ? true : false}\r\n onClick={(e) => {\r\n if (reduxStore.getState().db.cards[data.inNode._id].type === 'chatGroup') {\r\n openChat(data.inNode._id, 'cards')\r\n }\r\n }}\r\n />\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={8}\r\n lg={8}\r\n xl={8}\r\n >\r\n <div style={{ position: 'relative', width: '100%', minHeight: '250px' }}>\r\n <MiniTimeline\r\n nodeId={data.inNode._id}\r\n stories={\r\n data\r\n && data.inNode\r\n && data.inNode._id\r\n && reduxStore.getState().db.cards[data.inNode._id]\r\n && timeline[data.inNode._id]\r\n ? timeline[data.inNode._id]\r\n : {}\r\n }\r\n db={'cards'}\r\n />\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst sidebarStyle = theme => ({\r\n bar: {\r\n position: 'fixed',\r\n top: '0px',\r\n left: '0px',\r\n width: '161px',\r\n height: 'calc(100vh - 0px)'\r\n },\r\n item: {\r\n height: '47px',\r\n alignItems: 'center',\r\n width: '100%',\r\n display: 'flex'\r\n },\r\n itemButtom: {\r\n width: '100%',\r\n padding: '7px',\r\n color: customApp('menuButtonColor', 0.8),\r\n '&:hover': {\r\n color: customApp('menuButtonColor', 1),\r\n backgroundColor: 'rgba(255,255,255,0.1)',\r\n borderRadius: '0px',\r\n },\r\n display: 'flex',\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n },\r\n itemButtomActive: {\r\n width: '100%',\r\n padding: '7px',\r\n color: customApp('menuButtonColor', 1),\r\n backgroundColor: 'rgba(255,255,255,0.2)',\r\n borderRadius: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n // flexDirection: 'column',\r\n // textAlign: 'center',\r\n cursor: 'pointer',\r\n },\r\n themeExample: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n left: \"auto !important\",\r\n right: \"0 !important\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n left: \"0 !important\",\r\n right: \"auto !important\"\r\n }\r\n },\r\n module: {\r\n position: 'fixed',\r\n top: '0px',\r\n left: '161px',\r\n width: '50px',\r\n height: '100vh',\r\n backgroundColor: 'rgba(246,246,246,1)',\r\n boxShadow: 'inset 4px 0px 3px 0px rgb(0 0 0 / 17%)',\r\n borderRight: `solid 4px ${customApp('color')}`,\r\n },\r\n moduleExpanded: {\r\n position: 'fixed',\r\n top: '0',\r\n left: '161px',\r\n width: '311px',\r\n height: '100vh',\r\n backgroundColor: 'rgba(246,246,246,1)',\r\n zIndex: '100 !important',\r\n boxShadow: 'inset 4px 0px 3px 0px rgb(0 0 0 / 17%)',\r\n borderRight: `solid 4px ${customApp('color')}`,\r\n padding: '7px',\r\n overflowX: 'auto'\r\n },\r\n moduleTitle: {\r\n width: '100%',\r\n height: '30px',\r\n fontSize: '18px',\r\n color: customApp('menuButtonColor'),\r\n fontWeight: 'bold',\r\n paddingLeft: '7px',\r\n marginTop: '15px'\r\n },\r\n sidebarWrapperWithPerfectScrollbar: {\r\n // overflow: \"hidden !important\"\r\n },\r\n separator: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n padding: '7px',\r\n borderTop: `1px solid ${customApp('medium', 0.5)}`,\r\n marginTop: '15px',\r\n marginBottom: '0px',\r\n height: '1px'\r\n },\r\n logoImg: {\r\n width: \"66%\",\r\n marginTop: '15px',\r\n justifyContent: 'center'\r\n },\r\n user: {\r\n zIndex: '150 !important'\r\n }\r\n});\r\n\r\nexport default sidebarStyle;\r\n","//CORE\r\nimport React from \"react\";\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\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport NotificationCard from \"componentsV3/Notifications/fullCard\";\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sidebarInteractive\";\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions/\";\r\n\r\nrequire('dotenv').config()\r\n\r\nfunction NotificationsView(props) {\r\n const { db, chat, notifications, timeline } = reduxStore.getState()\r\n const { classes } = props\r\n const [viewModule, setViewModule] = React.useState(null);\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n const openModule = async (route, vm, nodeId, dbProps = 'users') => {\r\n if (route && (window.location.pathname !== route || vm === viewModule)) {\r\n history.push(route)\r\n }\r\n\r\n setViewModule(vm)\r\n\r\n if (vm === 'chat' && !nodeId) {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n open: true,\r\n })\r\n } else if (vm === 'chat' && nodeId) {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n open: true,\r\n db: dbProps,\r\n nodeId: nodeId,\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n open: false,\r\n })\r\n }\r\n }\r\n\r\n //CARDS COLUMN\r\n const cardNotifications = []\r\n const cardsNotifications = []\r\n\r\n Object.keys(notifications).sort((a, b) => {\r\n if (parseInt(notifications[a].created_at) > parseInt(notifications[b].created_at))\r\n return -1\r\n return 1\r\n })\r\n .filter(fil => notifications[fil].module === 'card')\r\n .sort((a, b) => notifications[a].created_at.low - notifications[b].created_at.low)\r\n .forEach((n, i) => {\r\n if (cardsNotifications.indexOf(notifications[n].nodeId) === -1) {\r\n cardNotifications.push(n)\r\n cardsNotifications.push(notifications[n].nodeId)\r\n }\r\n })\r\n\r\n //TIMELINE COLUMN\r\n const tmNotifications = []\r\n const tmsNotifications = []\r\n\r\n Object.keys(notifications).sort((a, b) => {\r\n if (parseInt(notifications[a].created_at) > parseInt(notifications[b].created_at))\r\n return -1\r\n return 1\r\n })\r\n .filter(fil => notifications[fil].module === 'timeline')\r\n .sort((a, b) => notifications[a].created_at.low - notifications[b].created_at.low)\r\n .forEach((n, i) => {\r\n if (notifications[n].inNode && notifications[n].inNode._id && tmsNotifications.indexOf(notifications[n].inNode._id) === -1) {\r\n tmNotifications.push(n)\r\n tmsNotifications.push(notifications[n].inNode._id)\r\n }\r\n })\r\n\r\n return (\r\n <div>\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <div className={classes.moduleTitle}>\r\n {translate('$__notifications')}\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n >\r\n <div className={classes.moduleTitle}>\r\n {translate('$__cardsUpdated')}\r\n </div>\r\n {cardNotifications\r\n .filter(n =>\r\n (\r\n !hashs[1]\r\n ||\r\n (\r\n hashs[1]\r\n &&\r\n (\r\n hashs[1] === 'important'\r\n || hashs[1] === 'favorite'\r\n || hashs[1] === 'archive'\r\n || hashs[1] === 'latest'\r\n )\r\n )\r\n )\r\n )\r\n .map(n => {\r\n return (\r\n <NotificationCard\r\n data={notifications[n]}\r\n key={n}\r\n />\r\n )\r\n }\r\n )}\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={8}\r\n lg={8}\r\n xl={8}\r\n >\r\n <div className={classes.moduleTitle}>\r\n {translate('$__timelineUpdated')}\r\n </div>\r\n {tmNotifications\r\n .filter(n =>\r\n !hashs[1]\r\n ||\r\n (\r\n hashs[1]\r\n &&\r\n (\r\n hashs[1] === 'important'\r\n || hashs[1] === 'favorite'\r\n || hashs[1] === 'archive'\r\n || hashs[1] === 'latest'\r\n )\r\n )\r\n )\r\n .map(n => {\r\n return (\r\n <NotificationCard\r\n data={notifications[n]}\r\n key={n}\r\n openChat={(id, db) => openModule(null, 'chat', id, db)}\r\n showTimeline\r\n timeline={notifications[n]\r\n && notifications[n].inNode\r\n && notifications[n].inNode._id\r\n && db.cards[notifications[n].inNode._id]\r\n && timeline[notifications[n].inNode._id]\r\n ? timeline[notifications[n].inNode._id]\r\n : {}\r\n }\r\n />\r\n )\r\n }\r\n )}\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n )\r\n}\r\n\r\n\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(NotificationsView))\r\n","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst styles = {\r\n root: {\r\n position: 'relative',\r\n width: `100%`,\r\n backgroundColor: `${customApp('color', '0.1')} !important`,\r\n '& .MuiLinearProgress-indeterminate': {\r\n backgroundColor: `#FFFFFF !important`\r\n },\r\n '& .MuiLinearProgress-bar': {\r\n backgroundColor: `${customApp('color')} !important`\r\n },\r\n '& .text': {\r\n position: 'absolute',\r\n width: '40px',\r\n right: '-40px',\r\n top: '-9px',\r\n textAlign: 'right',\r\n textSize: '11px',\r\n fontWeight: 'bold',\r\n color: customApp('color')\r\n }\r\n },\r\n bar: {\r\n borderRadius: 7,\r\n },\r\n\r\n}\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n return (\r\n <div className={classes.root}>\r\n <LinearProgress />\r\n </div>\r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Component)","import {\r\n primaryColor,\r\n dangerColor,\r\n roseColor,\r\n grayColor,\r\n blackColor,\r\n whiteColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst customCheckboxRadioSwitch = {\r\n checkRoot: {\r\n padding: \"14px\",\r\n \"&:hover\": {\r\n backgroundColor: \"unset\"\r\n }\r\n },\r\n radioRoot: {\r\n padding: \"16px\",\r\n \"&:hover\": {\r\n backgroundColor: \"unset\"\r\n }\r\n },\r\n labelRoot: {\r\n marginLeft: \"-14px\"\r\n },\r\n checkboxAndRadio: {\r\n position: \"relative\",\r\n display: \"block\",\r\n marginTop: \"10px\",\r\n marginBottom: \"10px\"\r\n },\r\n checkboxAndRadioHorizontal: {\r\n position: \"relative\",\r\n display: \"block\",\r\n \"&:first-child\": {\r\n marginTop: \"10px\"\r\n },\r\n \"&:not(:first-child)\": {\r\n marginTop: \"-14px\"\r\n },\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n checked: {\r\n color: primaryColor[0] + \"!important\"\r\n },\r\n checkedIcon: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n border: \"1px solid rgba(\" + hexToRgb(blackColor) + \", .54)\",\r\n borderRadius: \"3px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n },\r\n uncheckedIcon: {\r\n width: \"0px\",\r\n height: \"0px\",\r\n padding: \"9px\",\r\n border: \"1px solid rgba(\" + hexToRgb(blackColor) + \", .54)\",\r\n borderRadius: \"3px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n },\r\n disabledCheckboxAndRadio: {\r\n \"& $checkedIcon,& $uncheckedIcon,& $radioChecked,& $radioUnchecked\": {\r\n borderColor: blackColor,\r\n opacity: \"0.26\",\r\n color: blackColor\r\n }\r\n },\r\n label: {\r\n cursor: \"pointer\",\r\n paddingLeft: \"0\",\r\n color: grayColor[3],\r\n fontSize: \"12px\",\r\n lineHeight: \"1.428571429\",\r\n fontWeight: \"400\",\r\n display: \"inline-flex\",\r\n transition: \"0.3s ease all\",\r\n letterSpacing: \"unset\"\r\n },\r\n labelHorizontal: {\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.26)\",\r\n cursor: \"pointer\",\r\n display: \"inline-flex\",\r\n fontSize: \"12px\",\r\n lineHeight: \"1.428571429\",\r\n fontWeight: \"400\",\r\n paddingTop: \"39px\",\r\n marginRight: \"0\",\r\n \"@media (min-width: 992px)\": {\r\n float: \"right\"\r\n }\r\n },\r\n labelHorizontalRadioCheckbox: {\r\n paddingTop: \"22px\"\r\n },\r\n labelLeftHorizontal: {\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.26)\",\r\n cursor: \"pointer\",\r\n display: \"inline-flex\",\r\n fontSize: \"12px\",\r\n lineHeight: \"1.428571429\",\r\n fontWeight: \"400\",\r\n paddingTop: \"22px\",\r\n marginRight: \"0\"\r\n },\r\n labelError: {\r\n color: dangerColor[0]\r\n },\r\n radio: {\r\n color: primaryColor[0] + \"!important\"\r\n },\r\n radioChecked: {\r\n width: \"16px\",\r\n height: \"16px\",\r\n border: \"1px solid \" + primaryColor[0],\r\n borderRadius: \"50%\"\r\n },\r\n radioUnchecked: {\r\n width: \"0px\",\r\n height: \"0px\",\r\n padding: \"7px\",\r\n border: \"1px solid rgba(\" + hexToRgb(blackColor) + \", .54)\",\r\n borderRadius: \"50%\"\r\n },\r\n inlineChecks: {\r\n marginTop: \"8px\"\r\n },\r\n iconCheckbox: {\r\n height: \"116px\",\r\n width: \"116px\",\r\n color: grayColor[0],\r\n padding: \"0\",\r\n margin: \"0 auto 20px\",\r\n \"& > span:first-child\": {\r\n borderWidth: \"4px\",\r\n borderStyle: \"solid\",\r\n borderColor: grayColor[9],\r\n textAlign: \"center\",\r\n verticalAlign: \"middle\",\r\n borderRadius: \"50%\",\r\n color: \"inherit\",\r\n transition: \"all 0.2s\"\r\n },\r\n \"&:hover\": {\r\n color: roseColor[0],\r\n \"& > span:first-child\": {\r\n borderColor: roseColor[0]\r\n }\r\n }\r\n },\r\n iconCheckboxChecked: {\r\n color: roseColor[0],\r\n \"& > span:first-child\": {\r\n borderColor: roseColor[0]\r\n }\r\n },\r\n iconCheckboxIcon: {\r\n fontSize: \"40px\",\r\n lineHeight: \"111px\"\r\n },\r\n switchBase: {\r\n color: primaryColor[0] + \"!important\"\r\n },\r\n switchIcon: {\r\n boxShadow: \"0 1px 3px 1px rgba(\" + hexToRgb(blackColor) + \", 0.4)\",\r\n color: whiteColor + \" !important\",\r\n border: \"1px solid rgba(\" + hexToRgb(blackColor) + \", .54)\"\r\n },\r\n switchIconChecked: {\r\n borderColor: primaryColor[0],\r\n transform: \"translateX(0px)!important\"\r\n },\r\n switchBar: {\r\n width: \"30px\",\r\n height: \"15px\",\r\n backgroundColor: \"rgb(\" + hexToRgb(grayColor[18]) + \")\",\r\n borderRadius: \"15px\",\r\n opacity: \"0.7!important\"\r\n },\r\n switchChecked: {\r\n \"& + $switchBar\": {\r\n backgroundColor: \"rgba(\" + hexToRgb(primaryColor[0]) + \", 1) !important\"\r\n },\r\n \"& $switchIcon\": {\r\n borderColor: primaryColor[0]\r\n }\r\n }\r\n};\r\n\r\nexport default customCheckboxRadioSwitch;\r\n","import {\r\n container,\r\n cardTitle,\r\n blackColor,\r\n hexToRgb,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nimport customCheckboxRadioSwitch from \"assets/jss/material-dashboard-pro-react/customCheckboxRadioSwitch\";\r\n\r\nconst registerPageStyle = {\r\n ...customCheckboxRadioSwitch,\r\n cardTitle: {\r\n ...cardTitle,\r\n textAlign: \"center\"\r\n },\r\n container: {\r\n ...container,\r\n position: \"relative\",\r\n zIndex: \"3\"\r\n // paddingTop: \"23vh\"\r\n },\r\n cardSignup: {\r\n borderRadius: \"6px\",\r\n boxShadow:\r\n \"0 16px 24px 2px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 6px 30px 5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\",\r\n marginBottom: \"100px\",\r\n padding: \"40px 0px\",\r\n marginTop: \"15vh\"\r\n },\r\n center: {\r\n textAlign: \"center\"\r\n },\r\n right: {\r\n textAlign: \"right\"\r\n },\r\n left: {\r\n textAlign: \"left\"\r\n },\r\n form: {\r\n padding: \"0 20px\",\r\n position: \"relative\"\r\n },\r\n socialTitle: {\r\n fontSize: \"18px\"\r\n },\r\n inputAdornment: {\r\n marginRight: \"18px\",\r\n position: \"relative\"\r\n },\r\n inputAdornmentIcon: {\r\n color: grayColor[6]\r\n },\r\n textFields: {\r\n margin: \"15px 0\",\r\n },\r\n checkboxLabelControl: {\r\n margin: \"0\"\r\n },\r\n checkboxLabel: {\r\n fontSize: \"12px\",\r\n marginLeft: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.26)\"\r\n }\r\n};\r\n\r\nexport default registerPageStyle;\r\n","import React from \"react\"\r\n\r\n//\r\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport Password from \"components/Password/\"\r\nimport Button from \"components/CustomButtons/Button\"\r\nimport Card from \"components/Card/Card\"\r\nimport CardBody from \"components/Card/CardBody\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport Icon from \"components/Icon\"\r\nimport TextField from \"components/TextField\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport Preloader from \"components/PreLoader/linear\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\nimport Modal from '@material-ui/core/Modal'\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport Checkbox from \"@material-ui/core/Checkbox\"\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/registerPageStyle\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\nimport { translate, customApp, validateEmail } from \"functions/\"\r\nimport { emailExistDB, validateEmailToken, emailTokenGenerate } from \"functions/users\"\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nexport default function RegisterPage(props) {\r\n const [checked, setChecked] = React.useState([])\r\n const [loading, setLoading] = React.useState(false)\r\n // const [name, setName] = React.useState(\"Cristofer Odair\")\r\n // const [email, setEmail] = React.useState(\"cristofer.odair@outlook.com.br\")\r\n const [name, setName] = React.useState(\"\")\r\n const [email, setEmail] = React.useState(\"\")\r\n const [validatingEmail, setValidatingEmail] = React.useState(false)\r\n const [emailError, setEmailError] = React.useState('')\r\n const [token, setToken] = React.useState(\"\")\r\n const [tokenError, setTokenError] = React.useState(false)\r\n const [validatingToken, setValidatingToken] = React.useState(false)\r\n const [termsOpen, setTermsOpen] = React.useState(0)\r\n const [password, setPassword] = React.useState(null)\r\n\r\n const handleToggle = (value, num) => {\r\n const currentIndex = checked.indexOf(value)\r\n const newChecked = [...checked]\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value)\r\n } else {\r\n newChecked.splice(currentIndex, 1)\r\n }\r\n setChecked(newChecked)\r\n }\r\n const classes = useStyles()\r\n\r\n const emailValidate = async (e) => {\r\n setLoading(true)\r\n if (validateEmail(e)) {\r\n const exist = await emailExistDB(e)\r\n if (exist) {\r\n setEmailError(translate('$__emailAlreadyExists', 1))\r\n setEmail(\"\")\r\n setValidatingEmail(false)\r\n } else {\r\n setEmailError(null)\r\n setValidatingEmail(true)\r\n emailTokenGenerate(name, e)\r\n }\r\n } else {\r\n setEmailError(translate('$__invalidEmail', 1))\r\n setEmail(\"\")\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const validateToken = async () => {\r\n if (token.length >= 6) {\r\n setLoading(true)\r\n const exist = await validateEmailToken(token, email)\r\n if (exist) {\r\n setValidatingToken(true)\r\n setTokenError(false)\r\n } else {\r\n setTokenError(true)\r\n }\r\n setLoading(false)\r\n } else {\r\n setTokenError(false)\r\n }\r\n }\r\n\r\n const register = async () => {\r\n setLoading(true)\r\n try {\r\n const res = await api.post('user/register-final-step/', {\r\n name,\r\n email,\r\n token,\r\n password,\r\n login: true,\r\n })\r\n if (res) {\r\n localStorage.setItem('TOKEN', res.data.token)\r\n if (props.callback) {\r\n setTimeout(() => {\r\n history.push('/login')\r\n // props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n // ...reduxStore.getState().db,\r\n // history: 'login'\r\n // })\r\n }, 3000)\r\n }\r\n }\r\n } catch (e) {\r\n setLoading(false)\r\n }\r\n }\r\n return (\r\n <div\r\n className={classes.container}\r\n style={{\r\n overflow: \"auto\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n overflow: \"auto\"\r\n }}\r\n >\r\n <GridItem xs={12} sm={10} md={6}>\r\n <Card db=\"cards\" className={classes.cardSignup}>\r\n <h2 className={classes.cardTitle}>{translate('$__register', 1)}</h2>\r\n <CardBody>\r\n <div>\r\n <TextField\r\n className={classes.textFields}\r\n label={translate('$__fullName', 1)}\r\n variant={'standard'}\r\n name={translate('$__fullName', 1)}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon className={classes.inputAdornmentIcon}>account_box</Icon>\r\n </InputAdornment>\r\n ),\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setName(d.target.value)\r\n },\r\n }}\r\n value={name || \"Cristofer Odair\"}\r\n // value={name}\r\n disabled={validatingEmail}\r\n />\r\n <TextField\r\n label={translate('$__email', 1)}\r\n variant={customApp('fieldVariant')}\r\n name=\"email\"\r\n type=\"email\"\r\n // helperText={emailError}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n className: ((emailError || !email) || !validateEmail(email)) ? \"invalid\" : \"\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='alternate_email' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setValidatingEmail(false)\r\n setEmailError(null)\r\n setEmail(d.target.value)\r\n },\r\n onBlur: async (e) => {\r\n emailValidate(e.target.value)\r\n }\r\n }}\r\n value={email}\r\n placeholder={'email@domain.com'}\r\n disabled={validatingEmail}\r\n />\r\n {!validatingEmail &&\r\n <IconButton\r\n icon=\"navigate_next\"\r\n text={translate('$__continue', '*')}\r\n reverse\r\n style={{ float: 'right' }}\r\n onClick={() => {\r\n emailValidate(email)\r\n }}\r\n />\r\n }\r\n {validatingEmail && email &&\r\n <React.Fragment>\r\n <TextField\r\n label={translate('$__emailToken', 1)}\r\n variant={customApp('fieldVariant')}\r\n // helperText={translate(!tokenError ? 'registerEmailTokenDescription' : 'registerEmailTokenError')}\r\n type=\"password\"\r\n name=\"emailToken\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n className: tokenError ? \"invalid\" : \"\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='keyboard' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setEmailError(null)\r\n setToken(d.target.value)\r\n }\r\n }}\r\n value={token}\r\n placeholder={'****'}\r\n />\r\n <IconButton\r\n icon=\"reply_all\"\r\n text={translate('$__resendCode', '*')}\r\n reverse\r\n style={{ float: 'right' }}\r\n onClick={() => {\r\n emailTokenGenerate(name, email)\r\n }}\r\n />\r\n {!validatingToken &&\r\n <IconButton\r\n icon=\"navigate_next\"\r\n text={translate('$__continue', '*')}\r\n reverse\r\n style={{ float: 'right' }}\r\n onClick={() => {\r\n validateToken()\r\n }}\r\n />\r\n }\r\n </React.Fragment>\r\n }\r\n {validatingEmail && validatingToken &&\r\n <React.Fragment>\r\n <Password onConfirmed={(v) => { setPassword(v) }} />\r\n <Modal\r\n open={termsOpen}\r\n onClose={() => setTermsOpen(0)}\r\n aria-labelledby=\"simple-modal-title\"\r\n aria-describedby=\"simple-modal-description\"\r\n >\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <div style={{\r\n position: \"relative\",\r\n width: '80vw',\r\n height: '80vh',\r\n overflowY: \"auto\",\r\n backgroundColor: '#FFFFFF',\r\n padding: '15px',\r\n margin: 'auto',\r\n }}>\r\n <iframe title=\"outModule\"\r\n id=\"policy\"\r\n style={{\r\n position: \"relative\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 40,\r\n width: \"100%\",\r\n height: \"calc(100% - 40px)\",\r\n }}\r\n width={\"100%\"}\r\n height={\"100%\"}\r\n onScroll={() => {\r\n console.log(\"scroll\")\r\n }}\r\n src={termsOpen === 1 ? \"https://sonne.global/SONNE-Politica-de-Privacidade-2022-01-07.pdf\" : \"https://sonne.global/SONNE-Termos-de-Servicos-2022-01-07.pdf\"}\r\n />\r\n <div style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}>\r\n\r\n <Button round color=\"custom_color\" onClick={() => setTermsOpen(0)}>\r\n Já li\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </Modal>\r\n <FormControlLabel\r\n classes={{\r\n root: classes.checkboxLabelControl,\r\n label: classes.checkboxLabel\r\n }}\r\n control={\r\n <Checkbox\r\n tabIndex={-1}\r\n onClick={() => handleToggle(1)}\r\n checkedIcon={\r\n <div className={classes.checkedIcon}><Icon size='16px' >check</Icon></div>\r\n }\r\n icon={<div className={classes.uncheckedIcon}><Icon size='16px' color=\"red\">remove</Icon></div>}\r\n classes={{\r\n checked: classes.checked,\r\n root: classes.checkRoot\r\n }}\r\n />\r\n }\r\n label={\r\n <span>\r\n {translate('$__iAgreeToThe', 1)} <span onClick={() => setTermsOpen(1)} style={{ color: 'blue' }}>{translate(\"$__privacyPolicy\")}</span>.\r\n </span>\r\n }\r\n />\r\n <FormControlLabel\r\n classes={{\r\n root: classes.checkboxLabelControl,\r\n label: classes.checkboxLabel\r\n }}\r\n control={\r\n <Checkbox\r\n tabIndex={-1}\r\n onClick={() => handleToggle(2)}\r\n checkedIcon={\r\n <div className={classes.checkedIcon}><Icon size='16px' >check</Icon></div>\r\n }\r\n icon={<div className={classes.uncheckedIcon}><Icon size='16px' color=\"red\">remove</Icon></div>}\r\n classes={{\r\n checked: classes.checked,\r\n root: classes.checkRoot\r\n }}\r\n />\r\n }\r\n label={\r\n <span>\r\n {translate('$__iAgreeToThe', 1)} <span onClick={() => setTermsOpen(2)} style={{ color: 'blue' }}>{translate(\"$__servicesTerms\")}</span>.\r\n </span>\r\n }\r\n />\r\n <div className={classes.center}>\r\n {checked.indexOf(1) > -1 && password &&\r\n <Button round color=\"custom_color\" onClick={() => register()}>\r\n {translate(\"$__completeRegistration\")}\r\n </Button>\r\n }\r\n </div>\r\n </React.Fragment>\r\n }\r\n </div>\r\n </CardBody>\r\n {loading &&\r\n <div style={{ position: 'absolute', bottom: '0px', width: '100%' }}>\r\n <Preloader />\r\n </div>\r\n }\r\n </Card>\r\n </GridItem>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","// \r\nimport AutoSizer from \"react-virtualized-auto-sizer\"\r\nimport React, { useLayoutEffect, useRef } from \"react\"\r\nimport { Droppable, Draggable } from \"react-beautiful-dnd\"\r\nimport { VariableSizeList } from \"react-window\"\r\n\r\n//COMPONENTS\r\nimport Card from \"components/Card\";\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport HtmlTooltip from \"components/Tooltip/html\"\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\r\n//STYLE\r\nimport \"./style.css\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate, getAppAccess } from \"functions\"\r\nimport {\r\n getUserAccess,\r\n} from \"functions/cards\"\r\n\r\n\r\nfunction getStyle({ draggableStyle, virtualStyle, isDragging }) {\r\n const combined = {\r\n ...virtualStyle,\r\n ...draggableStyle\r\n }\r\n\r\n const grid = 8\r\n\r\n const result = {\r\n ...combined,\r\n height: isDragging ? combined.height : combined.height - grid,\r\n left: isDragging ? combined.left : combined.left + grid,\r\n width: isDragging\r\n ? draggableStyle.width\r\n : `calc(${combined.width} - ${grid * 2}px)`,\r\n marginBottom: grid\r\n }\r\n\r\n return result\r\n}\r\n\r\nconst Item = (props) => {\r\n const { provided, item, style, isDragging } = props\r\n return (\r\n <div\r\n // innerRef={provided.innerRef}\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n style={getStyle({\r\n draggableStyle: provided.draggableProps.style,\r\n virtualStyle: style,\r\n isDragging\r\n })}\r\n className={`item ${isDragging ? \"is-dragging\" : \"\"}`}\r\n ref={provided.innerRef}\r\n >\r\n <Card\r\n data={item}\r\n db={'cards'}\r\n isDragging={isDragging}\r\n manualExpanded={props.manualExpanded || false}\r\n onResize={(size, expanded) => {\r\n if (props.onResize) props.onResize(size)\r\n }}\r\n onExpand={(expanded) => {\r\n if (props.onExpand) props.onExpand(expanded)\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nconst ItemList = React.memo(function ItemList(props) {\r\n const { index, column, discount } = props\r\n const listRef = useRef()\r\n const rowHeights = useRef({})\r\n const rowExpandeds = useRef({});\r\n\r\n useLayoutEffect(() => {\r\n const list = listRef.current\r\n if (list) {\r\n list.scrollTo(0)\r\n }\r\n }, [index])\r\n\r\n function getRowHeight(id) {\r\n return rowHeights.current[id] + 7 || 67\r\n }\r\n\r\n function setRowHeight(index, size) {\r\n if (listRef?.current?.resetAfterIndex)\r\n listRef.current.resetAfterIndex(0)\r\n rowHeights.current = {\r\n ...rowHeights.current, [index]: size\r\n }\r\n }\r\n\r\n function setRowExpanded(index, expanded) {\r\n if (String(expanded) !== 'undefined' && String(expanded) !== 'null') {\r\n if (listRef?.current?.resetAfterIndex)\r\n listRef.current.resetAfterIndex(0);\r\n rowExpandeds.current = {\r\n ...rowExpandeds.current, [index]: expanded\r\n }\r\n }\r\n }\r\n\r\n const Row = (RowProps) => {\r\n const { data: items, index, style } = RowProps\r\n const item = items[index]\r\n\r\n if (!item) {\r\n return null\r\n }\r\n\r\n return (\r\n <Draggable draggableId={item._id} index={index} key={item._id}>\r\n {provided => <Item\r\n innerRef={provided.innerRef}\r\n provided={provided}\r\n item={item}\r\n style={style}\r\n manualExpanded={props.cardsExpanded || rowExpandeds?.current[item._id] || false}\r\n onResize={(size) => {\r\n setRowHeight(item._id, size)\r\n }}\r\n onExpand={(expanded) => {\r\n setRowExpanded(item._id, expanded)\r\n }}\r\n />}\r\n </Draggable>\r\n )\r\n }\r\n\r\n return (\r\n <Droppable\r\n droppableId={column.id}\r\n mode=\"virtual\"\r\n renderClone={(provided, snapshot, rubric) => {\r\n let card = column.items[rubric.source.index]\r\n return (\r\n <Item innerRef={provided.innerRef}\r\n provided={provided}\r\n isDragging={snapshot.isDragging}\r\n item={card}\r\n manualExpanded={props.cardsExpanded || rowExpandeds?.current[card._id] || false}\r\n snapshot={snapshot}\r\n\r\n />\r\n )\r\n }}\r\n >\r\n {(provided, snapshot) => {\r\n const itemCount = snapshot.isUsingPlaceholder\r\n ? column.items.length + 1\r\n : column.items.length\r\n return (\r\n <AutoSizer style={{\r\n width: \"100%\",\r\n height: `calc(100% - ${discount + 47}px)`,\r\n overflowY: \"auto\",\r\n position: \"relative\",\r\n }}\r\n >\r\n {({ height, width }) => {\r\n return (\r\n <VariableSizeList\r\n width={279}\r\n height={height}\r\n itemCount={itemCount}\r\n itemSize={(index) => {\r\n return getRowHeight(column.items[index]?._id || null)\r\n }}\r\n itemData={column.items\r\n .sort((a, b) => {\r\n if (a.status === \"completed\" && b.status === \"completed\") {\r\n if (parseInt(a.completed_at) > parseInt(b.completed_at))\r\n return -1\r\n if (parseInt(a.completed_at) < parseInt(b.completed_at))\r\n return 1\r\n return 0\r\n }\r\n return 0\r\n })\r\n }\r\n className=\"task-list\"\r\n ref={listRef}\r\n style={{\r\n ...props.style ? props.style : {},\r\n height: \"100%\"\r\n }}\r\n outerRef={provided.innerRef}\r\n >\r\n {Row}\r\n </VariableSizeList>\r\n )\r\n }}\r\n </AutoSizer>\r\n )\r\n }}\r\n </Droppable >\r\n )\r\n})\r\n\r\nconst Column = React.memo(function Column(props) {\r\n const { column, index } = props\r\n const { db, sideModule, control } = reduxStore.getState()\r\n const [discountHeight, setDiscountHeight] = React.useState(false)\r\n\r\n const AppAccess = getAppAccess()\r\n const CardAccess = getUserAccess(column.id)\r\n\r\n const permission = (\r\n (\r\n AppAccess.plan && AppAccess.planAdmin\r\n )\r\n || (\r\n parseInt(CardAccess) > 4\r\n )\r\n ) ? true : false\r\n\r\n const ColumnData = db.cards[column.id]\r\n const columnHeaderRef = React.useRef()\r\n\r\n React.useEffect(() => {\r\n const resizeObserver = new ResizeObserver(() => {\r\n setDiscountHeight(columnHeaderRef.current.clientHeight)\r\n });\r\n resizeObserver.observe(columnHeaderRef.current);\r\n return () => resizeObserver.disconnect();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [columnHeaderRef])\r\n\r\n\r\n let sumValues = 0\r\n if (ColumnData.showSumValues && column.items && column.items.length > 0 && column.items.filter(a => a.value).length > 0) {\r\n column.items.filter(a => a.value).forEach(a => {\r\n sumValues = sumValues + parseFloat(a.value)\r\n })\r\n }\r\n\r\n let currencySymbol = `R$`\r\n\r\n if (ColumnData._planId && db.cards[ColumnData._planId] && db.cards[ColumnData._planId].default_currency)\r\n currencySymbol = db.currency.filter(a =>\r\n String(a.value) === String(db.cards[ColumnData._planId].default_currency)\r\n )[0].symbol\r\n\r\n\r\n return (\r\n <Draggable draggableId={column.id} index={index}>\r\n {provided => (\r\n <div\r\n className=\"column\"\r\n {...provided.draggableProps}\r\n ref={provided.innerRef}\r\n >\r\n <div\r\n ref={columnHeaderRef}\r\n {...provided.dragHandleProps}>\r\n <HeaderWithIcon\r\n title={`${column.name} (${column.items.length})`}\r\n icon={column.icon || null}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px',\r\n width: \"100%\"\r\n }}\r\n placeholder={translate(\"$__columnName\")}\r\n customButtons={permission ? [\r\n {\r\n name: translate(\"$__columnSettings\", 1),\r\n icon: \"more_vert\",\r\n color: customApp('menu'),\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...sideModule,\r\n db: 'cards',\r\n id: column.id,\r\n module: \"columnEdit\",\r\n activeModule: \"columnEdit\",\r\n data: db.cards[column.id],\r\n })\r\n },\r\n show: 'hover',\r\n style: { right: \"3px\", position: \"absolute\", backgroundColor: \"#e1e1e1\" }\r\n },\r\n ] : []}\r\n />\r\n {ColumnData && ColumnData.description ?\r\n <HtmlTooltip\r\n arrow\r\n title={(\r\n <React.Fragment>\r\n {ColumnData.description}\r\n </React.Fragment>\r\n )\r\n } >\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"gray\",\r\n fontSize: 10,\r\n padding: \"0px 15px\",\r\n maxHeight: 68,\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n paddingBottom: 15\r\n }}>{ColumnData.description.substr(0, 133)}...</div>\r\n </HtmlTooltip>\r\n : <React.Fragment></React.Fragment>}\r\n {ColumnData.showSumValues && sumValues > 0 ?\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: \"black\",\r\n fontWeight: \"bold\",\r\n fontSize: 12,\r\n padding: \"0px 15px\",\r\n paddingBottom: 15\r\n }}>{currencySymbol} {sumValues}</div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n <ItemList column={column} index={index} {...props} discount={discountHeight || 0} />\r\n <div id=\"AgileKanbanColumn_304\" style={{ position: 'relative', float: 'left', width: '100%', padding: '15px 7px' }}>\r\n <IconButton\r\n text={translate(\"$__add\", '*')}\r\n icon=\"add_box\"\r\n iconColor={customApp('medium')}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...control,\r\n addCard: {\r\n _parent: column.id,\r\n rows: column.items.length\r\n },\r\n })\r\n }}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </Draggable>\r\n )\r\n})\r\n\r\nconst mapStateToProps = (store, props) => ({\r\n cards: store.db.cards,\r\n cardsExpanded: store.db.cardsExpanded,\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Column)","//CORE\r\nimport React from \"react\";\r\nimport ReactExport from \"react-data-export\";\r\nimport moment from \"moment-timezone\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//@MATERIAL\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, getDate } from \"functions/\";\r\n\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nfunction ExportAll(props) {\r\n const [dataCompleted, setDataCompleted] = React.useState(false)\r\n const [dataSet, setDataSet] = React.useState([])\r\n const [userDataSet, setUserDataSet] = React.useState([])\r\n const [columns, setcolumns] = React.useState([{\r\n label: translate('$__step', 1),\r\n value: 'step'\r\n }, {\r\n label: translate('$__cardCode', 1),\r\n value: 'cardCode'\r\n }, {\r\n label: translate('$__ref1', 1),\r\n value: 'ref1'\r\n }, {\r\n label: translate('$__ref2', 1),\r\n value: 'ref2'\r\n }, {\r\n label: translate('$__name', 1),\r\n value: 'name'\r\n }, {\r\n label: translate('$__description', 1),\r\n value: 'description'\r\n }, {\r\n label: translate('$__value', 1),\r\n value: 'value'\r\n }, {\r\n label: translate('$__startDate', 1),\r\n value: 'startDate'\r\n }, {\r\n label: translate('$__endDate', 1),\r\n value: 'endDate'\r\n }, {\r\n label: translate('$__priority', 1),\r\n value: 'priority'\r\n }, {\r\n label: translate('$__risk', 1),\r\n value: 'risk'\r\n }, {\r\n label: translate('$__complexity', 1),\r\n value: 'complexity'\r\n }, {\r\n label: translate('$__impact', 1),\r\n value: 'impact'\r\n }, {\r\n label: translate('$__tags', 1),\r\n value: 'tags'\r\n }, {\r\n label: translate('$__responsive', 1),\r\n value: 'responsive'\r\n }, {\r\n label: translate('$__createdBy', 1),\r\n value: 'createdBy'\r\n }, {\r\n label: translate('$__createdAt', 1),\r\n value: 'created_at'\r\n }, {\r\n label: translate('$__updatedAt', 1),\r\n value: 'updated_at'\r\n }])\r\n\r\n\r\n const [usersColumns, setusersColumns] = React.useState([{\r\n label: translate('$__cardCode', 1),\r\n value: 'cardCode'\r\n }, {\r\n label: translate('$__user', 1),\r\n value: 'user'\r\n }, {\r\n label: translate('$__access', 1),\r\n value: 'level'\r\n }, {\r\n label: translate('$__isResposible', 1),\r\n value: 'responsible'\r\n }])\r\n const { db, forms } = reduxStore.getState()\r\n\r\n\r\n const mountDataFn = async (d) => {\r\n //reduxStore.getState().forms[props.formId].boardColumns\r\n\r\n let access = {\r\n [\"0\"]: translate('$__reader', 1),\r\n [\"1\"]: translate('$__executioner', 1),\r\n [\"2\"]: translate('$__collaborator', 1),\r\n [\"3\"]: translate('$__collaborator', 1),\r\n [\"4\"]: translate('$__supervisor', 1),\r\n [\"5\"]: translate('$__admin', 1)\r\n }\r\n\r\n let form\r\n let mountData = []\r\n let mountUsersData = []\r\n\r\n if (d.columnOrder.length > 0) {\r\n d.columnOrder.map(a => {\r\n if (db.cards[a]?.form) {\r\n form = forms[db.cards[a]?.form]\r\n }\r\n return\r\n })\r\n }\r\n\r\n let customFields = columns\r\n if (form) {\r\n let formElements = JSON.parse(form.elements)\r\n formElements.map(a => {\r\n if (customFields.filter(cfa => cfa === a).length === 0)\r\n customFields.push({ label: a.name, value: a.id })\r\n })\r\n if (customFields.length > 0)\r\n setcolumns(customFields)\r\n }\r\n\r\n Object.keys(d.columns).map(col => {\r\n const columnName = db.cards[col].name\r\n if (d.columns[col]?.items?.length > 0) {\r\n d.columns[col].items.map(card => {\r\n let newUserLine = {}\r\n let newLine = []\r\n\r\n\r\n customFields.map(cf => {\r\n let xl = ``\r\n if (cf.value === 'updated_at' || cf.value === 'created_at') {\r\n xl = getDate(card[cf.value]?.low || card[cf.value], \"YYYY-MM-DD HH:mm\") || ``\r\n } else if (cf.value === 'startDate' || cf.value === 'endDate') {\r\n if (card[cf.value]?.low || card[cf.value]) {\r\n xl = getDate(card[cf.value]?.low || card[cf.value], \"YYYY-MM-DD HH:mm\") || ``\r\n } else {\r\n xl = ``\r\n }\r\n } else if (cf.value === 'createdBy') {\r\n xl = card._createdBy.name\r\n } else if (cf.value === 'responsive') {\r\n xl = Object.keys(card._users).filter(a => card._users[a].isResponsible)[0]?.name || Object.keys(card._users).filter(a => card._users[a]?.access === \"5\")[0]?.name || \"\"\r\n } else if (cf.value === 'cardCode') {\r\n xl = card._cardCode\r\n } else if (cf.value !== \"tags\" && cf.value !== \"cardCode\" && card[cf.value]) {\r\n if (typeof card[cf.value] === 'object') {\r\n if (card[cf.value].low) {\r\n xl = String(card[cf.value].low)\r\n } else {\r\n card[cf.value].map((a, ai) => {\r\n xl += `${ai > 0 ? ` | ` : ``}${a}`\r\n })\r\n }\r\n } else {\r\n xl = card[cf.value]\r\n }\r\n } else if (cf.value === \"tags\" && card._tags && card._tags.filter(a => a.value).length > 0) {\r\n // let tags = `=CONCAT(`\r\n card._tags.map((a, ai) => {\r\n xl += `${ai > 0 ? ` || ` : ``}${a.label}`\r\n })\r\n }\r\n newLine = {\r\n ...newLine,\r\n [cf.value]: String(xl) || \"\"\r\n }\r\n })\r\n if (mountData.filter(a => a.cardCode === newLine.cardCode).length === 0)\r\n mountData.push({\r\n ...newLine,\r\n step: columnName\r\n })\r\n // console.log(card)\r\n Object.keys(card._users).forEach(us => {\r\n if (mountUsersData.filter(a => a.cardCode === newLine.cardCode && a.user === card._users[us].name).length === 0)\r\n mountUsersData.push({\r\n cardCode: newLine.cardCode,\r\n user: card._users[us].name,\r\n responsible: card._users[us].isResponsible ? \"Sim\" : \"Não\",\r\n level: access[String(card._users[us].access).substr(0, 1)]\r\n })\r\n })\r\n\r\n })\r\n }\r\n })\r\n setUserDataSet(mountUsersData)\r\n setDataSet(mountData)\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.data)\r\n mountDataFn(props.data)\r\n }, [props.data])\r\n\r\n\r\n if (dataSet.length === 0)\r\n return (\r\n <div>Sem informações para exportar</div>\r\n )\r\n\r\n console.log(dataSet)\r\n\r\n\r\n return (\r\n <ExcelFile\r\n filename={`${props.fileName ? props.fileName.replace(\" \", \"-\") : \"exportBoard\"}-${moment().unix('x')}`}\r\n element={\r\n <CustomButton\r\n title={translate(\"$__export\")}\r\n text={translate(\"$__export\")}\r\n icon={\"file_download\"}\r\n size={\"25px\"}\r\n />\r\n }\r\n >\r\n <ExcelSheet data={dataSet} name={`${props.fileName ? props.fileName.replace(\" \", \"-\") : \"exportBoard\"}-${moment().unix('x')}`}>\r\n {columns.map((a, ai) => {\r\n return (<ExcelColumn key={ai} style={{ alignment: { wrapText: true } }} label={a.label} value={a.value} />)\r\n })}\r\n </ExcelSheet>\r\n <ExcelSheet data={userDataSet} name={'POR USUÁRIO'}>\r\n {usersColumns.map((a, ai) => {\r\n return (<ExcelColumn key={ai} style={{ alignment: { wrapText: true } }} label={a.label} value={a.value} />)\r\n })}\r\n </ExcelSheet>\r\n </ExcelFile>\r\n )\r\n}\r\nexport default ExportAll","import React from 'react';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport DateRange from '@material-ui/icons/DateRange';\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions/\";\r\n\r\nconst options = [\r\n '$__last7Days',\r\n '$__last15Days',\r\n '$__last30Days',\r\n '$__last60Days',\r\n '$__last90Days',\r\n '$__last180Days',\r\n '$__last365Days',\r\n '$__allPeriod',\r\n];\r\n\r\nconst ITEM_HEIGHT = 48;\r\n\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n session: store.session\r\n }\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n\r\nfunction PeriodFilter(props) {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [selected, setSelected] = React.useState('$__last7Days')\r\n const open = Boolean(anchorEl);\r\n\r\n React.useEffect(() => {\r\n }, [])\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = async (option) => {\r\n setAnchorEl(null);\r\n setSelected(option)\r\n if (option && typeof option === 'string') {\r\n let subtractDays = String(option).replace('$__last', '')\r\n subtractDays = subtractDays.replace('Days', '')\r\n if (option === '$__allPeriod') {\r\n props.onSelect(500000)\r\n } else {\r\n props.onSelect(subtractDays)\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <ErrorBoundary>\r\n <IconButton\r\n aria-label=\"more\"\r\n aria-controls=\"long-menu\"\r\n aria-haspopup=\"true\"\r\n onClick={handleClick}\r\n style={props.title ? {} : { ...props.style || props.showSelected ? props.style : {} }}\r\n >\r\n {props.title ? <div style={{ textWrap: \"nowrap\", fontSize: 10, color: \"#CCCCCC\", paddingRight: 5, paddingLeft: 5 }}>{`${props.title}:` || ``}</div> : <></>}<DateRange /><div style={{ textWrap: \"nowrap\", fontSize: 12, paddingRight: 5, paddingLeft: 5 }}>{props.showSelected && selected ? translate(selected, 1) : ``}</div>\r\n </IconButton>\r\n <Menu\r\n id=\"long-menu\"\r\n anchorEl={anchorEl}\r\n keepMounted\r\n open={open}\r\n onClose={() => {\r\n handleClose()\r\n }}\r\n PaperProps={{\r\n style: {\r\n maxHeight: ITEM_HEIGHT * 4.5,\r\n },\r\n }}\r\n >\r\n {options.map((option) => (\r\n <MenuItem\r\n key={option}\r\n selected={option === selected}\r\n onClick={(e) => handleClose(option)}\r\n >\r\n {translate(option, 1)}\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </ErrorBoundary>\r\n );\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PeriodFilter)","import React, { useState } from \"react\"\r\nimport { DragDropContext, Droppable } from \"react-beautiful-dnd\"\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\n\r\n//DEPENDENCIES\r\nimport Column from \"./Column\"\r\nimport Filter from \"componentsV3/Filter/menuFilter\";\r\nimport MoreMenu from \"components/MoreMenu\";\r\nimport ExportAll from \"./exportAll\"\r\nimport PeriodFilter from \"componentsV3/Filter/period\"\r\nimport CardsLoader from \"components/Card/loader\"\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\r\n//STYLE\r\nimport \"./style.css\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { getKanbanData, addColumn, reorder, automation } from \"functions/kanban\"\r\nimport { getUserAccess } from \"functions/cards\"\r\nimport { customApp, translate, getAppAccess } from \"functions\"\r\nimport { loadCardsV2 } from \"functions/loadData\"\r\n\r\n\r\nfunction reorderList(list, startIndex, endIndex) {\r\n const result = Array.from(list);\r\n // return result.splice(startIndex, 1, list[endIndex]);\r\n const [removed] = result.splice(startIndex, 1)\r\n result.splice(endIndex, 0, removed)\r\n return result\r\n}\r\n\r\nfunction AgileKanban(props) {\r\n const [search, setSearch] = useState(props.searchs && props.searchs[props.nodeId] ? props.searchs[props.nodeId] : null)\r\n const [loading, setLoading] = useState(false)\r\n const [preffers, setPreffers] = useState({})\r\n const [state, setState] = useState(getKanbanData(props.nodeId, { deleted: false, preffers }, props.cards, search))\r\n const { db } = reduxStore.getState()\r\n const [orderBy] = useState('order')\r\n const [deleted] = useState(false)\r\n const [exportBoard, setExportBoard] = useState(false)\r\n const [addColumnActive, setAddColumn] = useState(false)\r\n\r\n const AppAccess = getAppAccess()\r\n const CardAccess = getUserAccess(props.nodeId)\r\n const controls = React.useRef({\r\n lock: false,\r\n updateCards: false\r\n })\r\n\r\n const updateCards = (options) => {\r\n setState(getKanbanData(props.nodeId, options, props.cards, search))\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.searchs && props.searchs[props.nodeId] && props.searchs[props.nodeId] !== search) {\r\n setSearch(props.searchs[props.nodeId])\r\n }\r\n // eslint-disable-next-line\r\n }, [props.searchs])\r\n\r\n React.useEffect(() => {\r\n if (!controls.current.lock) {\r\n updateCards({\r\n deleted: deleted,\r\n orderBy,\r\n preffers\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards, props.nodeId, search, preffers])\r\n\r\n\r\n async function onDragEnd(result) {\r\n controls.current = {\r\n ...controls.current,\r\n lock: false\r\n }\r\n if (!result.destination) {\r\n return\r\n }\r\n\r\n if (result.type === \"column\") {\r\n if (parseInt(CardAccess) < 5) {\r\n console.warn(\"Acesso insuficiente para reordenar colunas\");\r\n return\r\n }\r\n const columnOrder = reorderList(\r\n state.columnOrder,\r\n result.source.index,\r\n result.destination.index\r\n )\r\n\r\n // CORREÇÃO: Começar step do 1 ao invés de 0 para consistência\r\n let newColumnOrder = {}\r\n columnOrder.forEach((id, orderI) => {\r\n newColumnOrder = {\r\n ...newColumnOrder,\r\n [id]: {\r\n ...reduxStore.getState().db.cards[id],\r\n step: `${(orderI + 1)}` // MUDANÇA: +1 para começar do 1\r\n }\r\n }\r\n })\r\n\r\n // Atualizar Redux primeiro\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...newColumnOrder\r\n }\r\n })\r\n\r\n let cardSource = reduxStore.getState().db.cards[columnOrder[result.source.index]]\r\n let cardTarget = reduxStore.getState().db.cards[columnOrder[result.destination.index]]\r\n\r\n console.log(cardTarget)\r\n console.log(cardSource)\r\n // if (\r\n // cardSource\r\n // && (\r\n // cardSource.showInPanel\r\n // || cardSource.onConcludedStepMoveTo\r\n // )\r\n // ) return\r\n\r\n // if (\r\n // cardTarget\r\n // && (\r\n // cardTarget.showInPanel\r\n // || cardTarget.onConcludedStepMoveTo\r\n // )\r\n // ) return\r\n\r\n // CORREÇÃO: Verificar se houve mudança e enviar para backend\r\n if (JSON.stringify(columnOrder) !== JSON.stringify(state.columnOrder)) {\r\n console.log('Enviando reordenação para backend:', columnOrder); // Debug\r\n\r\n // Atualizar estado local para refletir mudança imediatamente\r\n setState(prevState => ({\r\n ...prevState,\r\n columnOrder: columnOrder\r\n }))\r\n\r\n // CORREÇÃO: Enviar reordenação para backend com await\r\n try {\r\n await reorder(columnOrder, 'step')\r\n console.log('Reordenação enviada com sucesso'); // Debug\r\n } catch (error) {\r\n console.error('Erro ao enviar reordenação:', error); // Debug\r\n }\r\n }\r\n return\r\n }\r\n\r\n\r\n const sourceColumn = reduxStore.getState().db.cards[result.source.droppableId]\r\n\r\n //LINK\r\n let parentCard = reduxStore.getState().db.cards[result.destination.droppableId]\r\n let card = db.cards[result.draggableId]\r\n const { session } = reduxStore.getState()\r\n\r\n if (\r\n parseInt(parentCard.step) >= parseInt(sourceColumn.step)\r\n &&\r\n (card._requireApproval &&\r\n (\r\n card._users\r\n && card._users[session._id]\r\n && !card._users[session._id].approvalResponsible\r\n )\r\n )\r\n ) return\r\n const items = Array.from(reorderList(\r\n state.columns[result.source.droppableId].items,\r\n result.source.index,\r\n result.destination.index\r\n ))\r\n\r\n let newCardsOrder = {}\r\n let cardsOrder = []\r\n items.forEach((card, orderI) => {\r\n newCardsOrder = {\r\n ...newCardsOrder,\r\n [card._id]: {\r\n ...reduxStore.getState().db.cards[card._id],\r\n order: `${(orderI)}`\r\n }\r\n }\r\n if (cardsOrder.indexOf(card._id) === -1)\r\n cardsOrder.push(card._id)\r\n })\r\n\r\n reorder(cardsOrder, 'order')\r\n\r\n if (\r\n parseInt(parentCard.step) > parseInt(sourceColumn.step)\r\n &&\r\n (card._requireApproval &&\r\n (\r\n card._users\r\n && card._users[session._id]\r\n && !card._users[session._id].approvalResponsible\r\n )\r\n )\r\n ) return\r\n\r\n let dataUpdate = automation(props, card?._id || null, parentCard?._id || null, card?._createdBy?._id || null)\r\n if (parentCard.requireApproval) {\r\n dataUpdate = {\r\n ...dataUpdate,\r\n _requireApproval: true\r\n }\r\n } else if (!parentCard.requireApproval && card._requireApproval) {\r\n dataUpdate = {\r\n ...dataUpdate,\r\n _requireApproval: null\r\n }\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [card._id]: {\r\n ...reduxStore.getState().db.cards[card._id],\r\n ...dataUpdate,\r\n _parent: result.destination.droppableId,\r\n }\r\n }\r\n })\r\n }\r\n\r\n const newColumn = async (data) => {\r\n let response = await addColumn(data)\r\n if (response) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...response\r\n }\r\n })\r\n\r\n // CORREÇÃO: Atualizar estado local após adicionar nova coluna\r\n updateCards({\r\n deleted: deleted,\r\n orderBy,\r\n preffers\r\n })\r\n }\r\n }\r\n\r\n let filterFields = []\r\n if (props.nodeId && db.cards[props.nodeId] && db.cards[props.nodeId].type === \"plan\" && db.cards[props.nodeId].refs) {\r\n filterFields = [\r\n 'text',\r\n 'ref1',\r\n 'ref2',\r\n 'date',\r\n 'tags',\r\n 'status',\r\n 'priority',\r\n 'impact',\r\n 'risk',\r\n 'complexity',\r\n 'users',\r\n 'usersMode'\r\n ]\r\n } else {\r\n filterFields = [\r\n 'text',\r\n 'date',\r\n 'tags',\r\n 'status',\r\n 'priority',\r\n 'impact',\r\n 'risk',\r\n 'complexity',\r\n 'users',\r\n 'usersMode'\r\n ]\r\n }\r\n\r\n const selectPeriodCards = async (e) => {\r\n setLoading(true)\r\n const req = await loadCardsV2(props, {\r\n cardLoad: 'childrens',\r\n idRel: props.nodeId,\r\n completed: true,\r\n completedDays: e\r\n })\r\n if (req)\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <DragDropContext\r\n onBeforeDragStart={(e) => {\r\n controls.current = {\r\n ...controls.current,\r\n lock: true\r\n }\r\n }}\r\n onDragEnd={onDragEnd}\r\n >\r\n <div\r\n className=\"app\"\r\n style={{\r\n overflowY: \"auto\",\r\n height: \"-webkit-fill-available\",\r\n paddingTop: 50\r\n }}\r\n >\r\n <Droppable\r\n droppableId=\"all-droppables\"\r\n direction=\"horizontal\"\r\n type=\"column\"\r\n >\r\n {provided => (\r\n <div\r\n {...provided.droppableProps}\r\n className=\"columns\"\r\n ref={provided.innerRef}\r\n >\r\n {state.columnOrder.map((columnId, index) => (\r\n <Column\r\n {...props}\r\n key={columnId}\r\n column={state.columns[columnId]}\r\n index={index}\r\n nodeId={props.nodeId}\r\n {...props.columProps ? props.columProps : {}}\r\n preffers={preffers}\r\n />\r\n ))}\r\n {(\r\n (\r\n AppAccess.admin\r\n && AppAccess.planAdmin\r\n )\r\n ||\r\n CardAccess > 3\r\n ) ?\r\n <div className=\"column\"\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {!addColumnActive ?\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"#FFFFFF\",\r\n color: \"black\",\r\n padding: 15,\r\n width: 279\r\n }}\r\n >\r\n <div id=\"AgileKanbanIndex_256\">\r\n <CustomButton\r\n title={translate(\"$__addColumn\")}\r\n text={translate(\"$__addColumn\")}\r\n color={\"lightgrey\"}\r\n textColor={\"lightgrey\"}\r\n icon={\"add_box\"}\r\n onClick={() => {\r\n setAddColumn(true)\r\n }}\r\n\r\n size={\"25px\"}\r\n />\r\n </div>\r\n </div>\r\n :\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"#FFFFFF\",\r\n width: 279,\r\n padding: 7\r\n }}\r\n >\r\n <div id=\"AgileKanbanIndex_282\">\r\n <HeaderWithIcon\r\n style={{\r\n width: \"100%\",\r\n }}\r\n title={null}\r\n color={customApp('menu')}\r\n editable\r\n permitIcon\r\n onEdit={(e) => {\r\n setAddColumn(false)\r\n newColumn({\r\n ...e,\r\n _parent: props.nodeId,\r\n type: \"step\",\r\n step: String(state.columnOrder.length + 1), // CORREÇÃO: +1 para consistência\r\n checklist: true\r\n })\r\n }}\r\n placeholder={translate(\"$__columnName\")}\r\n onCancel={() => { setAddColumn(false) }}\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {provided.placeholder}\r\n </div>\r\n )}\r\n </Droppable>\r\n\r\n </div>\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 15,\r\n left: 15,\r\n height: 35,\r\n display: \"flex\",\r\n grid: 7,\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <MoreMenu\r\n text={translate(\"$__options\")}\r\n icon={\"settings\"}\r\n horizontalButton\r\n size={'21px'}\r\n transparent\r\n style={{ position: \"relative\", border: '1px solid rgba(0, 0, 0, 0.47)', borderRadius: '5px', marginRight: \"7px\" }}\r\n color={customApp('menu')}\r\n btColor={\"lightgray\"}\r\n options={[\r\n {\r\n name: translate(\"$__orderByPriority\"),\r\n icon: preffers.orderByPriority ? \"toggle_on\" : \"toggle_off\",\r\n color: preffers.orderByPriority ? customApp(\"menu\") : \"#CCCCCC\",\r\n onClick: () => {\r\n setPreffers({\r\n ...preffers,\r\n orderByPriority: preffers.orderByPriority ? false : true,\r\n ...!preffers.orderByPriority ? {\r\n orderByName: false,\r\n orderByCreatedDate: false,\r\n orderByUpdatedDate: false\r\n } : {}\r\n })\r\n },\r\n },\r\n {\r\n name: translate(\"$__orderByName\"),\r\n icon: preffers.orderByName ? \"toggle_on\" : \"toggle_off\",\r\n color: preffers.orderByName ? customApp(\"menu\") : \"#CCCCCC\",\r\n onClick: () => {\r\n setPreffers({\r\n ...preffers,\r\n orderByName: preffers.orderByName ? false : true,\r\n ...!preffers.orderByName ? {\r\n orderByPriority: false,\r\n orderByCreatedDate: false,\r\n orderByUpdatedDate: false\r\n } : {}\r\n })\r\n },\r\n },\r\n {\r\n name: translate(\"$__orderByCreatedDate\"),\r\n icon: preffers.orderByCreatedDate ? \"toggle_on\" : \"toggle_off\",\r\n color: preffers.orderByCreatedDate ? customApp(\"menu\") : \"#CCCCCC\",\r\n onClick: () => {\r\n setPreffers({\r\n ...preffers,\r\n orderByCreatedDate: preffers.orderByCreatedDate ? false : true,\r\n ...!preffers.orderByCreatedDate ? {\r\n orderByName: false,\r\n orderByPriority: false,\r\n orderByUpdatedDate: false\r\n } : {}\r\n })\r\n },\r\n },\r\n {\r\n name: translate(\"$__orderByUpdatedDate\"),\r\n icon: preffers.orderByUpdatedDate ? \"toggle_on\" : \"toggle_off\",\r\n color: preffers.orderByUpdatedDate ? customApp(\"menu\") : \"#CCCCCC\",\r\n onClick: () => {\r\n setPreffers({\r\n ...preffers,\r\n orderByUpdatedDate: preffers.orderByUpdatedDate ? false : true,\r\n ...!preffers.orderByUpdatedDate ? {\r\n orderByName: false,\r\n orderByPriority: false,\r\n orderByCreatedDate: false\r\n } : {}\r\n })\r\n },\r\n }\r\n ,\r\n {\r\n name: translate(\"$__desc\"),\r\n icon: preffers.orderByDesc ? \"toggle_on\" : \"toggle_off\",\r\n color: preffers.orderByDesc ? customApp(\"menu\") : \"#CCCCCC\",\r\n onClick: () => {\r\n setPreffers({\r\n ...preffers,\r\n orderByDesc: preffers.orderByDesc ? false : true\r\n })\r\n },\r\n },\r\n {\r\n name: translate(\"$__exportData\"),\r\n icon: \"cloud_download\",\r\n color: customApp(\"menu\"),\r\n onClick: () => {\r\n setExportBoard(true)\r\n },\r\n }\r\n ]}\r\n />\r\n <Filter\r\n nodeId={props.nodeId}\r\n fields={filterFields}\r\n showFilters\r\n />\r\n {exportBoard && !loading ?\r\n <ExportAll onCompleted={() => { setExportBoard(false) }} data={state} fileName={db.cards[props.nodeId].name} />\r\n : <></>}\r\n <PeriodFilter\r\n style={{\r\n color: customApp('menu'),\r\n height: '20px',\r\n width: '20px'\r\n }}\r\n title={translate(`$__completedRange`)}\r\n showSelected\r\n onSelect={\r\n (e) => {\r\n selectPeriodCards(e)\r\n }\r\n }\r\n />\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\", minWidth: 300 }}>\r\n <CardsLoader loaderIds />\r\n </div>\r\n </div>\r\n </DragDropContext>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, props) => {\r\n return ({\r\n cards: store.db.cards,\r\n cardsExpanded: store.db.cardsExpanded,\r\n searchs: store.searchs,\r\n })\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AgileKanban)","//CORE\r\nimport React from \"react\";\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 HeaderWithIcon from \"components/Header/withIcon\";\r\nimport AgileStatus from \"components/AgileV2/status\";\r\nimport Filter from \"componentsV3/Filter/menuFilter\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nfunction StrategyAndPlansActionsView(props) {\r\n const { cards, orderByTitle, orderByTitlePosition, dataType } = props\r\n const { session } = reduxStore.getState()\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n if (!cards) {\r\n return (<div></div>)\r\n }\r\n\r\n let myCards = Object.keys(cards).filter(a => {\r\n if (\r\n !cards[a].checklist\r\n && cards[a]._planId === hashs[0]\r\n && !(cards[a] && cards[a].private && (\r\n !cards[a]._users\r\n || (\r\n cards[a]._users\r\n && !cards[a]._users[session._id]\r\n )\r\n ))\r\n &&\r\n (\r\n (\r\n props.type === 'actions'\r\n && cards[a]\r\n && cards[a].type\r\n && cards[a].type !== 'objective'\r\n && cards[a].type !== 'goal'\r\n && cards[a].type !== 'plan'\r\n && cards[a].type !== 'link'\r\n && cards[a].type !== 'insight'\r\n && cards[a].type !== 'chatGroup'\r\n && cards[a].type.indexOf('guideline') === -1\r\n && dataType.filter(f => f.name === cards[a].type)[0].module !== 'swot'\r\n )\r\n ||\r\n (\r\n props.type === 'guidelines'\r\n && cards[a].type.indexOf('guideline') > -1\r\n )\r\n ||\r\n (\r\n props.type === 'objectives'\r\n && cards[a].type.indexOf('objective') > -1\r\n )\r\n ||\r\n (\r\n props.type === 'goals'\r\n && cards[a].type.indexOf('goal') > -1\r\n )\r\n )\r\n )\r\n return true\r\n return false\r\n }).map(c => cards[c])\r\n\r\n return (\r\n <div>\r\n <div style={{\r\n padding: \"0px 10px\"\r\n }}>\r\n <Filter style={{\r\n with: \"100%\"\r\n }}\r\n fields={['text', 'date', 'tags', 'priority', 'unit', 'usersMode', 'users']}\r\n showFilters\r\n />\r\n <HeaderWithIcon\r\n title={null}\r\n icon={null}\r\n color={customApp('menu')}\r\n style={{\r\n background: 'transparent',\r\n padding: '7px'\r\n }}\r\n\r\n customButtons={[\r\n {\r\n title: orderByTitle ? \"$__orderByName\" : \"$__orderByManualOrder\",\r\n icon: orderByTitle ? \"sort\" : \"format_list_numbered\",\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n orderByTitle: !orderByTitle\r\n });\r\n },\r\n },\r\n orderByTitle &&\r\n {\r\n title: orderByTitlePosition === 'ASC' ? \"$__asc\" : \"$__desc\",\r\n icon: orderByTitlePosition === 'ASC' ? \"text_rotation_down\" : \"text_rotate_up\",\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n orderByTitlePosition: orderByTitlePosition === 'ASC' ? 'DESC' : 'ASC'\r\n });\r\n },\r\n },\r\n ]}\r\n />\r\n </div>\r\n <AgileStatus cards={myCards.map(a => a._id)}\r\n columnStyle={{\r\n maxHeight: \"calc(100vh - 220px)\", width: \"25%\"\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => ({\r\n cards: store.db.cards,\r\n orderByTitle: store.db.orderByTitle,\r\n orderByTitlePosition: store.db.orderByTitlePosition,\r\n dataType: store.db.dataType\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StrategyAndPlansActionsView)\r\n","import React, { useRef } from 'react';\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport Header from 'components/Dashboards/Header'\r\nimport IconComponent from 'components/Icon';\r\n\r\n\r\n\r\nconst DoughDetailedPreview = (props) => {\r\n\r\n const values = useRef([Math.random() * 400, Math.random() * 400, Math.random() * 400, Math.random() * 400, Math.random() * 400,])\r\n\r\n const data = [\r\n {\r\n \"id\": \"Atrasadas\",\r\n \"label\": \"Plano A\",\r\n \"value\": values.current[0],\r\n \"color\": '#f48c7c'\r\n },\r\n {\r\n \"id\": \"Concluidas\",\r\n \"label\": \"Plano B\",\r\n \"value\": values.current[1],\r\n \"color\": '#44f474'\r\n },\r\n {\r\n \"id\": \"Executando\",\r\n \"label\": \"Plano C\",\r\n \"value\": values.current[2],\r\n \"color\": '#24acdc'\r\n },\r\n {\r\n \"id\": \"Atrasadas2\",\r\n \"label\": \"Plano A\",\r\n \"value\": values.current[3],\r\n \"color\": '#f48c7c'\r\n },\r\n {\r\n \"id\": \"Concluidas2\",\r\n \"label\": \"Plano B\",\r\n \"value\": values.current[4],\r\n \"color\": '#44f474'\r\n },\r\n ]\r\n\r\n\r\n\r\n return (\r\n\r\n <div className='box' style={{ width: '100%', height: '100%', overflow: 'hidden', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column' }}>\r\n <Header styles={{}} tittle={props.title} icon={props.icon} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto' }}>\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ width: '60%' }}>\r\n <ResponsivePie\r\n data={data}\r\n colors={[\"#929497\", \"#011E41\", \"pink\", \"#EBA900\", \"#5A7F71\"]}\r\n margin={{ top: 37, right: 27, bottom: 37, left: 0 }}\r\n innerRadius={0.6}\r\n animate={false}\r\n padAngle={3}\r\n cornerRadius={3}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n arcLinkLabelsSkipAngle={10}\r\n arcLinkLabelsThickness={0}\r\n arcLinkLabelsColor={{ from: 'color' }}\r\n arcLabelsSkipAngle={10}\r\n arcLabelsTextColor={false}\r\n arcLabel={false}\r\n />\r\n </div>\r\n <IconComponent size={65} style={{ alignSelf: \"center\", marginLeft: '-20px' }}>\r\n list_alt\r\n </IconComponent>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default DoughDetailedPreview","import React, { useRef } from 'react';\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport Header from 'components/Dashboards/Header'\r\n\r\n\r\n\r\nconst GoalsDoughPreview = (props) => {\r\n\r\n const values = useRef([Math.random() * 400, Math.random() * 400, Math.random() * 400, Math.random() * 400, Math.random() * 400])\r\n\r\n const data = [\r\n {\r\n \"id\": \"Atrasadas\",\r\n \"label\": \"Plano A\",\r\n \"value\": values.current[0],\r\n \"color\": '#f48c7c'\r\n },\r\n {\r\n \"id\": \"Concluidas\",\r\n \"label\": \"Plano B\",\r\n \"value\": values.current[1],\r\n \"color\": '#44f474'\r\n },\r\n {\r\n \"id\": \"Executando\",\r\n \"label\": \"Plano C\",\r\n \"value\": values.current[2],\r\n \"color\": '#24acdc'\r\n },\r\n {\r\n \"id\": \"Atrasadas2\",\r\n \"label\": \"Plano A\",\r\n \"value\": values.current[3],\r\n \"color\": '#f48c7c'\r\n },\r\n {\r\n \"id\": \"Concluidas2\",\r\n \"label\": \"Plano B\",\r\n \"value\": values.current[4],\r\n \"color\": '#44f474'\r\n },\r\n ]\r\n\r\n\r\n return (\r\n\r\n <div className='box' style={{ width: '100%', height: '100%', overflow: 'hidden', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column' }}>\r\n <Header styles={{}} tittle={props.title} icon={props.icon} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto' }}>\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', }}>\r\n <ResponsivePie\r\n data={data}\r\n margin={{ top: 30, right: 30, bottom: 30, left: 30 }}\r\n innerRadius={0}\r\n padAngle={1.7}\r\n cornerRadius={3}\r\n activeOuterRadiusOffset={0}\r\n borderWidth={0}\r\n colors={[\"#929497\", \"#011E41\", \"pink\", \"#EBA900\", \"#5A7F71\"]}\r\n theme={{\r\n fontSize: '20px',\r\n fontWeight: 'bold',\r\n legend: false\r\n }}\r\n animate={false}\r\n arcLinkLabelsStraightLength={0}\r\n isInteractive={false}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.8]] }}\r\n enableArcLinkLabels={false}\r\n arcLinkLabelsSkipAngle={10}\r\n arcLinkLabelsThickness={0}\r\n arcLinkLabelsColor={{ from: 'color' }}\r\n arcLabelsSkipAngle={10}\r\n arcLabelsTextColor={false}\r\n arcLabel={false}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default GoalsDoughPreview","import React, { useRef } from 'react'\r\nimport { ResponsiveBar } from '@nivo/bar'\r\nimport Header from 'components/Dashboards/Header'\r\n\r\n//REDUX\r\n\r\n\r\n\r\nconst TaskByPersonPreview = (props) => {\r\n\r\n const sliceConfig = useRef(Math.floor(Math.random() * 7) + 3)\r\n\r\n const data = [\r\n {\r\n \"country\": \"AD\",\r\n \"hot dog\": 129,\r\n \"hot dogColor\": \"hsl(182, 70%, 50%)\",\r\n \"burger\": 161,\r\n \"burgerColor\": \"hsl(324, 70%, 50%)\",\r\n \"sandwich\": 75,\r\n \"sandwichColor\": \"hsl(266, 70%, 50%)\",\r\n \"kebab\": 66,\r\n \"kebabColor\": \"hsl(148, 70%, 50%)\",\r\n \"fries\": 180,\r\n \"friesColor\": \"hsl(130, 70%, 50%)\",\r\n \"donut\": 180,\r\n \"donutColor\": \"hsl(253, 70%, 50%)\"\r\n },\r\n {\r\n \"country\": \"AE\",\r\n \"hot dog\": 115,\r\n \"hot dogColor\": \"hsl(121, 70%, 50%)\",\r\n \"burger\": 87,\r\n \"burgerColor\": \"hsl(30, 70%, 50%)\",\r\n \"sandwich\": 22,\r\n \"sandwichColor\": \"hsl(170, 70%, 50%)\",\r\n \"kebab\": 164,\r\n \"kebabColor\": \"hsl(24, 70%, 50%)\",\r\n \"fries\": 5,\r\n \"friesColor\": \"hsl(103, 70%, 50%)\",\r\n \"donut\": 47,\r\n \"donutColor\": \"hsl(308, 70%, 50%)\"\r\n },\r\n {\r\n \"country\": \"AF\",\r\n \"hot dog\": 129,\r\n \"hot dogColor\": \"hsl(354, 70%, 50%)\",\r\n \"burger\": 15,\r\n \"burgerColor\": \"hsl(353, 70%, 50%)\",\r\n \"sandwich\": 28,\r\n \"sandwichColor\": \"hsl(223, 70%, 50%)\",\r\n \"kebab\": 178,\r\n \"kebabColor\": \"hsl(134, 70%, 50%)\",\r\n \"fries\": 26,\r\n \"friesColor\": \"hsl(30, 70%, 50%)\",\r\n \"donut\": 182,\r\n \"donutColor\": \"hsl(206, 70%, 50%)\"\r\n },\r\n {\r\n \"country\": \"AG\",\r\n \"hot dog\": 192,\r\n \"hot dogColor\": \"hsl(276, 70%, 50%)\",\r\n \"burger\": 179,\r\n \"burgerColor\": \"hsl(165, 70%, 50%)\",\r\n \"sandwich\": 184,\r\n \"sandwichColor\": \"hsl(21, 70%, 50%)\",\r\n \"kebab\": 107,\r\n \"kebabColor\": \"hsl(292, 70%, 50%)\",\r\n \"fries\": 45,\r\n \"friesColor\": \"hsl(63, 70%, 50%)\",\r\n \"donut\": 193,\r\n \"donutColor\": \"hsl(97, 70%, 50%)\"\r\n },\r\n {\r\n \"country\": \"AI\",\r\n \"hot dog\": 117,\r\n \"hot dogColor\": \"hsl(84, 70%, 50%)\",\r\n \"burger\": 151,\r\n \"burgerColor\": \"hsl(183, 70%, 50%)\",\r\n \"sandwich\": 190,\r\n \"sandwichColor\": \"hsl(11, 70%, 50%)\",\r\n \"kebab\": 46,\r\n \"kebabColor\": \"hsl(85, 70%, 50%)\",\r\n \"fries\": 133,\r\n \"friesColor\": \"hsl(65, 70%, 50%)\",\r\n \"donut\": 66,\r\n \"donutColor\": \"hsl(190, 70%, 50%)\"\r\n },\r\n {\r\n \"country\": \"AL\",\r\n \"hot dog\": 0,\r\n \"hot dogColor\": \"hsl(89, 70%, 50%)\",\r\n \"burger\": 53,\r\n \"burgerColor\": \"hsl(348, 70%, 50%)\",\r\n \"sandwich\": 3,\r\n \"sandwichColor\": \"hsl(87, 70%, 50%)\",\r\n \"kebab\": 45,\r\n \"kebabColor\": \"hsl(193, 70%, 50%)\",\r\n \"fries\": 169,\r\n \"friesColor\": \"hsl(108, 70%, 50%)\",\r\n \"donut\": 25,\r\n \"donutColor\": \"hsl(153, 70%, 50%)\"\r\n },\r\n {\r\n \"country\": \"AM\",\r\n \"hot dog\": 98,\r\n \"hot dogColor\": \"hsl(233, 70%, 50%)\",\r\n \"burger\": 193,\r\n \"burgerColor\": \"hsl(144, 70%, 50%)\",\r\n \"sandwich\": 178,\r\n \"sandwichColor\": \"hsl(298, 70%, 50%)\",\r\n \"kebab\": 183,\r\n \"kebabColor\": \"hsl(261, 70%, 50%)\",\r\n \"fries\": 128,\r\n \"friesColor\": \"hsl(309, 70%, 50%)\",\r\n \"donut\": 72,\r\n \"donutColor\": \"hsl(326, 70%, 50%)\"\r\n }\r\n ]\r\n\r\n console.log(sliceConfig)\r\n return (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'hidden' }}>\r\n <Header styles={{}} tittle={props.title} icon={props.icon} datafilter={true} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto' }}>\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter' }}>\r\n <ResponsiveBar\r\n data={data.slice(0, sliceConfig.current)}\r\n keys={[\r\n 'donut',\r\n 'fries',\r\n 'kebab',\r\n ]} // data\r\n indexBy=\"country\" //data\r\n margin={{ top: 20, right: 20, bottom: 20, left: 20 }}\r\n padding={0.3}\r\n valueScale={{ type: 'linear' }}\r\n indexScale={{ type: 'band', round: true }}\r\n enableLabel={false}\r\n colors={[\"#011E41\", \"#EBA900\", \"#5A7F71\"]}\r\n yScale={{\r\n max: 100,\r\n }}\r\n theme={{\r\n fontSize: '14px',\r\n color: 'white',\r\n background: '#f5f5f5',\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n\r\n }\r\n },\r\n }}\r\n fill={false}\r\n borderColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 1.6\r\n ]\r\n ]\r\n }}\r\n isInteractive={false}\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={null}\r\n axisLeft={null}\r\n role=\"application\"\r\n />\r\n </div>\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nexport default TaskByPersonPreview\r\n","import { ResponsiveLine } from '@nivo/line'\r\nimport React from 'react'\r\nimport Header from 'components/Dashboards/Header'\r\n\r\nconst TaskDoneByTimePreview = (props) => {\r\n\r\n\r\n const data = [\r\n {\r\n \"id\": \"japan\",\r\n \"data\": [\r\n {\r\n \"x\": \"\",\r\n \"y\": 89\r\n },\r\n {\r\n \"x\": \"seg\",\r\n \"y\": 89\r\n },\r\n {\r\n \"x\": \"ter\",\r\n \"y\": 289\r\n },\r\n {\r\n \"x\": \"quar\",\r\n \"y\": 145\r\n },\r\n {\r\n \"x\": \"quin\",\r\n \"y\": 268\r\n },\r\n {\r\n \"x\": \"sexta\",\r\n \"y\": 285\r\n },\r\n {\r\n \"x\": \"sab\",\r\n \"y\": 241\r\n },\r\n {\r\n \"x\": \"dom\",\r\n \"y\": 86\r\n },\r\n {\r\n \"x\": \" \",\r\n \"y\": 86\r\n },\r\n\r\n ]\r\n },\r\n {\r\n \"id\": \"france\",\r\n \"data\": [\r\n {\r\n \"x\": \"\",\r\n \"y\": 89\r\n },\r\n {\r\n \"x\": \"seg\",\r\n \"y\": 224\r\n },\r\n {\r\n \"x\": \"ter\",\r\n \"y\": 153\r\n },\r\n {\r\n \"x\": \"quar\",\r\n \"y\": 200\r\n },\r\n {\r\n \"x\": \"quin\",\r\n \"y\": 94\r\n },\r\n {\r\n \"x\": \"sexta\",\r\n \"y\": 285\r\n },\r\n {\r\n \"x\": \"sab\",\r\n \"y\": 275\r\n },\r\n {\r\n \"x\": \"dom\",\r\n \"y\": 287\r\n },\r\n {\r\n \"x\": \" \",\r\n \"y\": 127\r\n },\r\n ]\r\n },\r\n\r\n ]\r\n\r\n return (\r\n\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column', overflow: 'hidden' }}>\r\n <Header styles={{}} tittle={props.title} icon={props.icon} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%', }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto' }}>\r\n <div style={{ position: 'absolute', width: '100%', height: '100%', marginBottom: '25px' }}>\r\n <ResponsiveLine\r\n data={data}\r\n responsive={true}\r\n margin={{ top: 0, right: -25, bottom: 0, left: -25 }}\r\n xScale={{ type: 'point' }}\r\n yScale={{\r\n type: 'linear',\r\n min: 'auto',\r\n max: 500,\r\n stacked: false,\r\n reverse: false\r\n }}\r\n yFormat=\" >-.2f\"\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={null}\r\n axisLeft={null}\r\n enableGridX={true}\r\n enableGridY={true}\r\n lineWidth={0.5}\r\n pointSize={1}\r\n pointColor={{ theme: 'background' }}\r\n pointBorderWidth={0}\r\n isInteractive={false}\r\n enableArea={true}\r\n areaBaselineValue={0}\r\n pointBorderColor={{ from: 'serieColor' }}\r\n pointLabelYOffset={-12}\r\n useMesh={true}\r\n curve={'cardinal'}\r\n colors={['#525252', '#24acdc']}\r\n theme={{\r\n fontSize: '14px',\r\n color: 'white',\r\n background: '#f5f5f5',\r\n grid: {\r\n \"line\": {\r\n \"stroke\": \"#e8e6e6\",\r\n \"strokeWidth\": 1\r\n }\r\n },\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n\r\n }\r\n },\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TaskDoneByTimePreview;\r\n","import React from 'react'\r\nimport Header from 'components/Dashboards/Header'\r\n\r\n//REDUX\r\nimport { ResponsiveFunnel } from '@nivo/funnel'\r\n\r\n\r\nconst funnelPreview = (props) => {\r\n\r\n const data = [\r\n {\r\n \"id\": \"step_sent\",\r\n \"value\": 6,\r\n \"label\": \"Sent\"\r\n },\r\n {\r\n \"id\": \"step_viewed\",\r\n \"value\": 5,\r\n \"label\": \"Viewed\"\r\n },\r\n {\r\n \"id\": \"step_clicked\",\r\n \"value\": 4,\r\n \"label\": \"Clicked\"\r\n },\r\n {\r\n \"id\": \"step_add_to_card\",\r\n \"value\": 3,\r\n \"label\": \"Add To Card\"\r\n },\r\n {\r\n \"id\": \"step_purchased\",\r\n \"value\": 2,\r\n \"label\": \"Purchased\"\r\n },\r\n {\r\n \"id\": \"step_purchased2\",\r\n \"value\": 1,\r\n \"label\": \"Purchased\"\r\n }\r\n ]\r\n\r\n\r\n return (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'hidden' }}>\r\n <Header styles={{}} tittle={props.title} icon={props.icon} datafilter={true} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{}} >\r\n </div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter' }}>\r\n <ResponsiveFunnel\r\n data={data}\r\n direction=\"horizontal\"\r\n margin={{ top: 0, right: 0, bottom: 0, left: 0 }}\r\n shapeBlending={0.46}\r\n spacing={3}\r\n valueFormat=\" > .0s\"\r\n colors={{ scheme: 'reds' }}\r\n borderWidth={0}\r\n labelColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 3\r\n ]\r\n ]\r\n }}\r\n beforeSeparatorLength={10}\r\n beforeSeparatorOffset={20}\r\n afterSeparatorLength={10}\r\n afterSeparatorOffset={20}\r\n currentPartSizeExtension={10}\r\n enableLabel={false}\r\n motionConfig=\"wobbly\"\r\n />\r\n </div>\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nexport default funnelPreview","import React, { useState } from 'react';\r\n\r\n//COMPONENTS\r\nimport Grid from 'components/Grid/GridItemV2';\r\nimport GridContainer from 'components/Grid/GridContainer';\r\nimport Icon from 'components/Icon/';\r\n\r\n//REDUX\r\nimport reduxStore from 'store/';\r\n\r\n//PREVIEW\r\nimport DoughDetailedPreview from './Preview/DoughDetailedPreview';\r\nimport GoalsDoughPreview from './Preview/GoalsDoughPreview';\r\nimport TaskByPersonPreview from './Preview/TaskByPersonPreview';\r\nimport TaskDoneByTimePreview from './Preview/TaskDoneByTimePreview';\r\nimport TasksPreview from './Preview/TasksPreview';\r\nimport funnelPreview from './Preview/FunnelPreview';\r\n\r\n//WIDGETS\r\nimport AboutPlan from './Widgets/AboutPlan';\r\nimport Actions from './Widgets/Actions';\r\nimport ActionsDetailed from './Widgets/ActionsDetailed';\r\nimport ActionsDough from './Widgets/ActionsDough';\r\nimport DayTasks from './Widgets/DayTasks';\r\nimport Funnel from './Widgets/Funnel';\r\nimport Goal from './Widgets/Goal';\r\nimport GoalsDetailed from './Widgets/GoalsDetailed';\r\nimport GoalsDough from './Widgets/GoalsDough';\r\nimport Guideline from './Widgets/Guideline';\r\nimport LastCompleted from './Widgets/LastCompleted';\r\nimport LateTask from './Widgets/LateTask';\r\nimport MatrixDough from './Widgets/MatrixDough';\r\nimport MatrixDoughDetailed from './Widgets/MatrixDoughDetailed';\r\nimport Meta from './Widgets/Meta';\r\nimport NextTask from './Widgets/NextTask';\r\nimport Objective from './Widgets/Objective';\r\nimport ObjectiveDetailed from './Widgets/ObjectiveDetailed';\r\nimport TaskDoneBar from './Widgets/TaskDoneBar';\r\nimport TaskDoneDoughTable from './Widgets/TaskDoneDoughTable';\r\nimport TaskByPerson from './Widgets/TaskByPerson';\r\nimport TaskByCreator from './Widgets/TaskByCreator';\r\nimport TaskByResponsible from './Widgets/TaskByResponsible';\r\nimport TaskDoneByTime from './Widgets/TaskDoneByTime';\r\nimport TimeLine from './Widgets/TimeLine';\r\nimport ObjetiveDough from './Widgets/ObjetiveDough';\r\nimport Timesheet from './Widgets/Timesheet';\r\nimport TaskDoneBarMonth from \"./Widgets/TaskDoneBarMonth\";\r\n\r\n//ICONS\r\nimport MatrixIcon from 'assets/icons/Matrix';\r\n\r\n//FUNCTIONS\r\nimport { translate } from 'functions';\r\n\r\n//STYLES\r\nimport './Filter.css';\r\n\r\nconst Filter = ({ onClose, filter, addWidget }) => {\r\n const [selectedPriority, setSelectedPriority] = useState('all');\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n\r\n const filtrosList = [\r\n { name: translate('$__all'), type: 'all' },\r\n { name: translate('$__charts'), type: 'charts' },\r\n { name: translate('$__tasks'), type: 'tasks' },\r\n { name: translate('$__others'), type: 'others' },\r\n ];\r\n\r\n const filtros = [\r\n { Component: TaskDoneBar, widget: 'TaskDoneBar', type: \"charts\", name: 'TaskDoneBar', datagrid: { x: 0, y: 0, w: 4, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart', Preview: TaskByPersonPreview },\r\n { Component: TaskDoneDoughTable, widget: 'TaskDoneDoughTable', type: \"charts\", name: 'TaskDoneDoughTable', datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 2, maxW: 12, minH: 2 }, icon: 'stacked_bar_chart', Preview: GoalsDoughPreview },\r\n { Component: TaskDoneByTime, widget: 'TaskDoneByTime', name: 'taskDoneInWeek', type: \"charts\", datagrid: { x: 0, y: 0, w: 5, h: 5, minW: 3, maxW: 12, minH: 4 }, icon: 'area_chart', Preview: TaskDoneByTimePreview },\r\n {\r\n Component: TaskByPerson, widget: 'TaskByPerson', name: 'TaskByPerson', type: \"charts\", datagrid: { x: 0, y: 0, w: 5, h: 5, minW: 3, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart', Preview: TaskByPersonPreview, filter: {\r\n index: 0,\r\n showQuantity: 5,\r\n number: filter?.users ? filter?.users?.length : 4,\r\n finalIndex: 5\r\n }\r\n },\r\n {\r\n Component: TaskByCreator, widget: 'TaskByCreator', name: 'TaskByCreator', type: \"charts\", datagrid: { x: 0, y: 0, w: 5, h: 5, minW: 3, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart', Preview: TaskByPersonPreview, filter: {\r\n index: 0,\r\n showQuantity: 5,\r\n number: filter?.users ? filter?.users?.length : 4,\r\n finalIndex: 5\r\n }\r\n },\r\n {\r\n Component: TaskByResponsible, widget: 'TaskByResponsible', name: 'TaskByResponsible', type: \"charts\", datagrid: { x: 0, y: 0, w: 5, h: 5, minW: 3, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart', Preview: TaskByPersonPreview, filter: {\r\n index: 0,\r\n showQuantity: 5,\r\n number: filter?.users ? filter?.users?.length : 4,\r\n finalIndex: 5\r\n }\r\n },\r\n { Component: TaskDoneBarMonth, widget: 'TaskDoneBarMonth', type: \"charts\", name: 'TaskDoneBarMonth', datagrid: { x: 0, y: 0, w: 6, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart', Preview: TaskByPersonPreview },\r\n // { Component: Notes, widget: 'Notes', name: 'Notes', type: \"others\", datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: 'note', Preview: TasksPreview },\r\n { Component: TimeLine, widget: 'TimeLine', name: 'TimeLine', type: \"others\", datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 6, maxW: 12, minH: 4 }, icon: 'chat', Preview: TasksPreview },\r\n { Component: ActionsDetailed, widget: 'ActionsDetailed', name: 'actions', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 7, minW: 2, maxW: 12, minH: 7 }, icon: 'play_arrow', Preview: DoughDetailedPreview, plan: 'flow' },\r\n { Component: GoalsDetailed, widget: 'GoalsDetailed', name: 'goals', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 7, minW: 2, maxW: 12, minH: 7 }, icon: 'flag', Preview: DoughDetailedPreview, plan: 'flow' },\r\n { Component: MatrixDoughDetailed, widget: 'MatrixDoughDetailed', name: 'guidelines', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 7, minW: 2, maxW: 12, minH: 7 }, icon: MatrixIcon, Preview: DoughDetailedPreview, plan: 'flow' },\r\n { Component: ObjectiveDetailed, widget: 'ObjectiveDetailed', name: 'objectives', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 7, minW: 2, maxW: 12, minH: 7 }, icon: 'gps_fixed', Preview: DoughDetailedPreview, plan: 'flow' },\r\n { Component: ObjetiveDough, widget: 'ObjetiveDough', name: 'objectives', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 2, maxW: 12, minH: 2 }, icon: 'gps_fixed', Preview: GoalsDoughPreview, plan: 'flow' },\r\n { Component: ActionsDough, widget: 'ActionsDough', name: 'actions', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 2, maxW: 12, minH: 2 }, icon: 'play_arrow', Preview: GoalsDoughPreview, plan: 'flow' },\r\n { Component: MatrixDough, widget: 'MatrixDough', name: 'guidelines', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 2, maxW: 12, minH: 2 }, icon: MatrixIcon, Preview: GoalsDoughPreview, plan: 'flow' },\r\n { Component: GoalsDough, widget: 'GoalsDough', name: 'goals', type: \"charts\", datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 2, maxW: 12, minH: 2 }, icon: 'flag', Preview: GoalsDoughPreview, plan: 'flow' },\r\n { Component: Goal, widget: 'Goal', name: 'goals', datagrid: { x: 0, y: 0, w: 2, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: 'flag', Preview: Meta, plan: 'flow' },\r\n { Component: Objective, widget: 'Objective', name: 'objectives', datagrid: { x: 0, y: 0, w: 2, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: 'gps_fixed', Preview: Meta, plan: 'flow' },\r\n { Component: Guideline, widget: 'Guideline', name: 'guidelines', datagrid: { x: 0, y: 0, w: 2, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: MatrixIcon, Preview: Meta, plan: 'flow' },\r\n { Component: Actions, widget: 'Actions', name: 'actions', datagrid: { x: 0, y: 0, w: 2, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: 'play_arrow', Preview: Meta, plan: 'flow' },\r\n { Component: LastCompleted, widget: 'LastCompleted', type: \"tasks\", name: 'lastCompletedCards', datagrid: { x: 0, y: 0, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'today', Preview: TasksPreview },\r\n { Component: DayTasks, widget: 'DayTasks', type: \"tasks\", name: 'todayTasks', datagrid: { x: 0, y: 0, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'today', Preview: TasksPreview },\r\n { Component: LateTask, widget: 'LateTask', type: \"tasks\", name: 'lateActivities', datagrid: { x: 0, y: 0, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'today', Preview: TasksPreview },\r\n { Component: NextTask, widget: 'NextTask', type: \"tasks\", name: 'nextActivities', datagrid: { x: 0, y: 0, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'today', Preview: TasksPreview },\r\n { Component: Timesheet, widget: 'Timesheet', type: \"charts\", name: 'Timesheet', datagrid: { x: 0, y: 0, w: 6, h: 8, minW: 3, maxW: 12, minH: 8 }, icon: 'update', Preview: TasksPreview },\r\n { Component: Funnel, widget: 'Funnel', type: \"charts\", name: 'Etapas', datagrid: { x: 0, y: 0, w: 6, h: 4, minW: 4, maxW: 12, minH: 4 }, icon: 'filter_alt', Preview: funnelPreview },\r\n { Component: AboutPlan, widget: 'AboutPlan', type: \"others\", name: 'planResume', datagrid: { x: 0, y: 0, w: 4, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: 'info', Preview: TasksPreview },\r\n ];\r\n\r\n const GetHeader = (props) => {\r\n const { name, prev } = props\r\n return (\r\n\r\n <div >\r\n <p\r\n style={{\r\n marginTop: \"2px\",\r\n height: \"80px\",\r\n textAlign: \"center\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n width: '105%',\r\n marginLeft: '-2%',\r\n fontWeight: \"bold\",\r\n borderBottom: \"1px solid #d1d1cf\",\r\n fontSize: \"16px\",\r\n color: 'rgba(0, 0, 0, 0.80)'\r\n }}\r\n >\r\n <Icon\r\n size=\"35px\"\r\n style={{\r\n alignSelf: \"center\",\r\n marginRight: \"10px\",\r\n color: \"#001836\"\r\n }}\r\n >\r\n analytics\r\n </Icon>\r\n {name}\r\n </p>\r\n <div id=\"getElements_40\">\r\n <Icon\r\n style={{\r\n alignSelf: \"center\",\r\n height: \"25px\",\r\n cursor: \"pointer\",\r\n position: \"absolute\",\r\n width: \"25px\",\r\n right: \"20px\",\r\n top: \"18px\",\r\n color: \"grey\"\r\n }}\r\n size=\"30px\"\r\n onClick={onClose}\r\n >\r\n close\r\n </Icon>\r\n </div>\r\n {prev && <div id=\"getElements_58\"> <Icon\r\n style={{\r\n alignSelf: \"center\",\r\n height: \"25px\",\r\n cursor: \"pointer\",\r\n position: \"absolute\",\r\n width: \"25px\",\r\n left: \"20px\",\r\n top: \"18px\",\r\n color: \"grey\"\r\n }}\r\n\r\n size=\"30px\"\r\n >\r\n arrow_back\r\n </Icon></div>}\r\n </div>\r\n );\r\n };\r\n\r\n\r\n\r\n return (\r\n <div className=\"container\">\r\n <div className=\"gridContainer\">\r\n <GridContainer >\r\n <Grid className=\"grid\" xs={12}>\r\n <GetHeader name={translate('$__addCharts')} />\r\n </Grid>\r\n <Grid className=\"grid\" xs={4}>\r\n <div className='list'>\r\n {filtrosList.map(({ name, type }, i) => {\r\n\r\n let newName = name.charAt(0).toUpperCase() + name.slice(1);\r\n\r\n if (type === 'tasks' && db.cards[hashs[0]].planType === \"operational\") return null\r\n return (\r\n <p\r\n key={i}\r\n onClick={() => setSelectedPriority(type)}\r\n onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\r\n onMouseLeave={(e) => { e.target.style.backgroundColor = 'transparent' }}\r\n className={'filter'}\r\n style={{ paddingLeft: \"20px\", display: 'flex', alignItems: 'center', fontSize: '16px' }}\r\n >\r\n {newName}\r\n </p>\r\n );\r\n })}\r\n </div>\r\n </Grid>\r\n <Grid className=\"grid\" xs={8}>\r\n <div className=\"filterItemBox\">\r\n {filtros &&\r\n filtros.map(\r\n ({ name, image, Component, datagrid, type, icon, widget, Preview, filter, plan }, i) => {\r\n\r\n if (type === 'tasks' && db.cards[hashs[0]].planType === \"operational\") return null\r\n if (widget === 'Funnel' && db.cards[hashs[0]].planType !== \"operational\") return null\r\n if (plan === 'flow' && db.cards[hashs[0]].planType !== \"flow\") return null\r\n if (type === selectedPriority || selectedPriority === 'all')\r\n\r\n return (\r\n <Grid className=\"gridBox\" xs={6} key={i}>\r\n <div\r\n style={{ position: 'absolute', zIndex: '10', width: '97%', height: '95%', cursor: 'pointer', marginLeft: '-4.5%' }}\r\n onClick={() => {\r\n addWidget(Component, name, datagrid, name, name, icon, widget, filter);\r\n onClose()\r\n }}\r\n className='boxIncrease'\r\n ></div>\r\n <div\r\n className=\"filterItem\"\r\n >\r\n <Preview\r\n tittle={translate(`$__${name}`, 1)}\r\n title={translate(`$__${name}`, 1)}\r\n preview={true}\r\n data={1}\r\n type={type}\r\n icon={icon}\r\n />\r\n </div>\r\n </Grid>\r\n );\r\n else return null\r\n }\r\n )}\r\n </div>\r\n </Grid>\r\n </GridContainer>\r\n </div>\r\n </div >\r\n );\r\n};\r\n\r\nexport default Filter;\r\n","//COMPONENTS\r\nimport AboutPlan from './Widgets/AboutPlan';\r\nimport Notes from './Widgets/Notes';\r\nimport TimeLine from './Widgets/TimeLine';\r\nimport ObjetiveDough from './Widgets/ObjetiveDough';\r\nimport ActionsDough from './Widgets/ActionsDough';\r\nimport MatrixDough from './Widgets/MatrixDough';\r\nimport GoalsDough from './Widgets/GoalsDough';\r\nimport LastCompleted from './Widgets/LastCompleted';\r\nimport DayTasks from './Widgets/DayTasks';\r\nimport LateTask from './Widgets/LateTask';\r\nimport Timesheet from './Widgets/Timesheet';\r\nimport NextTask from './Widgets/NextTask';\r\nimport taskByPerson from './Widgets/TaskByPerson'\r\nimport taskByCreator from './Widgets/TaskByCreator'\r\nimport taskByResponsible from './Widgets/TaskByResponsible'\r\n/* import taskByPerson from './Widgets/TaskByPerson' */\r\nimport taskDoneByTime from './Widgets/TaskDoneByTime';\r\nimport Funnel from './Widgets/Funnel';\r\n\r\n\r\n\r\nconst initialState1 = [\r\n { Component: AboutPlan, widget: 'AboutPlan', name: 'planResume', datagrid: { x: 0, y: 0, w: 6, h: 3, minW: 2, maxW: 12, minH: 3 }, icon: 'close' },\r\n { Component: TimeLine, widget: 'TimeLine', name: 'TimeLine', datagrid: { x: 6, y: 0, w: 6, h: 7, minW: 6, maxW: 12, minH: 4 }, icon: 'close' },\r\n { Component: Notes, widget: 'Notes', name: 'Notes', datagrid: { x: 0, y: 4, w: 6, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: 'close' },\r\n { Component: taskByPerson, widget: 'TaskByPerson', name: 'taskByPerson', datagrid: { x: 0, y: 18, w: 6, h: 6, minW: 3, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart' },\r\n { Component: taskByCreator, widget: 'TaskByCreator', name: 'taskByCreator', datagrid: { x: 0, y: 18, w: 6, h: 6, minW: 3, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart' },\r\n { Component: taskByResponsible, widget: 'TaskByResponsible', name: 'taskByResponsible', datagrid: { x: 0, y: 18, w: 6, h: 6, minW: 3, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart' },\r\n { Component: taskDoneByTime, widget: 'TaskDoneByTime', name: 'taskDoneInWeek', datagrid: { x: 6, y: 18, w: 6, h: 6, minW: 4, maxW: 12, minH: 4 }, icon: 'area_chart' },\r\n { Component: ObjetiveDough, widget: 'ObjetiveDough', name: 'objectives', datagrid: { x: 0, y: 7, w: 3, h: 5, minW: 2, maxW: 12, minH: 3 }, icon: 'gps_fixed' },\r\n { Component: ActionsDough, widget: 'ActionsDough', name: 'actions', datagrid: { x: 3, y: 7, w: 3, h: 5, minW: 2, maxW: 12, minH: 3 }, icon: 'play_arrow' },\r\n { Component: MatrixDough, widget: 'MatrixDough', name: 'guidelines', datagrid: { x: 6, y: 7, w: 3, h: 5, minW: 2, maxW: 12, minH: 3 }, icon: 'MatrixIcon' },\r\n { Component: GoalsDough, widget: 'GoalsDough', name: 'goals', datagrid: { x: 9, y: 7, w: 3, h: 5, minW: 2, maxW: 12, minH: 3 }, icon: 'gps_fixed' },\r\n { Component: LastCompleted, widget: 'LastCompleted', name: 'lastCompletedCards', datagrid: { x: 0, y: 12, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'flag' },\r\n { Component: DayTasks, widget: 'DayTasks', name: 'todayTasks', datagrid: { x: 3, y: 12, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'flag' },\r\n { Component: LateTask, widget: 'LateTask', name: 'lateActivities', datagrid: { x: 6, y: 12, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'flag' },\r\n { Component: NextTask, widget: 'NextTask', name: 'nextActivities', datagrid: { x: 9, y: 12, w: 3, h: 6, minW: 2, maxW: 12, minH: 4 }, icon: 'flag' },\r\n { Component: Timesheet, widget: 'Timesheet', type: \"charts\", name: 'Timesheet', datagrid: { x: 0, y: 18, w: 4, h: 8, minW: 3, maxW: 12, minH: 8 }, icon: 'update' },\r\n]\r\n\r\nconst initialState2 = [\r\n { Component: AboutPlan, widget: 'AboutPlan', name: 'planResume', datagrid: { x: 0, y: 0, w: 6, h: 3, minW: 2, maxW: 12, minH: 3 }, icon: 'close' },\r\n { Component: TimeLine, widget: 'TimeLine', name: 'TimeLine', datagrid: { x: 6, y: 0, w: 6, h: 7, minW: 6, maxW: 12, minH: 4 }, icon: 'close' },\r\n { Component: Notes, widget: 'Notes', name: 'Notes', datagrid: { x: 0, y: 4, w: 6, h: 4, minW: 2, maxW: 12, minH: 4 }, icon: 'close' },\r\n { Component: taskByPerson, widget: 'TaskByPerson', name: 'taskByPerson', datagrid: { x: 0, y: 18, w: 6, h: 6, minW: 3, maxW: 12, minH: 4 }, icon: 'stacked_bar_chart' },\r\n { Component: taskDoneByTime, widget: 'TaskDoneByTime', name: 'taskDoneInWeek', datagrid: { x: 6, y: 18, w: 6, h: 6, minW: 4, maxW: 12, minH: 4 }, icon: 'area_chart' },\r\n { Component: Funnel, widget: 'Funnel', type: \"charts\", name: 'Etapas', datagrid: { x: 0, y: 22, w: 12, h: 5, minW: 4, maxW: 12, minH: 4 }, icon: 'filter_alt' },\r\n { Component: Timesheet, widget: 'Timesheet', type: \"charts\", name: 'Timesheet', datagrid: { x: 0, y: 27, w: 4, h: 8, minW: 3, maxW: 12, minH: 8 }, icon: 'update' },\r\n]\r\n\r\nexport { initialState1, initialState2 };","import React, { useState } from 'react'\r\nimport ButtonOptions from 'componentsV3/Buttons'\r\nimport { translate } from 'functions';\r\n\r\n\r\nconst PalleteButton = (props) => {\r\n\r\n const { handleColorSet } = props\r\n const [mostrarLista, setMostrarLista] = useState(false);\r\n const [backgroundCor, setBackgroundCor] = useState('white')\r\n\r\n const toggleLista = () => {\r\n setMostrarLista(!mostrarLista);\r\n };\r\n\r\n const itemStyle = {\r\n height: '50px',\r\n alignContent: 'center',\r\n justifyContent: 'center',\r\n display: 'flex',\r\n marginLeft: '0px',\r\n padding: '0px',\r\n width: '200px',\r\n cursor: 'pointer',\r\n backgroundColor: 'transparent',\r\n borderBottom: '2px solid #eeeeee'\r\n }\r\n\r\n const coresArray1 = ['#3498db', '#85c1e9', '#2980b9', '#aed6f1', '#1f618d', '#7fb3d5'];\r\n const coresArray2 = ['#1b6b99', '#1c5681', '#0e4063', '#0a2e4d', '#1f3a4b', '#0c2c3a'];\r\n const coresArray3 = ['#849AA4', '#2E5E90', '#9ED3D8', '#F07857', '#008AC4', '#2C2C2C'];\r\n const coresArray4 = [\"#6AB187\", \"#CED2CC\", \"#23282D\", \"#4CB5F5\", \"#1F3F49\", \"#D32D41\"];\r\n const coresArray5 = [\"#4B49AC\", \"#98BDFF\", \"#23282D\", \"#4CB5F5\", \"#1F3F49\", \"#D32D41\"];\r\n const coresArray6 = [\"#01a0a8\", \"#de572f\", \"#fdbd3f\", \"#642201\", \"#eb7f58\", \"#e9d5a8\"];\r\n\r\n const colorArr = [coresArray1, coresArray2, coresArray3, coresArray4, coresArray5, coresArray6];\r\n\r\n\r\n return (\r\n <div\r\n onMouseEnter={() => setBackgroundCor('rgba(0, 0, 0, 0.12)')}\r\n onMouseLeave={() => setBackgroundCor('rgba(0, 0, 0, 0)')}\r\n style={{ position: 'relative', backgroundColor: backgroundCor }}>\r\n\r\n <ButtonOptions\r\n text={translate(\"$__colorPalette\")}\r\n icon={\"palette\"}\r\n onClick={toggleLista}\r\n onBlur={toggleLista}\r\n >\r\n </ButtonOptions>\r\n {mostrarLista && (\r\n <ul style={{ position: 'absolute', zIndex: '999999999', padding: '0px', top: '25px', backgroundColor: 'white', border: '2px solid #eeeeee' }}>\r\n {colorArr.map((item) => {\r\n let values = item.map((value, index) => {\r\n let label = '';\r\n switch (index) {\r\n case 0:\r\n label = 'completed';\r\n break;\r\n case 1:\r\n label = 'awaitAction';\r\n break;\r\n case 2:\r\n label = 'inProgress';\r\n break;\r\n case 3:\r\n label = 'paused';\r\n break;\r\n case 4:\r\n label = 'notStarted';\r\n break;\r\n case 5:\r\n label = 'late';\r\n break;\r\n default:\r\n label = '';\r\n break;\r\n }\r\n return {\r\n color: value,\r\n label: label\r\n }\r\n })\r\n return <li\r\n style={itemStyle}\r\n onClick={() => handleColorSet(values)}\r\n onMouseEnter={(e) => {\r\n if (e.target.style.backgroundColor === 'white') {\r\n e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n console.log(e.target.style.backgroundColor)\r\n if (e.target.style.backgroundColor === 'rgba(0, 0, 0, 0.12)') {\r\n e.target.style.backgroundColor = 'white';\r\n }\r\n }}\r\n >\r\n {item.map((color) => {\r\n return (\r\n <span\r\n style={{\r\n width: '15px',\r\n height: '15px',\r\n backgroundColor: color,\r\n alignSelf: 'center',\r\n }}\r\n >\r\n </span>\r\n );\r\n })}\r\n </li>\r\n })}\r\n </ul>\r\n )}\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default PalleteButton","import React from 'react'\r\nimport moment from \"moment-timezone\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\n\r\n//COMPONENTS\r\nimport SelectUsers from \"components/User/select\"\r\nimport DataPicker from \"components/DataPicker\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//FUNCTIONS\r\nimport { textColor, translate } from 'functions'\r\n\r\nconst DisplayFilterOptions = ({ options, handleDateChange }) => {\r\n return (\r\n <div style={{ display: 'flex' }}>\r\n {options?.users && <div\r\n style={{ marginTop: 5 }}>\r\n <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={options?.users || null}\r\n noLimit\r\n multiple={true}\r\n // onSelect={(e) => {\r\n // setSearch({\r\n // ...searchValues,\r\n // users: e\r\n // })\r\n // }}\r\n selected={options?.users || []}\r\n transparent\r\n />\r\n </div>}\r\n {options?.startDate && <div\r\n style={{ marginTop: 5, marginLeft: '10px' }}>\r\n <DataPicker\r\n type=\"datetime\"\r\n onChangeStartDate={(d) => {\r\n let values = {\r\n startDate: moment(d).unix('x'),\r\n }\r\n console.log(values)\r\n handleDateChange(values)\r\n }}\r\n onChangeEndDate={(d) => {\r\n let values = {\r\n endDate: moment(d).unix('x'),\r\n }\r\n console.log(values)\r\n handleDateChange(values)\r\n }}\r\n range\r\n horizontal\r\n startDate={options?.startDate ? new Date(options.startDate * 1000) : null}\r\n endDate={options?.endDate ? new Date(options.endDate * 1000) : null}\r\n onClear={() => {\r\n handleDateChange({\r\n startDate: false,\r\n endDate: false\r\n })\r\n }}\r\n />\r\n </div>}\r\n {options?.tags &&\r\n <div style={{ display: \"flex\", fontSize: 11 }}>{options.tags.map((t, i) =>\r\n <div\r\n key={t.value}\r\n className={'tag'}\r\n style={{\r\n backgroundColor: t.color || \"lightgray\",\r\n color: t.color ? textColor(t.color, true) : '#FFFFFF',\r\n display: \"flex\", alignItems: \"center\",\r\n padding: \"3px 7px\",\r\n borderRadius: \"7px\",\r\n marginLeft: 5,\r\n whiteSpace: \"nowrap\",\r\n height: \"fit-content\"\r\n }}\r\n >\r\n {t.parent && reduxStore.getState().db.tag.filter(tt => tt.value === t.parent).length > 0 ?\r\n <div\r\n style={{\r\n fontSize: 8,\r\n marginRight: 3\r\n }}\r\n >{reduxStore.getState().db.tag.filter(tt => tt.value === t.parent)[0].label} / </div>\r\n : <React.Fragment></React.Fragment>}\r\n {t.label}\r\n </div>\r\n )}\r\n </div>\r\n }\r\n {options?.status &&\r\n <div style={{ color: \"gray\", padding: \"0px 15px\", borderRight: \"solid 1px gray\", display: \"flex\", alignItems: \"center\" }}>{translate(\"$__status\")}: <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n {Object.keys(options.status)\r\n .filter((a, i) => options.status[a])\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(reduxStore.getState().db.status.filter(fil => fil.value === a)[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: reduxStore.getState().db.status.filter(fil => fil.value === a)[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n )\r\n}\r\n\r\nexport default DisplayFilterOptions","import React from 'react'\r\nimport { useState, useEffect, useRef } from 'react'\r\nimport ReactDOM from 'react-dom';\r\n\r\n//GRID\r\nimport { Responsive, WidthProvider } from \"react-grid-layout\"\r\nimport \"react-grid-layout/css/styles.css\"\r\nimport \"react-resizable/css/styles.css\"\r\n\r\n//FUNCTIONS\r\nimport { getChildrens, getUserAccess } from \"functions/cards\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { translate } from 'functions';\r\nimport { getAppAccess } from 'functions'\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 Icon from 'components/Icon';\r\nimport ErrorBoundary from 'components/ErrorBoundary';\r\nimport { appAlert } from 'functions';\r\nimport Filter from 'components/Dashboards/Filter'\r\nimport ButtonOptions from 'componentsV3/Buttons'\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\nimport { updateCard } from \"functions/cards\"\r\nimport { initialState1, initialState2 } from './GetInitialState';\r\nimport PalleteButton from './PalleteButton';\r\nimport FilterDash from 'componentsV3/FilterDashboard/index';\r\nimport DisplayFilterOptions from 'componentsV3/FilterDashboard/DisplayFilterOptions';\r\n\r\n//STYLES\r\nimport \"./Widgets/Loader.css\"\r\n\r\nconst ResponsiveGridLayout = WidthProvider(Responsive);\r\n\r\nconst Dashboard = (props) => {\r\n\r\n const [state, setState] = useState([])\r\n const [filter, setFilter] = useState(false)\r\n const [filteredCards, setFilteredCards] = useState({})\r\n const [edit, setEdit] = useState(false)\r\n const [key1, setKey1] = useState(0)\r\n const [editState, setEditState] = useState([])\r\n const [load, setLoad] = useState(true)\r\n const { db } = reduxStore.getState()\r\n const [dashboardConfig, setDashboardConfig] = useState({\r\n filter: {}\r\n })\r\n\r\n const stateRef = useRef([{}])\r\n const filterRef = useRef(false)\r\n const filterStateRef = useRef({})\r\n\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(hashs[0])\r\n\r\n //header\r\n const dashboardStyles = {\r\n backgroundColor: 'white',\r\n color: 'rgba(0, 0, 0, 0.80)'\r\n }\r\n\r\n // const jsonCards = JSON.stringify(props.cards)\r\n\r\n const divRef = useRef(null)\r\n\r\n const pupulateArr = (component, title, datagrid, type, chart, icon, widget, filter, indexarr) => {\r\n let newGraph = {\r\n component: component,\r\n name: title,\r\n type: type,\r\n datagrid: datagrid,\r\n chart: chart,\r\n icon: icon,\r\n widget: widget,\r\n key: uuid(),\r\n filter: {\r\n ...(filter ? filter : {}),\r\n ...dashboardConfig\r\n }\r\n }\r\n if (indexarr !== undefined) {\r\n setState(prev => prev.map((elemento, index) => (index === indexarr ? newGraph : elemento)));\r\n } else {\r\n edit ? setEditState(prev => [...prev, newGraph]) : setState(prev => [...prev, newGraph]);\r\n }\r\n }\r\n\r\n\r\n useEffect(() => {\r\n if (props.loaders) {\r\n if (\r\n Object.keys(props.loaders).length > 0 &&\r\n Object.keys(props.loaders).filter(l => props.loaders[l] === \"loading\").length > 0\r\n ) {\r\n if (load !== false)\r\n setLoad(true);\r\n } else {\r\n setLoad(false);\r\n }\r\n } else {\r\n setLoad(false);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.loaders])\r\n\r\n\r\n\r\n useEffect(() => {\r\n let initialState = []\r\n const getInitialState = () => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const localstorage = reduxStore.getState().db.cards[hashs[0]].customDashboard ? Object.values(JSON.parse(reduxStore.getState().db.cards[hashs[0]].customDashboard)) : null\r\n if (localstorage) {\r\n localstorage.sort((a, b) => {\r\n if (a.datagrid.y === b.datagrid.y) {\r\n return a.datagrid.x - b.datagrid.x;\r\n }\r\n return a.datagrid.y - b.datagrid.y;\r\n });\r\n\r\n let newState = []\r\n\r\n localstorage.map(async (obj, index) => {\r\n const { widget } = obj;\r\n let nameWidget = `${widget.substr(0, 1).toUpperCase()}${widget.substr(1, widget.length)}`\r\n const module = await import(`./Widgets/${nameWidget}.jsx`);\r\n const DynamicComponent = module.default;\r\n let newGraph = {\r\n component: DynamicComponent,\r\n name: obj.name,\r\n type: obj.name,\r\n datagrid: obj.datagrid,\r\n chart: obj.name,\r\n icon: obj.icon,\r\n widget: obj.widget,\r\n key: uuid(),\r\n filter: obj.filter ? obj.filter : false\r\n }\r\n newState = [...newState, newGraph]\r\n if (index === localstorage.length - 1) {\r\n setState(newState)\r\n newGraph?.filter?.colorsArr && setDashboardConfig({\r\n ...dashboardConfig,\r\n colorsArr: newGraph?.filter?.colorsArr\r\n })\r\n }\r\n });\r\n\r\n\r\n } else {\r\n if (db.cards[hashs[0]].planType !== \"operational\") {\r\n initialState = initialState1\r\n } else {\r\n initialState = initialState2\r\n }\r\n let newState = []\r\n initialState.forEach((item, index) => {\r\n let newGraph = {\r\n component: item.Component,\r\n name: item.name,\r\n type: item.name,\r\n datagrid: item.datagrid,\r\n chart: item.name,\r\n icon: item.icon,\r\n widget: item.widget,\r\n key: uuid(),\r\n filter: false\r\n }\r\n newState = [...newState, newGraph]\r\n if (index === initialState.length - 1) {\r\n setState(newState)\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (!edit && Object.keys(filteredCards).length > 0) {\r\n\r\n getInitialState()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [filteredCards, edit]);\r\n\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (!edit) {\r\n if (state.length === 0) {\r\n const localstorage = reduxStore.getState().db.cards[hashs[0]].customDashboard ? Object.values(JSON.parse(reduxStore.getState().db.cards[hashs[0]].customDashboard)) : null\r\n if (localstorage) {\r\n setState(localstorage)\r\n } else {\r\n let initialState = []\r\n if (db.cards[hashs[0]].planType !== \"operational\") {\r\n initialState = initialState1\r\n } else {\r\n initialState = initialState2\r\n }\r\n setState(initialState)\r\n }\r\n }\r\n const searchCards = async () => {\r\n await new Promise(resolve => setTimeout(resolve, 100));\r\n let rq = await getChildrens(hashs[0])\r\n if ((JSON.stringify(filteredCards) !== JSON.stringify(rq)))\r\n setFilteredCards(rq)\r\n }\r\n searchCards()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards])\r\n\r\n function handleRemoveObject(key) {\r\n setEditState(prevArray => prevArray.filter(obj => obj.key !== key));\r\n // const updatedArray = state.filter(obj => obj.key !== key);\r\n }\r\n\r\n const change = (any, layouts) => {\r\n if (layouts?.lg?.length > 0) {\r\n stateRef.current = layouts?.lg\r\n }\r\n };\r\n\r\n\r\n const save = () => {\r\n\r\n let data = {}\r\n editState.forEach((item) => {\r\n stateRef.current.forEach((datagrid) => {\r\n if (datagrid.i === item.key) {\r\n data = {\r\n ...data,\r\n [item.key]: {\r\n ...item,\r\n datagrid: datagrid\r\n }\r\n }\r\n }\r\n })\r\n })\r\n\r\n if (Object.keys(filterRef).length > 0)\r\n editState.forEach((item) => {\r\n Object.values(filterStateRef.current).forEach((filterObj) => {\r\n if (filterObj.id === item.key) {\r\n data = {\r\n ...data,\r\n [item.key]: {\r\n ...data[item.key],\r\n filter: filterObj\r\n }\r\n }\r\n }\r\n })\r\n })\r\n updateCard(props, {\r\n _id: hashs[0],\r\n customDashboard: JSON.stringify(data)\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [hashs[0]]: {\r\n ...reduxStore.getState().db.cards[hashs[0]],\r\n customDashboard: JSON.stringify(data)\r\n },\r\n }\r\n })\r\n\r\n //ifResponseTrue\r\n appAlert({\r\n message: `Dados salvos`,\r\n variant: 'info',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n\r\n setState(editState)\r\n setEdit(false);\r\n }\r\n\r\n\r\n\r\n const renderComponent = () => {\r\n return (<Filter\r\n category={'plan'}\r\n filter={filter}\r\n onClose={() => ReactDOM.unmountComponentAtNode(document.getElementById('render-container'))}\r\n addWidget={(Component, values, datagrid, type, chart, icon, widget, filter) => pupulateArr(Component, values, datagrid, type, chart, icon, widget, filter)}\r\n />);\r\n };\r\n\r\n\r\n const callFilter = () => {\r\n filterRef.current = true\r\n setFilter(true)\r\n renderComponent()\r\n };\r\n\r\n const handleColorSet = (colors) => {\r\n let newArr = editState.map((item) => {\r\n return {\r\n ...item,\r\n filter: {\r\n ...item.filter,\r\n colorsArr: colors\r\n }\r\n }\r\n })\r\n setDashboardConfig({\r\n ...dashboardConfig,\r\n colorsArr: colors\r\n })\r\n setEditState(newArr)\r\n }\r\n\r\n const handleDashboardConfig = (values) => {\r\n setDashboardConfig({\r\n ...dashboardConfig,\r\n ...values\r\n })\r\n }\r\n\r\n\r\n const handleFilterData = (data) => {\r\n filterStateRef.current = {\r\n ...filterStateRef.current,\r\n [data.id]: {\r\n ...filterStateRef.current[data.id],\r\n ...data\r\n }\r\n }\r\n }\r\n\r\n const handleSetTags = (data) => {\r\n let newState = (edit ? editState : state).map((item) => {\r\n let newItem = item\r\n if (item.key === data.id) {\r\n newItem = {\r\n ...newItem,\r\n filter: {\r\n ...newItem.filter,\r\n tagsColors: data?.tagsColors,\r\n mainColorTags: data?.mainColor\r\n }\r\n }\r\n }\r\n\r\n if (Object.keys(filterRef).length > 0) {\r\n Object.values(filterStateRef.current).forEach((filterObj) => {\r\n if (filterObj.id === data.id) {\r\n newItem = {\r\n ...newItem,\r\n filter: {\r\n ...newItem.filter,\r\n tagsColors: data?.tagsColors\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n return newItem\r\n })\r\n edit ? setEditState([...newState]) : setState([...newState]);\r\n\r\n }\r\n\r\n const handleDatatGridTable = (id) => {\r\n let newState = (edit ? editState : state).map((item) => {\r\n let newItem = item\r\n if (item.key === id) {\r\n let newKey = uuid()\r\n newItem = {\r\n ...newItem,\r\n filter: {\r\n ...item.filter,\r\n table: item.filter.table ? !item.filter.table : true\r\n },\r\n key: newKey\r\n }\r\n }\r\n\r\n if (Object.keys(filterRef).length > 0) {\r\n Object.values(filterStateRef.current).forEach((filterObj) => {\r\n if (filterObj.id === item.key) {\r\n newItem = {\r\n ...newItem,\r\n filter: {\r\n ...newItem.filter,\r\n ...filterObj,\r\n table: newItem.filter.table,\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (Object.keys(stateRef).length > 0) {\r\n Object.values(stateRef.current).forEach((chart) => {\r\n if (chart.i === id) {\r\n newItem = {\r\n ...newItem,\r\n datagrid: {\r\n ...newItem[\"datagrid\"],\r\n h: !item.filter.table ? (chart[\"h\"] * 2 < 8 ? chart[\"h\"] * 2 : 8) : (chart[\"h\"] / 2 > 6 ? chart[\"h\"] / 2 : 6),\r\n w: chart.w\r\n },\r\n }\r\n }\r\n })\r\n }\r\n return newItem\r\n })\r\n edit ? setEditState([...newState]) : setState([...newState]);\r\n }\r\n\r\n\r\n return (\r\n <div ref={divRef} key={key1} style={{ width: '100%', marginTop: '8px', marginBottom: '8%', fontSize: '19px', color: 'grey', overflowX: 'hidden', overflowY: 'hidden', paddingBottom: '80px', minHeight: '90vh' }}>\r\n <div id=\"render-container\"></div>\r\n <div style={{ display: 'flex' }}>\r\n {edit &&\r\n <>\r\n <div style={{ marginLeft: '10px' }} 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 < ButtonOptions\r\n text={translate(\"$__addCharts\")}\r\n icon={\"add\"}\r\n onClick={() => callFilter()}\r\n >\r\n </ButtonOptions>\r\n </div>\r\n\r\n <div style={{ marginLeft: '10px' }} >\r\n <PalleteButton\r\n handleColorSet={(colorArr) => handleColorSet(colorArr)}\r\n >\r\n </PalleteButton>\r\n </div>\r\n\r\n <div style={{ marginLeft: '10px' }} 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 <ButtonOptions\r\n text={translate(\"$__save\")}\r\n icon={\"save\"}\r\n onClick={() => save()}\r\n >\r\n </ButtonOptions>\r\n </div>\r\n </>\r\n }\r\n {!edit && <div style={{ marginLeft: '10px' }} 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 <ButtonOptions\r\n text={\"Selecionar periodo\"}\r\n icon={\"filter_alt\"}\r\n popper={\r\n <div style={{ padding: '15px' }}>\r\n <FilterDash\r\n fields={['date']}\r\n showFilters\r\n style={{ zIndex: '999' }}\r\n indicators={dashboardConfig?.filter || {}}\r\n onChange={(e) => {\r\n setDashboardConfig({\r\n ...dashboardConfig,\r\n filter: { ...e }\r\n })\r\n }}\r\n />\r\n </div>\r\n }\r\n style={{\r\n alignSelf: 'center',\r\n right: '107px',\r\n }}\r\n />\r\n </div>}\r\n\r\n {((AppAccess.plan && AppAccess.planAdmin) || (CardAccess > 3)) &&\r\n <div style={{ marginLeft: '10px' }} 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 < ButtonOptions\r\n text={!edit ? translate(\"$__editMode\") : translate(\"$__cancel\")}\r\n icon={!edit ? \"edit\" : 'close'}\r\n onClick={() => {\r\n if (!edit) {\r\n setEditState(state)\r\n setEdit(prev => !prev);\r\n } else {\r\n setEdit(prev => !prev);\r\n setEditState(state)\r\n setKey1(prev => prev + 1);\r\n }\r\n }}\r\n style={{ backgroundColor: edit && \"white\", color: edit && \"black \" }}>\r\n </ButtonOptions>\r\n </div>}\r\n </div>\r\n {dashboardConfig?.filter?.startDate && <div style={{\r\n marginRight: '15px',\r\n marginTop: '20px',\r\n border: '1px solid #D3D3D3',\r\n marginLeft: '10px',\r\n paddingTop: '10px',\r\n paddingBottom: '10px',\r\n width: '370px'\r\n }}>\r\n <DisplayFilterOptions handleDateChange={(e) => setDashboardConfig({\r\n ...dashboardConfig,\r\n filter: {\r\n ...dashboardConfig.filter,\r\n ...e\r\n }\r\n })} options={dashboardConfig.filter} />\r\n </div>}\r\n {\r\n (edit ? editState : state).length > 0 &&\r\n <ResponsiveGridLayout\r\n breakpoints={{ lg: 1200 }} // tamanho de tela\r\n cols={{ lg: 12, ll: 4 }} // coluna para cada tamanho\r\n rowHeight={80} // altura da linha\r\n isResizable={edit}\r\n onLayoutChange={change}\r\n style={{ zIndex: '0' }}\r\n draggableHandle='.drag-handle'>\r\n {(edit ? editState : state).filter(({ component, key, name, datagrid, type, icon, filter }) => key && name && datagrid && type && icon)\r\n .map(({ component, key, name, datagrid, type, icon, filter, tableKey, colorsArr }) => {\r\n const Component = component ? component : false\r\n return (\r\n <div key={key} data-grid={datagrid} className='box'>\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker >\r\n {(inViewport) => (\r\n <ErrorBoundary message={name}>\r\n {(Object.keys(filteredCards).length > 0 && (typeof Component === 'function' || typeof Component?.WrappedComponent === 'function') && (inViewport || edit)) ?\r\n <Component\r\n styles={dashboardStyles}\r\n handleRemoveObject={(key) => handleRemoveObject(key)}\r\n edit={edit}\r\n handleDatagridTable={() => handleDatatGridTable(key)}\r\n handleSetFilter={(data) => handleFilterData(data)}\r\n handleSetTags={(data) => handleSetTags(data)}\r\n handleDashboardConfig={(data) => handleDashboardConfig(data)}\r\n tittle={name} preview={false}\r\n filterRef={filterStateRef.current?.[key]}\r\n type={type}\r\n icon={icon}\r\n datagrid={datagrid}\r\n planCards={filteredCards}\r\n colorsArr={colorsArr}\r\n id={key}\r\n dashboardConfig={dashboardConfig}\r\n filter={filter ? filter : {}}\r\n />\r\n : <div style={{ width: '100%', height: '100%', display: 'flex', flexDirection: 'column' }}>\r\n <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '17px', color: 'rgba(0, 0, 0, 0.67)', marginTop: '1px' }}>blur_on</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', marginTop: '2px', color: 'rgba(0, 0, 0, 0.67)', fontSize: '16px' }}>{translate(`$__${name}`, 1)}</p>\r\n </div>\r\n <div style={{ flex: '1', display: 'flex', justifyContent: 'center', backgroundColor: 'white' }}>\r\n <div style={{ alignSelf: 'center' }}>\r\n <div className=\"loader\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </ErrorBoundary>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n </div>\r\n )\r\n })}\r\n </ResponsiveGridLayout>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n cards: store.db.cards,\r\n loaders: store.sessionLoads.cards.load\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Dashboard)\r\n\r\n\r\n\r\n","import React from \"react\"\r\nimport { ResponsiveBar } from '@nivo/bar'\r\n\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\nimport { translate, customApp } from \"functions\"\r\n\r\n\r\nconst ChartTagsStatistics = (props) => {\r\n const [layout, setLayout] = React.useState(\"horizontal\")\r\n const [groupMode, setGroupMode] = React.useState(\"stacked\")\r\n\r\n return (\r\n <ErrorBoundary>\r\n <div style={{\r\n display: \"flex\"\r\n }}>\r\n <CustomButton\r\n color={customApp('lightgray')}\r\n icon={'work_history'}\r\n onClick={() => {\r\n setGroupMode(prev => prev === \"stacked\" ? \"grouped\" : \"stacked\")\r\n }}\r\n size={'15px'}\r\n title={`${translate(\"$__changeGroupMode\")}`}\r\n text={`${translate(\"$__changeGroupMode\")}`}\r\n />\r\n <CustomButton\r\n color={customApp('lightgray')}\r\n icon={'work_history'}\r\n onClick={() => {\r\n setLayout(prev => prev === \"vertical\" ? \"horizontal\" : \"vertical\")\r\n }}\r\n size={'15px'}\r\n title={`${translate(\"$__changeLayout\")}`}\r\n text={`${translate(\"$__changeLayout\")}`}\r\n />\r\n\r\n </div>\r\n <ResponsiveBar\r\n data={props.data}\r\n keys={props.keys}\r\n indexBy=\"date\"\r\n groupMode={groupMode}\r\n margin={{ top: 50, right: 250, bottom: 50, left: 80 }}\r\n padding={0.3}\r\n valueScale={{ type: 'linear' }}\r\n indexScale={{ type: 'band', round: true }}\r\n colors={{ scheme: 'nivo' }}\r\n layout={layout}\r\n defs={[\r\n {\r\n id: 'dots',\r\n type: 'patternDots',\r\n background: 'inherit',\r\n color: '#38bcb2',\r\n size: 4,\r\n padding: 1,\r\n stagger: true\r\n },\r\n {\r\n id: 'lines',\r\n type: 'patternLines',\r\n background: 'inherit',\r\n color: '#eed312',\r\n rotation: -45,\r\n lineWidth: 6,\r\n spacing: 10\r\n }\r\n ]}\r\n // fill={[\r\n // {\r\n // match: {\r\n // id: 'fries'\r\n // },\r\n // id: 'dots'\r\n // },\r\n // {\r\n // match: {\r\n // id: 'sandwich'\r\n // },\r\n // id: 'lines'\r\n // }\r\n // ]}\r\n borderColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 1.6\r\n ]\r\n ]\r\n }}\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={{\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legend: '',\r\n legendPosition: 'middle',\r\n legendOffset: 32\r\n }}\r\n axisLeft={{\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legend: '',\r\n legendPosition: 'middle',\r\n legendOffset: -40\r\n }}\r\n labelSkipWidth={12}\r\n labelSkipHeight={12}\r\n labelTextColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 1.6\r\n ]\r\n ]\r\n }}\r\n legends={[\r\n {\r\n dataFrom: 'keys',\r\n anchor: 'bottom-right',\r\n direction: 'column',\r\n justify: false,\r\n translateX: 250,\r\n translateY: 0,\r\n itemsSpacing: 2,\r\n itemWidth: 140,\r\n itemHeight: 10,\r\n itemDirection: 'right-to-left',\r\n itemOpacity: 0.85,\r\n symbolSize: 10,\r\n effects: [\r\n {\r\n on: 'hover',\r\n style: {\r\n itemOpacity: 1\r\n }\r\n }\r\n ]\r\n }\r\n ]}\r\n role=\"application\"\r\n ariaLabel=\"Nivo bar chart demo\"\r\n barAriaLabel={e => e.id + \": \" + e.formattedValue + \": \" + e.indexValue}\r\n />\r\n </ErrorBoundary>\r\n )\r\n}\r\n\r\n\r\nexport default ChartTagsStatistics;","import React, { useRef, useEffect } from \"react\"\r\nimport moment from \"moment-timezone\"\r\nimport styled from \"styled-components\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport history from \"store/history\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Badge from \"components/Icon/Badge\"\r\nimport CardTags from \"components/Tags/Card\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport HeaderWithIcon from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport QuickUsersList from \"components/User/avatarList\"\r\nimport Timer from \"components/Timer/timer\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\n\r\n//DEPENDENCIES\r\nimport FakeExpanded from \"./fakeCardExpanded\"\r\nimport CardExpanded from \"./cardExpanded\"\r\nimport UseTemplate from \"./useTemplate\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Card.js\"\r\n\r\nimport {\r\n getCardColor,\r\n getUserAccess,\r\n restoreCard,\r\n saveMATRIX,\r\n selectSWOT\r\n} from \"functions/cards\"\r\n\r\n\r\nimport {\r\n Highlighted,\r\n appAlert,\r\n customApp,\r\n getAppAccess,\r\n getDate,\r\n translate,\r\n} from \"functions/\"\r\n\r\nfunction Card(props) {\r\n const classes = useStyles()\r\n const { db, session } = reduxStore.getState()\r\n const data = props.data\r\n const [isExpanded, setExpanded] = React.useState(false)\r\n const [globalExpanded, setGlobalExpanded] = React.useState(props.cardsExpanded)\r\n const [useTemplate, setUseTemplate] = React.useState(false)\r\n const [showPrivateCard, setShowPrivateCard] = React.useState(false)\r\n const [cardColor, setCardColor] = React.useState(props.cardColorPicker ? getCardColor(data) : {})\r\n const [combine, setCombine] = React.useState(false)\r\n\r\n const cardRef = useRef({});\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (cardRef && cardRef.current) {\r\n if (props.onResize) {\r\n let newSize = cardRef.current.clientHeight\r\n if (props.separator)\r\n newSize = newSize + 55\r\n props.onResize(newSize, isExpanded)\r\n if (cardRef && cardRef.current) {\r\n const _config = { attributes: true, childList: true, subtree: true };\r\n const _observer = new MutationObserver(() => {\r\n if (mounted.current) {\r\n let newSize = cardRef.current.clientHeight\r\n if (props.separator)\r\n newSize = newSize + 55\r\n props.onResize(newSize, isExpanded)\r\n }\r\n });\r\n _observer.observe(cardRef.current, _config);\r\n\r\n return () => {\r\n _observer.disconnect()\r\n }\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isExpanded, props.manualExpanded, combine]);\r\n\r\n useEffect(() => {\r\n if (props?.snapshot?.combineTargetFor)\r\n setCombine(true)\r\n if (!props?.snapshot?.combineTargetFor && combine)\r\n setCombine(false)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props?.snapshot?.combineTargetFor])\r\n\r\n\r\n React.useEffect(() => {\r\n let isMounted = true\r\n if (isMounted && String(props.unlockedPrivates) === \"0\" && showPrivateCard) {\r\n setShowPrivateCard(false)\r\n }\r\n return () => {\r\n isMounted = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.unlockedPrivates])\r\n\r\n React.useEffect(() => {\r\n let isSubscribed = true\r\n if (isSubscribed)\r\n setGlobalExpanded(props.cardsExpanded)\r\n\r\n return () => {\r\n isSubscribed = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cardsExpanded])\r\n\r\n React.useEffect(() => {\r\n if (props.onExpand)\r\n props.onExpand(globalExpanded)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [globalExpanded])\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n React.useEffect(() => {\r\n let isMounted = true\r\n if (isMounted && props.cardColorPicker && hashs && hashs[1] === 'overview') {\r\n setCardColor(getCardColor(data))\r\n isMounted = false\r\n }\r\n return () => {\r\n isMounted = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards])\r\n\r\n if (data === {} || !data)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(data._id)\r\n\r\n if (!data || !props.data || !props.data._id)\r\n return null\r\n\r\n const selectThis = async () => {\r\n let activeCards = {}\r\n\r\n Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && !db.cards[a].deleted\r\n && (\r\n db.cards[a]._planId === hashs[0]\r\n || db.cards[a]._parent === hashs[0]\r\n )\r\n ).forEach(a => {\r\n activeCards = {\r\n ...activeCards,\r\n [a]: db.cards[a]\r\n }\r\n })\r\n\r\n let cards = { ...reduxStore.getState().db.cards }\r\n let selected = data._selected ? false : true\r\n\r\n if (db.dataType.filter(fil => fil.name === data.type)[0].module !== \"swot\") {\r\n Object.keys(activeCards).filter(a => activeCards[a]._id !== data._id && activeCards[a].type && activeCards[a].type === data.type).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n }\r\n\r\n if (data.type.indexOf(\"guideline\") > -1) {\r\n Object.keys(activeCards).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n } else if (data.type.indexOf(\"objective\") > -1) {\r\n Object.keys(activeCards).filter(a => activeCards[a].type.indexOf('objective') === -1 || activeCards[a].type.indexOf('guideline') === -1).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n } else if (data.type.indexOf(\"goal\") > -1) {\r\n Object.keys(activeCards).filter(a => activeCards[a].type.indexOf('goal') === -1 || activeCards[a].type.indexOf('objective') === -1 || activeCards[a].type.indexOf('guideline') === -1).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n } else {\r\n Object.keys(activeCards).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...cards,\r\n ...activeCards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n ...activeCards[data._id],\r\n _selected: selected\r\n }\r\n }\r\n })\r\n\r\n\r\n if (reduxStore.getState().db.dataType.filter(a => a.name === data.type)[0].module === \"swot\") {\r\n saveMATRIX(props)\r\n }\r\n if (selected && reduxStore.getState().db.dataType.filter(a => a.name === data.type)[0].module === \"matrix\") {\r\n selectSWOT(props, data._id)\r\n }\r\n }\r\n\r\n const openSideModule = async (module = \"cardEdit\") => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: props.db,\r\n id: data._id,\r\n module: \"cardEdit\",\r\n activeModule: module,\r\n data: data,\r\n })\r\n }\r\n\r\n\r\n const openPlan = async (id) => {\r\n if (\r\n parseInt(CardAccess) > 2\r\n ||\r\n (AppAccess.owner\r\n ||\r\n (\r\n AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n ) {\r\n history.push(`sp#${id}/dashboard`)//#CORRECT\r\n } else {\r\n openSideModule(\"timeline\")\r\n }\r\n }\r\n\r\n const restoreThis = async () => {\r\n appAlert({\r\n message: translate(\"$__confirmRestoreThis\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n restoreCard(props, { _id: data._id })\r\n }\r\n })\r\n }\r\n\r\n\r\n const selectable = Object.keys(reduxStore.getState().db.cards)\r\n .filter(a =>\r\n reduxStore.getState().db.cards[a]\r\n && reduxStore.getState().db.cards[a]._selected === true\r\n && reduxStore.getState().db.cards[a].type\r\n && reduxStore.getState().db.cards[a].type.indexOf(\"guideline\") > -1\r\n ).length > 0\r\n ? true\r\n : false\r\n\r\n const cardClick = () => {\r\n if (props.disabled)\r\n return\r\n if (props.selectable) {\r\n selectThis()\r\n } else if (!props.onClick && ((!props.locked && props.showSelected && selectable) || props.selectable)) {\r\n selectThis()\r\n } else if (props.onClick && !props.selectable && !props.locked) {\r\n props.onClick()\r\n } else if (!props.locked && !props.onlyOption && data.type === 'plan') {\r\n openPlan(data._id)\r\n } else if (!props.locked) {\r\n openSideModule()\r\n }\r\n if (props.onOpen)\r\n props.onOpen()\r\n }\r\n\r\n const expanded = props.noExpanded ? false : isExpanded || (!props.notGlobalExpanded && (props.manualExpanded || props.expanded || data._expanded || props.cardsExpanded) ? true : false)\r\n\r\n let permission = (\r\n (\r\n AppAccess\r\n &&\r\n (AppAccess.owner\r\n ||\r\n (\r\n AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n CardAccess > 2\r\n )\r\n )\r\n ? true : false\r\n\r\n if (data && data.private && (\r\n !data._users\r\n || (\r\n data._users\r\n && !data._users[session._id]\r\n )\r\n ))\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n if (useTemplate) {\r\n return (\r\n <UseTemplate cardId={data._id}\r\n toTemplate={!data.isTemplate ? true : false}\r\n onComplete={() => {\r\n setUseTemplate(false)\r\n }} />\r\n )\r\n }\r\n\r\n let locked = false\r\n\r\n let headerData = {\r\n title: data?.name || translate(\"$__new\", 1),\r\n icon: data?.icon || (data.type && db && db.dataType && db.dataType.filter(a => a.name === data.type)[0] && db.dataType.filter(a => a.name === data.type)[0].icon) || \"$__topic\",\r\n iconTitle: `$__${data.type}`,\r\n }\r\n\r\n if (\r\n (data._planId && reduxStore.getState().db.cards[data._planId]?.customColumns)\r\n && (data.type.indexOf(\"guideline\") > -1 || data.type.indexOf(\"objective\") || data.type.indexOf(\"goal\"))\r\n ) {\r\n let columnData = JSON.parse(reduxStore.getState().db.cards[data._planId].customColumns)\r\n let filType = data.type.indexOf('guideline') > -1 ? `guideline` : data.type\r\n if (columnData[`${filType}s`])\r\n headerData = {\r\n ...headerData,\r\n ...columnData[`${filType}s`].name ? { iconTitle: columnData[`${filType}s`].name } : {},\r\n ...columnData[`${filType}s`].icon ? { icon: columnData[`${filType}s`].icon } : {}\r\n }\r\n }\r\n\r\n\r\n return (\r\n <Container\r\n ref={cardRef}\r\n separator={props.separator || false}\r\n plan={expanded && data.type === 'plan' ? true : false}\r\n isDragging={(props.snapshot && props.snapshot.isDragging) || null}\r\n isDragDisable={data.isDragDisable || props.isDragDisable || false}\r\n inLine={data.type !== \"plan\" && props.inLine ? true : false}\r\n className={!props.noShadow ? classes.container : classes.containerNoShadow}\r\n selectable={props.showSelected}\r\n selected={data._selected}\r\n priority={data.priority && db.priority.filter(a => String(a.value) === String(data.priority)).length > 0 ? db.priority.filter(a => String(a.value) === String(data.priority))[0].color : null}\r\n locked={props.locked || false}\r\n snapshot={props.snapshot || null}\r\n isCombining={props.snapshot && props.snapshot.combineTargetFor ? true : false}\r\n onClick={(e) => {\r\n cardClick()\r\n }}\r\n >\r\n {(data.status === 'completed' || (props.cardColorPicker && cardColor.color)) &&\r\n <div style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\"\r\n }}>\r\n <div style={{\r\n position: 'absolute',\r\n backgroundColor: props.cardColorPicker && cardColor.color ? cardColor.color : 'rgba(0,0,0,1)',\r\n opacity: cardColor.color ? 0.2 : 0.1,\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\"\r\n }}>\r\n </div>\r\n\r\n </div>\r\n }\r\n\r\n <React.Fragment>\r\n {props.snapshot && props.snapshot.combineTargetFor &&\r\n <div style={{ backgroundColor: customApp('menu'), padding: '7px 3px', color: '#FFFFFF', fontWeight: 'bold', textAlign: 'center' }}>\r\n {translate('$__dropHereToLink')}\r\n </div>\r\n }\r\n\r\n\r\n <HeaderWithIcon\r\n private={(data.private || data.parentPrivate) ? true : false}\r\n unlockedPrivates={props.unlockedPrivates}\r\n setPrivate={(a) => {\r\n let value = a ? 1 : -1\r\n if (!a && props.unlockedPrivates === 0)\r\n value = 0\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n unlockedPrivates: reduxStore.getState().controls.unlockedPrivates + value,\r\n })\r\n setShowPrivateCard(a)\r\n if (props.setPrivate)\r\n props.setPrivate(a)\r\n }}\r\n viewAllName={props.viewAllName}\r\n title={headerData.title}\r\n tooltipText={`${data._parent && reduxStore.getState().db.cards[data._parent] ? `${reduxStore.getState().db.cards[data._parent].name} / ` : ``}${headerData.title}`}\r\n searchText={props?.searchText || null}\r\n icon={headerData.icon}\r\n iconTitle={headerData.iconTitle}\r\n color={customApp('medium')}\r\n editable={!data.name && (!props.onlyOption || props.editable) ? true : false}\r\n _id={data._id}\r\n locked={data.type === \"link\" || props.locked ? true : false}\r\n colorPicker={permission && props.cardColorPicker && cardColor && !cardColor.parent ? (color) => {\r\n if (\r\n (!cardColor.color && color)\r\n || (cardColor.color && cardColor.color !== color)\r\n )\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n color\r\n },\r\n }\r\n })\r\n } : null}\r\n onEdit={\r\n (\r\n data.status !== 'completed'\r\n && (\r\n (\r\n (\r\n CardAccess\r\n && parseInt(CardAccess) > 1\r\n )\r\n ) || (\r\n AppAccess\r\n && AppAccess.plan\r\n &&\r\n (\r\n AppAccess.owner\r\n || AppAccess.planAdmin\r\n || AppAccess.planEdit\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n ) ? (res) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n name: res\r\n },\r\n }\r\n })\r\n } : null}\r\n isExpanded={props.noExpanded ? false : expanded}\r\n noExpanding={props.expanded || reduxStore.getState().db.cardsExpanded || false}\r\n onExpanding={() => {\r\n if (props.onExpand) {\r\n props.onExpand(!expanded)\r\n }\r\n if (!props.expanded && !reduxStore.getState().db.cardsExpanded) {\r\n setExpanded((prevExpanded) => !prevExpanded)\r\n }\r\n }\r\n }\r\n />\r\n {data && (data._cardCode || data.value) ?\r\n <div style={{\r\n width: \"100%\",\r\n clear: \"both\",\r\n display: \"flex\",\r\n alignContent: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n {data && data._cardCode ?\r\n <div\r\n style={{\r\n paddingLeft: 36,\r\n fontSize: 11,\r\n marginTop: -9,\r\n color: \"gray\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n whiteSpace: \"nowrap\"\r\n }}>\r\n # {data._cardCode}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {data && data.value ?\r\n <div\r\n style={{\r\n width: \"100%\",\r\n textAlign: \"right\",\r\n fontSize: 11,\r\n marginTop: -9,\r\n color: \"black\",\r\n }}>\r\n $ {data.value}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {(((data.type === 'insight' || data.type === 'link') && data._createdBy && db.users[data._createdBy._id])\r\n ||\r\n (data._createdBy && data._createdBy.channel && data._createdBy._id && data._createdBy._id !== session._id)\r\n ) &&\r\n <div style={{\r\n width: 'calc(100% - 0px)',\r\n alignItems: 'center',\r\n padding: '7px',\r\n display: 'inline-flex',\r\n borderBottom: 'solid 1px rgba(0,0,0,0.03)'\r\n }}>\r\n <div style={{\r\n position: 'relative',\r\n float: 'left'\r\n }}>\r\n <Tooltip\r\n title={data._createdBy.name || db.users[data._createdBy._id].name}\r\n >\r\n <Avatar\r\n alt={data._createdBy.name || db.users[data._createdBy._id].name}\r\n src={db.users[data._createdBy._id]?.image || null}\r\n size=\"12px\"\r\n style={{ width: 16, height: 16 }}\r\n >\r\n {data._createdBy?.name?.substr(0, 1) || db.users[data._createdBy._id].name.substr(0, 1)}\r\n </Avatar>\r\n </Tooltip>\r\n </div>\r\n <div style={{\r\n position: 'relative',\r\n float: 'right',\r\n width: '100%',\r\n paddingLeft: '7px',\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n fontSize: '12px'\r\n }}>\r\n <div style={{\r\n color: customApp('menu'),\r\n fontWeight: 'bold',\r\n }}>\r\n <span style={{ fontSize: 10, color: \"gray\" }}>{translate(\"$__createdBy\", '*')}</span>: {data._createdBy?.name?.split(' ')[0] || db.users[data._createdBy._id].name.split(' ')[0]}\r\n </div>\r\n <div>\r\n {moment(new Date()).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") === moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") ?\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"H:mm\")}`\r\n :\r\n moment(new Date()).tz(\"America/Sao_Paulo\").format(\"YYYY\") === moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY\") ?\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM H:mm\")}`\r\n :\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")}`\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n {data._kpiTimer && Object.keys(data._kpiTimer).length > 0 && Object.keys(data._kpiTimer).filter(a => data._kpiTimer[a].userId === session._id).length !== 0 &&\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n float: 'left'\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <Timer data={data} />\r\n </div>\r\n }\r\n {(\r\n !props.noExpanded\r\n && expanded\r\n && (\r\n !data.private\r\n || (\r\n data.private\r\n && (showPrivateCard || reduxStore.getState().controls.lockPrivate)\r\n )\r\n )\r\n ) ?\r\n <React.Fragment>\r\n <CardExpanded\r\n {...props}\r\n private={data.private ? true : false}\r\n expanded\r\n Resume={true}\r\n />\r\n\r\n <div>\r\n {props.searchText && data.description &&\r\n <div className={classes.description}>\r\n {Highlighted(data.description, props.searchText)}\r\n </div>\r\n }\r\n\r\n </div>\r\n </React.Fragment>\r\n : expanded ? <React.Fragment>\r\n <FakeExpanded />\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {!data.isTemplate ?\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n width: \"100%\"\r\n }}\r\n >\r\n {\r\n (\r\n data.status !== \"completed\"\r\n &&\r\n (\r\n (\r\n data.startDate\r\n && moment(data.startDate).isValid()\r\n )\r\n ||\r\n (\r\n data.endDate\r\n && moment(data.endDate).isValid()\r\n )\r\n )\r\n )\r\n ?\r\n <div style={{\r\n position: 'relative',\r\n display: 'flex',\r\n width: '100%',\r\n ...expanded ? { height: '45px' } : {}\r\n }}>\r\n <div className={\r\n (\r\n data.endDate\r\n && moment(new Date(data.endDate * 1000)).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\") < moment().format(\"YYYY-MM-DD\")\r\n && data.status !== \"completed\"\r\n )\r\n ? classes.lateDates\r\n : classes.dates\r\n }>\r\n {data.startDate && moment(data.startDate).isValid() &&\r\n <div className={classes.dateInfo}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n className={classes.dateIco} icon=\"insert_invitation\" title={\"$__startDate\"} size=\"14px\" disabled />\r\n {(new Date(data.startDate * 1000) instanceof Date && !isNaN(new Date(data.startDate * 1000))) ?\r\n moment(new Date(data.startDate * 1000)).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n :\r\n moment(data.startDate).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n }\r\n </div>\r\n }\r\n {data.endDate && moment(data.endDate).isValid() ?\r\n <div className={classes.dateInfo}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n className={classes.dateIco} icon=\"event_available\" title={\"$__endDate\"} size=\"14px\" disabled />\r\n {(new Date(data.endDate * 1000) instanceof Date && !isNaN(new Date(data.endDate * 1000))) ?\r\n moment(new Date(data.endDate * 1000)).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n :\r\n moment(data.endDate).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n }\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n\r\n }\r\n\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {data._tags && data._tags.filter(a => a.value).length > 0 ?\r\n <div\r\n style={props.showTags || expanded ? {\r\n marginBottom: 33\r\n } : {}}\r\n >\r\n <CardTags\r\n options={data._tags}\r\n expanded={props.showTags || (\r\n expanded\r\n && data.type !== 'plan'\r\n && data.type !== 'link'\r\n && data.type !== 'insight'\r\n )\r\n ? true\r\n : false\r\n }\r\n />\r\n </div> : <React.Fragment></React.Fragment>\r\n }\r\n {\r\n data._recurrenceId &&\r\n <div\r\n style={{\r\n position: 'absolute',\r\n width: \"100%\",\r\n bottom: '3px',\r\n left: '3px',\r\n display: 'flex',\r\n fontSize: '11px',\r\n color: 'lightgrey',\r\n alignItems: 'center'\r\n }}\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n className={classes.indicatorsIcon}\r\n icon={'history'}\r\n color={'lightgrey'}\r\n size={\"25px\"}\r\n title={!props.noShowRecurrenceCard ? (\r\n <div style={{ maxWidth: \"280px\" }}>\r\n {translate('$__recurrentActivityFrom')}:\r\n <Card db=\"cards\" data={db.cards[data._recurrenceId]} Avatar ignoreList onlyOption />\r\n </div>\r\n ) : `${translate('$__recurrence')}${data.recurrenceCreatedDate ? `: ${moment(data.recurrenceCreatedDate).format(\"DD/MM/YYYY\")}` : ``}`}\r\n />\r\n {data.recurrenceCreatedDate ? moment(data.recurrenceCreatedDate).format(\"DD/MM/YYYY\") : ``}\r\n </div>\r\n\r\n }\r\n {(\r\n data._users\r\n && Object.keys(data._users).filter(a => String(a) !== null).length > 0\r\n &&\r\n (\r\n !data._users[session._id]\r\n ||\r\n (\r\n data._users[session._id]\r\n && Object.keys(data._users).length > 1\r\n )\r\n )\r\n )\r\n ?\r\n <React.Fragment>\r\n <div style={{\r\n width: \"100%\",\r\n marginTop: expanded ? 37 : 7\r\n }}>\r\n <div className={classes.usersContent}>\r\n <div className={classes.users}>\r\n <QuickUsersList\r\n _id={data._id}\r\n data={data}\r\n permission={permission}\r\n transparent\r\n myDay\r\n limit={3} />\r\n </div>\r\n </div>\r\n </div>\r\n <div style={{ clear: 'both' }}></div>\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </React.Fragment>\r\n {\r\n data.isTemplate &&\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n clear: \"both\",\r\n padding: \"7px\",\r\n backgroundColor: customApp(\"menu\"),\r\n marginTop: \"7px\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n setUseTemplate(true)\r\n }}>\r\n <IconButton\r\n text={translate(\"$__useThisTemplate\", '*')}\r\n icon=\"auto_awesome\"\r\n iconColor={'#FFFFFF'}\r\n textColor={'#FFFFFF'}\r\n />\r\n </div>\r\n }\r\n\r\n {\r\n data.status === 'completed' &&\r\n <div style={{\r\n // backgroundColor: 'rgba(0,0,0,0.4)',\r\n position: 'absolute',\r\n // height: '2px',\r\n left: 0,\r\n right: 0,\r\n top: '20px'\r\n }}>\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 0,\r\n bottom: -12,\r\n color: \"#FFF\",\r\n fontSize: 10,\r\n padding: 3,\r\n backgroundColor: \"rgba(0,0,0,0.66)\",\r\n }}\r\n >\r\n {translate(\"$__completeDate\")}:\r\n {getDate(data.completed_at || data.updated_at)}\r\n </div>\r\n </div>\r\n }\r\n {\r\n (data.type !== 'plan' && data.deleted) ?\r\n <div style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\"\r\n }}>\r\n <div style={{\r\n position: 'absolute',\r\n backgroundColor: '#71389da6',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n paddingRight: 7,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\",\r\n justifyContent: \"right\"\r\n }}>\r\n <CustomButton\r\n title={translate(`$__restoreThis`, 1)}\r\n text={translate(`$__restoreThis`, 1)}\r\n color=\"#FFFFFF\"\r\n icon={\"restore_from_trash\"}\r\n onClick={() => {\r\n restoreThis()\r\n }}\r\n size={\"17px\"}\r\n textSize={\"17px\"}\r\n transparent\r\n />\r\n </div>\r\n\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {locked ?\r\n <div style={{\r\n position: \"absolute\",\r\n backgroundColor: \"rgba(233,233,233,0.88)\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n <div style={{\r\n display: \"flex\"\r\n }}>\r\n <Icon color=\"lightgray\" icon=\"lock\" size={\"22px\"} />\r\n </div>\r\n\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </Container >\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nconst Container = styled.div`\r\n minWidth:200px;\r\n background-color:#fff;\r\n marginBottom:7px;\r\n box-shadow:rgba(0,0,0,0.1) 0px 0px 10px 3px;\r\n\r\n ${props =>\r\n props.separator ? `marging-top:30px;` : ``\r\n }\r\n ${props =>\r\n props.selectable && props.selected ? `\r\n opacity:1;`\r\n : props.selectable ? `\r\n opacity:0.5;`\r\n : ``\r\n }\r\n ${props =>\r\n props.locked ?\r\n `cursor:no-drop !important;`\r\n : `cursor:pointer;`\r\n }\r\n ${props =>\r\n props.selected ?\r\n `border-bottom:solid 5px ${customApp(\"color\")} !important;`\r\n : ``\r\n }\r\n ${props =>\r\n props.isDragDisable\r\n ? \"\"\r\n : props.isDragging\r\n ? `opacity:0.88;\r\n max-width:320px;\r\n border:solid 10px red;`\r\n : ``\r\n }\r\n ${props =>\r\n props.inLine ?\r\n `position:relative;\r\n float:left;\r\n margin:3.5px;\r\n width:calc(20% - 7px);\r\n // maxWidth:320px;\r\n `\r\n : `\r\n width:calc(100%) !important;\r\n margin:7px 0px 12px 0px;\r\n `\r\n }\r\n width:calc(100%) !important;\r\n\r\n ${props =>\r\n props.priority ?\r\n `border-left:5px solid ${props.priority} !important;`\r\n : ``\r\n }\r\n ${props => props.isCombining ? `border:solid 3px ${customApp('menu')} !important;` : ``}\r\n `\r\n\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n cardsExpanded: store.db.cardsExpanded,\r\n showPrivate: store.controls.lockPrivate,\r\n cards: store.db.cards,\r\n unlockedPrivates: store.controls.unlockedPrivates,\r\n controls: store.controls\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Card)","import React from \"react\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//COMPONENTS\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Card from \"components/Card/v2\"\r\nimport HeaderWithMenu from \"components/Header/withIcon\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\n\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\nimport { translate, customApp, getDate, getTime } from \"functions\"\r\nimport { getChildrens } from \"functions/cards\";\r\n\r\nexport default function TopTags(props) {\r\n const tagsChartMount = props.data\r\n const { db } = reduxStore.getState()\r\n const { statusFilter, search, totalTimes } = props\r\n const [options, setOptions] = React.useState({})\r\n const [orderBy, setOrderBy] = React.useState(\"time\")\r\n\r\n console.log(search)\r\n\r\n return (\r\n <>\r\n <HeaderWithMenu\r\n title={`TOP TAGS ${totalTimes ? `- (${getTime(totalTimes)})` : ``}`}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n customButtons={[\r\n {\r\n title: `$__orderBy${orderBy}`,\r\n icon: \"sort\",\r\n color: \"#FFFFFF\",\r\n onClick: () => {\r\n setOrderBy(prev => prev === \"time\" ? \"count\" : \"time\")\r\n },\r\n }\r\n ]}\r\n />\r\n <UiCardBody>\r\n {Object.keys(tagsChartMount)\r\n .filter(tag =>\r\n db.tag.filter(a =>\r\n a.value === tag\r\n && (\r\n !search.text\r\n || (\r\n search.text\r\n && a.label.indexOf(search.text) > -1\r\n )\r\n )\r\n ).length > 0\r\n )\r\n .sort((a, b) => {\r\n if (orderBy === \"time\") {\r\n if (tagsChartMount[a].timesInt > tagsChartMount[b].timesInt)\r\n return -1\r\n if (tagsChartMount[a].timesInt < tagsChartMount[b].timesInt)\r\n return 1\r\n }\r\n if (tagsChartMount[a].TotalCards > tagsChartMount[b].TotalCards)\r\n return -1\r\n if (tagsChartMount[a].TotalCards < tagsChartMount[b].TotalCards)\r\n return 1\r\n return 0\r\n })\r\n .map((tg, i) => {\r\n let tag = db.tag.filter(a => a.value === tg)[0]\r\n\r\n let times = 0\r\n let timesByUser = tagsChartMount[tg].timesByUser\r\n\r\n let TotalCards = tagsChartMount[tg].TotalCards || 0\r\n\r\n times = tagsChartMount[tg].times || 0\r\n\r\n\r\n return (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n marginBottom: 33\r\n }}\r\n key={`${tg}_${i}`}\r\n >\r\n <div style={{\r\n border: \"solid 1px #d6d6d6\",\r\n borderLeft: `solid 10px ${tag?.color || \"\"}`,\r\n borderBottom: \"none\",\r\n borderRadius: 5,\r\n padding: \"3px 5px\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n display: \"flex\",\r\n }}>\r\n <div\r\n style={{\r\n }}>{tag.label} ({TotalCards})\r\n </div>\r\n <div style={{\r\n display: \"flex\"\r\n }}>\r\n {times !== \"00:00:00\" ?\r\n <CustomButton\r\n color={options.toptags && options.toptags[tg] && options.toptags[tg]?.view !== \"timesheet\" ? customApp('lightgray') : customApp('menu')}\r\n icon={'work_history'}\r\n onClick={() => {\r\n setOptions({\r\n ...options,\r\n toptags: {\r\n ...options.toptags || {},\r\n [tg]: {\r\n ...(options.toptags && options.toptags[tg]) || {},\r\n view: \"timesheet\"\r\n }\r\n }\r\n })\r\n }}\r\n size={'15px'}\r\n title={`${translate(\"$__workedHours\")}: ${times}`}\r\n text={`${translate(\"$__workedHours\")}: ${times}`}\r\n /> : <></>\r\n }\r\n <CustomButton\r\n color={options.toptags && options.toptags[tg] && options.toptags[tg]?.view === \"activities\" ? customApp('menu') : customApp('lightgray')}\r\n icon={'list_alt'}\r\n onClick={() => {\r\n setOptions({\r\n ...options,\r\n toptags: {\r\n ...options.toptags || {},\r\n [tg]: {\r\n ...(options.toptags && options.toptags[tg]) || {},\r\n view: \"activities\"\r\n }\r\n }\r\n })\r\n }}\r\n size={'15px'}\r\n title={translate(`$__viewActivities`, '*')}\r\n text={translate(`$__viewActivities`, '*')}\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n border: \"solid 1px #d6d6d6\",\r\n padding: 5,\r\n marginTop: -10,\r\n paddingTop: 15,\r\n borderTop: \"none\",\r\n marginLeft: 10,\r\n }}\r\n >\r\n {times !== \"00:00:00\" && (\r\n (\r\n options.toptags\r\n && options.toptags[tg]\r\n && options.toptags[tg].view\r\n && options.toptags[tg].view === \"timesheet\"\r\n )\r\n || (\r\n !options.toptags\r\n || (\r\n options.toptags\r\n && !options.toptags[tg]\r\n )\r\n || (\r\n options.toptags\r\n && options.toptags[tg]\r\n && !options.toptags[tg].view\r\n )\r\n )\r\n ) ?\r\n <>\r\n {Object.keys(timesByUser)\r\n .filter(x => timesByUser[x])\r\n .sort((a, b) => {\r\n if (timesByUser[a] > timesByUser[b])\r\n return -1\r\n if (timesByUser[a] < timesByUser[b])\r\n return 1\r\n return 0\r\n })\r\n .map(x => {\r\n let userData = reduxStore.getState().db.users[x] || {}\r\n return (\r\n <div key={x} style={{ width: \"100%\", marginBottom: \"10px\", display: \"flex\", alignItems: \"center\" }}>\r\n <React.Fragment>\r\n <div\r\n style={{ width: \"33px\" }}\r\n >\r\n <Avatar alt={userData.name} src={userData.image || null} style={{ width: \"18px\", height: \"18px\" }}>\r\n {userData.name.substr(0, 1)}\r\n </Avatar>\r\n </div>\r\n <div style={{ marginLeft: \"10px\", fontWeight: \"bold\", color: customApp(\"menu\"), width: \"33%\", minWidth: \"150px\" }}>{userData.name}</div>\r\n </React.Fragment>\r\n <div style={{ marginLeft: \"10px\", fontWeight: \"bold\", color: customApp(\"menu\") }}>{getTime(timesByUser[x])}</div>\r\n </div>\r\n )\r\n })}\r\n </> : <></>}\r\n {(options.toptags\r\n && options.toptags[tg]\r\n && options.toptags[tg]?.view === \"activities\"\r\n ) ? <div>\r\n {Object.keys(tagsChartMount[tg])\r\n .map(card => {\r\n let childrensCards = getChildrens(card)\r\n return Object.keys(childrensCards)\r\n .filter(x =>\r\n db.cards[x]\r\n && !db.cards[x].deleted\r\n && db.cards[x].status === statusFilter\r\n && (\r\n !db.cards[x].checklist\r\n || (\r\n db.cards[x].checklist\r\n && db.cards[x].showCard\r\n )\r\n )\r\n && (\r\n (\r\n statusFilter === \"completed\"\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n ||\r\n (\r\n statusFilter !== \"completed\"\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n )\r\n )\r\n .sort((ca, cb) => {\r\n let dateA = statusFilter === \"completed\" ? getDate(db.cards[ca].completed_at, \"YYYY-MM-DD HH:MM:ss\") : getDate(db.cards[ca].updated_at, \"YYYY-MM-DD HH:MM:ss\")\r\n let dateB = statusFilter === \"completed\" ? getDate(db.cards[cb].completed_at, \"YYYY-MM-DD HH:MM:ss\") : getDate(db.cards[cb].updated_at, \"YYYY-MM-DD HH:MM:ss\")\r\n if (dateA > dateB)\r\n return -1\r\n if (dateA < dateB)\r\n return 1\r\n return 0\r\n })\r\n .map(cd => {\r\n return (\r\n <React.Fragment key={`card-${cd}`}><Card db=\"cards\" data={reduxStore.getState().db.cards[cd]} noShadow resume /></React.Fragment>\r\n )\r\n })\r\n\r\n\r\n })}\r\n </div> : <></>}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n </UiCardBody>\r\n </>\r\n )\r\n}","import React from \"react\"\r\n\r\n//COMPONENTS\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardHeader from \"components/Card/CardHeader\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\nimport { translate, customApp, textColor, } from \"functions\"\r\n\r\nexport default function RenderStatisticsTagMap(props) {\r\n const { type, text, tags, tagsChartMount } = props\r\n const { db, } = reduxStore.getState()\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n\r\n let titles = {}\r\n if (db.cards[hashs[0]]?.customColumns)\r\n titles = JSON.parse(db.cards[hashs[0]].customColumns)\r\n\r\n // return (<></>)\r\n\r\n return (\r\n <>\r\n {tags && Object.keys(tags).filter(a => tags[a].label.indexOf(text) > -1).length > 0 ?\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={6}\r\n lg={3}\r\n style={{\r\n zIndex: 0\r\n }}\r\n >\r\n <UiCard>\r\n <HeaderWithMenu\r\n title={titles[type] && titles[type].name ? titles[type].name : translate(`$__${type}`, 1)}\r\n // icon={titles[type].icon ? titles[type].icon : MatrixIcon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n />\r\n <UiCardHeader >\r\n {Object.keys(tags)\r\n .filter(a => tags[a].label.indexOf(text) > -1)\r\n .sort((a, b) => {\r\n if (tags[a].label.toUpperCase().trim() < tags[b].label.toUpperCase().trim())\r\n return -1\r\n if (tags[a].label.toUpperCase().trim() > tags[b].label.toUpperCase().trim())\r\n return 1\r\n return 0\r\n })\r\n .forEach(tag => {\r\n let totalStatus = {}\r\n db.status.forEach(st => {\r\n totalStatus = {\r\n ...totalStatus,\r\n [st.value]: 0\r\n }\r\n })\r\n\r\n if (tagsChartMount && tagsChartMount[tag] && tagsChartMount[tag].TotalCards)\r\n return (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n marginBottom: 7,\r\n\r\n }}\r\n key={tag}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: tags[tag]?.color || \"none\",\r\n color: tags[tag]?.color ? textColor(tags[tag].color, true) : \"none\",\r\n borderRadius: 5,\r\n padding: \"3px 5px\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\"\r\n\r\n }}><div>{tags[tag].label} ({tagsChartMount[tag].TotalCards})</div></div>\r\n </div>\r\n )\r\n })\r\n }\r\n </UiCardHeader>\r\n\r\n </UiCard >\r\n </GridItem >\r\n : <></>\r\n }\r\n </>\r\n )\r\n}","import React from \"react\"\r\nimport moment from \"moment-timezone\"\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 Filter from \"componentsV3/Filter/menuFilter\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport ChartTagsStatistics from \"./TagsStatistics/chart\"\r\nimport UiCard from \"components/Card/Card\"\r\nimport TopTags from \"./TagsStatistics/topTags\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\n//DEPENDENCIES\r\nimport RenderStatisticsTagMap from \"./TagsStatistics/tagsMap\"\r\n\r\nimport { getDate, getTime } from \"functions\"\r\nimport { getChildrens } from \"functions/cards\";\r\nimport { loadTimeline, } from \"functions/chat\"\r\n\r\n\r\nconst TagsStatistics = (props) => {\r\n const { db } = reduxStore.getState()\r\n\r\n React.useEffect(() => {\r\n init()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const init = async () => {\r\n loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"StrategyAndPlans/Dashboard/Widgers/timeSheet/init()\"\r\n },\r\n {\r\n ids: [hashs[0]],\r\n db: \"cards\",\r\n type: \"timer\",\r\n reqChildrens: true\r\n })\r\n }\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n let planCards = getChildrens(hashs[0])\r\n\r\n let tags = {\r\n guidelines: {},\r\n objectives: {},\r\n goals: {},\r\n actions: {}\r\n }\r\n let tagsCards = {}\r\n\r\n //GUIDELINE\r\n Object.keys(db.cards).filter(card =>\r\n (\r\n planCards[card]\r\n || db.cards[card]._parent === hashs[0]\r\n )\r\n && db.cards[card].type.indexOf(\"guideline\") > -1\r\n && !db.cards[card].deleted\r\n ).forEach(card => {\r\n if (db.cards[card]._tags)\r\n db.cards[card]._tags.filter(a => a.value).forEach(tag => {\r\n tags = {\r\n ...tags,\r\n guidelines: {\r\n ...tags.guidelines || {},\r\n [tag.value]: {\r\n ...tag\r\n }\r\n }\r\n }\r\n tagsCards = {\r\n ...tagsCards,\r\n guidelines: {\r\n ...tagsCards?.guidelines || {},\r\n [card]: true\r\n }\r\n }\r\n })\r\n })\r\n\r\n //OBJECTIVE\r\n Object.keys(db.cards).filter(card =>\r\n (\r\n planCards[card]\r\n || db.cards[card]._parent === hashs[0]\r\n )\r\n && db.cards[card].type === \"objective\"\r\n && !db.cards[card].deleted\r\n ).forEach(card => {\r\n if (db.cards[card]._tags)\r\n db.cards[card]._tags.filter(a => a.value).forEach(tag => {\r\n tags = {\r\n ...tags,\r\n objectives: {\r\n ...tags.objectives || {},\r\n [tag.value]: {\r\n ...tag\r\n }\r\n }\r\n }\r\n tagsCards = {\r\n ...tagsCards,\r\n objectives: {\r\n ...tagsCards?.objectives || {},\r\n [card]: true\r\n }\r\n }\r\n })\r\n })\r\n\r\n //GOAL\r\n Object.keys(db.cards).filter(card =>\r\n (\r\n planCards[card]\r\n || db.cards[card]._parent === hashs[0]\r\n )\r\n && db.cards[card].type.indexOf(\"goal\") > -1\r\n && !db.cards[card].deleted\r\n\r\n\r\n ).forEach(card => {\r\n if (db.cards[card]._tags)\r\n db.cards[card]._tags.filter(a => a.value).forEach(tag => {\r\n tags = {\r\n ...tags,\r\n goals: {\r\n ...tags.goals || {},\r\n [tag.value]: {\r\n ...tag\r\n }\r\n }\r\n }\r\n tagsCards = {\r\n ...tagsCards,\r\n goals: {\r\n ...tagsCards?.goals || {},\r\n [card]: true\r\n }\r\n }\r\n })\r\n })\r\n\r\n //ACTIONS\r\n Object.keys(db.cards).filter(card =>\r\n (\r\n planCards[card]\r\n || db.cards[card]._parent === hashs[0]\r\n )\r\n && !db.cards[card].deleted\r\n && (\r\n db.cards[card].type === 'iniciative'\r\n || db.cards[card].type === 'task'\r\n || db.cards[card].type === 'meeting'\r\n || db.cards[card].type === 'iniciative'\r\n || db.cards[card].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[card].checklist\r\n || (\r\n db.cards[card].checklist\r\n && db.cards[card].showCard\r\n )\r\n )\r\n ).forEach(card => {\r\n if (db.cards[card]._tags)\r\n db.cards[card]._tags.filter(a => a.value).forEach(tag => {\r\n tags = {\r\n ...tags,\r\n actions: {\r\n ...tags.actions || {},\r\n [tag.value]: {\r\n ...tag,\r\n }\r\n }\r\n }\r\n tagsCards = {\r\n ...tagsCards,\r\n actions: {\r\n ...tagsCards?.actions || {},\r\n [card]: true\r\n }\r\n }\r\n })\r\n })\r\n\r\n\r\n\r\n let tagsChartMount = {}\r\n let tagsChartData = []\r\n let tagsChartData2 = []\r\n let tagsChartKeys = []\r\n\r\n let allTagsCards = {}\r\n Object.keys(tagsCards).forEach(x => {\r\n allTagsCards = {\r\n ...allTagsCards,\r\n ...tagsCards[x]\r\n }\r\n })\r\n\r\n let finalDate = new Date()\r\n let initialDate = new Date()\r\n\r\n\r\n let endDate = moment(finalDate).unix(\"X\")\r\n finalDate = finalDate.toISOString().split('T')[0]\r\n initialDate.setDate(initialDate.getDate() - 30)\r\n let startDate = moment(initialDate).unix(\"X\")\r\n\r\n\r\n initialDate = initialDate.toISOString().split('T')[0]\r\n\r\n const search = props.searchs[`tagsStatistics_${hashs[0]}`] || {\r\n text: \"#4\",\r\n startDate,\r\n endDate,\r\n }\r\n\r\n var loopDate = new Date(search.startDate * 1000 || search.startDate);\r\n var loopFinalDate = new Date(search.endDate * 1000 || search.endDate)\r\n\r\n let sf = \"completed\"\r\n if (search && search.status && Object.keys(search.status).length > 0)\r\n Object.keys(search.status).forEach(x => {\r\n if (search.status[x])\r\n sf = x\r\n })\r\n const statusFilter = sf\r\n\r\n while (loopDate <= loopFinalDate) {\r\n let dateSearch = loopDate.toISOString().split('T')[0]\r\n let tagsMount = {}\r\n Object.keys(planCards)\r\n .filter(c =>\r\n db.cards[c].status === statusFilter\r\n && getDate(db.cards[c][statusFilter === \"completed\" ? \"completed_at\" : \"updated_at\"], \"YYYY-MM-DD\") === dateSearch\r\n )\r\n .forEach(card => {\r\n let parentCard = db.cards[card]\r\n let cards = getChildrens(card)\r\n Object.keys(cards)\r\n .filter(x =>\r\n (\r\n (\r\n statusFilter === \"completed\"\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n ||\r\n (\r\n statusFilter !== \"completed\"\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n )\r\n )\r\n .forEach(c => {\r\n if (db.cards[c]._tags && db.cards[c]._tags.filter(tc => tc.value).length > 0)\r\n db.cards[c]._tags.filter(tc => tc.value\r\n && (\r\n !search.text\r\n || (\r\n search.text\r\n && tc.label.indexOf(search.text) > -1\r\n )\r\n\r\n )\r\n\r\n ).forEach(tc => {\r\n tagsMount = {\r\n ...tagsMount,\r\n [`${tc.label}`]: tagsMount[`${tc.label}`] + 1 || 1,\r\n [`${tc.label}Color`]: tc.color || null,\r\n }\r\n if (tagsChartKeys.indexOf(tc.label) === -1)\r\n tagsChartKeys.push(tc.label)\r\n })\r\n if (parentCard._tags && parentCard._tags.filter(tc => tc.value).length > 0)\r\n parentCard._tags.filter(tc => tc.value\r\n && (\r\n !search.text\r\n || (\r\n search.text\r\n && tc.label.indexOf(search.text) > -1\r\n )\r\n\r\n )\r\n ).forEach(tc => {\r\n tagsMount = {\r\n ...tagsMount,\r\n [`${tc.label}`]: tagsMount[`${tc.label}`] + 1 || 1,\r\n [`${tc.label}Color`]: tc.color || null,\r\n }\r\n if (tagsChartKeys.indexOf(tc.label) === -1)\r\n tagsChartKeys.push(tc.label)\r\n })\r\n })\r\n })\r\n\r\n if (Object.keys(tagsMount).length > 0)\r\n tagsChartData2.push({\r\n date: dateSearch,\r\n ...tagsMount\r\n })\r\n\r\n var newDate = loopDate.setDate(loopDate.getDate() + 1);\r\n loopDate = new Date(newDate);\r\n }\r\n Object.keys(planCards)\r\n .filter(c =>\r\n db.cards[c].status === statusFilter\r\n && (\r\n (\r\n statusFilter === \"completed\"\r\n && getDate(db.cards[c].completed_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[c].completed_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n ||\r\n (\r\n statusFilter !== \"completed\"\r\n && getDate(db.cards[c].updated_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[c].updated_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n )\r\n ).forEach(card => {\r\n let cards = getChildrens(card)\r\n let parentCard = db.cards[card]\r\n Object.keys(cards)\r\n .filter(x =>\r\n (\r\n !db.cards[x].checklist\r\n || (\r\n db.cards[x].checklist\r\n && db.cards[x].showCard\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n statusFilter === \"completed\"\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n ||\r\n (\r\n statusFilter !== \"completed\"\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n )\r\n )\r\n .forEach(c => {\r\n db.cards[card]._tags\r\n .forEach(tc => {\r\n tagsChartMount = {\r\n ...tagsChartMount,\r\n [tc.value]: {\r\n ...tagsChartMount[tc.value] || {},\r\n [c]: {\r\n date: statusFilter === \"completed\" ? getDate(db.cards[c].completed_at, \"YYYY-MM-DD\") : getDate(db.cards[c].updated_at, \"YYYY-MM-DD\"),\r\n dateStamp: statusFilter === \"completed\" ? db.cards[c]?.completed_at?.low || db.cards[c].completed_at || null : db.cards[c]?.updated_at?.low || db.cards[c].updated_at || null\r\n }\r\n }\r\n }\r\n })\r\n if (parentCard._tags && parentCard._tags.filter(tc => tc.value).length > 0)\r\n parentCard._tags\r\n .forEach(tc => {\r\n tagsChartMount = {\r\n ...tagsChartMount,\r\n [tc.value]: {\r\n ...tagsChartMount[tc.value] || {},\r\n [c]: {\r\n date: statusFilter === \"completed\" ? getDate(db.cards[c].completed_at, \"YYYY-MM-DD\") : getDate(db.cards[c].updated_at, \"YYYY-MM-DD\"),\r\n dateStamp: statusFilter === \"completed\" ? db.cards[c]?.completed_at?.low || db.cards[c].completed_at || null : db.cards[c]?.updated_at?.low || db.cards[c].updated_at || null\r\n }\r\n }\r\n }\r\n })\r\n })\r\n })\r\n\r\n Object.keys(tagsChartMount).forEach(x => {\r\n let newData = []\r\n let dateSum = {}\r\n let tagsSum = {}\r\n Object.keys(tagsChartMount[x])\r\n .forEach(cd => {\r\n dateSum = {\r\n ...dateSum,\r\n [`${tagsChartMount[x][cd].date} `]: dateSum[`${tagsChartMount[x][cd].date} `] + 1 || 1\r\n }\r\n tagsSum = {\r\n ...tagsSum,\r\n [x]: tagsSum[x] + 1 || 1\r\n }\r\n })\r\n Object.keys(dateSum).forEach(x => {\r\n newData.push({\r\n x: x,\r\n y: dateSum[x]\r\n })\r\n })\r\n var loop = new Date(initialDate);\r\n while (loop <= new Date(finalDate)) {\r\n let dateSearch = loop.toISOString().split('T')[0]\r\n if (newData.filter(a => a.x === dateSearch).length === 0)\r\n newData.push({\r\n x: dateSearch,\r\n y: 0\r\n })\r\n var newDate = loop.setDate(loop.getDate() + 1);\r\n loop = new Date(newDate);\r\n }\r\n if (db.tag.filter(a => a.value === x).length > 0) {\r\n tagsChartData = [...tagsChartData, {\r\n \"id\": db.tag.filter(a => a.value === x).map(x => x)[0].label,\r\n data: Array.from([...newData.sort((a, b) => {\r\n if (Date.parse(a.x) < Date.parse(b.x))\r\n return -1\r\n if (Date.parse(a.x) > Date.parse(b.x))\r\n return 1\r\n return 0\r\n })])\r\n }]\r\n }\r\n })\r\n\r\n let totalTimes = 0\r\n\r\n Object.keys(tagsChartMount)\r\n .filter(tag => db.tag.filter(a => a.value === tag).length > 0)\r\n .sort((a, b) => {\r\n if (Object.keys(tagsChartMount[a]).length > Object.keys(tagsChartMount[b]).length)\r\n return -1\r\n if (Object.keys(tagsChartMount[a]).length < Object.keys(tagsChartMount[b]).length)\r\n return 1\r\n return 0\r\n })\r\n .forEach((tg, i) => {\r\n let times = 0\r\n let timesByUser = {}\r\n\r\n let TotalCards = tagsChartMount[tg].total || 0\r\n Object.keys(tagsChartMount[tg]).forEach(cd => {\r\n if (reduxStore.getState().timeline && reduxStore.getState().timeline[cd]) {\r\n let timeline = reduxStore.getState().timeline[cd]\r\n Object.keys(timeline).filter(tm =>\r\n timeline[tm].type === \"timer\"\r\n && timeline[tm].ini >= search.startDate\r\n && timeline[tm].fin <= search.endDate\r\n ).forEach(tm => {\r\n let multi = 1\r\n if (timeline[tm] && timeline[tm].users && timeline[tm].users.filter(user => user._id).length > 0) {\r\n multi = timeline[tm].users.filter(us => us._id).length\r\n } else {\r\n timesByUser = {\r\n ...timesByUser,\r\n [timeline[tm].user._id]: timesByUser[timeline[tm].user._id] + 1 || 1,\r\n }\r\n }\r\n let total = ((timeline[tm].fin - timeline[tm].ini) * multi)\r\n times = times + total\r\n\r\n if (timeline[tm] && timeline[tm].users && timeline[tm].users.filter(user => user._id).length > 0) {\r\n timeline[tm].users.filter(user => user._id).forEach(user => {\r\n timesByUser = {\r\n ...timesByUser,\r\n [user._id]: timesByUser[user._id] + total || total,\r\n }\r\n })\r\n } else {\r\n timesByUser = {\r\n ...timesByUser,\r\n [timeline[tm].user._id]: timesByUser[timeline[tm].user._id] + total || total,\r\n }\r\n }\r\n\r\n })\r\n }\r\n //COUNT CHILDREN CARDS\r\n let childrensCards = getChildrens(cd)\r\n TotalCards = TotalCards + Object.keys(childrensCards).filter(x =>\r\n db.cards[x]\r\n && !db.cards[x].deleted\r\n && db.cards[x].status === statusFilter\r\n && (\r\n !db.cards[x].checklist\r\n || (\r\n db.cards[x].checklist\r\n && db.cards[x].showCard\r\n )\r\n )\r\n && (\r\n (\r\n statusFilter === \"completed\"\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].completed_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n ||\r\n (\r\n statusFilter !== \"completed\"\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") >= moment(search.startDate * 1000).format(\"YYYY-MM-DD\")\r\n && getDate(db.cards[x].updated_at, \"YYYY-MM-DD\") <= moment(search.endDate * 1000).format(\"YYYY-MM-DD\")\r\n )\r\n )\r\n ).length\r\n })\r\n totalTimes = totalTimes + times\r\n tagsChartMount[tg] = {\r\n ...tagsChartMount[tg],\r\n times: getTime(times),\r\n timesInt: times,\r\n TotalCards,\r\n timesByUser,\r\n }\r\n })\r\n\r\n\r\n\r\n\r\n return (\r\n <ErrorBoundary>\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n >\r\n <Filter\r\n nodeId={`tagsStatistics_${hashs[0]}`}\r\n defaultValues={{\r\n startDate,\r\n endDate,\r\n text: \"#4\",\r\n status: {\r\n all: false,\r\n notStarted: false,\r\n awaitAction: false,\r\n paused: false,\r\n inProgress: false,\r\n completed: true,\r\n }\r\n }}\r\n preffers={{\r\n searchButton: true,\r\n unique: {\r\n status: true\r\n }\r\n }}\r\n fields={['text', 'date', 'status']}\r\n // fields={['text', 'priority', 'impact', 'risk', 'complexity', 'users', 'tags', 'date']}\r\n showFilters\r\n\r\n />\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n style={{\r\n minHeight: 300,\r\n height: tagsChartData2.length * 35,\r\n }}\r\n >\r\n <ChartTagsStatistics\r\n data={tagsChartData2}\r\n keys={tagsChartKeys}\r\n />\r\n </GridItem>\r\n </GridContainer>\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n >\r\n <UiCard>\r\n <TopTags data={tagsChartMount} statusFilter={statusFilter} startDate={startDate} search={search} totalTimes={totalTimes} />\r\n </UiCard>\r\n </GridItem>\r\n </GridContainer>\r\n\r\n <GridContainer>\r\n <RenderStatisticsTagMap tagsChartMount={tagsChartMount} tags={tags[\"guidelines\"]} cards={tagsCards[\"guidelines\"]} type={\"guidelines\"} text={\"#1\"} />\r\n <RenderStatisticsTagMap tagsChartMount={tagsChartMount} tags={tags[\"objectives\"]} cards={tagsCards[\"objectives\"]} type={\"objectives\"} text={\"#2\"} />\r\n <RenderStatisticsTagMap tagsChartMount={tagsChartMount} tags={tags[\"goals\"]} cards={tagsCards[\"goals\"]} type={\"goals\"} text={\"#3\"} />\r\n <RenderStatisticsTagMap tagsChartMount={tagsChartMount} tags={tags[\"actions\"]} cards={tagsCards[\"actions\"]} type={\"actions\"} text={\"#4\"} />\r\n </GridContainer>\r\n </ErrorBoundary>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n cards: store.db.cards,\r\n tags: store.db.tags,\r\n searchs: store.searchs,\r\n timelines: store.timelines,\r\n}\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)(TagsStatistics);","const style = () => ({\r\n card: {\r\n width: 'calc(20% - 20px)',\r\n minWidth: '250px',\r\n maxWidth: '400px',\r\n margin: '10px',\r\n placeSelf: 'flex-end',\r\n }\r\n})\r\n\r\nexport default style;","import React from \"react\";\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 Card from \"components/Card\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\n//@MATERIAL\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/InsightBoards\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n} from \"functions/\";\r\n\r\nfunction InsightsBoardView() {\r\n const { db, search } = reduxStore.getState()\r\n const [page, setPage] = React.useState(0)\r\n const [limit, setLimit] = React.useState(25)\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let insightsCards = {}\r\n\r\n if (hashs[0].length === 36) {\r\n insightsCards = Object.keys(db.cards)\r\n .filter(a => db.cards[a]._parent && db.cards[a]._parent === hashs[0] && db.cards[a].type === 'insight' && !db.cards[a].deleted)\r\n .sort((a, b) => {\r\n if (db.cards[a].created_at > db.cards[b].created_at)\r\n return -1\r\n return 0\r\n })\r\n .map(a => db.cards[a])\r\n insightsCards = insightsCards.filter(a =>\r\n ((a.description && a.description.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (a.name && a.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )).map(a => a)\r\n } else {\r\n insightsCards = Object.keys(db.cards)\r\n .filter(a => !db.cards[a]._parent && db.cards[a].type === 'insight')\r\n .sort((a, b) => {\r\n if (db.cards[a].created_at > db.cards[b].created_at)\r\n return -1\r\n return 0\r\n })\r\n .map(a => db.cards[a])\r\n insightsCards = insightsCards.filter(a =>\r\n ((a.description && a.description.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (a.name && a.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )).map(a => a)\r\n }\r\n\r\n return (\r\n <div style={{ position: 'relative', justifyContent: 'space-between', margin: 'auto', width: '100%' }}>\r\n {/* <HeaderWithIcon\r\n title={`insights`}\r\n icon={InsightsIcon}\r\n fontSize='20px'\r\n color={customApp('menu')}\r\n /> */}\r\n {Object.keys(insightsCards).length > 25 &&\r\n <div style={{\r\n position: \"relative\",\r\n float: 'left',\r\n width: '100%',\r\n left: '0px',\r\n right: '0px',\r\n padding: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n {/* PAGINATION */}\r\n {translate('$__page')} {page + 1} {translate('$__of')} {Math.ceil(Object.keys(insightsCards).length / limit)}\r\n <div style={{ display: 'flex', alignItems: 'center' }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={Object.keys(insightsCards).length}\r\n page={page}\r\n onChangePage={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onChangeRowsPerPage={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate('$__insightsPerPage')}\r\n />\r\n </div>\r\n </div>\r\n }\r\n <GridContainer>\r\n {Object.keys(insightsCards)\r\n .filter((card, i) => i <= ((page + 1) * limit) && i >= page * limit)\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={insightsCards[card]._id}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <Card db=\"cards\" data={insightsCards[card]} expanded Avatar Resume />\r\n </GridItem>\r\n )\r\n }\r\n )\r\n }\r\n </GridContainer>\r\n {Object.keys(insightsCards).length > 25 &&\r\n <div style={{\r\n position: \"relative\",\r\n float: 'left',\r\n width: '100%',\r\n left: '0px',\r\n right: '0px',\r\n padding: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n {/* PAGINATION */}\r\n {translate('$__page')} {page + 1} {translate('$__of')} {Math.ceil(Object.keys(insightsCards).length / limit)}\r\n <div style={{ display: 'flex', alignItems: 'center' }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={Object.keys(insightsCards).length}\r\n page={page}\r\n onChangePage={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onChangeRowsPerPage={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate('$__insightsPerPage')}\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n return {\r\n store: store,\r\n ownProps: ownProps\r\n };\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)(withStyles(styles)(InsightsBoardView));","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = {\r\n container: {\r\n ...defaultFont,\r\n position: 'relative',\r\n border: `0.5px solid ${customApp('light')}`,\r\n borderRadius: '2px',\r\n padding: '0px',\r\n display: 'block',\r\n minWidth: '240px !important',\r\n backgroundColor: '#FFFFFF',\r\n boxShadow: '0px 0px 10px rgba(0,0,0,0.1)',\r\n overflow: 'hidden',\r\n minHeight: '50px',\r\n },\r\n parent: {\r\n width: '100%',\r\n padding: '0 5px',\r\n '& .title': {\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n textTransform: 'uppercase'\r\n },\r\n '& .info': {\r\n marginTop: '-8px',\r\n color: customApp('color'),\r\n fontWeight: '500'\r\n }\r\n },\r\n indicators: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n padding: '0 5px',\r\n height: 'auto',\r\n display: 'flex',\r\n },\r\n indicatorsIcon: {\r\n margin: '0px 0px',\r\n },\r\n image: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n maxWidth: '100%',\r\n // paddingBottom: '48%',\r\n backgroundColor: 'rgb(0,0,0)',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n },\r\n progress: {\r\n position: 'relative',\r\n float: 'left',\r\n padding: '0 12px',\r\n width: 'calc(100% - 15x)'\r\n },\r\n description: {\r\n position: 'relative',\r\n float: 'left',\r\n padding: '5px',\r\n },\r\n dates: {\r\n position: 'relative',\r\n float: 'left',\r\n marginTop: '7px',\r\n padding: '0 5px',\r\n marginRight: '15px',\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n display: 'flex',\r\n },\r\n dateInfo: {\r\n marginRight: '15px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n users: {\r\n position: 'absolute',\r\n bottom: '2px',\r\n right: '2px',\r\n fontSize: '10px',\r\n '& .MuiAvatarGroup-root': {\r\n justifyContent: 'flex-end',\r\n },\r\n '& .MuiAvatar-root': {\r\n width: '25px',\r\n height: '25px',\r\n fontSize: '10px',\r\n }\r\n }\r\n};\r\n\r\nexport default style;\r\n","import React, { memo } from \"react\";\r\nimport { Draggable } from \"react-beautiful-dnd\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store\";\r\n\r\n//COMPONENTS\r\nimport Card from \"components/Card\";\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Agile-Card\";\r\nimport { customApp } from \"functions\";\r\n\r\nfunction Component(props) {\r\n const { data } = props\r\n const { db } = reduxStore.getState()\r\n let indicators = []\r\n\r\n let cards = db.cards\r\n\r\n const getStyle = (style, snapshot) => {\r\n if (!snapshot.isDropAnimating) {\r\n return {\r\n ...style,\r\n };\r\n }\r\n const { moveTo } = snapshot.dropAnimation;\r\n // move to the right spot\r\n const translate = `translate(${moveTo.x}px, ${moveTo.y}px)`;\r\n const rotate = ``;\r\n return {\r\n ...style,\r\n clear: 'both',\r\n transition: `all 0.1s ease`,\r\n transform: `${translate} ${rotate}`,\r\n border: `solid 3px ${customApp('color')}`,\r\n backgroundColor: customApp('color'),\r\n padding: '3px'\r\n };\r\n\r\n\r\n }\r\n\r\n Object.keys(cards).map(a => {\r\n if (cards[a]._parent === data._id) {\r\n indicators[cards[a].type] = indicators[cards[a].type] == null ? 1 : indicators[cards[a].type] + 1\r\n }\r\n return false\r\n })\r\n return (\r\n <Draggable\r\n draggableId={data.id ? data.id : data._id ? data._id : null}\r\n index={Math.floor(Math.random() * 10)}\r\n key={data.id ? data.id : data._id ? data._id : null}\r\n isDragDisable={data.isDragDisable || props.isDragDisable || false}\r\n >\r\n {(provided, snapshot) => (\r\n <div\r\n ref={provided.innerRef}\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n style={getStyle(provided.draggableProps.style, snapshot)}>\r\n <Card\r\n cardId={props.data._id}\r\n db={props.db}\r\n showOrder={props.showOrder || false}\r\n showSelected={props.showSelected || false}\r\n locked={props.locked || false}\r\n viewButton={props.viewButton || false}\r\n showConnectedIn={props.showConnectedIn ? true : false}\r\n isDragging={snapshot.isDragging && !snapshot.isDropAnimating}\r\n snapshot={snapshot}\r\n cardColorPicker={props.cardColorPicker ? true : false}\r\n />\r\n </div>\r\n )}\r\n </Draggable>\r\n )\r\n}\r\n\r\nexport default withStyles(styles)(memo(Component))","import React from 'react';\r\nimport MD5 from \"crypto-js/md5\"\r\nimport styled from 'styled-components';\r\nimport { Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport cx from \"classnames\";\r\nimport moment from \"moment-timezone\";\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 HeaderWithIcon from \"components/Header/withIcon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\n\r\n//DEPENDENCIES\r\nimport CardItem from './Card';\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\nimport { updateCardData, filterCards } from \"functions/cards\";\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Agile-Column\";\r\n\r\nfunction Column(props) {\r\n const { session } = reduxStore.getState()\r\n const { classes } = props\r\n\r\n let searchID = MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n const search = props.searchs && props.searchs[searchID] ? props.searchs[searchID] : null\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n let filtered = props.cards\r\n\r\n if (search)\r\n filtered = filterCards(filtered, search)\r\n\r\n let subtractDays = String(session.dashboard.period).replace('$__last', '')\r\n subtractDays = subtractDays.replace('Days', '')\r\n\r\n const startDate = moment(new Date()).tz('America/Sao_Paulo').subtract(parseInt(subtractDays), 'd').format('YYYY-MM-DDT00:00')\r\n const endDate = moment(new Date()).tz('America/Sao_Paulo').format('YYYY-MM-DDT23:59')\r\n\r\n if (props && props.periodFilter)\r\n filtered = filtered.filter(fil => {\r\n if (\r\n (fil.status === 'completed'\r\n && fil.completed_at\r\n && (\r\n (fil.completed_at.low\r\n && moment(new Date(fil.completed_at.low * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT23:59') <= endDate\r\n && moment(new Date(fil.completed_at.low * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT00:00') >= startDate)\r\n || (fil.completed_at && !fil.completed_at.low\r\n && moment(new Date(fil.completed_at * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT23:59') <= endDate\r\n && moment(new Date(fil.completed_at * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT00:00') >= startDate)\r\n )\r\n )\r\n ||\r\n (\r\n fil.status !== 'completed'\r\n && fil.updated_at\r\n && (\r\n (fil.updated_at.low\r\n && moment(new Date(fil.updated_at.low * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT23:59') <= endDate\r\n && moment(new Date(fil.updated_at.low * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT00:00') >= startDate)\r\n || (fil.updated_at && !fil.updated_at.low\r\n && moment(new Date(fil.updated_at * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT23:59') <= endDate\r\n && moment(new Date(fil.updated_at * 1000)).tz('America/Sao_Paulo').format('YYYY-MM-DDT00:00') >= startDate)\r\n )\r\n )\r\n )\r\n return true\r\n return false\r\n }\r\n ).map(res => res)\r\n\r\n if (!props.showDeleted && !reduxStore.getState().controls.deleted)\r\n filtered = filtered.filter(fil => !fil.deleted).map(res => res)\r\n\r\n\r\n const list =\r\n classes.cardList +\r\n \" \" +\r\n cx({\r\n [classes.mainPanelWithPerfectScrollbar]:\r\n navigator.platform.indexOf(\"Win\") > -1\r\n });\r\n\r\n\r\n let columnName = translate(props.column.name, 1)\r\n let customColumns = {}\r\n if (reduxStore.getState().db.cards[hashs[0]] && reduxStore.getState().db.cards[hashs[0]].customColumns)\r\n customColumns = JSON.parse(reduxStore.getState().db.cards[hashs[0]].customColumns)\r\n\r\n if (\r\n customColumns\r\n && customColumns[props.column.name.replace(\"$__\", \"\")]\r\n && customColumns[props.column.name.replace(\"$__\", \"\")].name\r\n )\r\n columnName = translate(customColumns[props.column.name.replace(\"$__\", \"\")].name, 1)\r\n\r\n\r\n return (\r\n <Draggable draggableId={props.columnId ? String(props.columnId) : 'NOT_ID_SENDED'} index={props.index} >\r\n {provided => (\r\n <Container\r\n {...!props.isDropDisabled && provided.draggableProps}\r\n {...props}\r\n ref={provided.innerRef}\r\n >\r\n <div {...provided.draggableProps}{...provided.dragHandleProps} style={{ display: 'none' }}></div>\r\n <div {...!props.isDropDisabled && provided.dragHandleProps}>\r\n <HeaderWithIcon\r\n title={columnName}\r\n icon={customColumns[props.column.name.replace(\"$__\", \"\")]?.icon ? customColumns[props.column.name.replace(\"$__\", \"\")]?.icon : props.column.icon || \"topic\"}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n {...hashs.length > 0\r\n && hashs[1]\r\n && hashs[1] === 'overview'\r\n && reduxStore.getState().db.cards[hashs[0]]\r\n && reduxStore.getState().db.cards[hashs[0]].planType\r\n && reduxStore.getState().db.cards[hashs[0]].planType === 'operational'\r\n && reduxStore.getState().db.cards[hashs[0]]._users\r\n && reduxStore.getState().db.cards[hashs[0]]._users[session._id]\r\n && reduxStore.getState().db.cards[hashs[0]]._users[session._id].access\r\n && parseInt(reduxStore.getState().db.cards[hashs[0]]._users[session._id].access) > 3\r\n ? {\r\n editable: true,\r\n onEdit: (x) => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: hashs[0] }\r\n }, {\r\n customColumns: JSON.stringify({\r\n ...reduxStore.getState().db.cards[hashs[0]] && reduxStore.getState().db.cards[hashs[0]].customColumns ? JSON.parse(reduxStore.getState().db.cards[hashs[0]].customColumns) : {},\r\n [props.column.name.replace(\"$__\", \"\")]: x\r\n })\r\n })\r\n },\r\n placeholder: translate(\"$__columnName\")\r\n } : {}}\r\n customButtons={[\r\n props.columnsSettings &&\r\n {\r\n name: \"settings\",\r\n icon: \"more_horiz\",\r\n color: customApp('color'),\r\n onClick: () => console.log('s'),\r\n show: 'hover'\r\n },\r\n ]}\r\n\r\n periodFilter={props && props.periodFilter ? true : false}\r\n />\r\n </div>\r\n <Droppable\r\n droppableId={props.columnId ? String(props.columnId) : 'NOT_ID_SENDED'}\r\n type=\"card\"\r\n isDropDisabled={props.column.isDropDisabled}\r\n direction={`${props.inLine ? 'horizontal' : 'vertical'}`}\r\n isCombineEnabled={props.isCombineEnabled}\r\n >\r\n {(provided, snapshot) => (\r\n <CardList\r\n className={list}\r\n ref={provided.innerRef}\r\n {...provided.droppableProps}\r\n isDraggingOver={snapshot.isDraggingOver}\r\n inLine={props.inLine}\r\n {...props}\r\n >\r\n {filtered.sort((a, b) => {\r\n let orderA = props.orderByTitlePosition === \"ASC\" ? a.name.toLowerCase() : b.name.toLowerCase()\r\n let orderB = props.orderByTitlePosition === \"ASC\" ? b.name.toLowerCase() : a.name.toLowerCase()\r\n\r\n if (orderA < orderB)\r\n return -1\r\n if (orderA > orderB)\r\n return 1\r\n return 0\r\n\r\n }).map((card) => {\r\n if (card) {\r\n return (\r\n <div\r\n key={card._id ? card._id : card.id ? card._id : null}\r\n >\r\n <CardItem\r\n data={card}\r\n inLine={props.inLine}\r\n isDragDisable={props.column.isDragDisable}\r\n db={props.db}\r\n showOrder={props.showOrder || false}\r\n showSelected={props.showSelected || false}\r\n locked={props.locked || false}\r\n inLineAdd={props.inLineAdd || false}\r\n viewButton={props.viewButton || false}\r\n cardColorPicker={props.cardColorPicker ? true : false}\r\n />\r\n </div>\r\n )\r\n }\r\n return (<></>)\r\n })}\r\n {props.inLineAdd &&\r\n <div style={{ position: 'relative', float: 'left', width: '100%', padding: '7px' }}>\r\n <IconButton\r\n text={translate(\"$__add\", '*')}\r\n icon=\"add_box\"\r\n iconColor={customApp('medium')}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n addCard: {\r\n _parent: props.selectedParent ? props.selectedParent : hashs[0] ? hashs[0] : null,\r\n rows: filtered.length,\r\n initialData: {\r\n type: props.typeAdd ? props.typeAdd : props.columnId.length < 36 ? props.columnId : null,\r\n }\r\n },\r\n })\r\n }}\r\n />\r\n </div>\r\n }\r\n {provided.placeholder}\r\n <div style={{ clear: 'both' }}></div>\r\n </CardList>\r\n )\r\n }\r\n </Droppable>\r\n </Container>\r\n )\r\n }\r\n </Draggable>\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n margin:0 7px;\r\n min-width:180px;\r\n ${props => props.columnStyle && props.columnStyle.width ? `width:calc(${props.columnStyle.width} - 14px);` : `width:calc(100% - 14px);`}\r\n @media(min-width: 960px) {\r\n position:relative;\r\n max-height:${props => props.columnStyle && props.columnStyle.maxHeight ? props.columnStyle.maxHeight : 'calc(100% - 0px)'};\r\n \r\n ${props => props.inLine\r\n ? `display:block;\r\n `\r\n : `margin-bottom:0px !important;\r\n ${props => props.columnStyle && props.columnStyle.width ? `width:${props.columnStyle.width};` : `width:100%;`}\r\n `\r\n }\r\n }\r\n @media(max-width: 959px) {\r\n float:left;\r\n position: relative;\r\n }\r\n @media(max-width: 599px) {\r\n float:left;\r\n position: relative;\r\n }\r\n `\r\n\r\n\r\nconst CardList = styled.div`\r\nposition:relative;\r\nheight:100%;\r\nwidth:100%;\r\nmax-height:${props => props.columnStyle && props.columnStyle.maxHeight ? props.columnStyle.maxHeight : 'calc(100% - 30px)'};\r\n${props => props.columnStyle && props.columnStyle.maxWidth ? props.columnStyle.maxWidth : '250px'};\r\n ${props =>\r\n props.isDraggingOver\r\n ? `background-color:${customApp('color')}; opacity:0.5;`\r\n : ''};\r\n${props =>\r\n props.inLine ? `\r\n display:table;\r\n margin-bottom:33px`\r\n : `display:block;\r\n min-height: 150px !important;\r\n padding-bottom:15px;\r\n overflow-y: auto;\r\n `\r\n }\r\n`;\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n searchs: store.searchs,\r\n orderByTitle: store.db.orderByTitle,\r\n orderByTitlePosition: store.db.orderByTitlePosition,\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Column));","import React from \"react\";\r\nimport { DragDropContext, Droppable } from \"react-beautiful-dnd\";\r\nimport styled from \"styled-components\";\r\nimport moment from \"moment-timezone\";\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//DEPENDENCIES\r\nimport Column from \"./Column\";\r\n\r\nfunction App(props) {\r\n const { db } = reduxStore.getState()\r\n\r\n React.useEffect(() => {\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onDragEnd = async result => {\r\n const { socket } = reduxStore.getState().functions\r\n const { destination, source, draggableId } = result\r\n let newCardsOrder = db.cards\r\n if (result.combine) {\r\n return;\r\n }\r\n\r\n\r\n if (!destination) return false\r\n\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false\r\n\r\n const sourceColumn = source.droppableId\r\n const destinationColumn = destination.droppableId\r\n\r\n const sourceCardIds = Array.from(props.cards.filter(c => c.status === sourceColumn).sort((a, b) => {\r\n if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }\r\n ).map(a => a._id))\r\n\r\n //When move Card in single Column\r\n\r\n if (sourceColumn === destinationColumn && !reduxStore.getState().db.orderByTitle) {\r\n const newCardsIds = Array.from(props.cards.filter(c => c.status === sourceColumn).sort((a, b) => {\r\n if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }\r\n ).map(a => a._id))\r\n\r\n newCardsIds.splice(source.index, 1)\r\n newCardsIds.splice(destination.index, 0, draggableId)\r\n newCardsIds.forEach((card, i) => {\r\n newCardsOrder[card] = {\r\n ...newCardsOrder[card],\r\n order: {\r\n low: i\r\n }\r\n }\r\n })\r\n\r\n const newState = {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...db.cards,\r\n ...newCardsOrder,\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...newState,\r\n });\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"inColumn\",\r\n }, {\r\n node: draggableId,\r\n source: source.droppableId,\r\n destination: destination.droppableId,\r\n destinationCards: newCardsIds,\r\n sourceCards: [],\r\n columnName: 'status',\r\n })\r\n return\r\n }\r\n\r\n //When move Card in mult Column\r\n sourceCardIds.splice(source.index, 1)\r\n\r\n const destinationCardIds = Array.from(props.cards.filter(c => c.status === destinationColumn).sort((a, b) => {\r\n if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }\r\n ).map(a => a._id))\r\n destinationCardIds.splice(destination.index, 0, draggableId)\r\n\r\n sourceCardIds.forEach((a, i) => {\r\n if (!db.cards[a].order || !db.cards[a].order.low) {\r\n db.cards[a] = {\r\n ...db.cards[a],\r\n order: {\r\n low: parseInt(i)\r\n }\r\n }\r\n } else {\r\n db.cards[a].order.low = parseInt(i)\r\n }\r\n })\r\n\r\n destinationCardIds.forEach((a, i) => {\r\n if (!db.cards[a].order || !db.cards[a].order.low) {\r\n db.cards[a] = {\r\n ...db.cards[a],\r\n order: {\r\n low: parseInt(i)\r\n }\r\n }\r\n } else {\r\n db.cards[a].order.low = parseInt(i)\r\n }\r\n })\r\n\r\n const newState = {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n [draggableId]: {\r\n ...db.cards[draggableId],\r\n status: destinationColumn,\r\n completed_at: destinationColumn === 'completed' ? {\r\n low: moment().tz('America/Sao_Paulo').unix('x'),\r\n } : null,\r\n updated_at: {\r\n low: moment().tz('America/Sao_Paulo').unix('x'),\r\n },\r\n order: {\r\n low: destination.index\r\n }\r\n }\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...newState,\r\n });\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"inColumn\",\r\n }, {\r\n node: draggableId,\r\n source: source.droppableId,\r\n destination: destination.droppableId,\r\n destinationCards: destinationCardIds,\r\n columnName: 'status',\r\n sourceCards: sourceCardIds,\r\n })\r\n\r\n }\r\n const onDragStart = async result => {\r\n }\r\n const onDragUpdate = async result => {\r\n }\r\n\r\n return (\r\n <DragDropContext\r\n onDragEnd={onDragEnd}\r\n onDragStart={onDragStart}\r\n onDragUpdate={onDragUpdate}\r\n >\r\n <Droppable\r\n droppableId=\"ALL-COLUMNS-STATUS\"\r\n type=\"column\"\r\n direction={`${props.inLine ? 'vertical' : 'horizontal'}`}\r\n isDropDisabled={true}\r\n >\r\n {provided => (\r\n <Container\r\n {...props}\r\n ref={provided.innerRef}\r\n >\r\n {reduxStore.getState().db.status.map((st, index) => {\r\n const theColumn = {\r\n name: st.label,\r\n icon: st.icon,\r\n cards: [],\r\n emptyHide: false,\r\n }\r\n // console.log(st.value)\r\n return <Column\r\n {...props}\r\n key={`${st.value}`}\r\n columnId={`${st.value}`}\r\n isDropDisabled\r\n column={theColumn}\r\n cards={props.cards.filter(c => c.status === st.value || (st.value === 'notStarted' && !c.status)).map(a => {\r\n return {\r\n ...a,\r\n id: a._id\r\n }\r\n })}\r\n index={index}\r\n columnsSettings={false}\r\n locked={false}\r\n columnStyle={{\r\n flex: index,\r\n width: \"25%\",\r\n ...props.columnStyle ? props.columnStyle : {}\r\n\r\n }}\r\n viewButton={props.viewButton || false}\r\n periodFilter={st.props && st.props.periodFilter ? true : false}\r\n />\r\n })}\r\n {provided.placeholder}\r\n <div style={{ clear: 'both' }}></div>\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n )\r\n}\r\n\r\n//STYLEDS\r\nconst Container = styled.div`\r\nheight:100%;\r\n${props =>\r\n props.inLine ?\r\n `display: block;\r\n width: -webkit-fill-available;\r\n position:relative;\r\n ${props.style}`\r\n :\r\n ` display: flex;\r\n width: 100%;\r\n ${props.style}\r\n @media(min-width: 960px) {\r\n display: flex;\r\n }\r\n `\r\n }\r\n @media(max-width: 959px) {\r\n display: contents !important;\r\n width: -webkit-fill-available;\r\n height:auto;\r\n }\r\n `\r\n\r\n//REACT\r\nconst mapStateToProps = (store, props) => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(App);","import React from 'react';\r\n\r\n//@MATERIAL\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Dialog from '@material-ui/core/Dialog';\r\n\r\n//COMPONENTS\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport Icon from \"components/Icon\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nfunction SimpleDialog(props) {\r\n const { open, onClose } = props;\r\n\r\n const handleClose = () => {\r\n onClose();\r\n };\r\n\r\n return (\r\n <Dialog onClose={handleClose} aria-labelledby=\"simple-dialog-title\" open={open}>\r\n {props && props.title &&\r\n <DialogTitle id=\"simple-dialog-title\">{props.title}</DialogTitle>\r\n }\r\n <List>\r\n {props.options.map((option, index) => {\r\n return (\r\n <ListItem\r\n button\r\n onClick={() => {\r\n if (option.onClick)\r\n option.onClick()\r\n onClose()\r\n }}\r\n key={index}>\r\n <ListItemAvatar>\r\n <Icon icon={option.icon} />\r\n </ListItemAvatar>\r\n <ListItemText primary={translate(option.name, 1)} />\r\n </ListItem>\r\n )\r\n })\r\n }\r\n </List>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default function Component(props) {\r\n const [open, setOpen] = React.useState(false);\r\n const [selectedValue, setSelectedValue] = React.useState(null);\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = (value) => {\r\n setOpen(false);\r\n setSelectedValue(value);\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n <IconButton\r\n text={props.text ? props.text : null}\r\n icon={props.icon ? props.icon : \"add_box\"}\r\n size={props.iconSize ? props.iconSize : null}\r\n iconColor={props.iconColor ? props.iconColor : customApp('medium')}\r\n onClick={handleClickOpen}\r\n />\r\n <SimpleDialog selectedValue={selectedValue} open={open} onClose={() => { handleClose() }} options={props.options} />\r\n </React.Fragment>\r\n );\r\n}","//CORE\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\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 Card from \"components/Card/\";\r\nimport Icon from \"components/Icon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport TextField from \"components/TextField\";\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\";\r\nimport { translate, customApp } from \"functions/\"\r\n\r\nfunction Component(props) {\r\n const { db, session } = reduxStore.getState()\r\n const { socket } = reduxStore.getState().functions\r\n const [name, setName] = React.useState(props.defaultName ? props.defaultName : '')\r\n const [add, setAdd] = React.useState(false)\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n const addCard = async () => {\r\n const { socket } = reduxStore.getState().functions\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"post\",\r\n action: \"add\"\r\n }, {\r\n _parent: hashs[0],\r\n planId: hashs[0] && hashs[0].length === 36 ? hashs[0] : null,\r\n name,\r\n type: props.cardType,\r\n status: 'notStarted'\r\n }, async (response) => {\r\n socket.emit('card.UPD', {\r\n cardId: response.id,\r\n cardData: {\r\n ...response.data,\r\n // _loaded: true,\r\n _parent: hashs[0],\r\n _timeline: {\r\n [response.log._id]: {\r\n ...response.log,\r\n _parent: [response.id],\r\n }\r\n },\r\n _users: {\r\n [session._id]: {\r\n name: reduxStore.getState().db.users[session._id].name ? reduxStore.getState().db.users[session._id].name : null,\r\n displayName: reduxStore.getState().db.users[session._id].displayName ? reduxStore.getState().db.users[session._id].displayName : null,\r\n image: reduxStore.getState().db.users[session._id].image ? reduxStore.getState().db.users[session._id].image : null,\r\n access: 5,\r\n _id: session._id\r\n }\r\n },\r\n },\r\n })\r\n })\r\n setName('')\r\n }\r\n\r\n\r\n const onDragEnd = async result => {\r\n const { destination, source, draggableId } = result\r\n\r\n if (!destination) return false\r\n\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false\r\n\r\n const itemOrderIds = props.cards\r\n itemOrderIds.splice(source.index, 1)\r\n itemOrderIds.splice(destination.index, 0, draggableId)\r\n\r\n api.put(\"cards/reorder\", {\r\n cards: itemOrderIds\r\n })\r\n\r\n let cards = {}\r\n\r\n itemOrderIds.map((a, i) => {\r\n cards = {\r\n ...cards,\r\n [a]: db.cards[a]\r\n }\r\n if (!cards[a].order)\r\n cards[a].order.low = i\r\n cards[a].order.low = i\r\n return true\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...cards\r\n }\r\n });\r\n socket.emit(\"card.UPD\", cards)\r\n return\r\n\r\n }\r\n const onDragStart = async result => {\r\n }\r\n const onDragUpdate = async result => {\r\n }\r\n\r\n // return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <React.Fragment>\r\n <DragDropContext\r\n onDragEnd={onDragEnd}\r\n onDragStart={onDragStart}\r\n onDragUpdate={onDragUpdate}\r\n >\r\n <Droppable\r\n droppableId={`Drop_${props.cardType || ''}`} //ID OF BOARD\r\n type=\"column\"\r\n direction={\"vertical\"}\r\n >\r\n {(provided, snapshot) => (\r\n <Container\r\n {...provided.droppableProps}\r\n isDraggingOver={snapshot.isDraggingOver}\r\n ref={provided.innerRef}\r\n >\r\n {props.cards.map((card, index) => (\r\n <Draggable\r\n draggableId={card}\r\n index={index}\r\n key={card}\r\n >\r\n {(provided, snapshot) => (\r\n <div\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n ref={provided.innerRef}\r\n >\r\n <Card\r\n isDragging={snapshot.isDragging && !snapshot.isDropAnimating}\r\n snapshot={snapshot}\r\n cardId={card}\r\n db={'cards'}\r\n viewButton\r\n selectOption\r\n />\r\n </div>\r\n )}\r\n </Draggable>\r\n ))}\r\n {provided.placeholder}\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n {\r\n !add &&\r\n <div style={{ position: 'relative', float: 'left', width: '100%', padding: '7px' }}>\r\n <IconButton\r\n text={translate(\"$__add\", '*')}\r\n icon=\"add_box\"\r\n iconColor={customApp('medium')}\r\n onClick={() => {\r\n setAdd(!add);\r\n }}\r\n />\r\n </div>\r\n }\r\n {\r\n add &&\r\n <React.Fragment>\r\n <div\r\n style={{ position: 'relative', float: 'left', width: '100%', padding: '7px', display: 'flex', alignItems: 'center' }}>\r\n <div style={{ width: 'calc(100% - 50px)', display: 'flex' }}>\r\n <TextField\r\n label={translate('$__nameOfCard')}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setName(d.target.value)\r\n },\r\n onBlur: (d) => {\r\n if (d.target.value === '')\r\n setAdd(!add)\r\n },\r\n onKeyDown: (e) => {\r\n if (e.keyCode === 13 && name)\r\n addCard()\r\n if (e.keyCode === 27) {\r\n setAdd(!add)\r\n setName('')\r\n }\r\n }\r\n }}\r\n autoFocus\r\n value={name}\r\n placeholder={translate('$__titleOfCard_placeholder')}\r\n />\r\n </div>\r\n <div style={{ display: 'flex' }}>\r\n <div\r\n onClick={() => addCard()}\r\n >\r\n <Icon color='green' icon={'save'} title={translate('$__save', '*')} size={props.actionsSize || '25px'} />\r\n </div>\r\n <div\r\n onClick={() => {\r\n setAdd(!add)\r\n setName('')\r\n }}\r\n >\r\n <Icon color={customApp('medium')} icon={'cancel'} title={translate(\"$__cancel\", \"*\")} size={props.actionsSize || '25px'} />\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n }\r\n </React.Fragment >\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n background-color:none;\r\n `;\r\n\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","import React from \"react\";\r\nimport { DragDropContext, Droppable } from \"react-beautiful-dnd\";\r\nimport styled from \"styled-components\";\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//DEPENDENCIES\r\nimport Column from \"./Column\";\r\n\r\n//FUNCTIONS\r\nimport { selectSWOT } from \"functions/cards\";\r\n\r\nfunction App(props) {\r\n const { db } = reduxStore.getState()\r\n\r\n React.useEffect(() => {\r\n selectSWOT(props)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onDragEnd = async result => {\r\n const { socket } = reduxStore.getState().functions\r\n const { destination, source, draggableId } = result\r\n\r\n if (result.combine) {\r\n return;\r\n }\r\n\r\n\r\n if (!destination) return false\r\n\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false\r\n\r\n const sourceColumn = source.droppableId\r\n const destinationColumn = destination.droppableId\r\n\r\n const sourceCardIds = Array.from(props.cards.filter(c => c.type === sourceColumn && !c.deleted).sort((a, b) => {\r\n if (a.order && b.order && a.order.low && b.order.low && parseInt(a.order.low) < parseInt(b.order.low)) {\r\n return -1\r\n } else if (a.order && b.order && a.order.low && b.order.low && parseInt(a.order.low) > parseInt(b.order.low)) {\r\n return 1\r\n }\r\n return 0\r\n }\r\n ).map(a => a._id))\r\n\r\n\r\n //When move Card in single Column\r\n if (sourceColumn === destinationColumn) {\r\n const newCardsIds = Array.from(props.cards.filter(c => c.type === sourceColumn && !c.deleted).sort((a, b) => {\r\n if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low)) {\r\n return -1\r\n } else if (a.order && b.order && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) > parseInt(b.order.low)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n ).map(a => a._id))\r\n newCardsIds.splice(source.index, 1)\r\n newCardsIds.splice(destination.index, 0, draggableId)\r\n\r\n let newCardsOrder = {}\r\n newCardsIds.forEach((card, i) => {\r\n newCardsOrder[card] = {\r\n ...db.cards[card],\r\n order: {\r\n low: i\r\n }\r\n }\r\n })\r\n\r\n const newState = {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...db.cards,\r\n ...newCardsOrder,\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...newState,\r\n });\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"inColumn\",\r\n }, {\r\n node: draggableId,\r\n source: source.droppableId,\r\n destination: destination.droppableId,\r\n destinationCards: newCardsIds,\r\n columnName: 'type',\r\n sourceCards: [],\r\n })\r\n return\r\n }\r\n\r\n //When move Card in mult Column\r\n sourceCardIds.splice(source.index, 1)\r\n\r\n\r\n const destinationCardIds = Array.from(props.cards.filter(c => c.type === destinationColumn).sort((a, b) => {\r\n if (a.order && b.order && a.order.low && b.order.low && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }\r\n ).map(a => a._id))\r\n destinationCardIds.splice(destination.index, 0, draggableId)\r\n\r\n let cards = {\r\n ...db.cards\r\n }\r\n sourceCardIds.forEach((a, i) => {\r\n cards = {\r\n ...cards,\r\n [a]: {\r\n ...cards[a] ? cards[a] : {},\r\n order: {\r\n low: i\r\n }\r\n }\r\n }\r\n //cards[a].order.low = i\r\n })\r\n\r\n destinationCardIds.forEach((a, i) => {\r\n cards = {\r\n ...cards,\r\n [a]: {\r\n ...cards[a] ? cards[a] : {},\r\n order: {\r\n low: i\r\n }\r\n }\r\n }\r\n })\r\n\r\n const newState = {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...cards,\r\n [draggableId]: {\r\n ...cards[draggableId],\r\n type: destinationColumn,\r\n order: {\r\n low: destination.index\r\n }\r\n }\r\n }\r\n }\r\n\r\n // console.log({\r\n // [draggableId]: {\r\n // ...db.cards[draggableId],\r\n // type: destinationColumn,\r\n // order: {\r\n // low: destination.index\r\n // }\r\n // }\r\n // })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...newState,\r\n });\r\n\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"inColumn\",\r\n }, {\r\n node: draggableId,\r\n source: source.droppableId,\r\n destination: destination.droppableId,\r\n destinationCards: destinationCardIds,\r\n columnName: 'type',\r\n sourceCards: sourceCardIds,\r\n })\r\n }\r\n\r\n return (\r\n <DragDropContext\r\n onDragEnd={onDragEnd}\r\n >\r\n <Droppable\r\n droppableId=\"ALL-COLUMNS-STATUS\"\r\n type=\"column\"\r\n direction={`${props.inLine ? 'vertical' : 'horizontal'}`}\r\n >\r\n {provided => (\r\n <Container\r\n {...props}\r\n ref={provided.innerRef}\r\n >\r\n {db.swot.map((st, index) => {\r\n const theColumn = {\r\n name: st.label,\r\n icon: st.icon,\r\n cards: [],\r\n emptyHide: false,\r\n }\r\n\r\n return <Column\r\n {...props}\r\n key={`${st.value}`}\r\n columnId={`${st.value}`}\r\n column={theColumn}\r\n cards={props.cards.filter(c => c.type === st.value).sort((a, b) => {\r\n let orderA = 0\r\n let orderB = 0\r\n if (a.order && String(a.order.low))\r\n orderA = a.order.low\r\n if (b.order && String(b.order.low))\r\n orderB = b.order.low\r\n if (parseInt(orderA) < parseInt(orderB)) {\r\n return -1\r\n } else if (parseInt(orderA) > parseInt(orderB)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n ).map(a => {\r\n return {\r\n ...a,\r\n id: a._id\r\n }\r\n })}\r\n index={index}\r\n columnsSettings={false}\r\n columnStyle={{\r\n minWidth: '300px'\r\n }}\r\n viewButton={props.viewButton || false}\r\n locked={props.lockColumns && props.lockColumns.indexOf(st.value) === -1 ? true : false}\r\n manualOrder\r\n isDropDisabled\r\n />\r\n })}\r\n {provided.placeholder}\r\n\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n )\r\n}\r\n\r\n//STYLEDS\r\nconst Container = styled.div`\r\n${props =>\r\n !props.inLine && props.styles && props.styles.discountHeight && `height:calc(100vh - ${props.styles.discountHeight}px);`\r\n }\r\n${props =>\r\n props.inLine ?\r\n `display: block;\r\n width: -webkit-fill-available;\r\n ${props.style}`\r\n :\r\n ` display: flex;\r\n width: 100%;\r\n ${props.style}\r\n @media(min-width: 960px) {\r\n display: flex;\r\n }\r\n `\r\n }\r\n @media(max-width: 959px) {\r\n display: contents !important;\r\n width: -webkit-fill-available;\r\n height:auto;\r\n }\r\n `\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n cards: store.db.cards,\r\n }\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(App);","//CORE\r\nimport React from \"react\"\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 AgileStatus from \"components/Agile/status\"\r\nimport Card from \"components/Card\"\r\nimport DialogButtons from \"components/DialogButtons\"\r\nimport DragDropCards from \"components/DragDrop/cards\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport Swot from \"components/Agile/swot\"\r\n\r\n//@MATERIAL\r\nimport Hidden from \"@material-ui/core/Hidden\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\"\r\n\r\n//ICONS\r\nimport MatrixIcon from \"assets/icons/Matrix.js\"\r\n\r\nfunction StrategyAndPlansMatrixView(props) {\r\n const { db } = reduxStore.getState()\r\n const { dataType } = db\r\n let cards = db.cards\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0] && hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n React.useEffect(() => {\r\n backToMatrix()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n let activeCards = {}\r\n\r\n Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && !db.cards[a].deleted\r\n && (\r\n db.cards[a]._planId === hashs[0]\r\n || db.cards[a]._parent === hashs[0]\r\n )\r\n ).forEach(a => {\r\n activeCards = {\r\n ...activeCards,\r\n [a]: db.cards[a]\r\n }\r\n })\r\n\r\n const selectedGuideline = Object.keys(activeCards).filter(a => activeCards[a]._selected === true && activeCards[a].type && activeCards[a].type.indexOf('guideline') > -1 && activeCards[a]._parent === hashs[0])[0] || null\r\n const selectedObjective = Object.keys(activeCards).filter(a => activeCards[a]._selected === true && activeCards[a].type && activeCards[a].type === 'objective')[0] || null\r\n const selectedGoal = Object.keys(activeCards).filter(a => activeCards[a]._selected === true && activeCards[a].type && activeCards[a].type === 'goal')[0] || null\r\n\r\n const cardsGuidelineR = Object.keys(activeCards).filter(a => activeCards[a].type === 'guidelineR' && activeCards[a]._parent === hashs[0] && !activeCards[a].deleted).sort((a, b) => {\r\n if (activeCards[a].order\r\n && String(activeCards[a].order.low)\r\n && activeCards[b].order\r\n && String(activeCards[b].order.low) &&\r\n parseInt(activeCards[a].order.low) > parseInt(activeCards[b].order.low)\r\n )\r\n return 1\r\n return -1\r\n })\r\n const cardsGuidelineC = Object.keys(activeCards).filter(a => activeCards[a].type === 'guidelineC' && activeCards[a]._parent === hashs[0] && !activeCards[a].deleted).sort((a, b) => {\r\n if (activeCards[a].order\r\n && String(activeCards[a].order.low)\r\n && activeCards[b].order\r\n && String(activeCards[b].order.low) &&\r\n parseInt(activeCards[a].order.low) > parseInt(activeCards[b].order.low)\r\n )\r\n return 1\r\n return -1\r\n })\r\n const cardsGuidelineE = Object.keys(activeCards).filter(a => activeCards[a].type === 'guidelineE' && activeCards[a]._parent === hashs[0] && !activeCards[a].deleted).sort((a, b) => {\r\n if (activeCards[a].order\r\n && String(activeCards[a].order.low)\r\n && activeCards[b].order\r\n && String(activeCards[b].order.low) &&\r\n parseInt(activeCards[a].order.low) > parseInt(activeCards[b].order.low)\r\n )\r\n return 1\r\n return -1\r\n })\r\n const cardsGuidelineD = Object.keys(activeCards).filter(a => activeCards[a].type === 'guidelineD' && activeCards[a]._parent === hashs[0] && !activeCards[a].deleted).sort((a, b) => {\r\n if (activeCards[a].order\r\n && String(activeCards[a].order.low)\r\n && activeCards[b].order\r\n && String(activeCards[b].order.low) &&\r\n parseInt(activeCards[a].order.low) > parseInt(activeCards[b].order.low)\r\n )\r\n return 1\r\n return -1\r\n })\r\n\r\n const backToMatrix = () => {\r\n let cards = { ...reduxStore.getState().db.cards }\r\n\r\n Object.keys(activeCards).forEach(a => {\r\n if (activeCards[a] && activeCards[a]._selected) {\r\n activeCards[a]._selected = false\r\n }\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...cards,\r\n ...activeCards\r\n }\r\n })\r\n }\r\n\r\n let actions\r\n if (selectedGoal) {\r\n actions = Object.keys(activeCards).filter(a => activeCards[a]._parent === selectedGoal && !activeCards[a].checklist)\r\n } else if (selectedObjective) {\r\n actions = Object.keys(activeCards).filter(a => activeCards[a]._parent === selectedObjective && !activeCards[a].checklist)\r\n } else if (selectedGuideline) {\r\n actions = Object.keys(activeCards).filter(a => activeCards[a]._parent === selectedGuideline && !activeCards[a].checklist)\r\n }\r\n\r\n let swotCards = Object.keys(activeCards).filter(a => activeCards[a]._parent === hashs[0])\r\n const selectedCard = activeCards\r\n && Object.keys(activeCards).filter(a => activeCards[a]\r\n && activeCards[a]._selected && activeCards[a].type\r\n && activeCards[a].type.indexOf('guideline') > -1)\r\n\r\n return (\r\n <div style={{\r\n width: 'inherit',\r\n padding: 15\r\n }}>\r\n {!selectedObjective &&\r\n <React.Fragment>\r\n <Hidden smDown>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(50% - 7px)',\r\n marginRight: '14px',\r\n padding: '7px',\r\n background: customApp('ColumnTitleColor'),\r\n color: customApp('colorText'),\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n marginBottom: '15px',\r\n textAlign: 'center',\r\n }}>{translate('$__internalAspects', 1)}</div>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(50% - 7px)',\r\n padding: '7px',\r\n background: customApp('ColumnTitleColor'),\r\n color: customApp('colorText'),\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n marginBottom: '15px',\r\n textAlign: 'center',\r\n }}>{translate('$__externalAspects', 1)}</div>\r\n </Hidden>\r\n <Hidden smUp>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% - 7px)',\r\n padding: '7px',\r\n background: customApp('ColumnTitleColor'),\r\n color: customApp('colorText'),\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n marginBottom: '15px',\r\n textAlign: 'center',\r\n }}>{translate('$__s.W.O.T', '*')}</div>\r\n </Hidden>\r\n <Swot\r\n cards={swotCards.map(a => activeCards[a])}\r\n showSelected={Object.keys(activeCards).filter(card => activeCards[card]._selected === true).length > 0 ? true : false}\r\n lockColumns={\r\n selectedCard.length > 0 && activeCards[selectedCard[0]].type === 'guidelineD' ? ['strength', 'threat']\r\n : selectedCard.length > 0 && activeCards[selectedCard[0]].type === 'guidelineR' ? ['strength', 'opportunity']\r\n : selectedCard.length > 0 && activeCards[selectedCard[0]].type === 'guidelineE' ? ['weakness', 'threat']\r\n : selectedCard.length > 0 && activeCards[selectedCard[0]].type === 'guidelineC' ? ['weakness', 'opportunity']\r\n : null\r\n }\r\n columnStyle={{\r\n minWidth: 'calc(25% - 14px)',\r\n }}\r\n showOrder={true}\r\n inLineAdd={true}\r\n />\r\n </React.Fragment>\r\n }\r\n <GridContainer >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% - 28px)',\r\n marginRight: '14px',\r\n marginLeft: '14px',\r\n padding: '7px',\r\n background: customApp('ColumnTitleColor'),\r\n color: customApp('colorText'),\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n marginBottom: '15px',\r\n textAlign: 'center',\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n <Icon icon={MatrixIcon} color={customApp('textColor')} size={25} /><span style={{ marginLeft: 15 }}>{selectedGuideline ? translate('$__planning', 1) : 'MATRIX SWOT'}</span>\r\n </div>\r\n </div>\r\n {!selectedGuideline ?\r\n <GridItem md={12} >\r\n <GridContainer style={{ paddingBottom: '33px' }}>\r\n <GridItem md={3} sm={12} xs={12}>\r\n <HeaderWithIcon\r\n title={translate('$__guidelineR', 1)}\r\n icon={dataType.filter(a => a.name === 'guidelineR')[0].icon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n minHeight: \"130px\",\r\n backgroundColor: '#F9F9F9',\r\n borderRadius: '0 0 7px 7px'\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('menu'),\r\n fontWeight: 'bold',\r\n paddingBottom: '7px',\r\n borderBottom: 'solid 1px #e4e4e4',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineRtypes', 1)}\r\n </div>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('medium'),\r\n fontSize: '14px',\r\n padding: '7px',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineRdetails', 1)}\r\n </div>\r\n </div>\r\n <DragDropCards cards={cardsGuidelineR} cardType={'guidelineR'} />\r\n </GridItem>\r\n <GridItem md={3} sm={12} xs={12}>\r\n <HeaderWithIcon\r\n title={translate('$__guidelineD', 1)}\r\n icon={dataType.filter(a => a.name === 'guidelineD')[0].icon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n minHeight: \"130px\",\r\n backgroundColor: '#F9F9F9',\r\n borderRadius: '0 0 7px 7px'\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('menu'),\r\n fontWeight: 'bold',\r\n paddingBottom: '7px',\r\n borderBottom: 'solid 1px #e4e4e4',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineDtypes', 1)}\r\n </div>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('medium'),\r\n fontSize: '14px',\r\n padding: '7px',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineDdetails', 1)}\r\n </div>\r\n </div>\r\n <DragDropCards cards={cardsGuidelineD} cardType={'guidelineD'} />\r\n </GridItem>\r\n <GridItem md={3} sm={12} xs={12}>\r\n <HeaderWithIcon\r\n title={translate('$__guidelineC', 1)}\r\n icon={dataType.filter(a => a.name === 'guidelineC')[0].icon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n minHeight: \"130px\",\r\n backgroundColor: '#F9F9F9',\r\n borderRadius: '0 0 7px 7px'\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('menu'),\r\n fontWeight: 'bold',\r\n paddingBottom: '7px',\r\n borderBottom: 'solid 1px #e4e4e4',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineCtypes', 1)}\r\n </div>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('medium'),\r\n fontSize: '14px',\r\n padding: '7px',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineCdetails', 1)}\r\n </div>\r\n </div>\r\n <DragDropCards cards={cardsGuidelineC} cardType={'guidelineC'} />\r\n </GridItem>\r\n <GridItem md={3} sm={12} xs={12}>\r\n <HeaderWithIcon\r\n title={translate('$__guidelineE', 1)}\r\n icon={dataType.filter(a => a.name === 'guidelineE')[0].icon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n />\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n minHeight: \"130px\",\r\n backgroundColor: '#F9F9F9',\r\n borderRadius: '0 0 7px 7px'\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('menu'),\r\n fontWeight: 'bold',\r\n paddingBottom: '7px',\r\n borderBottom: 'solid 1px #e4e4e4',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineEtypes', 1)}\r\n </div>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n color: customApp('medium'),\r\n fontSize: '14px',\r\n padding: '7px',\r\n textAlign: 'center'\r\n }}\r\n >\r\n {translate('$__guidelineEdetails', 1)}\r\n </div>\r\n </div>\r\n <DragDropCards cards={cardsGuidelineE} cardType={'guidelineE'} />\r\n </GridItem>\r\n </GridContainer>\r\n </GridItem>\r\n :\r\n <React.Fragment>\r\n <GridItem md={3} sm={12} xs={12}>\r\n <div>\r\n <HeaderWithIcon\r\n title={'MATRIX SWOT'}\r\n icon={dataType.filter(a => a.name === 'matrix')[0].icon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n />\r\n {props.hidePrivate && cards[selectedGuideline] && cards[selectedGuideline].private ?\r\n <React.Fragment></React.Fragment>\r\n :\r\n <Card data={cards[selectedGuideline]} db='cards' selectOption expanded />\r\n }\r\n <IconButton icon={'undo'} text={translate(\"$__backToMatrix\", \"*\")}\r\n onClick={() => {\r\n backToMatrix('guideline')\r\n }} />\r\n </div>\r\n {selectedObjective &&\r\n <div>\r\n <HeaderWithIcon\r\n title={translate('$__objective', 1)}\r\n icon={dataType.filter(a => a.name === 'objective')[0].icon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n\r\n />\r\n {props.hidePrivate && cards[selectedObjective] && cards[selectedObjective].private ?\r\n <React.Fragment></React.Fragment>\r\n :\r\n <Card data={cards[selectedObjective]} db='cards' selectOption expanded />\r\n }\r\n\r\n </div>\r\n }\r\n {selectedGoal &&\r\n <div>\r\n <HeaderWithIcon\r\n title={translate('$__goal', 1)}\r\n icon={dataType.filter(a => a.name === 'goal')[0].icon}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n customButtons={[\r\n {\r\n title: \"$__new\",\r\n icon: \"add_box\",\r\n color: customApp('menu'),\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: 'new',\r\n activeModule: dataType.filter(a => a.name === 'goal')[0].iniModule,\r\n db: 'cards',\r\n data: {\r\n type: 'goal',\r\n _parent: selectedObjective,\r\n status: 'notStarted'\r\n }\r\n })\r\n },\r\n }\r\n ]}\r\n />\r\n {props.hidePrivate && cards[selectedGoal] && cards[selectedGoal].private ?\r\n <React.Fragment></React.Fragment>\r\n :\r\n <Card data={cards[selectedGoal]} db='cards' selectOption expanded />\r\n }\r\n </div>\r\n }\r\n </GridItem>\r\n <GridItem md={9} sm={12} xs={12}>\r\n <HeaderWithIcon\r\n title={\r\n selectedObjective && !selectedGoal ?\r\n translate('$__goals', 1)\r\n : !selectedObjective ?\r\n translate('$__objectives', 1)\r\n : translate('$__actions', 1)\r\n }\r\n icon={\r\n selectedObjective && !selectedGoal ?\r\n dataType.filter(a => a.name === 'goal')[0].icon\r\n : !selectedObjective ?\r\n dataType.filter(a => a.name === 'objective')[0].icon\r\n : 'view_column'\r\n }\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n actionButtonsStyle={{\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n itemAligns: \"center\"\r\n }}\r\n customButtons={[\r\n selectedGoal ? {\r\n component: (\r\n <DialogButtons\r\n iconColor={customApp(\"color\")}\r\n options={\r\n dataType.filter(a => a.module === 'agile').map(a => (\r\n {\r\n icon: a.icon,\r\n name: translate(`$__${a.name}`, 1),\r\n onClick: () => (\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: 'new',\r\n db: 'cards',\r\n data: {\r\n type: a.name,\r\n _parent: selectedGoal,\r\n status: 'notStarted'\r\n }\r\n })\r\n )\r\n }\r\n )\r\n )\r\n } />\r\n )\r\n } :\r\n {\r\n title: \"$__new\",\r\n icon: \"add_box\",\r\n color: customApp('color'),\r\n actionsSize: \"22px\",\r\n show: true,\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: 'new',\r\n activeModule: dataType.filter(a => a.name === 'objective')[0].iniModule,\r\n db: 'cards',\r\n data: selectedObjective ? {\r\n type: 'goal',\r\n _parent: selectedObjective,\r\n status: 'notStarted'\r\n } : {\r\n type: 'objective',\r\n _parent: selectedGuideline,\r\n status: 'notStarted'\r\n }\r\n })\r\n },\r\n }\r\n ]}\r\n />\r\n <AgileStatus cards={actions?.map(a => activeCards[a]) || []} viewButton />\r\n </GridItem>\r\n </React.Fragment>\r\n }\r\n </GridContainer>\r\n </div>\r\n\r\n )\r\n\r\n}\r\nconst mapStateToProps = (store, props) => ({\r\n cards: store.db.cards,\r\n hidePrivate: store.controls.hidePrivate,\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StrategyAndPlansMatrixView)\r\n","import React, { useState } from 'react'\r\nimport Autocomplete from \"components/AutoComplete/multiple\"\r\nimport AutocompleteS from \"components/AutoComplete\"\r\nimport SelectUsers from \"components/User/select\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store/\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from 'functions'\r\n\r\nimport {\r\n cardsAccess\r\n} from \"functions/users\"\r\n\r\nimport {\r\n updateCardv2,\r\n updateCardStatus\r\n} from \"functions/cards\"\r\n\r\n//COMPONENTS\r\nimport Icon from 'components/Icon'\r\nimport Checkbox from 'components/Checkbox'\r\nimport ProgressCircular from \"components/Progress/circular\"\r\nimport TextField from \"components/TextField\";\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 Tooltip from \"@material-ui/core/Tooltip\"\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport FormGroup from '@material-ui/core/FormGroup'\r\n\r\n\r\nconst EditModal = (props) => {\r\n const {\r\n db\r\n } = reduxStore.getState();\r\n const [loading, setLoading] = useState(false)\r\n const [hover, setHover] = useState(false)\r\n const [cardsChanged, setCardsChanged] = useState(0)\r\n const [checkedBox, setCheckedBox] = useState({\r\n index: 0\r\n })\r\n // {\r\n // all: true,\r\n // 'null': true,\r\n // normal: true,\r\n // low: true,\r\n // medium: true,\r\n // high: true,\r\n // },\r\n\r\n const [searchValues, setValues] = useState({\r\n status: {\r\n all: true,\r\n notStarted: true,\r\n awaitAction: true,\r\n paused: true,\r\n inProgress: true,\r\n completed: true,\r\n },\r\n users: [],\r\n tags: [],\r\n priority: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n prioritySelected: \"normal\",\r\n statusSelected: {\r\n color: \"#929497\",\r\n icon: \"query_builder\",\r\n label: \"\",\r\n value: null\r\n },\r\n risk: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n complexity: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n impact: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n })\r\n\r\n\r\n const selectUser = async (id, cardID) => {\r\n let access = 1\r\n const noNotification = false\r\n await cardsAccess(props, id, access, cardID, noNotification)\r\n }\r\n\r\n\r\n const updateCards = () => {\r\n props.cards.forEach(async (cardID, index, arr) => {\r\n if (searchValues?.users) {\r\n searchValues.users.forEach((item) => {\r\n selectUser(item, cardID)\r\n })\r\n }\r\n\r\n if (searchValues?.statusSelected?.value) {\r\n updateCardStatus(\r\n {\r\n ...props,\r\n data: { _id: cardID }\r\n }, { status: searchValues.statusSelected.value })\r\n }\r\n\r\n const request = await updateCardv2(props, [{\r\n _id: cardID,\r\n priority: searchValues.prioritySelected,\r\n _tags: [\r\n ...reduxStore.getState().db.cards[cardID]?._tags,\r\n ...searchValues.tags\r\n ]\r\n }])\r\n if (request) {\r\n setCardsChanged(prev => prev + 1)\r\n }\r\n if (index === arr.length - 1) {\r\n setTimeout(() => {\r\n props.handleClose()\r\n props.handleCardsUpdate(true)\r\n }, 1000);\r\n }\r\n });\r\n }\r\n\r\n const indicatorField = (ind) => {\r\n return (\r\n <Accordion style={{ width: \"100%\" }}\r\n expanded={true}\r\n\r\n >\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\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px', justifyContent: \"space-between\", width: \"100%\", display: \"flex\" }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n }}>\r\n {translate(`$__${ind}`)}\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n }}>\r\n {Object.keys(searchValues[ind])\r\n .filter((a, i) => searchValues[ind][a] && a !== 'all')\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(db.priority.filter(fil => String(fil.value) === String(a))[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: db.priority.filter(fil => String(fil.value) === String(a))[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </AccordionSummary>\r\n <AccordionDetails\r\n style={{ minWidth: '100%' }}\r\n >\r\n <FormGroup style={{ width: \"100%\" }}>\r\n {db.priority.map((pr, i) =>\r\n <React.Fragment\r\n key={i}\r\n >\r\n <FormControlLabel\r\n style={{ minWidth: '100%', borderLeft: `3px solid ${pr.color}` }}\r\n control={\r\n <Checkbox\r\n color=\"default\"\r\n checked={i === checkedBox.index ? true : false}\r\n onChange={() => {\r\n setCheckedBox({\r\n index: i\r\n })\r\n setValues({\r\n ...searchValues,\r\n prioritySelected: pr.value\r\n })\r\n }}\r\n />\r\n }\r\n\r\n label={translate(pr.label)}\r\n />\r\n </React.Fragment>\r\n )}\r\n </FormGroup>\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n }\r\n\r\n // console.log(searchValues)\r\n\r\n return (\r\n <div style={{ marginTop: \"610px\" }}>\r\n <div>\r\n <p\r\n style={{\r\n marginTop: \"2px\",\r\n height: \"60px\",\r\n textAlign: \"center\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n fontWeight: \"bold\",\r\n borderBottom: \"1px solid #d1d1cf\",\r\n fontSize: \"16px\"\r\n }}\r\n >\r\n <Icon\r\n size=\"25px\"\r\n style={{\r\n alignSelf: \"center\",\r\n marginRight: \"10px\",\r\n color: \"#001836\"\r\n }}\r\n >\r\n edit\r\n </Icon>\r\n {translate('$__MultipleEdit')}\r\n </p>\r\n <div id=\"getElements_40\">\r\n <Icon\r\n onClick={(e) => {\r\n props.handleCardsUpdate(true)\r\n props.handleClose()\r\n }}\r\n style={{\r\n alignSelf: \"center\",\r\n height: \"25px\",\r\n cursor: \"pointer\",\r\n position: \"absolute\",\r\n width: \"20px\",\r\n right: \"15px\",\r\n top: \"13px\",\r\n color: \"grey\"\r\n }}\r\n size=\"30px\"\r\n\r\n >\r\n close\r\n </Icon>\r\n </div>\r\n </div>\r\n <p style={{ marginLeft: \"25px\", fontWeight: \"bold\", marginTop: \"30px\" }}> {translate('$__AddUsers') + \":\"}</p>\r\n <div style={{ marginLeft: \"30px\" }}>\r\n <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={reduxStore.getState().db.cards[props.nodeId] || null}\r\n noLimit\r\n multiple={true}\r\n onSelect={(v) => {\r\n // console.log(v)\r\n // console.log(searchValues?.users)\r\n setValues({\r\n ...searchValues,\r\n users: [\r\n ...v\r\n ]\r\n })\r\n }}\r\n selected={searchValues?.users}\r\n transparent\r\n />\r\n </div>\r\n <div style={{ width: \"490px\", marginTop: \"5px\", marginLeft: \"25px\" }}>\r\n <Autocomplete\r\n options={reduxStore.getState().db.tag}\r\n style={{ width: '100%' }}\r\n name=\"tag\"\r\n ws\r\n multiple\r\n value={searchValues.tags}\r\n placeholder={translate('$__tags')}\r\n onChange={\r\n (v) => {\r\n // console.log(v)\r\n setValues({\r\n ...searchValues,\r\n tags: [\r\n ...v\r\n ]\r\n })\r\n }\r\n }\r\n />\r\n </div>\r\n\r\n <div style={{ width: \"490px\", marginTop: \"15px\", marginLeft: \"25px\" }}>\r\n <AutocompleteS\r\n id=\"combo-box-demo\"\r\n options={db.status}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"status\"\r\n value={searchValues.statusSelected}\r\n disableClearable\r\n placeholder={translate('$__status')}\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__status\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={db.status[0]}\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n setValues({\r\n ...searchValues,\r\n statusSelected: {\r\n ...v\r\n }\r\n })\r\n }\r\n }\r\n />\r\n {indicatorField(\"priority\")}\r\n </div>\r\n <div style={{ width: \"100%\", display: \"flex\", justifyContent: \"center\" }}>\r\n {!loading ? <button\r\n onClick={() => {\r\n updateCards()\r\n setLoading(true)\r\n }}\r\n onMouseEnter={() => setHover(true)}\r\n onMouseLeave={() => setHover(false)}\r\n style={{\r\n minWidth: \"140px\",\r\n height: \"40px\",\r\n cursor: \"pointer\",\r\n border: \"1px solid #d1d1cf\",\r\n fontWeight: \"bolder\",\r\n marginBottom: \"30px\",\r\n marginTop: \"30px\",\r\n backgroundColor: hover ? \"rgba(0, 0, 0, 0.1)\" : \"white\"\r\n }}\r\n >\r\n {translate('$__conclude')}\r\n </button>\r\n : <div style={{\r\n marginBottom: \"30px\",\r\n marginTop: \"30px\",\r\n display: \"flex\",\r\n fontWeight: 'bold',\r\n }}>\r\n <ProgressCircular />\r\n <div style={{ marginLeft: \"16px\", marginTop: \"3px\" }}> {`${cardsChanged} / ${props.cards.length}`}</div>\r\n </div >}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(EditModal)","import React, { useEffect } from 'react'\r\nimport IconComponent from 'components/Icon'\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//functions\r\nimport { translate, deleteNode, appAlert } from 'functions';\r\nimport { setMyDay, deleteCard } from \"functions/cards\"\r\n\r\n//COMPONENTS\r\nimport EditModal from './EditModal';\r\n\r\n\r\n\r\nconst SelectedMenu = (props) => {\r\n const [selectedCards, setSelectedCards] = React.useState({\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n })\r\n const [edit, setEdit] = React.useState(false)\r\n\r\n useEffect(() => {\r\n if (JSON.stringify(props.selectCards) !== JSON.stringify(selectedCards)) {\r\n setSelectedCards(a => ({\r\n ...a,\r\n ...props.selectCards\r\n }))\r\n }\r\n // eslint-disable-next-line\r\n }, [props.selectCards]);\r\n\r\n\r\n\r\n const addMyday = () => {\r\n appAlert({\r\n message: `Adicionar atividades ao meu dia? `,\r\n variant: 'info',\r\n persist: true,\r\n horizontal: 'right',\r\n confirm: () => {\r\n const sessionId = reduxStore.getState().session._id\r\n const cards = [...selectedCards.checkSelectedCards, ...selectedCards.childrenChecked]\r\n\r\n cards.forEach((cardID) => {\r\n setMyDay(props, {\r\n _id: cardID,\r\n userId: sessionId,\r\n option: true\r\n })\r\n\r\n })\r\n appAlert({\r\n message: `Atividades adicionadas ao meu dia`,\r\n variant: 'info',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n })\r\n }\r\n\r\n\r\n const deleteCards = () => {\r\n\r\n const cards = [...selectedCards.checkSelectedCards, ...selectedCards.childrenChecked]\r\n appAlert({\r\n message: `Excluir atividades`,\r\n variant: 'warning',\r\n persist: true,\r\n horizontal: 'right',\r\n confirm: () => {\r\n cards.forEach((cardID) => {\r\n deleteCard(props, { _id: cardID }, false)\r\n deleteNode(props, { _id: cardID }, false)\r\n })\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n\r\n setSelectedCards({\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n })\r\n appAlert({\r\n message: `Atividades excluidas`,\r\n variant: 'info',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n props.handleState()\r\n }\r\n })\r\n }\r\n\r\n\r\n return (\r\n <div>\r\n {selectedCards.checkSelectedCards.length > 0 && <div\r\n style={{\r\n width: '100vw',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n height: '60px',\r\n position: 'fixed',\r\n top: '0px',\r\n backgroundColor: '#eeeeee',\r\n borderBottom: \"1px solid #d1d1cf\",\r\n opacity: '1',\r\n zIndex: '50'\r\n }}>\r\n <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', marginLeft: '-300px', position: \"relative\" }}>\r\n <p style={{ position: \"absolute\", left: \"-197px\", top: \"20px\", fontWeight: \"bold\", fontSize: \"16px\" }}>{translate(\"$__selectedActivities\")} {[...props.selectCards.checkSelectedCards, ...props.selectCards.childrenChecked].length}</p>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", marginLeft: '10px', cursor: \"pointer\" }}\r\n onMouseOver={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0.12)\"}\r\n onMouseOut={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0)\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n selectedCards: selectedCards,\r\n })\r\n setSelectedCards({\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n })\r\n props.handleState()\r\n props.handleCheckBoxState()\r\n }}>\r\n <IconComponent\r\n title={translate(\"$__moveOrCopy\")}\r\n style={{ width: \"40px\", height: \"40px\" }}\r\n size={30} >content_copy</IconComponent>\r\n </div>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", marginLeft: '10px', cursor: \"pointer\" }}\r\n onMouseOver={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0.12)\"}\r\n onMouseOut={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0)\"}\r\n onClick={() => {\r\n setEdit(true)\r\n props.handleCardsUpdate(false)\r\n }}>\r\n <IconComponent title={\"edit\"} size={30} style={{ width: \"40px\", height: \"40px\" }}>edit</IconComponent>\r\n </div>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", marginLeft: '10px', cursor: \"pointer\" }}\r\n onMouseOver={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0.12)\"}\r\n onMouseOut={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0)\"}\r\n onClick={() => {\r\n deleteCards()\r\n }}>\r\n <IconComponent title={translate(\"$__deleteCards\")} size={30} style={{ width: \"40px\", height: \"40px\", color: \"red\" }}>delete</IconComponent>\r\n </div>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", marginLeft: '10px', cursor: \"pointer\" }}\r\n onMouseOver={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0.12)\"}\r\n onMouseOut={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0)\"}\r\n onClick={() => {\r\n addMyday()\r\n }}>\r\n <IconComponent title={translate(\"$__addMyDay\")} size={30} style={{ width: \"40px\", height: \"40px\", color: \"lightblue\" }}>alarm_add</IconComponent>\r\n </div>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", marginLeft: '10px', cursor: \"pointer\" }}\r\n onMouseOver={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0.12)\"}\r\n onMouseOut={(e) => e.target.style.backgroundColor = \"rgba(0, 0, 0, 0)\"}\r\n onClick={() => {\r\n setSelectedCards({\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n })\r\n props.handleState()\r\n }}>\r\n <IconComponent title={translate(\"$__cancel\")} size={30} style={{ width: \"40px\", height: \"40px\", color: \"grey\" }}>close</IconComponent>\r\n </div>\r\n </div>\r\n </div>}\r\n {\r\n edit && <><div\r\n onClick={(e) => {\r\n setEdit(prev => !prev)\r\n e.stopPropagation();\r\n }}\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backdropFilter: 'blur(2px)',\r\n zIndex: 98,\r\n }}>\r\n </div>\r\n <div style={{\r\n position: 'absolute',\r\n borderRadius: \"5px\",\r\n left: 'calc(50% - 65px)',\r\n transform: 'translate(-50%, -50%)',\r\n backgroundColor: \"white\",\r\n width: \"540px\",\r\n zIndex: 99\r\n }}>\r\n <EditModal\r\n handleCardsUpdate={(value) => props.handleCardsUpdate(value)}\r\n cards={[...props.selectCards.checkSelectedCards, ...props.selectCards.childrenChecked]}\r\n handleClose={() => setEdit(prev => !prev)} nodeID={reduxStore.getState().db.cards[props.nodeId]}\r\n />\r\n\r\n </div>\r\n </>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, props) => ({\r\n controls: store.controls,\r\n cards: store.db.cards\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(SelectedMenu);","//CORE\r\nimport React from \"react\";\r\nimport ReactExport from \"react-data-export\";\r\nimport moment from \"moment-timezone\";\r\nimport MD5 from \"crypto-js/md5\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//@MATERIAL\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport Icon from \"@material-ui/core/Icon\";\r\n\r\n//FUNCTIONS\r\nimport { translate, getDate } from \"functions/\";\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\n// Estilos para o componente\r\nconst useStyles = makeStyles(theme => ({\r\n exportButton: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.primary.dark,\r\n },\r\n },\r\n exportIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n noDataMessage: {\r\n padding: theme.spacing(2),\r\n color: theme.palette.text.secondary,\r\n fontStyle: 'italic'\r\n }\r\n}));\r\n\r\nfunction ExportAll(props) {\r\n const classes = useStyles();\r\n const [dataCompleted, setDataCompleted] = React.useState(false);\r\n const [overviewData, setOverviewData] = React.useState({\r\n guidelines: [],\r\n objectives: [],\r\n goals: [],\r\n actions: []\r\n });\r\n const [userDataSet, setUserDataSet] = React.useState([]);\r\n\r\n // Estado para nomes customizados das colunas\r\n const [customColumnNames, setCustomColumnNames] = React.useState({\r\n guidelines: translate('$__guidelines', 1),\r\n objectives: translate('$__objectives', 1),\r\n goals: translate('$__goals', 1),\r\n actions: translate('$__actions', 1)\r\n });\r\n\r\n const { db } = reduxStore.getState();\r\n\r\n // Cria um mapa de tipos de cards para tradução\r\n const cardTypeMap = {\r\n \"guideline\": translate('$__guideline', 1),\r\n \"guidelineR\": translate('$__guideline', 1) + \" R\",\r\n \"guidelineD\": translate('$__guideline', 1) + \" D\",\r\n \"guidelineC\": translate('$__guideline', 1) + \" C\",\r\n \"guidelineE\": translate('$__guideline', 1) + \" E\",\r\n \"objective\": translate('$__objective', 1),\r\n \"goal\": translate('$__goal', 1),\r\n \"action\": translate('$__action', 1),\r\n \"task\": translate('$__task', 1),\r\n \"initiative\": translate('$__initiative', 1)\r\n };\r\n\r\n // Função para criar mapa de relacionamento entre cards\r\n const createCardRelationMap = (cards) => {\r\n const map = {};\r\n\r\n // Primeiro passamos por todos os cards para construir o mapa\r\n Object.keys(cards).forEach(cardId => {\r\n try {\r\n const card = cards[cardId];\r\n if (!card) return;\r\n\r\n const parentId = card._parent;\r\n\r\n if (!map[cardId]) {\r\n map[cardId] = {\r\n id: cardId,\r\n parentId: parentId,\r\n type: card.type,\r\n name: card.name || '',\r\n code: card._cardCode || cardId.substring(0, 8),\r\n ancestors: []\r\n };\r\n }\r\n } catch (err) {\r\n console.error(`Erro ao mapear card ${cardId}:`, err);\r\n }\r\n });\r\n\r\n // Agora preenchemos os ancestrais para cada card\r\n Object.keys(map).forEach(cardId => {\r\n try {\r\n fillAncestors(cardId, map);\r\n } catch (err) {\r\n console.error(`Erro ao preencher ancestrais do card ${cardId}:`, err);\r\n }\r\n });\r\n\r\n return map;\r\n };\r\n\r\n // Função auxiliar para preencher ancestrais recursivamente\r\n const fillAncestors = (cardId, map, depth = 0) => {\r\n // Limite de profundidade para evitar loops infinitos\r\n if (depth > 10) return [];\r\n\r\n const card = map[cardId];\r\n if (!card) return [];\r\n\r\n // Se já calculamos os ancestrais, apenas retornamos\r\n if (card.ancestors.length > 0) return card.ancestors;\r\n\r\n // Se não tem pai, não tem ancestrais\r\n if (!card.parentId || !map[card.parentId]) return [];\r\n\r\n // Adiciona o pai como primeiro ancestral\r\n const parent = map[card.parentId];\r\n card.ancestors = [parent];\r\n\r\n // Adiciona os ancestrais do pai\r\n const parentAncestors = fillAncestors(card.parentId, map, depth + 1);\r\n if (parentAncestors && parentAncestors.length > 0) {\r\n card.ancestors = [...card.ancestors, ...parentAncestors];\r\n }\r\n\r\n return card.ancestors;\r\n };\r\n\r\n // Função auxiliar para processar um card para exportação\r\n const processCardForExport = (card, type, relationMap, allCards) => {\r\n if (!card) return null;\r\n\r\n try {\r\n // Obter o card do mapa de relações\r\n const cardRelation = relationMap[card._id];\r\n const ancestors = cardRelation ? cardRelation.ancestors : [];\r\n\r\n // Encontrar ancestrais por tipo\r\n const guideline = ancestors.find(a => a.type && a.type.indexOf(\"guideline\") > -1);\r\n const objective = ancestors.find(a => a.type === \"objective\");\r\n const goal = ancestors.find(a => a.type === \"goal\");\r\n\r\n // Obter responsável\r\n let responsibleName = \"\";\r\n if (card._users) {\r\n const responsible = Object.values(card._users).find(user => user.isResponsible);\r\n if (responsible) {\r\n responsibleName = responsible.name;\r\n } else {\r\n const admin = Object.values(card._users).find(user => String(user.access).startsWith(\"5\"));\r\n if (admin) responsibleName = admin.name;\r\n }\r\n }\r\n\r\n // Processar tags\r\n let tagsStr = \"\";\r\n if (card._tags && Array.isArray(card._tags)) {\r\n tagsStr = card._tags\r\n .filter(tag => tag && tag.label)\r\n .map(tag => tag.label)\r\n .join(\" || \");\r\n }\r\n\r\n // Processar datas\r\n const startDate = card.startDate ?\r\n getDate(card.startDate.low || card.startDate, \"YYYY-MM-DD HH:mm\") : \"\";\r\n const endDate = card.endDate ?\r\n getDate(card.endDate.low || card.endDate, \"YYYY-MM-DD HH:mm\") : \"\";\r\n const updated_at = card.updated_at ?\r\n getDate(card.updated_at.low || card.updated_at, \"YYYY-MM-DD HH:mm\") : \"\";\r\n\r\n // Resultado base\r\n const result = {\r\n name: card.name || \"\",\r\n description: card.description || \"\",\r\n status: card.status || \"\",\r\n startDate,\r\n endDate,\r\n priority: card.priority || \"\",\r\n createdBy: card._createdBy?.name || \"\",\r\n responsible: responsibleName,\r\n updated_at,\r\n parent: card._parent && allCards[card._parent] ? allCards[card._parent].name : \"\",\r\n cardCode: card._cardCode || card._id.substring(0, 8),\r\n tags: tagsStr\r\n };\r\n\r\n // Adicionar informações de hierarquia\r\n if (guideline) {\r\n result.parentGuidelineName = guideline.name;\r\n result.parentGuidelineCode = guideline.code;\r\n }\r\n\r\n if (objective) {\r\n result.parentObjectiveName = objective.name;\r\n result.parentObjectiveCode = objective.code;\r\n }\r\n\r\n if (goal) {\r\n result.parentGoalName = goal.name;\r\n result.parentGoalCode = goal.code;\r\n }\r\n\r\n // Para objetivos, adicionar apenas guideline como pai\r\n if (type === \"objective\") {\r\n result.parentGuidelineName = guideline ? guideline.name : \"\";\r\n result.parentGuidelineCode = guideline ? guideline.code : \"\";\r\n }\r\n\r\n // Para metas, adicionar objective e guideline como ancestrais\r\n if (type === \"goal\") {\r\n result.parentObjectiveName = objective ? objective.name : \"\";\r\n result.parentObjectiveCode = objective ? objective.code : \"\";\r\n result.grandparentGuidelineName = guideline ? guideline.name : \"\";\r\n result.grandparentGuidelineCode = guideline ? guideline.code : \"\";\r\n }\r\n\r\n // Para ações, adicionar goal, objective e guideline como ancestrais\r\n if (type === \"action\") {\r\n result.parentGoalName = goal ? goal.name : \"\";\r\n result.parentGoalCode = goal ? goal.code : \"\";\r\n result.grandparentObjectiveName = objective ? objective.name : \"\";\r\n result.grandparentObjectiveCode = objective ? objective.code : \"\";\r\n result.greatGrandparentGuidelineName = guideline ? guideline.name : \"\";\r\n result.greatGrandparentGuidelineCode = guideline ? guideline.code : \"\";\r\n }\r\n\r\n // Adicionar campos específicos por tipo\r\n if (type === \"guideline\") {\r\n result.ref1 = card.ref1 || \"\";\r\n result.ref2 = card.ref2 || \"\";\r\n result.risk = card.risk || \"\";\r\n result.impact = card.impact || \"\";\r\n } else if (type === \"objective\") {\r\n result.ref2 = card.ref2 || \"\";\r\n result.complexity = card.complexity || \"\";\r\n } else if (type === \"goal\") {\r\n result.value = formatValue(card.value);\r\n result.progress = card.progress || \"\";\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.error(`Erro ao processar card ${card._id} para exportação:`, error);\r\n return null;\r\n }\r\n };\r\n\r\n // Função para formatar valores\r\n const formatValue = (value) => {\r\n if (!value) return \"\";\r\n\r\n if (typeof value === 'object') {\r\n if (value.low !== undefined) {\r\n return String(value.low);\r\n } else if (Array.isArray(value)) {\r\n return value.join(\" | \");\r\n } else {\r\n return JSON.stringify(value);\r\n }\r\n }\r\n return String(value);\r\n };\r\n\r\n // Função para obter nível de acesso\r\n const getAccessLevel = (access) => {\r\n const levels = {\r\n \"0\": translate('$__reader', 1),\r\n \"1\": translate('$__executioner', 1),\r\n \"2\": translate('$__collaborator', 1),\r\n \"3\": translate('$__collaborator', 1),\r\n \"4\": translate('$__supervisor', 1),\r\n \"5\": translate('$__admin', 1)\r\n };\r\n\r\n if (!access) return translate('$__unknown', 1);\r\n\r\n return levels[String(access).substr(0, 1)] || access;\r\n };\r\n\r\n // Função de processamento de dados da view do Overview\r\n const processOverviewData = () => {\r\n console.log(\"Processando dados do Overview via props.data\");\r\n\r\n // Obter nomes customizados das colunas, se disponíveis\r\n if (props.data && props.data.customColumnNames) {\r\n setCustomColumnNames(props.data.customColumnNames);\r\n }\r\n\r\n // Verificar se temos dados para processar\r\n if (props.data && props.data.activeCards) {\r\n const activeCards = props.data.activeCards;\r\n\r\n // Verificar se temos cards ativos\r\n if (Object.keys(activeCards).length > 0) {\r\n try {\r\n // Processar os cards ativos de forma similar ao processCardsFromProps\r\n const allCards = { ...activeCards };\r\n const relationMap = createCardRelationMap(allCards);\r\n\r\n // Classificar cards por tipo\r\n const result = {\r\n guidelines: [],\r\n objectives: [],\r\n goals: [],\r\n actions: []\r\n };\r\n\r\n Object.values(activeCards).forEach(card => {\r\n if (!card || !card._id) return;\r\n\r\n try {\r\n if (card.type && card.type.indexOf(\"guideline\") > -1) {\r\n const processedCard = processCardForExport(card, \"guideline\", relationMap, allCards);\r\n if (processedCard) {\r\n result.guidelines.push(processedCard);\r\n }\r\n } else if (card.type === \"objective\" && !card.checklist) {\r\n const processedCard = processCardForExport(card, \"objective\", relationMap, allCards);\r\n if (processedCard) {\r\n result.objectives.push(processedCard);\r\n }\r\n } else if (card.type === \"goal\") {\r\n const processedCard = processCardForExport(card, \"goal\", relationMap, allCards);\r\n if (processedCard) {\r\n result.goals.push(processedCard);\r\n }\r\n } else if (\r\n card.type &&\r\n !card.checklist &&\r\n card.type !== \"plan\" &&\r\n card.type !== \"objective\" &&\r\n card.type !== \"goal\" &&\r\n card.type !== \"feed\" &&\r\n card.type !== \"link\" &&\r\n card.type !== \"insight\" &&\r\n card.type !== \"chatGroup\" &&\r\n card.type.indexOf(\"guideline\") === -1 &&\r\n db.dataType.filter(dt => dt.name === card.type).length > 0 &&\r\n db.dataType.filter(dt => dt.name === card.type)[0].module !== \"swot\"\r\n ) {\r\n const processedCard = processCardForExport(card, \"action\", relationMap, allCards);\r\n if (processedCard) {\r\n result.actions.push(processedCard);\r\n }\r\n }\r\n } catch (err) {\r\n console.error(`Erro ao processar card ${card._id}:`, err);\r\n }\r\n });\r\n\r\n // Processar dados de usuários\r\n const usersData = [];\r\n\r\n Object.values(allCards).forEach(card => {\r\n if (card && card._users) {\r\n Object.keys(card._users).forEach(userId => {\r\n try {\r\n const user = card._users[userId];\r\n if (user) {\r\n usersData.push({\r\n cardCode: card._cardCode || card._id.substring(0, 8),\r\n cardName: card.name || \"\",\r\n cardType: cardTypeMap[card.type] || card.type || \"\",\r\n user: user.name || userId,\r\n responsible: user.isResponsible ? \"Sim\" : \"Não\",\r\n level: getAccessLevel(user.access)\r\n });\r\n }\r\n } catch (err) {\r\n console.error(`Erro ao processar usuário ${userId}:`, err);\r\n }\r\n });\r\n }\r\n });\r\n\r\n setOverviewData(result);\r\n setUserDataSet(usersData);\r\n setDataCompleted(true);\r\n } catch (error) {\r\n console.error(\"Erro ao processar dados do Overview:\", error);\r\n setDataCompleted(true);\r\n }\r\n } else {\r\n console.log(\"Nenhum card ativo encontrado em props.data\");\r\n setDataCompleted(true);\r\n }\r\n } else {\r\n console.log(\"props.data não contém dados de cards ativos\");\r\n setDataCompleted(true);\r\n }\r\n };\r\n\r\n // Função principal para processar dados\r\n const processCardsFromProps = React.useCallback(() => {\r\n try {\r\n console.log(\"Iniciando processamento de cards das props\");\r\n\r\n // Obter nomes customizados das colunas, se disponíveis\r\n if (props.customColumnNames) {\r\n setCustomColumnNames(props.customColumnNames);\r\n }\r\n\r\n // Verificar se os dados foram passados via props.cards\r\n if (props.cards && typeof props.cards === 'object') {\r\n const columnNames = Object.keys(props.cards);\r\n\r\n if (columnNames.length === 0) {\r\n console.log(\"Nenhuma coluna encontrada em props.cards\");\r\n setDataCompleted(true);\r\n return;\r\n }\r\n\r\n console.log(`Processando ${columnNames.length} colunas de cards`);\r\n\r\n // Construir um objeto para todos os cards para facilitar referências\r\n const allCards = {};\r\n\r\n // Primeiro passe: coletar todos os cards para criar o mapa de relações\r\n columnNames.forEach(columnName => {\r\n const columnCards = props.cards[columnName] || [];\r\n columnCards.forEach(card => {\r\n if (card && card._id) {\r\n allCards[card._id] = card;\r\n }\r\n });\r\n });\r\n\r\n console.log(`Total de ${Object.keys(allCards).length} cards coletados`);\r\n\r\n // Criar mapa de relações entre cards\r\n const relationMap = createCardRelationMap(allCards);\r\n\r\n // Processar cada coluna para as respectivas planilhas\r\n const result = {\r\n guidelines: [],\r\n objectives: [],\r\n goals: [],\r\n actions: []\r\n };\r\n\r\n columnNames.forEach(columnName => {\r\n const columnCards = props.cards[columnName] || [];\r\n\r\n columnCards.forEach(card => {\r\n if (!card || !card._id) return;\r\n\r\n try {\r\n // Determinar o tipo de card e processar adequadamente\r\n if (card.type && card.type.indexOf(\"guideline\") > -1) {\r\n const processedCard = processCardForExport(card, \"guideline\", relationMap, allCards);\r\n if (processedCard) {\r\n result.guidelines.push(processedCard);\r\n }\r\n } else if (card.type === \"objective\" && !card.checklist) {\r\n const processedCard = processCardForExport(card, \"objective\", relationMap, allCards);\r\n if (processedCard) {\r\n result.objectives.push(processedCard);\r\n }\r\n } else if (card.type === \"goal\") {\r\n const processedCard = processCardForExport(card, \"goal\", relationMap, allCards);\r\n if (processedCard) {\r\n result.goals.push(processedCard);\r\n }\r\n } else if (\r\n card.type &&\r\n !card.checklist &&\r\n card.type !== \"plan\" &&\r\n card.type !== \"objective\" &&\r\n card.type !== \"goal\" &&\r\n card.type !== \"feed\" &&\r\n card.type !== \"link\" &&\r\n card.type !== \"insight\" &&\r\n card.type !== \"chatGroup\" &&\r\n card.type.indexOf(\"guideline\") === -1 &&\r\n db.dataType.filter(dt => dt.name === card.type).length > 0 &&\r\n db.dataType.filter(dt => dt.name === card.type)[0].module !== \"swot\"\r\n ) {\r\n const processedCard = processCardForExport(card, \"action\", relationMap, allCards);\r\n if (processedCard) {\r\n result.actions.push(processedCard);\r\n }\r\n }\r\n } catch (err) {\r\n console.error(`Erro ao processar card ${card._id}:`, err);\r\n }\r\n });\r\n });\r\n\r\n console.log(\"Processamento concluído:\", {\r\n guidelines: result.guidelines.length,\r\n objectives: result.objectives.length,\r\n goals: result.goals.length,\r\n actions: result.actions.length\r\n });\r\n\r\n // Processar dados de usuários\r\n const usersData = [];\r\n\r\n Object.values(allCards).forEach(card => {\r\n if (card && card._users) {\r\n Object.keys(card._users).forEach(userId => {\r\n try {\r\n const user = card._users[userId];\r\n if (user) {\r\n usersData.push({\r\n cardCode: card._cardCode || card._id.substring(0, 8),\r\n cardName: card.name || \"\",\r\n cardType: cardTypeMap[card.type] || card.type || \"\",\r\n user: user.name || userId,\r\n responsible: user.isResponsible ? \"Sim\" : \"Não\",\r\n level: getAccessLevel(user.access)\r\n });\r\n }\r\n } catch (err) {\r\n console.error(`Erro ao processar usuário ${userId}:`, err);\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Atualizar estados com os dados processados\r\n setOverviewData(result);\r\n setUserDataSet(usersData);\r\n setDataCompleted(true);\r\n } else if (props.data) {\r\n // Manter o código existente para processOverviewData para compatibilidade\r\n processOverviewData();\r\n } else {\r\n console.log(\"Nenhum dado encontrado para processar\");\r\n setDataCompleted(true);\r\n }\r\n } catch (error) {\r\n console.error(\"Erro geral no processamento de cards:\", error);\r\n setDataCompleted(true);\r\n }\r\n }, [props.cards, props.customColumnNames, props.data]);\r\n\r\n // Efeito para processar os dados quando as props mudarem\r\n React.useEffect(() => {\r\n processCardsFromProps();\r\n }, [processCardsFromProps]);\r\n\r\n // Renderização condicional com base no estado dos dados\r\n if (!dataCompleted) {\r\n return (\r\n <Tooltip title={translate('$__processingData', 1)}>\r\n <div className={classes.noDataMessage}>\r\n <Icon>hourglass_empty</Icon> {translate('$__processingData', 1)}\r\n </div>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n if (dataCompleted && Object.values(overviewData).every(arr => arr.length === 0)) {\r\n return (\r\n <Tooltip title={translate('$__noDataToExport', 1)}>\r\n <div className={classes.noDataMessage}>\r\n <Icon>info</Icon> {translate('$__noDataToExport', 1)}\r\n </div>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n // Renderização do componente ExcelFile com os dados processados\r\n return (\r\n <ExcelFile\r\n filename={`${props.fileName ? props.fileName.replace(\" \", \"-\") : \"exportOverview\"}-${moment().unix('x')}`}\r\n element={\r\n <CustomButton\r\n title={translate(\"$__export\")}\r\n text={translate(\"$__export\")}\r\n icon={\"file_download\"}\r\n size={\"25px\"}\r\n className={classes.exportButton}\r\n />\r\n }\r\n >\r\n {/* Planilha de Diretrizes */}\r\n {overviewData.guidelines.length > 0 && (\r\n <ExcelSheet\r\n data={overviewData.guidelines}\r\n name={customColumnNames.guidelines || translate('$__guidelines', 1)}\r\n >\r\n <ExcelColumn label={translate('$__name', 1)} value=\"name\" />\r\n <ExcelColumn label={translate('$__description', 1)} value=\"description\" />\r\n <ExcelColumn label={translate('$__cardCode', 1)} value=\"cardCode\" />\r\n <ExcelColumn label={translate('$__status', 1)} value=\"status\" />\r\n <ExcelColumn label={translate('$__startDate', 1)} value=\"startDate\" />\r\n <ExcelColumn label={translate('$__endDate', 1)} value=\"endDate\" />\r\n <ExcelColumn label={translate('$__priority', 1)} value=\"priority\" />\r\n <ExcelColumn label={translate('$__ref1', 1)} value=\"ref1\" />\r\n <ExcelColumn label={translate('$__ref2', 1)} value=\"ref2\" />\r\n <ExcelColumn label={translate('$__risk', 1)} value=\"risk\" />\r\n <ExcelColumn label={translate('$__impact', 1)} value=\"impact\" />\r\n <ExcelColumn label={translate('$__createdBy', 1)} value=\"createdBy\" />\r\n <ExcelColumn label={translate('$__responsible', 1)} value=\"responsible\" />\r\n <ExcelColumn label={translate('$__updatedAt', 1)} value=\"updated_at\" />\r\n </ExcelSheet>\r\n )}\r\n\r\n {/* Planilha de Objetivos */}\r\n {overviewData.objectives.length > 0 && (\r\n <ExcelSheet\r\n data={overviewData.objectives}\r\n name={customColumnNames.objectives || translate('$__objectives', 1)}\r\n >\r\n <ExcelColumn label={translate('$__name', 1)} value=\"name\" />\r\n <ExcelColumn label={translate('$__description', 1)} value=\"description\" />\r\n <ExcelColumn label={translate('$__cardCode', 1)} value=\"cardCode\" />\r\n <ExcelColumn label={translate('$__status', 1)} value=\"status\" />\r\n <ExcelColumn label={translate('$__parentGuideline', 1)} value=\"parentGuidelineName\" />\r\n <ExcelColumn label={translate('$__parentCode', 1)} value=\"parentGuidelineCode\" />\r\n <ExcelColumn label={translate('$__startDate', 1)} value=\"startDate\" />\r\n <ExcelColumn label={translate('$__endDate', 1)} value=\"endDate\" />\r\n <ExcelColumn label={translate('$__priority', 1)} value=\"priority\" />\r\n <ExcelColumn label={translate('$__ref2', 1)} value=\"ref2\" />\r\n <ExcelColumn label={translate('$__complexity', 1)} value=\"complexity\" />\r\n <ExcelColumn label={translate('$__createdBy', 1)} value=\"createdBy\" />\r\n <ExcelColumn label={translate('$__responsible', 1)} value=\"responsible\" />\r\n <ExcelColumn label={translate('$__updatedAt', 1)} value=\"updated_at\" />\r\n </ExcelSheet>\r\n )}\r\n\r\n {/* Planilha de Metas */}\r\n {overviewData.goals.length > 0 && (\r\n <ExcelSheet\r\n data={overviewData.goals}\r\n name={customColumnNames.goals || translate('$__goals', 1)}\r\n >\r\n <ExcelColumn label={translate('$__name', 1)} value=\"name\" />\r\n <ExcelColumn label={translate('$__description', 1)} value=\"description\" />\r\n <ExcelColumn label={translate('$__cardCode', 1)} value=\"cardCode\" />\r\n <ExcelColumn label={translate('$__status', 1)} value=\"status\" />\r\n <ExcelColumn label={translate('$__parentObjective', 1)} value=\"parentObjectiveName\" />\r\n <ExcelColumn label={translate('$__parentCode', 1)} value=\"parentObjectiveCode\" />\r\n <ExcelColumn label={translate('$__grandparentGuideline', 1)} value=\"grandparentGuidelineName\" />\r\n <ExcelColumn label={translate('$__grandparentCode', 1)} value=\"grandparentGuidelineCode\" />\r\n <ExcelColumn label={translate('$__startDate', 1)} value=\"startDate\" />\r\n <ExcelColumn label={translate('$__endDate', 1)} value=\"endDate\" />\r\n <ExcelColumn label={translate('$__priority', 1)} value=\"priority\" />\r\n <ExcelColumn label={translate('$__value', 1)} value=\"value\" />\r\n <ExcelColumn label={translate('$__progress', 1)} value=\"progress\" />\r\n <ExcelColumn label={translate('$__createdBy', 1)} value=\"createdBy\" />\r\n <ExcelColumn label={translate('$__responsible', 1)} value=\"responsible\" />\r\n <ExcelColumn label={translate('$__updatedAt', 1)} value=\"updated_at\" />\r\n </ExcelSheet>\r\n )}\r\n\r\n {/* Planilha de Ações */}\r\n {overviewData.actions.length > 0 && (\r\n <ExcelSheet\r\n data={overviewData.actions}\r\n name={customColumnNames.actions || translate('$__actions', 1)}\r\n >\r\n <ExcelColumn label={translate('$__name', 1)} value=\"name\" />\r\n <ExcelColumn label={translate('$__description', 1)} value=\"description\" />\r\n <ExcelColumn label={translate('$__cardCode', 1)} value=\"cardCode\" />\r\n <ExcelColumn label={translate('$__status', 1)} value=\"status\" />\r\n <ExcelColumn label={translate('$__parentGoal', 1)} value=\"parentGoalName\" />\r\n <ExcelColumn label={translate('$__parentCode', 1)} value=\"parentGoalCode\" />\r\n <ExcelColumn label={translate('$__grandparentObjective', 1)} value=\"grandparentObjectiveName\" />\r\n <ExcelColumn label={translate('$__grandparentCode', 1)} value=\"grandparentObjectiveCode\" />\r\n <ExcelColumn label={translate('$__greatGrandparentGuideline', 1)} value=\"greatGrandparentGuidelineName\" />\r\n <ExcelColumn label={translate('$__greatGrandparentCode', 1)} value=\"greatGrandparentGuidelineCode\" />\r\n <ExcelColumn label={translate('$__startDate', 1)} value=\"startDate\" />\r\n <ExcelColumn label={translate('$__endDate', 1)} value=\"endDate\" />\r\n <ExcelColumn label={translate('$__priority', 1)} value=\"priority\" />\r\n <ExcelColumn label={translate('$__tags', 1)} value=\"tags\" />\r\n <ExcelColumn label={translate('$__createdBy', 1)} value=\"createdBy\" />\r\n <ExcelColumn label={translate('$__responsible', 1)} value=\"responsible\" />\r\n <ExcelColumn label={translate('$__updatedAt', 1)} value=\"updated_at\" />\r\n </ExcelSheet>\r\n )}\r\n\r\n {/* Planilha de Usuários */}\r\n {userDataSet.length > 0 && (\r\n <ExcelSheet\r\n data={userDataSet}\r\n name={translate('$__users', 1)}\r\n >\r\n <ExcelColumn label={translate('$__cardCode', 1)} value=\"cardCode\" />\r\n <ExcelColumn label={translate('$__cardName', 1)} value=\"cardName\" />\r\n <ExcelColumn label={translate('$__cardType', 1)} value=\"cardType\" />\r\n <ExcelColumn label={translate('$__user', 1)} value=\"user\" />\r\n <ExcelColumn label={translate('$__access', 1)} value=\"level\" />\r\n <ExcelColumn label={translate('$__isResposible', 1)} value=\"responsible\" />\r\n </ExcelSheet>\r\n )}\r\n </ExcelFile>\r\n );\r\n}\r\n\r\nexport default ExportAll;","import React, { useEffect, useState } from \"react\";\r\nimport { DragDropContext, Droppable } from \"react-beautiful-dnd\";\r\nimport styled from \"styled-components\";\r\nimport MD5 from \"crypto-js/md5\";\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 HeaderWithIcon from \"components/Header/card\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport Card from \"components/Card\";\r\nimport Icon from \"components/Icon\";\r\nimport SelectedMenu from \"componentsV3/SelectedMenu/SelectedMenu\";\r\nimport ExportAll from \"./exportAll\";\r\n\r\n// @MATERIAL\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Button from \"@material-ui/core/Button\";\r\n\r\n// DEPENDENCIES\r\nimport Column from \"./Column\";\r\n\r\n// FUNCTIONS\r\nimport { linkCard, updateCard, getChildrens } from \"functions/cards\";\r\nimport { translate, appAlert, customApp } from \"functions\";\r\nimport { countNotifications } from \"functions/cards\";\r\n\r\n// Helper: delay wrapper\r\nconst wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));\r\n\r\n// Helper: recalculate tree of children – utilizando dbCards passado como parâmetro\r\nconst trackingTreeChildrens = (id, dbCards, selectedTree) => {\r\n if (!selectedTree.includes(id)) {\r\n selectedTree.push(id);\r\n }\r\n Object.keys(dbCards).forEach(c => {\r\n const card = dbCards[c];\r\n if (card._parent === id && !card.checklist && !selectedTree.includes(c)) {\r\n trackingTreeChildrens(c, dbCards, selectedTree);\r\n // Não é necessário empurrar c novamente, pois a recursão já cuida disso\r\n }\r\n });\r\n};\r\n\r\nconst trackingTreeParents = (id, dbCards, selectedTree) => {\r\n if (!selectedTree.includes(id)) {\r\n selectedTree.push(id);\r\n }\r\n Object.keys(dbCards).forEach(c => {\r\n // Se o card c for igual a id ou for pai de id e não for checklist\r\n if (\r\n id &&\r\n dbCards[id] &&\r\n (c === id || dbCards[id]._parent === c) &&\r\n !dbCards[c].checklist &&\r\n !selectedTree.includes(c)\r\n ) {\r\n if (dbCards[c] && dbCards[c]._parent) {\r\n trackingTreeParents(dbCards[c]._parent, dbCards, selectedTree);\r\n }\r\n selectedTree.push(c);\r\n }\r\n });\r\n};\r\n\r\nfunction Overview(props) {\r\n const { db, session } = reduxStore.getState();\r\n const { dataType } = db;\r\n const [Migrator, setMigrator] = useState(false);\r\n const [cardsUpdate, setCardsUpdate] = useState(true);\r\n const [MigratorData, setMigratorData] = useState({});\r\n const [selectedCardState, setSelectedCardState] = useState({\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n });\r\n const [cards, setCards] = useState({});\r\n const [showExport, setShowExport] = useState(false);\r\n\r\n const searchID = MD5(`${window.location.pathname}-${window.location.hash}`).toString();\r\n\r\n // Processamento da URL\r\n let hashs = window.location.hash.split(\"/\");\r\n hashs[0] = hashs[0].replace(\"#\", \"\");\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null;\r\n }\r\n\r\n let activeCards = {};\r\n let selectedTree = [];\r\n\r\n const selectedGuideline = props.searchs[searchID]?.selectedCards?.guideline || null;\r\n const selectedObjective = props.searchs[searchID]?.selectedCards?.objective || null;\r\n const selectedGoal = props.searchs[searchID]?.selectedCards?.goal || null;\r\n const selectedTasks = props.searchs[searchID]?.selectedCards?.action || null;\r\n\r\n const overview = [\r\n { value: \"guidelines\", type: \"guideline\", label: \"$__guidelines\", icon: \"alt_route\", viewButton: true, selectedParent: null },\r\n { value: \"objectives\", type: \"objective\", label: \"$__objectives\", icon: dataType.find(a => a.name === \"objective\").icon, viewButton: true, selectedParent: selectedGuideline },\r\n { value: \"goals\", type: \"goal\", label: \"$__goals\", icon: dataType.find(a => a.name === \"goal\").icon, viewButton: true, selectedParent: selectedObjective || selectedGuideline },\r\n { value: \"actions\", type: \"iniciative\", label: \"$__actions\", icon: \"double_arrow\", viewButton: true, selectedParent: selectedGoal || selectedObjective || selectedGuideline }\r\n ];\r\n\r\n // Reinicia o estado dos cards selecionados quando showCheck mudar\r\n useEffect(() => {\r\n if (!props.showCheck) {\r\n setSelectedCardState({\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n });\r\n }\r\n }, [props.showCheck]);\r\n\r\n // Atualiza os cards quando houver mudanças\r\n useEffect(() => {\r\n if (cardsUpdate) {\r\n const dbCards = db.cards;\r\n // Constrói activeCards com base em critérios de filtro\r\n Object.keys(dbCards).forEach(a => {\r\n let notifications = countNotifications(a);\r\n const card = dbCards[a];\r\n if (\r\n card &&\r\n (\r\n !card.private ||\r\n (card.private && card._users && card._users[session._id])\r\n ) &&\r\n (card._planId === hashs[0] || card._parent === hashs[0]) &&\r\n (props.showCompleted || (!props.showCompleted && card.status !== \"completed\")) &&\r\n (!props.onlyUnReaded || (props.onlyUnReaded && notifications.total > 0))\r\n ) {\r\n activeCards[a] = card;\r\n }\r\n });\r\n\r\n // Se houver um card selecionado, atualiza o selectedTree\r\n if (selectedTasks) {\r\n trackingTreeChildrens(selectedTasks, dbCards, selectedTree);\r\n trackingTreeParents(selectedTasks, dbCards, selectedTree);\r\n } else if (selectedGoal) {\r\n trackingTreeChildrens(selectedGoal, dbCards, selectedTree);\r\n trackingTreeParents(selectedGoal, dbCards, selectedTree);\r\n } else if (selectedObjective) {\r\n trackingTreeChildrens(selectedObjective, dbCards, selectedTree);\r\n trackingTreeParents(selectedObjective, dbCards, selectedTree);\r\n } else if (selectedGuideline) {\r\n trackingTreeChildrens(selectedGuideline, dbCards, selectedTree);\r\n trackingTreeParents(selectedGuideline, dbCards, selectedTree);\r\n }\r\n\r\n // Processa os cards para cada coluna\r\n const computedCards = {};\r\n\r\n computedCards[\"guidelines\"] = Object.keys(activeCards).filter(a => {\r\n const card = activeCards[a];\r\n return (\r\n (card._parent === hashs[0] || card._planId === hashs[0]) &&\r\n card.type &&\r\n card.type.indexOf(\"guideline\") > -1 &&\r\n (selectedTree.length === 0 || selectedTree.includes(a))\r\n );\r\n });\r\n\r\n computedCards[\"objectives\"] = Object.keys(activeCards).filter(a => {\r\n const card = activeCards[a];\r\n return (card.type === \"objective\" && !card.checklist && (selectedTree.length === 0 || selectedTree.includes(a)));\r\n });\r\n\r\n computedCards[\"objectives2\"] = Object.keys(activeCards).filter(a => {\r\n const card = activeCards[a];\r\n return (\r\n !selectedObjective &&\r\n card.type === \"objective\" &&\r\n card._parent !== selectedGuideline &&\r\n !card.checklist &&\r\n computedCards[\"objectives\"].includes(card._parent) &&\r\n (selectedTree.length === 0 || selectedTree.includes(a))\r\n );\r\n });\r\n computedCards[\"objectives2\"].forEach(a => {\r\n if (!computedCards[\"objectives\"].includes(a)) {\r\n computedCards[\"objectives\"].push(a);\r\n }\r\n });\r\n\r\n computedCards[\"goals\"] = Object.keys(activeCards).filter(a => {\r\n const card = activeCards[a];\r\n return (card.type === \"goal\" && (selectedTree.length === 0 || selectedTree.includes(a)));\r\n });\r\n\r\n computedCards[\"goals2\"] = Object.keys(activeCards).filter(a => {\r\n const card = activeCards[a];\r\n return (\r\n card.type === \"goal\" &&\r\n !card.checklist &&\r\n computedCards[\"goals\"].includes(card._parent) &&\r\n (selectedTree.length === 0 || selectedTree.includes(a))\r\n );\r\n });\r\n computedCards[\"goals2\"].forEach(a => {\r\n if (!computedCards[\"goals\"].includes(a)) {\r\n computedCards[\"goals\"].push(a);\r\n }\r\n });\r\n\r\n computedCards[\"actions\"] = Object.keys(activeCards).filter(a => {\r\n const card = activeCards[a];\r\n return (\r\n card.type &&\r\n !card.checklist &&\r\n card.type !== \"plan\" &&\r\n card.type !== \"objective\" &&\r\n card.type !== \"goal\" &&\r\n card.type !== \"feed\" &&\r\n card.type !== \"link\" &&\r\n card.type !== \"insight\" &&\r\n card.type !== \"chatGroup\" &&\r\n card.type.indexOf(\"guideline\") === -1 &&\r\n dataType.filter(dt => dt.name === card.type).length > 0 &&\r\n dataType.filter(dt => dt.name === card.type)[0].module !== \"swot\" &&\r\n (selectedTree.length === 0 || selectedTree.includes(a))\r\n );\r\n });\r\n\r\n // Mapeia para os objetos reais\r\n computedCards[\"guidelines\"] = computedCards[\"guidelines\"].map(a => activeCards[a]);\r\n computedCards[\"objectives\"] = computedCards[\"objectives\"].map(a => activeCards[a]);\r\n computedCards[\"goals\"] = computedCards[\"goals\"].map(a => activeCards[a]);\r\n computedCards[\"actions\"] = computedCards[\"actions\"].map(a => activeCards[a]);\r\n\r\n setCards(computedCards);\r\n }\r\n // eslint-disable-next-line\r\n }, [db.cards, props.cards, props.searchs, cardsUpdate, session, dataType, props.showCompleted, props.onlyUnReaded]);\r\n\r\n const onDragEnd = async result => {\r\n const { destination, source, draggableId } = result;\r\n if (result.combine) {\r\n appAlert({\r\n message: `${translate(\"$__confirmLink\", 1)}: ${reduxStore.getState().db.cards[draggableId].name} >>> ${reduxStore.getState().db.cards[result.combine.draggableId] ? reduxStore.getState().db.cards[result.combine.draggableId].name : \"\"}`,\r\n variant: \"warning\",\r\n persist: true,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n if (result.combine.draggableId)\r\n linkCard(props, {\r\n cardId: draggableId,\r\n cardToLink: result.combine.draggableId\r\n });\r\n }\r\n });\r\n return;\r\n }\r\n if (!destination) return false;\r\n if (destination.droppableId === source.droppableId && destination.id === source.index) return false;\r\n\r\n const sourceColumn = source.droppableId;\r\n const destinationColumn = destination.droppableId;\r\n const dbCards = reduxStore.getState().db.cards;\r\n // Cria uma cópia de activeCards a partir do estado atual\r\n let activeCardsTemp = { ...dbCards };\r\n\r\n const sourceCardIds = Object.keys(activeCardsTemp)\r\n .filter(c => activeCardsTemp[c].status === sourceColumn)\r\n .sort((a, b) => {\r\n const orderA = activeCardsTemp[a].order && activeCardsTemp[a].order.low ? parseInt(activeCardsTemp[a].order.low) : 0;\r\n const orderB = activeCardsTemp[b].order && activeCardsTemp[b].order.low ? parseInt(activeCardsTemp[b].order.low) : 0;\r\n return orderA - orderB;\r\n })\r\n .map(c => activeCardsTemp[c]._id);\r\n\r\n if (sourceColumn === destinationColumn && reduxStore.getState().db.orderByTitle) return;\r\n\r\n if (sourceColumn === destinationColumn && !reduxStore.getState().db.orderByTitle) {\r\n const { socket } = reduxStore.getState().functions;\r\n let columnName = sourceColumn === \"iniciative\" ? \"action\" : sourceColumn;\r\n let itemOrderIds = cards[`${columnName}s`]\r\n .filter(card => card.status && card.status !== \"completed\")\r\n .sort((a, b) => {\r\n const orderA = a?.order?.low || (!isNaN(a?.order) ? parseInt(a.order) : a.order ? parseInt(a.order) : 0);\r\n const orderB = b?.order?.low || (!isNaN(b?.order) ? parseInt(b.order) : b.order ? parseInt(b.order) : 0);\r\n return orderA - orderB;\r\n })\r\n .map(card => card._id);\r\n\r\n itemOrderIds.splice(source.index, 1);\r\n await wait(500);\r\n itemOrderIds.splice(destination.index, 0, draggableId);\r\n await wait(500);\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"reorder\"\r\n }, { cards: itemOrderIds });\r\n\r\n let newCards = { ...reduxStore.getState().db.cards };\r\n await new Promise(resolve => {\r\n itemOrderIds.forEach((a, i) => {\r\n newCards = {\r\n ...newCards,\r\n [a]: {\r\n ...newCards[a],\r\n order: `${i + 1}`\r\n }\r\n };\r\n if (i + 1 === itemOrderIds.length) resolve(true);\r\n });\r\n });\r\n props.reduxFunction(\"IMMEDIATE\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...newCards\r\n }\r\n });\r\n return;\r\n }\r\n\r\n // Movendo card entre colunas\r\n sourceCardIds.splice(source.index, 1);\r\n const destinationCardIds = Object.keys(activeCardsTemp)\r\n .filter(c => activeCardsTemp[c].status === destinationColumn)\r\n .sort((a, b) => {\r\n const orderA = activeCardsTemp[a].order && activeCardsTemp[a].order.low ? parseInt(activeCardsTemp[a].order.low) : 0;\r\n const orderB = activeCardsTemp[b].order && activeCardsTemp[b].order.low ? parseInt(activeCardsTemp[b].order.low) : 0;\r\n return orderA - orderB;\r\n })\r\n .map(c => activeCardsTemp[c]._id);\r\n destinationCardIds.splice(destination.index, 0, draggableId);\r\n\r\n // Atualiza ordem dos cards no db\r\n sourceCardIds.forEach((a, i) => {\r\n if (!dbCards[a].order || !dbCards[a].order.low) {\r\n dbCards[a] = { ...dbCards[a], order: { low: parseInt(i) } };\r\n } else {\r\n dbCards[a].order.low = parseInt(i);\r\n }\r\n });\r\n destinationCardIds.forEach((a, i) => {\r\n if (!dbCards[a].order || !dbCards[a].order.low) {\r\n dbCards[a] = { ...dbCards[a], order: { low: parseInt(i) } };\r\n } else {\r\n dbCards[a].order.low = parseInt(i);\r\n }\r\n });\r\n\r\n const childrens = getChildrens(draggableId);\r\n const data = {\r\n _id: draggableId,\r\n type: destination.droppableId,\r\n _childrens: childrens,\r\n _objectives: cards[\"objectives\"].filter(fil => childrens[fil._id]).map(a => a),\r\n _goals: cards[\"goals\"].filter(fil => childrens[fil._id]).map(a => a)\r\n };\r\n\r\n if (dbCards[draggableId].type === \"goal\" && destination.droppableId === \"guideline\") {\r\n appAlert({\r\n message: translate('$__YouCannotMoveThisItemToThisColumnMoveFirstToTheObjectiveColumn', 1),\r\n variant: \"error\",\r\n persist: false,\r\n horizontal: \"center\"\r\n });\r\n setMigratorData({});\r\n return;\r\n }\r\n if (\r\n dbCards[draggableId].type.indexOf(\"guideline\") === -1 &&\r\n dbCards[draggableId].type !== \"objective\" &&\r\n dbCards[draggableId].type !== \"goal\" &&\r\n (destination.droppableId === \"guideline\" || destination.droppableId === \"objective\")\r\n ) {\r\n appAlert({\r\n message: translate('$__YouCannotMoveThisItemToThisColumnMoveFirstToTheGoalsColumn', 1),\r\n variant: \"error\",\r\n persist: false,\r\n horizontal: \"center\"\r\n });\r\n setMigratorData({});\r\n return;\r\n }\r\n if (dbCards[draggableId].type.indexOf(\"guideline\") > -1 && dbCards[draggableId].type !== \"guideline\") {\r\n appAlert({\r\n message: translate('$__youCantMoveGuidelineWithSwotLinked', 1),\r\n variant: \"error\",\r\n persist: false,\r\n horizontal: \"center\"\r\n });\r\n } else if (\r\n dbCards[draggableId].type === \"guideline\" &&\r\n destination.droppableId !== \"guideline\" &&\r\n (cards[\"objectives\"].filter(fil => fil._parent === draggableId).length > 0 ||\r\n cards[\"goals\"].filter(fil => fil._parent === draggableId).length > 0)\r\n ) {\r\n setMigratorData(data);\r\n setMigrator(true);\r\n } else if (\r\n dbCards[draggableId].type.indexOf(\"objective\") > -1 &&\r\n (destination.droppableId !== \"guideline\" && destination.droppableId !== \"objective\") &&\r\n (cards[\"goals\"].filter(fil => fil._parent === draggableId).length > 0)\r\n ) {\r\n setMigratorData(data);\r\n setMigrator(true);\r\n } else {\r\n appAlert({\r\n message: `${translate(\"$__confirmTransformIn\", 1)}: ${translate(`$__${destination.droppableId}`)}`,\r\n variant: \"warning\",\r\n persist: true,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n updateType(data);\r\n if (dbCards[dbCards[draggableId]._parent].type.indexOf(destination.droppableId) > -1) {\r\n linkCard(props, {\r\n cardId: draggableId,\r\n cardToLink: dbCards[dbCards[draggableId]._parent]._parent\r\n });\r\n }\r\n },\r\n cancel: () => {\r\n setMigratorData({});\r\n }\r\n });\r\n }\r\n };\r\n\r\n const updateType = async (d) => {\r\n let data = d;\r\n if (MigratorData && MigratorData._id) data = MigratorData;\r\n await updateCard(props, data);\r\n props.reduxFunction(\"IMMEDIATE\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n type: data.type\r\n }\r\n }\r\n });\r\n setMigratorData({});\r\n };\r\n\r\n const iniMigration = async (type) => {\r\n const MCards = type === \"goals\" ? MigratorData._goals : MigratorData._objectives;\r\n cards[type]\r\n .filter(fil => MigratorData._childrens[fil._id])\r\n .forEach(async (a) => {\r\n MCards.filter(c => c._id === a._id).forEach(aItem => {\r\n aItem.type = type === \"goals\" ? \"task\" : \"goal\";\r\n });\r\n await updateCard(props, {\r\n _id: a._id,\r\n type: type === \"goals\" ? \"task\" : \"goal\"\r\n });\r\n });\r\n setMigratorData({\r\n ...MigratorData,\r\n ...(type === \"goals\" ? { _goals: MCards } : { _objectives: MCards })\r\n });\r\n };\r\n\r\n const finishMigration = async () => {\r\n await updateCard(props, {\r\n _id: MigratorData._id,\r\n type: MigratorData.type\r\n });\r\n setMigrator(false);\r\n setMigratorData({});\r\n };\r\n\r\n const selectCards = (selectedCardState, cardID, cardArr) => {\r\n let newData = { ...selectedCardState };\r\n const parent = reduxStore.getState().db.cards[cardID]._parent;\r\n\r\n if (\r\n !selectedCardState.checkSelectedCards.includes(cardID) &&\r\n !selectedCardState.childrenChecked.includes(cardID) &&\r\n !selectedCardState.checkSelectedCards.includes(parent)\r\n ) {\r\n newData.checkSelectedCards = [...selectedCardState.checkSelectedCards, cardID];\r\n } else if (selectedCardState.checkSelectedCards.includes(parent)) {\r\n if (!selectedCardState.childrenChecked.includes(cardID)) {\r\n newData.childrenChecked = [...selectedCardState.childrenChecked, cardID];\r\n } else {\r\n newData.childrenChecked = selectedCardState.childrenChecked.filter(Id => Id !== cardID);\r\n }\r\n } else {\r\n newData.checkSelectedCards = selectedCardState.checkSelectedCards.filter(Id => Id !== cardID);\r\n newData.childrenChecked = selectedCardState.childrenChecked.filter(Id => Id !== cardID);\r\n }\r\n\r\n let children = Object.keys(getChildrens(cardID)) || [];\r\n children.filter(Id => Id !== cardID).forEach(item => {\r\n if (newData.childrenChecked.includes(item)) {\r\n newData.childrenChecked = newData.childrenChecked.filter(Id => Id !== item);\r\n } else if (newData.childrenChecked.includes(cardID) || newData.checkSelectedCards.includes(cardID)) {\r\n newData.childrenChecked = [...newData.childrenChecked, item];\r\n }\r\n });\r\n\r\n setSelectedCardState(newData);\r\n };\r\n\r\n const prepareDataForExport = () => {\r\n // console.log(\"Preparando dados para exportação\");\r\n\r\n // Certifique-se de que activeCards contenha objetos completos, não apenas IDs\r\n const exportActiveCards = {};\r\n\r\n // Clonar os cards ativos para não modificar os originais\r\n Object.keys(activeCards).forEach(cardId => {\r\n const card = db.cards[cardId];\r\n if (card) {\r\n // Criar uma cópia simples do card para evitar referências circulares\r\n exportActiveCards[cardId] = { ...card };\r\n }\r\n });\r\n\r\n // console.log(`Preparados ${Object.keys(exportActiveCards).length} cards para exportação`);\r\n\r\n // Extrair os nomes customizados das colunas do overview\r\n const customColumnNames = {};\r\n\r\n overview.forEach(item => {\r\n // Mapear valor para nome da coluna na exportação\r\n const columnKey = item.value;\r\n\r\n // Verificar se existe tradução customizada para o label\r\n let customName = translate(item.label, 1);\r\n\r\n // Se o label começa com '$__', é um label padrão, caso contrário, é customizado\r\n if (!item.label.startsWith('$__')) {\r\n customName = item.label;\r\n }\r\n\r\n customColumnNames[columnKey] = customName;\r\n });\r\n\r\n // console.log(\"Nomes customizados das colunas:\", customColumnNames);\r\n\r\n // Retornar os dados formatados para exportação\r\n return {\r\n activeCards: exportActiveCards,\r\n selectedCards: {\r\n guideline: selectedGuideline,\r\n objective: selectedObjective,\r\n goal: selectedGoal,\r\n action: selectedTasks\r\n },\r\n hash: hashs[0],\r\n customColumnNames\r\n };\r\n };\r\n // console.log('++++++++++++++++++++++++++++++++++++++++++++++++++')\r\n\r\n return (\r\n <div>\r\n <DragDropContext onDragEnd={onDragEnd}>\r\n <div className=\"export-controls\" style={{\r\n position: 'absolute',\r\n left: '320px',\r\n top: '15px',\r\n zIndex: 5\r\n }}>\r\n <ExportAll\r\n data={prepareDataForExport()}\r\n searchs={props.searchs}\r\n fileName={`Overview-${hashs[0]}`}\r\n showCompleted={true}\r\n cards={cards}\r\n />\r\n </div>\r\n <SelectedMenu\r\n selectCards={selectedCardState}\r\n handleCheckBoxState={() => props.handleCheckBoxState()}\r\n handleCardsUpdate={value => setCardsUpdate(value)}\r\n handleState={() =>\r\n setSelectedCardState({\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n })\r\n }\r\n />\r\n <Droppable\r\n droppableId=\"ALL-COLUMNS-TYPE\"\r\n type=\"column\"\r\n direction={props.inLine ? \"vertical\" : \"horizontal\"}\r\n isDropDisabled={true}\r\n >\r\n {provided => (\r\n <Container {...props} ref={provided.innerRef}>\r\n {overview.map((st, index) => {\r\n const theColumn = {\r\n name: st.label,\r\n icon: st.icon,\r\n cards: [],\r\n emptyHide: false\r\n };\r\n return (\r\n <Column\r\n {...props}\r\n key={st.value}\r\n columnId={st.type}\r\n isDropDisabled\r\n column={theColumn}\r\n setSelectedCards={(cardID, cardArr) => selectCards(selectedCardState, cardID, cardArr)}\r\n selectedCards={[...selectedCardState.checkSelectedCards, ...selectedCardState.childrenChecked]}\r\n showCheck={props.showCheck}\r\n showCatenation={props.showCatenation || false}\r\n cards={cards && cards[st.value] ? cards[st.value].map(a => a._id) : []}\r\n index={index}\r\n columnsSettings={false}\r\n locked={false}\r\n columnStyle={{ minWidth: \"200px\" }}\r\n viewButton={st.viewButton}\r\n isCombineEnabled\r\n inLineAdd\r\n typeAdd={st.type}\r\n selectedParent={st.selectedParent}\r\n cardColorPicker={props.showColors ? true : false}\r\n />\r\n );\r\n })}\r\n {provided.placeholder}\r\n\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n <Dialog fullWidth aria-labelledby=\"simple-dialog-title\" open={Migrator}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n marginLeft: \"10px\",\r\n marginTop: \"5px\",\r\n width: \"calc(100% - 10px)\"\r\n }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(\"$__attention\", 1)}\r\n icon=\"label\"\r\n onCancel={() => {\r\n setMigrator(false);\r\n setMigratorData({});\r\n }}\r\n />\r\n </div>\r\n <div style={{ color: \"#CCCCCC\", padding: \"15px\" }}>\r\n {MigratorData._childrens &&\r\n !MigratorData._skipGoals &&\r\n MigratorData._goals.length > 0 &&\r\n MigratorData._goals.filter(\r\n a =>\r\n reduxStore.getState().db.cards[a._id] &&\r\n reduxStore.getState().db.cards[a._id].type === a.type\r\n ).length > 0 && (\r\n <>\r\n <span style={{ color: \"gray\" }}>\r\n {translate(`$__YouHaveLinkedGoals`)}\r\n <p style={{ color: \"red\" }}>\r\n {translate(`$__ThisActionCanOnlyBeUndoneManually`)}\r\n </p>\r\n </span>\r\n {MigratorData._goals\r\n .filter(\r\n a =>\r\n reduxStore.getState().db.cards[a._id] &&\r\n reduxStore.getState().db.cards[a._id].type === a.type\r\n )\r\n .sort((a, b) => {\r\n const orderByTitle = reduxStore.getState().db.orderByTitle;\r\n const orderByTitlePosition = reduxStore.getState().db.orderByTitlePosition;\r\n if (\r\n orderByTitle &&\r\n orderByTitlePosition === \"ASC\" &&\r\n a.name.toLowerCase().trim() < b.name.toLowerCase().trim()\r\n ) {\r\n return -1;\r\n } else if (\r\n orderByTitle &&\r\n orderByTitlePosition === \"DESC\" &&\r\n a.name.toLowerCase().trim() > b.name.toLowerCase().trim()\r\n ) {\r\n return -1;\r\n } else if (orderByTitle) {\r\n return 0;\r\n } else if (\r\n !orderByTitle &&\r\n String(a.order) &&\r\n String(b.order) &&\r\n String(a.order.low) &&\r\n String(b.order.low) &&\r\n parseInt(a.order.low) < parseInt(b.order.low)\r\n ) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n })\r\n .map((a) => (\r\n <div\r\n style={{\r\n width: \"calc(100%)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}\r\n key={a._id}\r\n >\r\n <Card db=\"cards\" cardId={a._id} noShadow />\r\n <Button\r\n onClick={() => {\r\n updateCard(props, {\r\n _id: a._id,\r\n type: \"task\"\r\n });\r\n }}\r\n >\r\n <Icon\r\n icon=\"change_circle\"\r\n color={customApp(\"menu\")}\r\n title={translate(\"$__transformInTask\")}\r\n />\r\n </Button>\r\n </div>\r\n ))}\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: \"15px\"\r\n }}\r\n >\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__skipAll\")}\r\n text={translate(\"$__skipAll\")}\r\n color=\"lightgrey\"\r\n icon={\"skip_next\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipGoals: true\r\n });\r\n }}\r\n />\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__changeAllInTasks\")}\r\n text={translate(\"$__changeAllInTasks\")}\r\n icon={\"change_circle\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n iniMigration(\"goals\");\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipGoals: true\r\n });\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n {MigratorData._childrens &&\r\n !MigratorData._skipObjectives &&\r\n MigratorData._objectives.length > 0 &&\r\n MigratorData._objectives.filter(\r\n a =>\r\n reduxStore.getState().db.cards[a._id] &&\r\n reduxStore.getState().db.cards[a._id].type === a.type\r\n ).length > 0 && (\r\n <>\r\n <span style={{ color: \"gray\" }}>\r\n {translate(`$__YouHaveLinkedObjectives`)}\r\n <p style={{ color: \"red\" }}>\r\n {translate(`$__ThisActionCanOnlyBeUndoneManually`)}\r\n </p>\r\n </span>\r\n {MigratorData._objectives\r\n .filter(\r\n a =>\r\n reduxStore.getState().db.cards[a._id] &&\r\n reduxStore.getState().db.cards[a._id].type === a.type\r\n )\r\n .sort((a, b) => {\r\n const orderByTitle = reduxStore.getState().db.orderByTitle;\r\n const orderByTitlePosition = reduxStore.getState().db.orderByTitlePosition;\r\n if (\r\n orderByTitle &&\r\n orderByTitlePosition === \"ASC\" &&\r\n a.name.toLowerCase().trim() < b.name.toLowerCase().trim()\r\n ) {\r\n return -1;\r\n } else if (\r\n orderByTitle &&\r\n orderByTitlePosition === \"DESC\" &&\r\n a.name.toLowerCase().trim() > b.name.toLowerCase().trim()\r\n ) {\r\n return -1;\r\n } else if (orderByTitle) {\r\n return 0;\r\n } else if (\r\n !orderByTitle &&\r\n String(a.order) &&\r\n String(b.order) &&\r\n String(a.order.low) &&\r\n String(b.order.low) &&\r\n parseInt(a.order.low) < parseInt(b.order.low)\r\n ) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n })\r\n .map((a) => (\r\n <div\r\n style={{\r\n width: \"calc(100%)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}\r\n key={a._id}\r\n >\r\n <Card db=\"cards\" cardId={a._id} noShadow />\r\n <Button\r\n onClick={() => {\r\n updateCard(props, {\r\n _id: a._id,\r\n type: \"goal\"\r\n });\r\n }}\r\n >\r\n <Icon\r\n icon=\"change_circle\"\r\n color={customApp(\"menu\")}\r\n title={translate(\"$__transformInGoal\")}\r\n />\r\n </Button>\r\n </div>\r\n ))}\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: \"15px\"\r\n }}\r\n >\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__skipAll\")}\r\n text={translate(\"$__skipAll\")}\r\n color=\"lightgrey\"\r\n icon={\"skip_next\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipObjectives: true\r\n });\r\n }}\r\n />\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__changeAllInGoal\")}\r\n text={translate(\"$__changeAllInGoal\")}\r\n icon={\"change_circle\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n iniMigration(\"objectives\");\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipObjectives: true\r\n });\r\n }}\r\n />\r\n </div>\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__cancel\")}\r\n text={translate(\"$__cancel\")}\r\n icon={\"cancel\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigrator(false);\r\n setMigratorData({});\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n {((MigratorData &&\r\n MigratorData._childrens &&\r\n Object.keys(MigratorData._childrens).length > 0 &&\r\n MigratorData._goals.filter(\r\n a =>\r\n reduxStore.getState().db.cards[a._id] &&\r\n reduxStore.getState().db.cards[a._id].type === a.type\r\n ).length === 0 &&\r\n MigratorData._objectives.filter(\r\n a =>\r\n reduxStore.getState().db.cards[a._id] &&\r\n reduxStore.getState().db.cards[a._id].type === a.type\r\n ).length === 0) ||\r\n (((MigratorData._skipGoals && MigratorData._goals.length > 0) ||\r\n (MigratorData && MigratorData._goals && MigratorData._goals.length === 0)) &&\r\n ((MigratorData._skipObjectives && MigratorData._objectives.length > 0) ||\r\n (MigratorData && MigratorData._objectives && MigratorData._objectives.length === 0))))\r\n && (\r\n <>\r\n <span style={{ color: \"red\" }}>\r\n {translate(\"$__clickInSaveToFinishMigration\")}\r\n </span>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: \"15px\"\r\n }}\r\n >\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__cancel\")}\r\n text={translate(\"$__cancel\")}\r\n color=\"lightgrey\"\r\n icon={\"close\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigrator(false);\r\n setMigratorData({});\r\n }}\r\n />\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n icon={\"done_all\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n finishMigration();\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n </Dialog>\r\n </div>\r\n );\r\n}\r\n\r\nconst Container = styled.div`\r\n position: absolute;\r\n height: 100%;\r\n padding: 7px;\r\n ${props =>\r\n !props.inLine &&\r\n props.styles &&\r\n props.styles.discountHeight &&\r\n `height:calc(100vh - ${props.styles.discountHeight}px);`}\r\n ${props =>\r\n props.inLine\r\n ? `display: block;\r\n width: -webkit-fill-available;\r\n ${props.style}`\r\n : `display: flex;\r\n width: 100%;\r\n ${props.style}\r\n @media(min-width: 960px) {\r\n display: flex;\r\n }`}\r\n @media(max-width: 959px) {\r\n display: contents !important;\r\n width: -webkit-fill-available;\r\n height: auto;\r\n }\r\n`;\r\n\r\nconst mapStateToProps = (store, props) => ({\r\n cards: store.db.cards,\r\n searchs: store.searchs,\r\n controls: store.controls\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Overview);","//CORE\r\nimport React from \"react\";\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 AgileOverview from \"components/AgileV2/overview\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport Filter from \"componentsV3/Filter/menuFilter\";\r\nimport MoreMenu from \"components/MoreMenu\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n translate,\r\n} from \"functions/\";\r\n\r\nimport {\r\n countNotifications\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n loadCardsV2,\r\n} from \"functions/loadData\"\r\n\r\n\r\nfunction StrategyAndPlansOverviewView(props) {\r\n const { db } = reduxStore.getState()\r\n const [viewCompleted, setViewCompleted] = React.useState(false)\r\n const [viewCatenation, setViewCatenation] = React.useState(true)\r\n const [viewColors, setViewColors] = React.useState(true)\r\n const [onlyUnReaded, setOnlyUnReaded] = React.useState(false)\r\n const [showDeleted, setShowDeleted] = React.useState(false)\r\n const [loadingDeleted, setLoadingDeleted] = React.useState(false)\r\n const [showCheck, setShowCheck] = React.useState(false)\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n deleted: false\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (showDeleted)\r\n loadDeletedCards()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [showDeleted])\r\n\r\n const loadDeletedCards = async () => {\r\n setLoadingDeleted(true)\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n\r\n let lc = await loadCardsV2(props, {\r\n idRel: Nhashs[0],\r\n cardLoad: 'deleted',\r\n })\r\n if (lc)\r\n setLoadingDeleted(false)\r\n }\r\n\r\n let unReadeds = 0\r\n Object.keys(db.cards).filter(a => {\r\n let notifications = countNotifications(a)\r\n if (db.cards[a]\r\n && !db.cards[a].deleted\r\n && (\r\n db.cards[a]._planId === hashs[0]\r\n || db.cards[a]._parent === hashs[0]\r\n )\r\n && (\r\n viewCompleted\r\n ||\r\n (\r\n !viewCompleted\r\n && db.cards[a].status !== \"completed\"\r\n )\r\n )\r\n && notifications.total > 0\r\n )\r\n return true\r\n return false\r\n }).forEach(a => {\r\n let notifications = countNotifications(a)\r\n unReadeds = unReadeds + notifications.total\r\n })\r\n\r\n return (\r\n <div >\r\n <div style={{\r\n padding: \"0px 10px\"\r\n }}>\r\n <Filter style={{\r\n marginLeft: '5px',\r\n paddingTop: \"10px\"\r\n }}\r\n fields={['text', 'date', 'tags', 'priority', 'unit', 'usersMode', 'users', 'responsible']}\r\n showFilters\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n }}\r\n >\r\n <MoreMenu\r\n text={translate(\"$__options\")}\r\n icon={\"settings\"}\r\n horizontalButton\r\n size={'21px'}\r\n transparent\r\n style={{ border: '1px solid rgba(0, 0, 0, 0.47)', borderRadius: '5px' }}\r\n color={customApp('menu')}\r\n btColor={\"lightgray\"}\r\n options={[\r\n {\r\n name: db.orderByTitlePosition === 'ASC' ? translate(\"$__orderByAsc\") : translate(\"$__orderByDesc\"),\r\n icon: db.orderByTitlePosition === 'ASC' ? \"text_rotation_down\" : \"text_rotate_up\",\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n orderByTitlePosition: reduxStore.getState().db.orderByTitlePosition === 'ASC' ? 'DESC' : 'ASC'\r\n })\r\n },\r\n },\r\n {\r\n name: db.orderByTitle ? translate(\"$__manualOrder\") : translate(\"$__orderByName\"),\r\n icon: db.orderByTitle ? \"drag_handle\" : \"format_list_numbered_rtl\",\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n orderByTitle: !reduxStore.getState().db.orderByTitle\r\n })\r\n },\r\n },\r\n {\r\n name: viewColors ? translate(\"$__hideCatenationColors\") : translate(\"$__showCatenationColors\"),\r\n icon: \"palette\",\r\n color: !viewColors ? customApp('menu') : 'lightGray',\r\n onClick: () => {\r\n setViewColors(prev => !prev)\r\n },\r\n },\r\n {\r\n name: translate(\"$__groupByColor\"),\r\n icon: \"gradient\",\r\n color: db.groupByColor ? customApp('menu') : 'lightGray',\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n groupByColor: !db.groupByColor\r\n })\r\n },\r\n },\r\n {\r\n name: translate(\"$__showCatenation\"),\r\n icon: viewCatenation ? \"toggle_on\" : \"toggle_off\",\r\n color: viewCatenation ? customApp('menu') : 'lightGray',\r\n onClick: () => {\r\n setViewCatenation(prev => !prev)\r\n },\r\n },\r\n ]}\r\n />\r\n <div style={{ marginLeft: \"9px\", display: \"flex\", alignItems: \"center\" }}>\r\n <CustomButton\r\n title={viewCompleted ? translate(`$__hideCompleted`, '*') : translate(`$__selectCards`, '*')}\r\n text={viewCompleted ? translate(`$__selectCards`, '*') : translate(`$__selectCards`, '*')}\r\n color={showCheck ? customApp('menu') : \"grey\"}\r\n icon={showCheck ? \"toggle_on\" : \"toggle_off\"}\r\n transparent\r\n onClick={() => {\r\n setShowCheck(prev => !prev)\r\n }}\r\n size={'21px'}\r\n style={{ marginRight: \"9px\", padding: \"0px !important\", backgroundColor: 'transparent', border: '1px solid rgba(0, 0, 0, 0.47)', borderRadius: '5px' }}\r\n />\r\n <CustomButton\r\n title={viewCompleted ? translate(`$__hideCompleted`, '*') : translate(`$__showCompleted`, '*')}\r\n text={viewCompleted ? translate(`$__hideCompleted`, '*') : translate(`$__showCompleted`, '*')}\r\n color={viewCompleted ? customApp('menu') : \"grey\"}\r\n icon={viewCompleted ? \"toggle_on\" : \"toggle_off\"}\r\n transparent\r\n onClick={() => {\r\n setViewCompleted(prev => !prev)\r\n }}\r\n size={'21px'}\r\n style={{ padding: \"0px !important\", backgroundColor: 'transparent', border: '1px solid rgba(0, 0, 0, 0.47)', borderRadius: '5px' }}\r\n />\r\n\r\n {unReadeds < 0 ?\r\n <CustomButton\r\n title={onlyUnReaded ? translate(`$__hideUnreaded`, '*') : translate(`$__showUnreaded`, '*')}\r\n text={onlyUnReaded ? translate(`$__hideUnreaded`, '*') : translate(`$__showUnreaded`, '*')}\r\n color={onlyUnReaded ? customApp('menu') : 'lightGray'}\r\n icon={onlyUnReaded ? \"toggle_on\" : \"toggle_off\"}\r\n transparent\r\n onClick={() => {\r\n setOnlyUnReaded(prev => !prev)\r\n }}\r\n badgeContent={unReadeds}\r\n size={'21px'}\r\n style={{ marginLeft: \"12px\", padding: \"0px !important\", backgroundColor: 'transparent', border: '1px solid rgba(0, 0, 0, 0.47)', borderRadius: '5px' }}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div\r\n style={{\r\n marginLeft: 15\r\n }}\r\n >\r\n <CustomButton\r\n title={!reduxStore.getState().controls.deleted ? translate(\"$__showDeleted\") : translate(\"$__hideDeleted\")}\r\n color={!reduxStore.getState().controls.deleted ? customApp('menu') : 'red'}\r\n load={loadingDeleted}\r\n icon={\"recycling\"}\r\n transparent\r\n onClick={() => {\r\n setShowDeleted(prev => !prev)\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n deleted: !showDeleted\r\n })\r\n }}\r\n size={'25px'}\r\n style={{ padding: \"0px !important\", marginLeft: '-6px', border: '1px solid rgba(0, 0, 0, 0.47)', backgroundColor: 'transparent', borderRadius: '5px' }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </Filter>\r\n </div>\r\n <AgileOverview\r\n nodeId={hashs[0] || null}\r\n showCompleted={viewCompleted}\r\n showCatenation={viewCatenation}\r\n showCheck={showCheck}\r\n handleCheckBoxState={() => setShowCheck(prev => !prev)}\r\n showColors={viewColors}\r\n onlyUnReaded={onlyUnReaded}\r\n styles={{\r\n discountHeight: 130\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n groupByColor: store.db.groupByColor,\r\n orderByTitle: store.db.orderByTitle,\r\n orderByTitlePosition: store.db.orderByTitlePosition,\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StrategyAndPlansOverviewView)\r\n","import React from \"react\";\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 Card from \"components/Card\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\n//@MATERIAL\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/InsightBoards\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate\r\n} from \"functions/\";\r\n\r\nfunction RadarView(props) {\r\n const { db, search } = reduxStore.getState()\r\n const [page, setPage] = React.useState(0)\r\n const [limit, setLimit] = React.useState(25)\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let radarCards = {}\r\n\r\n if (hashs[0].length === 36) {\r\n radarCards = Object.keys(db.cards)\r\n .filter(a => db.cards[a]._parent && db.cards[a]._parent === hashs[0] && db.cards[a].type === 'link' && !db.cards[a].deleted)\r\n .sort((a, b) => {\r\n if (db.cards[a].created_at > db.cards[b].created_at)\r\n return -1\r\n return 0\r\n })\r\n .map(a => db.cards[a])\r\n radarCards = radarCards.filter(a =>\r\n ((a.description && a.description.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (a.name && a.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )).map(a => a)\r\n } else {\r\n radarCards = Object.keys(db.cards)\r\n .filter(a => !db.cards[a]._parent && db.cards[a].type === 'link')\r\n .sort((a, b) => {\r\n if (db.cards[a].created_at > db.cards[b].created_at)\r\n return -1\r\n return 0\r\n })\r\n .map(a => db.cards[a])\r\n radarCards = radarCards.filter(a =>\r\n ((a.description && a.description.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (a.name && a.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )).map(a => a)\r\n }\r\n\r\n\r\n\r\n return (\r\n <div style={{ position: 'relative', justifyContent: 'space-between', margin: 'auto', width: '100%' }}>\r\n {/* <HeaderWithIcon\r\n title={`radar`}\r\n icon={'settings_input_antenna'}\r\n fontSize='20px'\r\n color={customApp('menu')}\r\n /> */}\r\n {Object.keys(radarCards).length > 25 &&\r\n <div style={{\r\n position: \"relative\",\r\n float: 'left',\r\n width: '100%',\r\n left: '0px',\r\n right: '0px',\r\n padding: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n {/* PAGINATION */}\r\n {translate('$__page')} {page + 1} {translate('$__of')} {Math.ceil(Object.keys(radarCards).length / limit)}\r\n <div style={{ display: 'flex', alignItems: 'center' }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={Object.keys(radarCards).length}\r\n page={page}\r\n onChangePage={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onChangeRowsPerPage={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate('$__cardsPerPage')}\r\n />\r\n </div>\r\n </div>\r\n }\r\n <GridContainer>\r\n {Object.keys(radarCards)\r\n .filter((card, i) => i <= ((page + 1) * limit) && i >= page * limit)\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={radarCards[card]._id}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <Card db=\"cards\" data={radarCards[card]} expanded Avatar Resume />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n {Object.keys(radarCards).length > 25 &&\r\n <div style={{\r\n position: \"relative\",\r\n float: 'left',\r\n width: '100%',\r\n left: '0px',\r\n right: '0px',\r\n padding: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n {/* PAGINATION */}\r\n {translate('$__page')} {page + 1} {translate('$__of')} {Math.ceil(Object.keys(radarCards).length / limit)}\r\n <div style={{ display: 'flex', alignItems: 'center' }}>\r\n <TablePagination\r\n component=\"div\"\r\n count={Object.keys(radarCards).length}\r\n page={page}\r\n onChangePage={(event, newPage) => {\r\n setPage(newPage)\r\n }}\r\n rowsPerPage={limit}\r\n onChangeRowsPerPage={(event) => {\r\n setLimit(parseInt(event.target.value, 10))\r\n }}\r\n labelRowsPerPage={translate('$__cardsPerPage')}\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n return {\r\n store: store,\r\n ownProps: ownProps\r\n };\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)(withStyles(styles)(RadarView));","import React, { memo } from 'react';\r\nimport MD5 from \"crypto-js/md5\"\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 Card from \"components/Card\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\n//IMAGES\r\nimport tour1 from \"assets/img/tour/strategy-pt.png\"\r\n\r\n//FUNCTIONS\r\nimport { getAppAccess } from \"functions/\";\r\n\r\nfunction App(props) {\r\n const { db, session } = reduxStore.getState()\r\n let AppAccess = getAppAccess()\r\n\r\n\r\n let searchID = props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n const search = props.searchs && props.searchs[searchID] ? props.searchs[searchID] : null\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n let plans = []\r\n\r\n plans = Object.keys(db.cards).filter(a =>\r\n db.cards[a].type === 'plan'\r\n && (\r\n (\r\n hashs[1] !== \"trash\"\r\n && !db.cards[a].deleted\r\n )\r\n || (\r\n hashs[1] === \"trash\"\r\n && db.cards[a].deleted\r\n )\r\n )\r\n ).sort((a, b) => {\r\n if (db.cards[a].order && db.cards[b].order && parseInt(db.cards[a].order.low) < parseInt(db.cards[b].order.low))\r\n return -1\r\n if (db.cards[a].order && db.cards[b].order && parseInt(db.cards[a].order.low) > parseInt(db.cards[b].order.low))\r\n return 1\r\n return 0\r\n }).map(a => db.cards[a])\r\n\r\n if (\r\n (\r\n AppAccess\r\n &&\r\n !AppAccess.owner\r\n &&\r\n (\r\n !AppAccess.planAdmin\r\n && !AppAccess.planEdit\r\n && !AppAccess.planRead\r\n && !AppAccess.planModerate\r\n )\r\n &&\r\n db.cards\r\n && session\r\n && session._id\r\n )\r\n || !db.adminView\r\n ) {\r\n plans = Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && db.cards[a].type === 'plan'\r\n && (\r\n !db.cards[a].private\r\n || (\r\n db.cards[a].private\r\n && db.cards[a]._users\r\n && db.cards[a]._users[session._id]\r\n )\r\n )\r\n && (\r\n (\r\n hashs[1] === 'templates'\r\n ||\r\n (\r\n hashs[1] !== 'templates'\r\n && db.cards[a]._users\r\n && Object.keys(db.cards[a]._users).filter(us => us === session._id).length > 0\r\n )\r\n )\r\n ||\r\n (\r\n (\r\n hashs[1] === 'admin'\r\n && db.cards[a]._users\r\n && Object.keys(db.cards[a]._users).filter(us => us === session._id).length === 0\r\n )\r\n )\r\n )\r\n ).sort((a, b) => {\r\n if (db.cards[a].order && db.cards[b].order && parseInt(db.cards[a].order.low) < parseInt(db.cards[b].order.low))\r\n return -1\r\n return 1\r\n }).map(a => db.cards[a])\r\n } else {\r\n plans = Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && db.cards[a].type === 'plan'\r\n && db.cards[a]._users\r\n && (\r\n Object.keys(db.cards[a]._users).filter(us => us === session._id).length > 0\r\n || (\r\n !db.cards[a].private\r\n && Object.keys(db.cards[a]._users).filter(us => us !== session._id).length > 0\r\n )\r\n )\r\n ).sort((a, b) => {\r\n if (db.cards[a].order && db.cards[b].order && parseInt(db.cards[a].order.low) < parseInt(db.cards[b].order.low))\r\n return -1\r\n return 1\r\n }).map(a => db.cards[a])\r\n }\r\n\r\n if (search) {\r\n if (search.text)\r\n plans = plans.filter(fil => {\r\n if (fil && fil.name && fil.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n return true\r\n return false\r\n }).map(res => res)\r\n plans = plans.filter(fil => {\r\n if ((fil && fil.status && search && search.status && search.status[fil.status]) || (!fil.status && (search && search.status && search.status[\"notStarted\"])))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n plans = plans.filter(fil => {\r\n if ((fil && fil.priority && search.priority[fil.priority]) || (search.priority[\"null\"] && !fil.priority))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n\r\n if (search && search.users && search.users.length > 0)\r\n plans = plans.filter(fil => {\r\n let result = false\r\n if (search.users.indexOf(\"ALL\") > -1 && (!fil._users || Object.keys(fil._users).length === 0)) {\r\n result = true\r\n } else if (fil\r\n && fil._users\r\n && Object.keys(fil._users).length > 0\r\n ) {\r\n Object.keys(fil._users).forEach(a => {\r\n if (search.users.indexOf(a) > -1)\r\n result = true\r\n })\r\n return result\r\n }\r\n return false\r\n }).map(res => res)\r\n\r\n if (search && search.clients && search.clients.length > 0) {\r\n plans = plans.filter(fil => {\r\n if (search.clients.indexOf(\"ALL\") > -1 && !fil.client)\r\n return true\r\n if (fil.client && search.clients.indexOf(fil.client) > -1)\r\n return true\r\n return false\r\n }).map(res => res)\r\n }\r\n if (search && search.tags && search.tags.length > 0) {\r\n plans = plans.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ).map(res => res)\r\n }\r\n }\r\n\r\n return (\r\n <GridContainer style={{ marginTop: '7px' }} >\r\n {\r\n plans && plans.length > 0 && plans\r\n .filter(a => {\r\n if (\r\n (\r\n !a._planId\r\n || (\r\n a._planId\r\n && plans.filter(pl => pl._id === a._planId).length === 0\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n (\r\n hashs[1] !== 'templates'\r\n && (\r\n !a.isTemplate\r\n ||\r\n (a.isTemplate && hashs[1] === 'trash')\r\n )\r\n )\r\n ||\r\n (\r\n hashs[1] === 'templates'\r\n && a.isTemplate\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n hashs[1] === 'archived'\r\n && a.archived\r\n )\r\n ||\r\n (\r\n hashs[1] !== 'archived'\r\n && !a.archived\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n hashs[1] === 'trash'\r\n && a.deleted\r\n )\r\n ||\r\n (\r\n hashs[1] !== 'trash'\r\n && !a.deleted\r\n )\r\n )\r\n )\r\n ) return true\r\n return false\r\n }\r\n )\r\n .sort((a, b) => {\r\n if (a.name < b.name) {\r\n return -1\r\n } else if (a.name > b.name) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }).map((a) => (\r\n <GridItem\r\n key={a._id}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <Card db=\"cards\" data={a} Avatar expanded ignoreList />\r\n </GridItem>\r\n ))\r\n }\r\n {db.loaded && (!plans || plans.length === 0) &&\r\n <div style={{ width: '100%', height: 'calc(100vh - 150px)', display: 'flex', alignItems: 'center', justifyContent: 'center' }} >\r\n <img alt=\"MACHEN_IMAGE\" src={tour1} />\r\n </div>\r\n }\r\n </GridContainer>\r\n )\r\n}\r\n\r\n\r\nconst mapStateToProps = (store) => {\r\n return ({\r\n cards: store.db.cards,\r\n users: store.db.users,\r\n searchs: store.searchs\r\n })\r\n}\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)(memo(App))","import React, { useMemo, useState } from \"react\"\r\nimport moment from \"moment-timezone\"\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\nimport history from \"store/history\"\r\n\r\n// COMPONENTS\r\nimport CardTags from \"components/Tags/Card\"\r\nimport Icon from \"components/Icon\"\r\nimport UserBadge from \"components/Badge/user\"\r\nimport Card from \"components/Card\"\r\n\r\n// @MATERIAL\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule.js\"\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp, getDate } from \"functions/\"\r\n\r\nfunction Component(props) {\r\n const { data } = props\r\n const { db, session } = reduxStore.getState()\r\n const { cards, dataType, status: dbStatus } = db\r\n const [imagePreview, setImagePreview] = useState(null)\r\n\r\n // Extrai as partes do hash (usando useMemo para evitar recomputação desnecessária)\r\n const hashParts = useMemo(() => {\r\n return window.location.hash.replace(\"#\", \"\").split(\"/\")\r\n }, [])\r\n\r\n // Cálculo de indicadores e status com base nos cards relacionados a data._id \r\n const { computedStatus } = useMemo(() => {\r\n const indicators = {}\r\n const status = {}\r\n Object.keys(cards).forEach(key => {\r\n const card = cards[key]\r\n if (\r\n !card ||\r\n [\"chatGroup\", \"link\", \"insight\"].includes(card.type) ||\r\n !card._users ||\r\n Object.keys(card._users).length === 0 ||\r\n !card._users[data._id]\r\n ) {\r\n return\r\n }\r\n // Busca o item de dataType para o tipo do card\r\n const dtItem = dataType.find(dt => dt.name === card.type)\r\n if (dtItem) {\r\n if (card.status && card.status !== \"completed\") {\r\n status[card.status] = (status[card.status] || 0) + 1\r\n status.total = (status.total || 0) + 1\r\n if (card.endDate) {\r\n const cardEnd = moment(new Date(card.endDate * 1000))\r\n .tz(\"America/Sao_Paulo\")\r\n const now = moment().tz(\"America/Sao_Paulo\")\r\n if (cardEnd.isSameOrBefore(now)) {\r\n status.late = (status.late || 0) + 1\r\n }\r\n }\r\n } else {\r\n status.completed = (status.completed || 0) + 1\r\n status.total = (status.total || 0) + 1\r\n }\r\n indicators[card.type] = (indicators[card.type] || 0) + 1\r\n } else {\r\n indicators.swot = (indicators.swot || 0) + 1\r\n }\r\n })\r\n return { computedStatus: status, computedIndicators: indicators }\r\n }, [cards, data._id, dataType])\r\n\r\n // Função auxiliar para renderizar a imagem/Avatar\r\n const renderImage = () => {\r\n const borderStyle = `solid 2px ${customApp(\"color\")}`\r\n if (data.image) {\r\n if (!imagePreview) {\r\n return (\r\n <img\r\n alt=\"MACHEN_IMAGE\"\r\n style={{\r\n width: \"70px\",\r\n height: \"70px\",\r\n top: \"-20px\",\r\n left: \"-6px\",\r\n borderRadius: \"50%\",\r\n border: borderStyle,\r\n position: \"absolute\",\r\n backgroundColor: customApp(\"color\"),\r\n }}\r\n src={data.image}\r\n onError={() => setImagePreview(null)}\r\n onLoad={() => setImagePreview(data.image)}\r\n width=\"100%\"\r\n />\r\n )\r\n } else {\r\n return (\r\n <div\r\n style={{\r\n width: \"50px\",\r\n height: \"50px\",\r\n top: \"-4px\",\r\n left: \"-13px\",\r\n borderRadius: \"50%\",\r\n border: borderStyle,\r\n position: \"absolute\",\r\n background: customApp(\"AvatarBackground\"),\r\n backgroundImage: `url(\"${imagePreview}\")`,\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\",\r\n }}\r\n />\r\n )\r\n }\r\n } else {\r\n return (\r\n <div\r\n style={{\r\n width: \"50px\",\r\n height: \"50px\",\r\n top: \"-4px\",\r\n left: \"-13px\",\r\n borderRadius: \"50%\",\r\n border: borderStyle,\r\n position: \"absolute\",\r\n background: customApp(\"AvatarBackground\"),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {(!data.type || data.type === \"user\") ? (\r\n <Icon size=\"16px\" color=\"rgba(250,250,250,0.77)\">\r\n person\r\n </Icon>\r\n ) : (\r\n <Icon size=\"16px\" color=\"rgba(250,250,250,0.77)\">\r\n business\r\n </Icon>\r\n )}\r\n </div>\r\n )\r\n }\r\n }\r\n\r\n // Renderização em modo \"expanded\"\r\n if (props.expanded) {\r\n return (\r\n <div\r\n style={{\r\n boxShadow: \"0 0 3px 3px rgba(0,0,0,0.1)\",\r\n position: \"relative\",\r\n marginLeft: \"15px\",\r\n ...(props.onClick ? { cursor: \"pointer\" } : {}),\r\n }}\r\n onClick={props.onClick ? () => props.onClick() : null}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: customApp(\"menu\"),\r\n height: \"43px\",\r\n marginTop: \"5px\",\r\n paddingLeft: \"60px\",\r\n fontSize: \"12px\",\r\n color: \"#FFFFFF\",\r\n fontWeight: \"bold\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n left: \"15px\",\r\n }}\r\n >\r\n {data.name}\r\n {!props.resume && (\r\n <div\r\n style={{\r\n float: \"right\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginRight: \"7px\",\r\n }}\r\n >\r\n {!props.noActions && (\r\n <div\r\n style={{\r\n float: \"right\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginRight: \"7px\",\r\n }}\r\n >\r\n <Icon\r\n color={customApp(\"color\")}\r\n icon={\"close\"}\r\n onClick={() => {\r\n history.push(`c#tab/${hashParts[1]}`)\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n {renderImage()}\r\n </div>\r\n )\r\n }\r\n\r\n // Renderização padrão (não expanded)\r\n return (\r\n <div\r\n style={{\r\n marginTop: \"33px\",\r\n width: props.style && props.style.width ? props.style.width : \"calc(100% - 15px)\",\r\n minHeight: \"120px\",\r\n backgroundColor: \"#FFFFFF\",\r\n boxShadow: \"0 0 3px 3px rgba(0,0,0,0.1)\",\r\n position: \"relative\",\r\n marginLeft: props.style && props.style.marginLeft ? props.style.marginLeft : \"15px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: customApp(\"menu\"),\r\n height: \"43px\",\r\n paddingLeft: \"95px\",\r\n fontSize: \"12px\",\r\n color: \"#FFFFFF\",\r\n fontWeight: \"bold\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n maxWidth: \"calc(100% - 10px)\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {data.name}\r\n </div>\r\n {!props.resume && (\r\n <div\r\n style={{\r\n float: \"right\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginRight: \"7px\",\r\n }}\r\n >\r\n {(!props.noActions &&\r\n (!data.independentAccount ||\r\n (data.independentAccount && session && session.matrixAdmin)) &&\r\n (!data._parent ||\r\n (data._parent &&\r\n reduxStore.getState().db.users[data._parent] &&\r\n !reduxStore.getState().db.users[data._parent].independentAccount))) && (\r\n <div\r\n style={{\r\n float: \"right\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginRight: \"7px\",\r\n }}\r\n >\r\n <Icon\r\n color={customApp(\"color\")}\r\n icon={\"create\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...db.sideModule,\r\n id: data._id,\r\n activeModule: \"userEdit\",\r\n db: \"users\",\r\n data: { type: \"user\", ...data },\r\n })\r\n }}\r\n />\r\n </div>\r\n )}\r\n {!props.noActions && data.type !== \"user\" && (\r\n <div\r\n style={{\r\n float: \"right\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginRight: \"7px\",\r\n }}\r\n >\r\n <Icon\r\n color={customApp(\"color\")}\r\n icon={\"contacts\"}\r\n onClick={() => {\r\n history.push(`c#tab/units/${data._id}`)\r\n }}\r\n />\r\n </div>\r\n )}\r\n {!props.noActions && data.type === \"sic\" && (\r\n <div\r\n style={{\r\n float: \"right\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginRight: \"7px\",\r\n }}\r\n >\r\n <Icon\r\n color={customApp(\"color\")}\r\n icon={\"badge\"}\r\n onClick={() => {\r\n history.push(`c#tab/units/${data._id}`)\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n {(data.image && (!imagePreview || (data.image && data.image !== imagePreview))) ? (\r\n <img\r\n alt=\"MACHEN_IMAGE\"\r\n style={{\r\n width: \"90px\",\r\n height: \"90px\",\r\n top: \"-24px\",\r\n left: \"-6px\",\r\n borderRadius: \"50%\",\r\n border: `solid 2px ${customApp(\"color\")}`,\r\n position: \"absolute\",\r\n backgroundColor: customApp(\"color\"),\r\n }}\r\n src={data.image}\r\n onError={() => { }}\r\n onLoad={() => setImagePreview(data.image)}\r\n width=\"100%\"\r\n />\r\n ) : data.image ? (\r\n <div\r\n style={{\r\n width: \"90px\",\r\n height: \"90px\",\r\n top: \"-24px\",\r\n left: \"-6px\",\r\n borderRadius: \"50%\",\r\n border: `solid 2px ${customApp(\"color\")}`,\r\n position: \"absolute\",\r\n background: customApp(\"AvatarBackground\"),\r\n backgroundImage: `url(\"${imagePreview}\")`,\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\",\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: \"90px\",\r\n height: \"90px\",\r\n top: \"-24px\",\r\n left: \"-6px\",\r\n borderRadius: \"50%\",\r\n border: `solid 2px ${customApp(\"color\")}`,\r\n position: \"absolute\",\r\n background: customApp(\"AvatarBackground\"),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {(!data.type || data.type === \"user\") ? (\r\n <Icon size=\"33px\" color=\"rgba(250,250,250,0.77)\">\r\n person\r\n </Icon>\r\n ) : (\r\n <Icon size=\"33px\" color=\"rgba(250,250,250,0.77)\">\r\n business\r\n </Icon>\r\n )}\r\n </div>\r\n )}\r\n {props.children ? (\r\n props.children\r\n ) : (\r\n <>\r\n {data?._access?.enabled && data.type === \"user\" ? (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n fontSize: 12,\r\n color: customApp(\"medium\"),\r\n padding: \"3px 7px\",\r\n }}\r\n >\r\n {data?._access?.admin ? (\r\n <>\r\n <Icon color={customApp(\"medium\")} size={\"12px\"}>\r\n supervisor_account\r\n </Icon>\r\n <span>{translate(\"$__supervisorAccount\")}</span>\r\n </>\r\n ) : (\r\n <>\r\n <Icon color={customApp(\"medium\")} size={\"12px\"}>\r\n supervised_user_circle\r\n </Icon>\r\n <span>{translate(\"$__guest\")}</span>\r\n </>\r\n )}\r\n </div>\r\n ) : data.type === \"user\" && data._access && !data._access.enabled ? (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n color: \"red\",\r\n fontSize: 10,\r\n }}\r\n >\r\n {translate(\"$__notEnabled\")}\r\n </div>\r\n ) : null}\r\n {data.groups && data.groups.length > 0 ? (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n fontSize: \"12px\",\r\n color: customApp(\"mediumText\"),\r\n paddingLeft: \"94px\",\r\n paddingRight: \"15px\",\r\n marginTop: \"15px\",\r\n }}\r\n >\r\n {data.groups\r\n .filter(a => a.value)\r\n .sort((a, b) => (a.label < b.label ? -1 : 1))\r\n .map((item, i) => `${i > 0 ? \" / \" : \"\"}${item.label}`)}\r\n </div>\r\n ) : data.type === \"user\" ? (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n fontSize: \"12px\",\r\n color: customApp(\"mediumText\"),\r\n paddingLeft: \"94px\",\r\n marginTop: \"15px\",\r\n }}\r\n >\r\n {translate(`$__doesntBelongToAGroup`)}\r\n </div>\r\n ) : null}\r\n {data._lastAccess ? (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n fontSize: 10,\r\n color: customApp(\"menu\"),\r\n marginTop: 15,\r\n textAlign: \"right\",\r\n paddingRight: 5,\r\n }}\r\n >\r\n {translate(`$__lastAccess`)}:{getDate(data._lastAccess)}\r\n </div>\r\n ) : null}\r\n {!props.noShowUsers && data.type !== \"user\" && (\r\n <div style={{ marginTop: \"11px\", width: \"100%\", padding: \"15px\" }}>\r\n <ClientInfo id={data._id} {...props} />\r\n </div>\r\n )}\r\n {data.type === \"user\" && computedStatus && computedStatus.total > 0 && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n paddingLeft: \"15px\",\r\n paddingRight: \"15px\",\r\n flexFlow: \"wrap\",\r\n paddingTop: 15,\r\n paddingBottom: 15,\r\n }}\r\n >\r\n <fieldset style={{ padding: 7, width: \"calc(100% - 14px)\" }}>\r\n <legend style={{ color: \"lightgray\", fontSize: 12 }}>\r\n {translate(\"$__openActivities\")}\r\n </legend>\r\n <h3>\r\n <small>\r\n {translate(\"$__total\", 1)}: {computedStatus.total}\r\n </small>\r\n </h3>\r\n {dbStatus\r\n .filter(st => st.value !== \"completed\")\r\n .map((st, index) => (\r\n <div\r\n key={`${index}_${st.value}`}\r\n style={{\r\n color: \"black\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n height: \"30px\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <div style={{ display: \"flex\" }}>\r\n <Icon color={st.color}>{st.icon}</Icon>\r\n <span style={{ marginLeft: \"15px\" }}>\r\n {translate(st.label, 1)}\r\n </span>\r\n </div>\r\n <div>{computedStatus[st.value] || 0}</div>\r\n </div>\r\n ))}\r\n <div\r\n style={{\r\n color: \"black\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n height: \"30px\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <div style={{ display: \"flex\" }}>\r\n <Icon color={\"red\"}>assignment_late</Icon>\r\n <span style={{ marginLeft: \"15px\" }}>\r\n {translate(\"$__late\", 1)}\r\n </span>\r\n </div>\r\n <div>{computedStatus.late || 0}</div>\r\n </div>\r\n </fieldset>\r\n </div>\r\n )}\r\n {!props.resume && <CardTags options={data.tags} showOptions={false} />}\r\n {props.resume && (\r\n <div>\r\n <UserBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"left\",\r\n }}\r\n userId={data._id}\r\n >\r\n <Icon size=\"27px\">chat</Icon>\r\n </UserBadge>\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nconst ClientInfo = (props) => {\r\n const { cards, users } = reduxStore.getState().db\r\n const plans = useMemo(() => {\r\n const cardsArray = Object.keys(cards)\r\n .map(key => cards[key])\r\n .filter(\r\n card =>\r\n card &&\r\n card.client === props.id &&\r\n card.type === \"plan\" &&\r\n !card.deleted &&\r\n !card.archived &&\r\n !card.isTemplate &&\r\n (\r\n (!props.completed && card.status !== \"completed\") ||\r\n (props.completed && card.status === \"completed\")\r\n )\r\n )\r\n return cardsArray.sort((a, b) => {\r\n if (a.name < b.name) return -1\r\n if (a.name > b.name) return 1\r\n return 0\r\n })\r\n }, [cards, props.id, props.completed])\r\n\r\n return (\r\n <div style={{ display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\" }}>\r\n {Object.values(users).filter(u => u && !u.deleted && u._parent === props.id).length > 0 && (\r\n <>\r\n <div style={{ width: \"100%\" }}>{translate(\"$__users\", 1)}:</div>\r\n <AvatarGroup max={12}>\r\n {Object.values(users)\r\n .filter(u => u && !u.deleted && u._parent === props.id)\r\n .map(user => (\r\n <Tooltip title={user.name} key={user._id}>\r\n <Avatar alt={user.name} src={user.image || null} style={{ width: \"23px\", height: \"23px\" }}>\r\n {user.name ? user.name.substr(0, 1) : \"\"}\r\n </Avatar>\r\n </Tooltip>\r\n ))}\r\n </AvatarGroup>\r\n </>\r\n )}\r\n {plans.length > 0 && (\r\n <div style={{ width: \"100%\" }}>\r\n {plans.map((plan, i) => (\r\n <div key={`${plan._id}-${i}`}>\r\n <Card data={plan} db=\"cards\" Avatar={false} expanded={false} ignoreList notGlobalExpanded />\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n usersStatus: store.usersStatus,\r\n users: store.db.users,\r\n})\r\nconst mapDispatchToProps = (dispatch) => bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","import React from \"react\"\r\nimport MD5 from \"crypto-js/md5\"\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 Card from \"components/Card\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport UserCard from \"components/User/card\";\r\n\r\n\r\n//IMAGES\r\nimport tour1 from \"assets/img/tour/strategy-pt.png\"\r\n\r\n//FUNCTIONS\r\nimport { getAppAccess, customApp, translate } from \"functions/\"\r\n\r\nfunction App(props) {\r\n const { db, session } = reduxStore.getState()\r\n\r\n let searchID = props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n const search = props.searchs && props.searchs[searchID] ? props.searchs[searchID] : null\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n let plans = []\r\n\r\n plans = Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && db.cards[a].type\r\n && db.cards[a].type === \"plan\"\r\n && !db.cards[a].deleted\r\n && !db.cards[a].isTemplate\r\n && !db.cards[a].archived\r\n &&\r\n (\r\n (\r\n !props.completed\r\n && db.cards[a].status !== \"completed\"\r\n )\r\n ||\r\n (\r\n props.completed\r\n && db.cards[a].status === \"completed\"\r\n )\r\n\r\n )\r\n ).sort((a, b) => {\r\n if (db.cards[a].order && db.cards[b].order && parseInt(db.cards[a].order.low) < parseInt(db.cards[b].order.low))\r\n return -1\r\n if (db.cards[a].order && db.cards[b].order && parseInt(db.cards[a].order.low) > parseInt(db.cards[b].order.low))\r\n return 1\r\n return 0\r\n }).map(a => db.cards[a])\r\n\r\n if (\r\n (\r\n AppAccess\r\n &&\r\n !AppAccess.owner\r\n &&\r\n (\r\n !AppAccess.planAdmin\r\n && !AppAccess.planEdit\r\n && !AppAccess.planRead\r\n && !AppAccess.planModerate\r\n )\r\n &&\r\n db.cards\r\n && session\r\n && session._id\r\n )\r\n || !db.adminView\r\n ) {\r\n\r\n plans = plans.filter(a =>\r\n a.type === \"plan\"\r\n && a && a._users\r\n && Object.keys(a._users).filter(us =>\r\n us === session._id\r\n || (\r\n reduxStore.getState().db.users[us]\r\n && reduxStore.getState().db.users[us].groups\r\n && reduxStore.getState().db.users[us].groups.filter(fil =>\r\n a._groups\r\n && a._groups[fil.value]\r\n ).length > 0\r\n )\r\n ).length > 0\r\n\r\n ).sort((a, b) => {\r\n if (a && a.order && b && b.order && parseInt(a.order.low) < parseInt(b.order.low))\r\n return -1\r\n return 1\r\n }).map(a => a)\r\n } else {\r\n plans = plans.filter(a =>\r\n a.type === \"plan\"\r\n && a\r\n && a._users\r\n && (\r\n Object.keys(a._users).filter(us =>\r\n us === session._id\r\n || (\r\n reduxStore.getState().db.users[us]\r\n && reduxStore.getState().db.users[us].groups\r\n && reduxStore.getState().db.users[us].groups.filter(fil =>\r\n a._groups\r\n && a._groups[fil.value]\r\n ).length > 0\r\n )\r\n ).length > 0\r\n || (\r\n !a.private\r\n && Object.keys(a._users).filter(us => us !== session._id).length > 0\r\n )\r\n )\r\n ).sort((a, b) => {\r\n if (a.order && db.cards[b].order && parseInt(a.order.low) < parseInt(db.cards[b].order.low))\r\n return -1\r\n return 1\r\n }).map(a => a)\r\n }\r\n\r\n\r\n if (search) {\r\n if (search.text)\r\n plans = plans.filter(fil => {\r\n if (fil && fil.name && fil.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n return true\r\n return false\r\n }).map(res => res)\r\n plans = plans.filter(fil => {\r\n if ((fil && fil.status && search && search.status && search.status[fil.status]) || (!fil.status && (search && search.status && search.status[\"notStarted\"])))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n plans = plans.filter(fil => {\r\n if ((fil && fil.priority && search.priority[fil.priority]) || (search.priority[\"null\"] && !fil.priority))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n\r\n if (search && search.users && search.users.length > 0)\r\n plans = plans.filter(fil => {\r\n let result = false\r\n if (search.users.indexOf(\"ALL\") > -1 && (!fil._users || Object.keys(fil._users).length === 0)) {\r\n result = true\r\n } else if (fil\r\n && fil._users\r\n && Object.keys(fil._users).length > 0\r\n ) {\r\n Object.keys(fil._users).filter(a => {\r\n if (search.users.indexOf(a) > -1)\r\n result = true\r\n return false\r\n })\r\n return result\r\n }\r\n return false\r\n }).map(res => res)\r\n\r\n if (search && search.clients && search.clients.length > 0) {\r\n plans = plans.filter(fil => {\r\n if (search.clients.indexOf(\"ALL\") > -1 && !fil.client)\r\n return true\r\n if (fil.client && search.clients.indexOf(fil.client) > -1)\r\n return true\r\n return false\r\n }).map(res => res)\r\n }\r\n if (search && search.tags && search.tags.length > 0) {\r\n plans = plans.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ).map(res => res)\r\n }\r\n }\r\n\r\n return (\r\n <div >\r\n {plans.filter(pl => pl._isFavorite).length > 0 &&\r\n <div\r\n style={{ marginBottom: \"33px\" }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(`$__myFavoritePlans`, 1)}\r\n icon={\"favorite\"}\r\n color={customApp(\"menu\")}\r\n />\r\n <GridContainer>\r\n <Plans plans={plans.filter(pl =>\r\n pl._isFavorite\r\n && !pl.private\r\n ).map(res => res)} />\r\n </GridContainer>\r\n </div>\r\n }\r\n {plans.filter(pl => pl._isFavorite && pl.private).length > 0 &&\r\n <div\r\n style={{ marginBottom: \"33px\" }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(`$__myFavoritePrivatePlans`, 1)}\r\n icon={\"private_connectivity\"}\r\n color={customApp(\"menu\")}\r\n />\r\n <GridContainer>\r\n <Plans plans={plans.filter(pl =>\r\n pl._isFavorite\r\n && pl.private\r\n ).map(res => res)} />\r\n </GridContainer>\r\n </div>\r\n }\r\n {plans.filter(pl => pl.client && db.users[pl.client]).length > 0 &&\r\n <div\r\n style={{ marginBottom: \"33px\" }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(`$__customerPlanning`, 1)}\r\n icon={\"business\"}\r\n color={customApp(\"menu\")}\r\n />\r\n <GridContainer>\r\n <Client plans={plans.filter(pl => pl.client).map(res => res)} completed={props.completed ? true : false} />\r\n </GridContainer>\r\n </div>\r\n }\r\n\r\n {plans.filter(pl => !pl.client && !pl.private).length > 0 &&\r\n <div\r\n style={{ marginBottom: \"33px\" }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(`$__accountPlanning`, 1)}\r\n icon={\"work\"}\r\n color={customApp(\"menu\")}\r\n />\r\n <GridContainer>\r\n <Plans plans={plans.filter(pl => !pl.client && !pl.private).map(res => res)} />\r\n </GridContainer>\r\n </div>\r\n }\r\n {plans.filter(pl => pl.client && !db.users[pl.client]).length > 0 &&\r\n <div\r\n style={{ marginBottom: \"33px\" }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(`$__consultingPlanning`, 1)}\r\n icon={\"work\"}\r\n color={customApp(\"menu\")}\r\n />\r\n <GridContainer>\r\n <Plans plans={plans.filter(pl => pl.client && !db.users[pl.client]).map(res => res)} />\r\n </GridContainer>\r\n </div>\r\n }\r\n {plans.filter(pl => !pl.client && pl.private).length > 0 &&\r\n <div\r\n style={{ marginBottom: \"33px\" }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(`$__privatePlanning`, 1)}\r\n icon={\"private_connectivity\"}\r\n color={customApp(\"menu\")}\r\n />\r\n <GridContainer>\r\n <Plans plans={plans.filter(pl => !pl.client && pl.private).map(res => res)} />\r\n </GridContainer>\r\n </div>\r\n }\r\n {db.loaded && (!plans || plans.length === 0) &&\r\n <div style={{ width: \"100%\", height: \"calc(100vh - 150px)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }} >\r\n <img alt=\"MACHEN_IMAGE\" src={tour1} />\r\n </div>\r\n }\r\n </div>\r\n )\r\n}\r\nconst Client = (props) => {\r\n const { db } = reduxStore.getState()\r\n\r\n let units = []\r\n props.plans.forEach(a => {\r\n if (units.filter(c => c._id === a.client).length === 0 && db.users[a.client])\r\n units.push(db.users[a.client])\r\n })\r\n return (\r\n <React.Fragment>\r\n {units.sort((a, b) => {\r\n let nameA = a.displayName || a.name\r\n let nameB = b.displayName || b.name\r\n if (nameA < nameB)\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0\r\n }).map((a, ai) => (\r\n <GridItem\r\n key={`${a._id}-${ai}`}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n style={{ height: \"calc(100% - 34px)\", padding: \"0px 0px !important\" }}\r\n >\r\n <UserCard\r\n data={a}\r\n expanded={false}\r\n noActions\r\n style={{ height: \"calc(100% - 34px)\", margin: 0 }}\r\n completed={props.completed ? true : false}\r\n />\r\n </GridItem>\r\n )\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst Plans = (props) => {\r\n return (\r\n <React.Fragment>\r\n {props.plans\r\n .sort((a, b) => {\r\n if (a.name < b.name) {\r\n return -1\r\n } else if (a.name > b.name) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n .map((a, ai) => (\r\n <GridItem\r\n key={`${a._id}_${ai}`}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <Card data={a} db=\"cards\" Avatar expanded ignoreList />\r\n </GridItem>\r\n )\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\n\r\nconst mapStateToProps = (store) => {\r\n return ({\r\n cards: store.db.cards,\r\n users: store.db.users,\r\n searchs: store.searchs\r\n })\r\n}\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)(App)","import React, { memo } from \"react\"\r\nimport MD5 from \"crypto-js/md5\"\r\nimport Routes from \"routes\";\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\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport KanbanBoard from \"components/AgileKanban\"\r\nimport CardsLoader from \"components/Card/loader\"\r\nimport Filter from \"componentsV3/Filter/menuFilter\"\r\n\r\n//VIEWS\r\nimport Actions from \"views/StrategyAndPlans/Actions\"\r\nimport BrightAndConnected from \"views/BrightAndConnected/\"\r\nimport Dashboard from \"components/Dashboards/Dashboard\"\r\nimport Statistics from \"views/StrategyAndPlans/Dashboard/tagsStatistics\"\r\nimport InsightBoards from \"views/InsightBoards\"\r\nimport Library from \"views/Library\"\r\nimport Matrix from \"views/StrategyAndPlans/MATRIX\"\r\nimport Overview from \"views/StrategyAndPlans/Overview\"\r\nimport Radar from \"views/Radar\"\r\n\r\n//DEPENDENCIES\r\nimport Plans from \"./plans\"\r\nimport HomePlans from \"./homePlans\"\r\n\r\nimport {\r\n planAccountVerify\r\n} from \"functions/cards\"\r\n\r\n\r\nfunction StrategyAndPlans(props) {\r\n const { session } = reduxStore.getState()\r\n\r\n React.useEffect(() => {\r\n const scrollTimer = setTimeout(() => {\r\n document.getElementById(\"mainPannel\").scrollTo(0, 0)\r\n }, 100)\r\n return () => {\r\n clearTimeout(scrollTimer)\r\n }\r\n }, [props.history])\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n let searchID = props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n\r\n if (!window.location.hash.split(\"/\")[0].replace(\"#\", \"\")) {\r\n history.push(\"sp#tab/home\")\r\n }\r\n\r\n let permission = true\r\n\r\n if (\r\n hashs[0]\r\n && hashs[0].length === 36\r\n && !reduxStore.getState().db.cards[hashs[0]]\r\n ) {\r\n permission = false\r\n }\r\n\r\n if (\r\n hashs[0]\r\n && hashs[0].length === 36\r\n && reduxStore.getState().db.cards[hashs[0]]\r\n && !reduxStore.getState().db.cards[hashs[0]].isTemplate\r\n && (\r\n reduxStore.getState().db.cards[hashs[0]]._users\r\n && (\r\n !reduxStore.getState().db.cards[hashs[0]]._users[session._id]\r\n && (\r\n reduxStore.getState().db.cards[hashs[0]]._account\r\n && reduxStore.getState().db.cards[hashs[0]]._account !== MD5(session.account).toString()\r\n )\r\n )\r\n )\r\n )\r\n permission = false\r\n\r\n if (planAccountVerify(hashs[0]))\r\n permission = planAccountVerify(hashs[0])\r\n\r\n if (!permission) {\r\n history.push(\"/deniedAccess\")\r\n return (\r\n <React.Fragment></React.Fragment>\r\n )\r\n }\r\n\r\n if (hashs[0].length === 36 && reduxStore.getState().db.cards[hashs[0].replace(\"#\", \"\")] && hashs[1] && hashs[1] === \"board\")\r\n return (<KanbanBoard nodeId={hashs[0] || null} />)\r\n const hasFilter = Routes.filter(a => {\r\n if (hashs[1] && a.tabs && a.tabs.filter(tf => tf.path === hashs[1]).length > 0 && a.tabs.filter(tf => tf.path === hashs[1])[0].search === false)\r\n return false\r\n if (a && a.path === window.location.pathname && a.search)\r\n return true\r\n return false\r\n }).length > 0\r\n return (\r\n <div style={{\r\n height: \"-webkit-fill-available\"\r\n }}>\r\n\r\n {hasFilter ?\r\n <div style={{\r\n position: \"absolute\",\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n // zIndex: 1,\r\n paddingLeft: 15,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n <Filter\r\n fields={['text', 'date', 'tags', 'priority', 'unit', 'usersMode', 'users']}\r\n showFilters\r\n nodeId={searchID}\r\n />\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\" }}>\r\n <CardsLoader />\r\n </div>\r\n </div> : <></>}\r\n <div style={{\r\n position: \"absolute\",\r\n top: hasFilter ? 60 : 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n overflow: \"auto\",\r\n }}>\r\n {(!hashs[0] || (hashs[0] && hashs[0].replace(\"#\", \"\").length !== 36)) && hashs[1] === \"home\" ?\r\n <React.Fragment>\r\n <HomePlans />\r\n </React.Fragment>\r\n : (!hashs[0] || (hashs[0] && hashs[0].replace(\"#\", \"\").length !== 36)) && hashs[1] === \"completed\" ?\r\n <React.Fragment>\r\n <HomePlans completed={true} />\r\n </React.Fragment>\r\n :\r\n (!hashs[0]\r\n ||\r\n (hashs[0]\r\n && hashs[0].replace(\"#\", \"\").length !== 36\r\n )\r\n )\r\n &&\r\n <Plans />\r\n }\r\n {hashs[0].length === 36 && reduxStore.getState().db.cards[hashs[0].replace(\"#\", \"\")] ?\r\n <React.Fragment>\r\n {hashs[1] && hashs[1] === \"matrix\" &&\r\n <Matrix />\r\n }\r\n {hashs[1] && (hashs[1] === \"actions\" || hashs[1] === \"guidelines\" || hashs[1] === \"objectives\" || hashs[1] === \"goals\")\r\n &&\r\n <Actions type={hashs[1]} />\r\n }\r\n {hashs[1] && hashs[1] === \"dashboard\" &&\r\n <Dashboard />\r\n }\r\n {hashs[1] && hashs[1] === \"statistics\" &&\r\n <Statistics />\r\n }\r\n {hashs[1] && hashs[1] === \"overview\" &&\r\n <Overview />\r\n }\r\n {hashs[1] && hashs[1] === \"bright-and-connected\" &&\r\n <div style={{ marginTop: 30 }}>\r\n <BrightAndConnected />\r\n </div>\r\n }\r\n {hashs[1] && hashs[1] === \"insight-boards\" &&\r\n <div style={{ marginTop: 30 }}>\r\n <InsightBoards />\r\n </div>\r\n }\r\n {hashs[1] && hashs[1] === \"radar\" &&\r\n <div style={{ marginTop: 30 }}>\r\n <Radar />\r\n </div>\r\n }\r\n {hashs[1] && hashs[1] === \"library\" &&\r\n <div style={{ padding: 15 }}>\r\n <Library />\r\n </div>\r\n }\r\n {hashs[1] && hashs[1] === \"planningBoard\" &&\r\n <div style={{ padding: 15 }}>\r\n <iframe title=\"outModule\"\r\n style={{ position: \"absolute\", width: \"calc(100% - 30px)\", height: \"100%\", border: 'none' }}\r\n src={`https://miro.com/app/live-embed/${reduxStore.getState().db.cards[hashs[0]].miroBoard}=/?embedAutoplay=true&moveToViewport=-23165,-5837,13803,7546`}\r\n ></iframe>\r\n </div>\r\n }\r\n {/* <ErrorBoundary>\r\n <ReactTour />\r\n </ErrorBoundary> */}\r\n </React.Fragment>\r\n :\r\n <React.Fragment>\r\n </React.Fragment>\r\n }\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(memo(StrategyAndPlans))","//@MATERIAL \r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nconst Component = withStyles({\r\n root: {\r\n '& .MuiPaper-root': {\r\n overflow: \"visible\"\r\n },\r\n },\r\n})(Dialog);\r\n\r\nexport default Component","//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\"\r\n\r\nexport const tagUpdate = (props, data) => {\r\n let newTagResult = reduxStore.getState().db.tag\r\n if (newTagResult.filter(t => t.value === data.value).length > 0) {\r\n newTagResult.forEach((tag, i) => {\r\n if (tag.value === data.value) {\r\n newTagResult[i] = {\r\n ...newTagResult[i],\r\n ...data\r\n }\r\n }\r\n })\r\n } else {\r\n newTagResult.push(data)\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n tag: [\r\n ...newTagResult\r\n ]\r\n })\r\n}\r\n\r\nexport const tagDelete = async (props, data) => {\r\n const response = api.delete(`/tag/unique/${data._id}`, {\r\n ...data\r\n })\r\n if (response)\r\n localTagDelete(props, data)\r\n}\r\n\r\nexport const localTagDelete = (props, data) => {\r\n let newTags = []\r\n reduxStore.getState().db.tag.forEach(t => {\r\n if (t.value !== data._id)\r\n newTags.push(t)\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n tag: newTags\r\n });\r\n}\r\n\r\nexport const tagUnlink = async (props, data) => {\r\n const response = api.put(`/tag/unlink/`, {\r\n ...data\r\n })\r\n if (response)\r\n localTagUnlink(props, data)\r\n}\r\n\r\nexport const tagLink = async (props, data) => {\r\n const { session } = reduxStore.getState()\r\n\r\n if (data.target === data._id)\r\n data.target = session.account\r\n\r\n const response = await api.put(`/tag/link/`, {\r\n ...data\r\n })\r\n if (response)\r\n return true\r\n}\r\n\r\n\r\nexport const localTagUnlink = (props, data) => {\r\n let newTags = []\r\n let { session, db } = reduxStore.getState()\r\n db.tag.forEach(t => {\r\n let newData = t\r\n if (t.value === data._id)\r\n newData = {\r\n ...newData,\r\n count: 0\r\n }\r\n newTags.push(newData)\r\n })\r\n let cards = {\r\n ...db.cards\r\n }\r\n Object.keys(cards).filter(card =>\r\n cards[card]._users\r\n && cards[card]._users[session._id]\r\n && cards[card]._tags\r\n && cards[card]._tags.filter(tg => tg.value === data._id).length > 0\r\n ).forEach(card => {\r\n let newTags = []\r\n cards[card]._tags.forEach(tg => {\r\n if (tg.value !== data._id)\r\n newTags.push(tg)\r\n })\r\n cards[card]._tags = newTags\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n tag: newTags,\r\n cards: cards\r\n });\r\n}","//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\n//REDUX\r\nimport { connect } from 'react-redux'\r\nimport { bindActionCreators } from 'redux'\r\nimport * as reduxActions from 'store/actions'\r\nimport history from \"store/history\"\r\nimport reduxStore from \"store/\"\r\n\r\n//COMPONENTS\r\nimport MoreMenu from \"components/MoreMenu/\"\r\n\r\n\r\nimport {\r\n tagDelete,\r\n tagUnlink,\r\n} from \"functions/tags\";\r\n\r\nimport {\r\n translate,\r\n customApp,\r\n getAppAccess,\r\n appAlert\r\n} from \"functions/\"\r\n\r\n//STYLES\r\nimport \"./styles.css\"\r\n\r\nfunction RenderTag(props) {\r\n const ns = props.data\r\n const [showMoreMenuOpen, setShowMoreMenuOpen] = React.useState(false)\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n const openTag = (e) => {\r\n history.push(`tags#${e.value}`)\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n history: `tags#${e.value}`\r\n })\r\n }\r\n\r\n const deleteTag = async (e) => {\r\n appAlert({\r\n message: translate(\"$__confirmDeleteTag\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n tagDelete(props, { _id: e.value })\r\n }\r\n })\r\n }\r\n\r\n const unlinkTag = async (e) => {\r\n appAlert({\r\n message: translate(\"$__confirmUnlinkTag\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n tagUnlink(props, { _id: e.value })\r\n }\r\n })\r\n }\r\n\r\n if (!ns.item.value) {\r\n return <div\r\n style={{\r\n fontWeight: \"bold\",\r\n color: customApp(\"color\"),\r\n fontSize: \"12px\"\r\n }}>{ns.item.text}</div>\r\n } else {\r\n return <div\r\n style={{\r\n width: \"100%\",\r\n cursor: \"pointer\",\r\n display: \"flex\"\r\n }}\r\n onMouseOver={() => {\r\n if (AppAccess && AppAccess.plan && AppAccess.planAdmin)\r\n setShowMoreMenuOpen(true)\r\n }}\r\n onMouseLeave={(e) => {\r\n setShowMoreMenuOpen(false)\r\n\r\n }}\r\n >\r\n <div\r\n style={{\r\n zIndex: 0,\r\n maxWidth: \"90%\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n ...ns.item.color ? { borderLeft: `solid 6px ${ns.item.color}`, paddingLeft: \"7px\" } : {}\r\n }}\r\n onClick={\r\n () => {\r\n openTag(ns.item)\r\n }\r\n }\r\n >\r\n {ns.item.text} {ns.item._count ? `(${ns.item._count})` : ``}\r\n </div>\r\n {showMoreMenuOpen &&\r\n <div style={{ zIndex: 1 }}>\r\n <MoreMenu\r\n horizontalButton\r\n transparent\r\n size=\"14px\"\r\n btColor={customApp(\"color\")}\r\n options={[\r\n ...AppAccess && AppAccess.plan && (\r\n AppAccess.planAdmin\r\n ) ? [{\r\n name: \"$__edit\",\r\n icon: \"edit\",\r\n onClick: () => {\r\n props.editTag(ns.item)\r\n },\r\n }] : [],\r\n (\r\n (parseInt(ns.item._count) === 0 && parseInt(ns.item._countOthers) === 0)\r\n || (parseInt(ns.item._count) > 0 && parseInt(ns.item._countOthers) === 0)\r\n ) &&\r\n {\r\n name: \"$__delete\",\r\n icon: \"delete_forever\",\r\n onClick: () => {\r\n deleteTag(ns.item)\r\n },\r\n },\r\n (\r\n (parseInt(ns.item._count) > 0 && parseInt(ns.item._countOthers) > 0)\r\n ) &&\r\n {\r\n name: \"$__unlinkMyActivities\",\r\n icon: \"label_off\",\r\n onClick: () => {\r\n unlinkTag(ns.item)\r\n },\r\n },\r\n ]}\r\n />\r\n </div>\r\n }\r\n </div>\r\n }\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n//EXPORT\r\nexport default connect(null, mapDispatchToProps)(RenderTag)","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst styles = (theme) => ({\r\n ...defaultFont,\r\n menu: {\r\n position: 'relative',\r\n borderRight: customApp('color'),\r\n },\r\n menuExpanded: {\r\n position: 'relative',\r\n borderRight: customApp('color'),\r\n },\r\n button: {\r\n position: 'relative', float: 'left', width: '100%', padding: '7px'\r\n },\r\n buttonColor: {\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% + 20px)',\r\n padding: '20px 12px',\r\n marginLeft: '-12px',\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n backgroundColor: customApp('color')\r\n },\r\n buttonColorExpanded: {\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% + 20px)',\r\n padding: '12px 12px 12px 20px',\r\n marginLeft: '-12px',\r\n display: \"flex\",\r\n backgroundColor: customApp('color')\r\n },\r\n separator: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n padding: '7px',\r\n borderTop: `1px solid ${customApp('medium', 0.5)}`,\r\n marginTop: '15px',\r\n marginBottom: '0px',\r\n height: '1px'\r\n }\r\n});\r\n\r\nexport default styles;\r\n","//CORE\r\nimport React from \"react\"\r\nimport Nestable from \"react-nestable\";\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store/\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//COMPONENTS\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\nimport ColorPicker from \"components/ColorPicker\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Dialog from \"components/Dialog\"\r\nimport HeaderWithIcon from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport TextField from \"components/TextField\"\r\nimport Preloader from \"components/PreLoader\"\r\nimport ReactExport from \"react-data-export\"\r\nimport Filter from \"componentsV3/Filter/\"\r\n\r\nimport RenderTag from \"./renderTag\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api\"\r\nimport apims from \"apims\"\r\n\r\nimport {\r\n tagUpdate,\r\n tagLink,\r\n} from \"functions/tags\";\r\n\r\nimport {\r\n translate,\r\n customApp,\r\n getAppAccess,\r\n removeSeats,\r\n} from \"functions/\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/tagsMenu\"\r\nimport \"./styles.css\"\r\n\r\nfunction Component(props) {\r\n const useStyles = makeStyles(styles)\r\n const classes = useStyles()\r\n const { db, session } = reduxStore.getState()\r\n const { tag } = props\r\n const [mounted, setMounted] = React.useState(false)\r\n const [editor, setEditor] = React.useState(false)\r\n const [showAll, setShowAll] = React.useState(false)\r\n const [data, setData] = React.useState({})\r\n const [saveLoading, setSaveLoading] = React.useState(false)\r\n const [search, setSearch] = React.useState(null)\r\n const [tags, setTags] = React.useState([])\r\n const [loader, setLoader] = React.useState(false)\r\n const [exportComponent, setExportComponent] = React.useState(null)\r\n const [showAllTags, setShowAllTags] = React.useState(true)\r\n\r\n\r\n const ExcelFile = ReactExport.ExcelFile;\r\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n if (hashs.length > 0)\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n React.useEffect(() => {\r\n if (!mounted) {\r\n setMounted(true)\r\n mountTags()\r\n if (props.onLoad)\r\n props.onLoad()\r\n }\r\n return () => {\r\n // return false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n mountTags()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [search, JSON.stringify(props.tag)])\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n const mountTags = () => {\r\n let newTags = []\r\n tag.filter(a => {\r\n let searchLabel = search ? removeSeats(search.toLowerCase().trim()) : ``\r\n let tagLabel = removeSeats(a.label.toLowerCase().trim())\r\n if (\r\n !a.parent\r\n &&\r\n (\r\n !search\r\n ||\r\n (\r\n search\r\n && tagLabel.indexOf(searchLabel) > -1\r\n )\r\n ))\r\n return true\r\n return false\r\n })\r\n .sort((a, b) => {\r\n if (removeSeats(a.label.toLowerCase().trim()) < removeSeats(b.label.toLowerCase().trim()))\r\n return -1\r\n if (removeSeats(a.label.toLowerCase().trim()) > removeSeats(b.label.toLowerCase().trim()))\r\n return 1\r\n return 0\r\n }).forEach(ta => {\r\n let a = ta\r\n a._count = Object.keys(db.cards).filter(card => db.cards[card]._users && db.cards[card]._users[session._id] && db.cards[card]._tags && db.cards[card]._tags.filter(cta => cta.value === a.value).length > 0).length > parseInt(a._count) ? Object.keys(db.cards).filter(card => db.cards[card]._users && db.cards[card]._users[session._id] && db.cards[card]._tags && db.cards[card]._tags.filter(cta => cta.value === a.value).length > 0).length : parseInt(a._count)\r\n a._countOthers = Object.keys(db.cards).filter(card => db.cards[card]._users && !db.cards[card]._users[session._id] && db.cards[card]._tags && db.cards[card]._tags.filter(cta => cta.value === a.value).length > 0).length > parseInt(a._countOthers) ? Object.keys(db.cards).filter(card => db.cards[card]._users && !db.cards[card]._users[session._id] && db.cards[card]._tags && db.cards[card]._tags.filter(cta => cta.value === a.value).length > 0).length : parseInt(a._countOthers)\r\n if (\r\n newTags.filter(tag =>\r\n tag.id === a.label.substr(0, 1)\r\n ).length === 0\r\n ) {\r\n let achi = []\r\n if (tag.filter(ca => ca.parent && ca.parent === a.value).length > 0) {\r\n tag.filter(ca => ca.parent && ca.parent === a.value).forEach(xx => {\r\n if (achi.filter(aa => aa.value === xx.value).length === 0)\r\n achi.push({\r\n id: xx.value,\r\n text: xx.label,\r\n ...xx\r\n })\r\n })\r\n }\r\n newTags.push({\r\n id: a.label.substr(0, 1), text: a.label.substr(0, 1),\r\n children: [{\r\n id: a.value,\r\n text: a.label,\r\n ...a,\r\n children: achi\r\n }]\r\n })\r\n } else {\r\n if (\r\n newTags.filter(t => t.id === a.label.substr(0, 1)).length > 0\r\n && newTags.filter(t => t.id === a.label.substr(0, 1))[0].children.filter(c => c.value === a.value).length === 0\r\n ) {\r\n let achi = []\r\n if (tag.filter(ca => ca.parent && ca.parent === a.value).length > 0) {\r\n tag.filter(ca => ca.parent && ca.parent === a.value).forEach(xx => {\r\n if (achi.filter(aa => aa.value === xx.value).length === 0)\r\n achi.push({\r\n id: xx.value,\r\n text: xx.label,\r\n ...xx\r\n })\r\n })\r\n }\r\n newTags.filter(t => t.id === a.label.substr(0, 1))[0].children.push({\r\n id: a.value,\r\n text: a.label,\r\n ...a,\r\n children: achi\r\n })\r\n }\r\n }\r\n })\r\n if (JSON.stringify(newTags) !== JSON.stringify(tags))\r\n setTags(newTags)\r\n }\r\n\r\n const clearEditor = () => {\r\n setData({})\r\n setSaveLoading(false)\r\n setEditor(false)\r\n }\r\n\r\n\r\n\r\n const editTag = (e) => {\r\n setEditor(true)\r\n if (e) {\r\n setData(e)\r\n } else {\r\n setData({})\r\n }\r\n }\r\n\r\n const saveTag = async () => {\r\n setSaveLoading(true)\r\n if (data.value) {\r\n try {\r\n const response = await api.put(\"tag/update\", {\r\n _id: data.value,\r\n name: data.name ? data.name : data.label,\r\n color: data.newColor ? data.newColor : data.color ? data.color : null\r\n })\r\n if (response) {\r\n tagUpdate(props, { value: data.value, label: data.name ? data.name : data.label, color: data.newColor ? data.newColor : data.color }, true)\r\n setSaveLoading(false)\r\n clearEditor()\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n setSaveLoading(false)\r\n }\r\n } else {\r\n try {\r\n const response = await api.post(\"tag/add\", {\r\n name: data.name,\r\n color: data.newColor ? data.newColor : data.color ? data.color : null\r\n })\r\n if (response && response.data) {\r\n setShowAll(true)\r\n tagUpdate(props, response.data, true)\r\n setSaveLoading(false)\r\n clearEditor()\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n setSaveLoading(false)\r\n }\r\n }\r\n }\r\n\r\n const exportTagReport = async () => {\r\n setLoader(true)\r\n const reqReport = await apims.post(\"Rel_TagUser_Used\")\r\n if (reqReport) {\r\n //GERAR EXCEL\r\n setLoader(false)\r\n setExportComponent(\r\n <ExcelFile\r\n filename={`${moment(new Date()).tz('America/Sao_Paulo').format('YYYY-MM-DDTHHMM')}_tagReport`}\r\n element={\r\n <CustomButton\r\n title={translate(\"$__export\")}\r\n text={translate(\"$__export\")}\r\n icon={\"file_download\"}\r\n size={\"25px\"}\r\n />\r\n }\r\n >\r\n <ExcelSheet\r\n data={reqReport.data}\r\n name=\"timeSheet\">\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__user', 1)}`} value=\"user\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__tag', 1)}`} value=\"tag\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__activity', 1)}`} value=\"card\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__status', 1)}`} value=\"status\" />\r\n </ExcelSheet>\r\n {/* {reqReport.data.map((dt, dti) => {\r\n return (\r\n <ExcelSheet data={dt} name={dt.user} key={dti}>\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__user', 1)}`} value=\"user\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__tag', 1)}`} value=\"tag\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__activity', 1)}`} value=\"card\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__status', 1)}`} value=\"status\" />\r\n </ExcelSheet>\r\n )\r\n })} */}\r\n\r\n </ExcelFile>\r\n )\r\n }\r\n }\r\n\r\n return (\r\n <ErrorBoundary>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"90vh\"\r\n }}\r\n >\r\n <div className={classes.menu}\r\n style={{\r\n backgroundColor: \"rgba(250,250,250,0.7)\",\r\n position: \"relative\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n padding: 15\r\n }}\r\n >\r\n <HeaderWithIcon\r\n title={translate(\"$__tagList\", 1)}\r\n icon={\"bookmarks\"}\r\n iconTitle={translate(\"$__tagList\", 1)}\r\n color={customApp(\"colorText\")}\r\n fontSize={\"16px\"}\r\n moreButton\r\n options={[\r\n {\r\n name: \"$__addTag\",\r\n icon: \"add_box\",\r\n color: customApp(\"color\"),\r\n show: \"hover\",\r\n onClick: () => {\r\n editTag()\r\n },\r\n },\r\n AppAccess && AppAccess.plan && AppAccess.planAdmin && !showAll &&\r\n {\r\n name: \"$__showAllTags\",\r\n icon: \"style\",\r\n color: customApp(\"color\"),\r\n show: \"hover\",\r\n onClick: () => {\r\n setShowAll(true)\r\n },\r\n },\r\n showAll &&\r\n {\r\n name: \"$__onlyMyTags\",\r\n icon: \"loyalty\",\r\n color: customApp(\"color\"),\r\n show: \"hover\",\r\n onClick: () => {\r\n setShowAll(false)\r\n },\r\n },\r\n {\r\n name: showAllTags ? \"$__showFilters\" : \"$__showTagList\",\r\n icon: showAllTags ? \"filter_alt\" : \"bookmarks\",\r\n color: customApp(\"color\"),\r\n show: \"hover\",\r\n onClick: () => {\r\n // setShowAll(false)\r\n setShowAllTags(prev => !prev)\r\n },\r\n },\r\n AppAccess && AppAccess.plan && AppAccess.planAdmin &&\r\n {\r\n name: \"$__exportReport\",\r\n icon: \"print\",\r\n color: customApp(\"color\"),\r\n show: \"hover\",\r\n onClick: () => {\r\n exportTagReport()\r\n },\r\n },\r\n ]}\r\n optionsProps={{\r\n transparent: true\r\n }}\r\n />\r\n {exportComponent &&\r\n exportComponent\r\n }\r\n <div\r\n className={classes.separator}\r\n ></div>\r\n {!showAllTags ?\r\n <div style={{ display: \"flex\", position: \"relative\", float: \"left\", padding: 7, width: \"100%\" }}>\r\n <Filter\r\n nodeId={\"tagsView\"}\r\n customLabels={{\r\n text: \"$__\"\r\n }}\r\n fields={['tags', 'date', 'users', 'status', 'priority', 'impact', 'risk', 'complexity', ...AppAccess && AppAccess.plan && AppAccess.planAdmin ? ['admin'] : []]}\r\n showFilters\r\n mode={\"modal\"}\r\n fieldsProps={{\r\n users: {\r\n allPlataform: true,\r\n selectedShow: {\r\n internal: true,\r\n external: false\r\n }\r\n }\r\n }}\r\n />\r\n </div>\r\n :\r\n <div style={{ display: \"flex\", position: \"relative\", float: \"left\", clear: \"both\", width: \"100%\" }}>\r\n <TextField\r\n label={translate(\"$__search\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"name\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: search ? (\r\n <InputAdornment position=\"end\">\r\n <Icon icon={'cancel'} color=\"green\" onClick={() => setSearch(null)} />\r\n </InputAdornment>\r\n ) : null,\r\n onChange: (d) => {\r\n setSearch(d.target.value)\r\n },\r\n }}\r\n placeholder={translate(\"$__nameOfTagSearch_placeholder\", 1)}\r\n />\r\n </div>\r\n }\r\n </div>\r\n {showAllTags &&\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 150,\r\n bottom: 0,\r\n overflow: \"auto\",\r\n padding: \"3px\",\r\n paddingTop: \"7px\",\r\n listStyle: \"none\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Nestable\r\n collapse=\"ALL\"\r\n items={tags}\r\n maxDepth={3}\r\n renderItem={(e) => <RenderTag data={e} editTag={(e) => { editTag(e) }} />}\r\n onChange={(a) => {\r\n let newItems = a.items\r\n let target = newItems[a.targetPath[0]].children[a.targetPath[1]]\r\n\r\n if (!a.dragItem.parent && a.dragItem.id === target.id)\r\n return false\r\n\r\n tagLink(props, {\r\n _id: a.dragItem.id,\r\n target: target.id\r\n })\r\n setTags(newItems)\r\n }}\r\n />\r\n </div>\r\n }\r\n <Dialog\r\n fullWidth={true}\r\n aria-labelledby=\"simple-dialog-title\"\r\n open={editor}\r\n style={{ overflow: \"visible !important\" }}\r\n >\r\n <div style={{ position: \"relative\", marginLeft: \"10px\", marginTop: '5px', width: \"calc(100% - 10px)\" }}>\r\n <HeaderWithIcon\r\n title={data.value ? translate(\"$__editTag\", 1) : translate(\"$__newTag\", 1)}\r\n icon=\"label\"\r\n onCancel={() => { setEditor(false) }}\r\n />\r\n </div>\r\n <div style={{ color: \"#CCCCCC\", padding: \"15px\" }}>\r\n Etiquetas permitem que você adicione palavras-chave às atividades (Tarefas, Insights, Notícias), organizando-as e permitindo melhor navegação e praticidade no seu dia a dia.\r\n </div>\r\n <div style={{ padding: \"15px\" }}>\r\n <TextField\r\n error={(data && (!data.label || data.label.length === 0)) ? true : false}\r\n // helperText={\"Campo de nome da etiqueta deve ter o compimento mínimo de 1 caractere\"}\r\n label={translate(\"$__name\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"name\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n name: d.target.value\r\n })\r\n },\r\n }}\r\n defaultValue={data && data.label ? data.label : null}\r\n placeholder={translate(\"$__nameOfTag_placeholder\", 1)}\r\n />\r\n\r\n </div>\r\n <div style={{ display: \"flex\", padding: \"15px\", overflow: \"visible\" }}>\r\n <span style={{ marginRight: \"7px\" }}>{translate(\"$__tagColor\")}:</span>\r\n <ColorPicker\r\n disablePortal\r\n color={data.color}\r\n onChange={(c) => {\r\n setData({\r\n ...data,\r\n newColor: c\r\n })\r\n\r\n }\r\n }>\r\n {(data.color || data.newColor) ?\r\n <div\r\n className={'tag'}\r\n style={{\r\n backgroundColor: data.newColor ? data.newColor : data.color,\r\n width: \"22px\",\r\n height: \"22px\",\r\n borderRadius: \"50%\",\r\n cursor: \"pointer\"\r\n }}\r\n >\r\n </div>\r\n :\r\n <div\r\n className={'tag'}\r\n style={{\r\n fontWeight: \"bold\"\r\n }}\r\n >\r\n {translate(\"$__clickHereToAddColor\")}\r\n </div>\r\n }\r\n\r\n </ColorPicker>\r\n </div>\r\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"flex-end\", padding: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__cancel\")}\r\n text={translate(\"$__cancel\")}\r\n color=\"lightgrey\"\r\n icon={\"close\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setEditor(false)\r\n }}\r\n />\r\n {\r\n data\r\n && (\r\n data.name\r\n ||\r\n data.newColor\r\n )\r\n &&\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n load={saveLoading ? true : false}\r\n onClick={() => {\r\n saveTag()\r\n }}\r\n />\r\n </div>\r\n }\r\n </div>\r\n </Dialog>\r\n {loader ?\r\n <Preloader fullScreen />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </ErrorBoundary >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n tag: store.db.tag\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)","import React from \"react\"\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 Card from \"components/Card\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport Icon from \"components/Icon\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\nimport TagsMenu from \"componentsV3/Tags/menu\"\r\n\r\nimport Bright from \"assets/icons/BrigthAndConnected\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, getAppAccess, textColor } from \"functions/\"\r\nimport { loadCardsV2 } from \"functions/loadData\"\r\n\r\nfunction TagsView(props) {\r\n const [lastChange, setLastChange] = React.useState(null)\r\n const [loader, setLoader] = React.useState(false)\r\n const [filteredItems, setfilteredItems] = React.useState([])\r\n const [hashs, setHashs] = React.useState([])\r\n const [adminMode, setAdminMode] = React.useState(false)\r\n const { session } = reduxStore.getState()\r\n const { db } = props.store\r\n const { dataType } = reduxStore.getState().db\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n React.useEffect(() => {\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n if (JSON.stringify(Nhashs) !== JSON.stringify(hashs)) {\r\n setHashs(Nhashs)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.history])\r\n\r\n React.useEffect(() => {\r\n const timer = setTimeout(() => searchCards(), 400)\r\n if (hashs.length > 0 && hashs[0] !== lastChange) {\r\n setAdminMode(false)\r\n setLastChange(hashs[0])\r\n }\r\n if (adminMode)\r\n loadAdmin()\r\n return () => clearTimeout(timer)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [db.cards, db.tag, adminMode, hashs])\r\n\r\n React.useEffect(() => {\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n if (JSON.stringify(Nhashs) !== JSON.stringify(hashs)) {\r\n setHashs(Nhashs)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.history])\r\n\r\n const loadAdmin = () => {\r\n loadCardsV2(props, {\r\n cardLoad: 'tags',\r\n idRel: hashs[0],\r\n adminView: true,\r\n })\r\n }\r\n\r\n const searchCards = async () => {\r\n let searchResult = new Promise((resolve, reject) => {\r\n let res = Object.keys(db.cards).filter(card =>\r\n (\r\n db.cards\r\n && db.cards[card]\r\n && !db.cards[card].deleted\r\n && (\r\n (\r\n !adminMode\r\n && (\r\n session\r\n && session._id\r\n && db.cards[card]\r\n && db.cards[card]._users\r\n && db.cards[card]._users[session._id]\r\n )\r\n )\r\n || (\r\n adminMode\r\n && (\r\n AppAccess.owner\r\n || (\r\n AppAccess\r\n && AppAccess.plan\r\n && AppAccess.planAdmin\r\n )\r\n )\r\n )\r\n )\r\n &&\r\n (\r\n hashs\r\n && hashs.length > 0\r\n && hashs[0]\r\n && db.tag\r\n && db.tag.filter(tag =>\r\n tag.value === hashs[0]\r\n || tag.parent === hashs[0]\r\n ).length > 0\r\n && db.cards\r\n && db.cards[card]._tags\r\n && (\r\n db.cards[card]._tags.filter(tag =>\r\n tag.value === hashs[0]\r\n || db.tag.filter(dbt =>\r\n dbt.parent === hashs[0]\r\n && tag.value === dbt.value\r\n ).length > 0\r\n ).length > 0\r\n )\r\n )\r\n &&\r\n (\r\n !db.cards[card].private\r\n ||\r\n (\r\n session\r\n && session._id\r\n && db.cards[card].private\r\n && db.cards[card]._users\r\n && db.cards[card]._users[session._id]\r\n )\r\n )\r\n )\r\n )\r\n resolve(res)\r\n })\r\n\r\n let response = await searchResult.then(a => {\r\n return a\r\n })\r\n if (response) {\r\n setfilteredItems(response)\r\n setLoader(false)\r\n if (props.onFinish)\r\n props.onFinish()\r\n }\r\n }\r\n let filterItems = filteredItems.map(x => db.cards[x])\r\n if (props.searchs && props.searchs[\"tagsView\"]) {\r\n const searchValues = props.searchs[\"tagsView\"]\r\n if (searchValues.text && searchValues.text !== undefined && searchValues.text !== null && searchValues.text !== '')\r\n filterItems = Array.from(filterItems.filter(a =>\r\n a.name.toLowerCase().indexOf(searchValues.text.toLowerCase()) > -1\r\n || a.description?.toLowerCase().indexOf(searchValues.text.toLowerCase()) > -1\r\n ))\r\n if (searchValues.startDate && searchValues.startDate !== undefined && searchValues.startDate !== null && searchValues.startDate !== '')\r\n filterItems = Array.from(filterItems.filter(a =>\r\n parseInt(a.startDate) >= parseInt(searchValues.startDate)\r\n ))\r\n\r\n if (searchValues.endDate && searchValues.endDate !== undefined && searchValues.endDate !== null && searchValues.endDate !== '')\r\n filterItems = Array.from(filterItems.filter(a =>\r\n parseInt(a.endDate) <= parseInt(searchValues.endDate)\r\n ))\r\n if (searchValues.tags && searchValues.tags && searchValues.tags.filter(a => a.value).length > 0)\r\n // console.log(searchValues.tags)\r\n filterItems = Array.from(filterItems.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag => {\r\n let result = false\r\n searchValues.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ))\r\n filterItems = filterItems.filter(fil => {\r\n if (!fil.status || (fil && fil.status && searchValues.status[fil.status]))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n filterItems = filterItems.filter(fil => {\r\n if ((fil && fil.priority && searchValues.priority[fil.priority]) || (searchValues.priority['null'] && !fil.priority))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n filterItems = filterItems.filter(fil => {\r\n if ((fil && fil.complexity && searchValues.complexity[fil.complexity]) || (searchValues.complexity['null'] && !fil.complexity))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n filterItems = filterItems.filter(fil => {\r\n if ((fil && fil.risk && searchValues.risk[fil.risk]) || (searchValues.risk['null'] && !fil.risk))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n filterItems = filterItems.filter(fil => {\r\n if ((fil && fil.impact && searchValues.impact[fil.impact]) || (searchValues.impact['null'] && !fil.impact))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (searchValues.users && searchValues.users.length > 0)\r\n filterItems = filterItems.filter(fil => searchValues.users.filter(uid => fil && fil._users && fil._users[uid]).length > 0).map(res => res)\r\n }\r\n const items = filterItems.map(x => x._id)\r\n\r\n return (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n height: \"89vh\",\r\n overflow: \"hidden\"\r\n }}\r\n >\r\n <GridContainer style={{\r\n overflow: \"hidden\"\r\n }}>\r\n <GridItem\r\n md={3}\r\n >\r\n <TagsMenu />\r\n </GridItem>\r\n <GridItem\r\n md={9}\r\n >\r\n {loader &&\r\n <div style={{ position: \"absolute\", bottom: 0, left: \"7px\", right: \"7px\" }}>\r\n <LinearProgress />\r\n </div>\r\n }\r\n {db.tag.filter(tag => tag.value === hashs[0]).length > 0 ?\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}>\r\n <div style={{\r\n position: 'relative',\r\n padding: \"5px 10px\",\r\n borderRadius: \"8px\",\r\n width: \"fit-content\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n ...db.tag.filter(tag => tag.value === hashs[0]).length > 0 && db.tag.filter(tag => tag.value === hashs[0])[0].color ? {\r\n backgroundColor: db.tag.filter(tag => tag.value === hashs[0])[0].color,\r\n color: db.tag.filter(tag => tag.value === hashs[0])[0].color\r\n ? textColor(db.tag.filter(tag => tag.value === hashs[0])[0].color, true)\r\n : customApp(\"menu\")\r\n } : {}\r\n }}>\r\n <Icon\r\n size={\"22px\"}\r\n color={db.tag.filter(tag => tag.value === hashs[0])[0].color\r\n ? textColor(db.tag.filter(tag => tag.value === hashs[0])[0].color, true)\r\n : customApp(\"menu\")}\r\n icon={'tag'}\r\n />\r\n <span style={{ marginLeft: \"7px\" }}>{db.tag.filter(tag => tag.value === hashs[0])[0].label}</span>\r\n </div>\r\n {AppAccess\r\n && AppAccess.plan\r\n && AppAccess.planAdmin\r\n && AppAccess.user\r\n && AppAccess.userAdmin ?\r\n <div>\r\n <CustomButton\r\n title={translate(\"$__adminMode\")}\r\n text={translate(\"$__adminMode\")}\r\n color={adminMode ? customApp('menu') : \"lightgrey\"}\r\n textColor={adminMode ? customApp('menu') : \"lightgrey\"}\r\n icon={\"manage_accounts\"}\r\n onClick={() => {\r\n setAdminMode(prev => !prev)\r\n }}\r\n style={{ marginLeft: 15 }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ positin: 'relative', width: '100%', height: \"90vh\", overflow: \"auto\" }}>\r\n <GridContainer>\r\n {items\r\n .filter(card =>\r\n db.cards[card].type.indexOf('plan') > -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n ).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={translate('$__plans', 1)}\r\n icon={dataType.filter(a => a.name === 'plan')[0].icon}\r\n color={customApp('menu')}\r\n filterText={props.text}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n <GridContainer>\r\n {items\r\n .filter(card =>\r\n db.cards[card].type === 'plan'\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].name < db.cards[b].name)\r\n return -1\r\n if (db.cards[a].name > db.cards[b].name)\r\n return 1\r\n return 0\r\n })\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={card}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n >\r\n <Card\r\n db=\"cards\"\r\n cardId={card}\r\n showConnectedIn\r\n showTags\r\n searchText={props.text}\r\n expanded\r\n onAction={props.onAction ? () => { props.onAction() } : null}\r\n />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </GridItem>\r\n }\r\n {items\r\n .filter(card =>\r\n db.cards[card].type.indexOf('guideline') > -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n ).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={translate('$__guidelines', 1)}\r\n icon={dataType.filter(a => a.name === 'guideline')[0].icon}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n <GridContainer>\r\n {items\r\n .filter(card =>\r\n db.cards[card].type.indexOf('guideline') > -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return -1\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return 1\r\n return 0\r\n })\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={card}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n >\r\n <Card db=\"cards\" cardId={card} showConnectedIn searchText={props.text} expanded onAction={props.onAction ? () => { props.onAction() } : null} />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </GridItem>\r\n }\r\n\r\n {items\r\n .filter(card =>\r\n db.cards[card].type.indexOf('objective') > -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n ).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={translate('$__objectives', 1)}\r\n icon={dataType.filter(a => a.name === 'objective')[0].icon}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n <GridContainer>\r\n {items\r\n .filter(card =>\r\n db.cards[card].type.indexOf('objective') > -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return -1\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return 1\r\n return 0\r\n })\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={card}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n >\r\n <Card db=\"cards\" cardId={card} showConnectedIn searchText={props.text} expanded onAction={props.onAction ? () => { props.onAction() } : null} />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </GridItem>\r\n }\r\n\r\n {items\r\n .filter(card =>\r\n db.cards[card].type.indexOf('goal') > -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n ).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={translate('$__goals', 1)}\r\n icon={dataType.filter(a => a.name === 'goal')[0].icon}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n <GridContainer>\r\n {items\r\n .filter(card =>\r\n db.cards[card].type.indexOf('goal') > -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return -1\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return 1\r\n return 0\r\n })\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={card}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n >\r\n <Card db=\"cards\" cardId={card} showConnectedIn searchText={props.text} expanded onAction={props.onAction ? () => { props.onAction() } : null} />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </GridItem>\r\n }\r\n\r\n {items\r\n .filter(card =>\r\n dataType.filter(dt => dt.name === db.cards[card].type).length > 0\r\n && dataType.filter(dt => dt.name === db.cards[card].type)[0]\r\n && db.cards[card].type !== 'objective'\r\n && db.cards[card].type !== 'goal'\r\n && db.cards[card].type !== 'plan'\r\n && db.cards[card].type !== 'chatGroup'\r\n && db.cards[card].type !== 'link'\r\n && db.cards[card].type !== 'insight'\r\n && db.cards[card].type.indexOf('guideline') === -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n ).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={translate('$__actions', 1)}\r\n icon={'double_arrow'}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n <GridContainer>\r\n {items\r\n .filter(card =>\r\n dataType.filter(dt => dt.name === db.cards[card].type).length > 0\r\n && dataType.filter(dt => dt.name === db.cards[card].type)[0]\r\n && db.cards[card].type !== 'objective'\r\n && db.cards[card].type !== 'goal'\r\n && db.cards[card].type !== 'plan'\r\n && db.cards[card].type !== 'chatGroup'\r\n && db.cards[card].type !== 'link'\r\n && db.cards[card].type !== 'insight'\r\n && db.cards[card].type.indexOf('guideline') === -1\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !db.cards[card].private\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return -1\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return 1\r\n return 0\r\n })\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={card}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n >\r\n <Card\r\n db=\"cards\"\r\n cardId={card}\r\n showConnectedIn\r\n searchText={props.text}\r\n expanded\r\n onAction={props.onAction ? () => { props.onAction() } : null}\r\n />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </GridItem>\r\n }\r\n\r\n {items\r\n .filter(card =>\r\n db.cards[card].type === 'insight'\r\n || db.cards[card].type === 'link'\r\n ).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={'BRIGHT & CONNECTED'}\r\n icon={Bright}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n <GridContainer>\r\n {items\r\n .filter(card =>\r\n db.cards[card].type === 'insight'\r\n || db.cards[card].type === 'link'\r\n )\r\n .sort((a, b) => {\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return -1\r\n if (db.cards[a].name.toLowerCase() < db.cards[b].name.toLowerCase())\r\n return 1\r\n return 0\r\n })\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={card}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n >\r\n <Card\r\n db=\"cards\"\r\n cardId={card}\r\n showConnectedIn\r\n expanded\r\n Avatar\r\n Resume\r\n onAction={props.onAction ? () => { props.onAction() } : null}\r\n />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </GridItem>\r\n }\r\n </GridContainer>\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n <div></div>\r\n\r\n\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => {\r\n return {\r\n store: {\r\n db: {\r\n cards: store.db.cards,\r\n tag: store.db.tag\r\n }\r\n },\r\n history: store.db.history,\r\n hidePrivate: store.controls.hidePrivate,\r\n searchs: store.searchs\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TagsView)","//CORE\r\nimport React from 'react'\r\n\r\n//REDUX\r\nimport { connect } from 'react-redux'\r\nimport { bindActionCreators } from 'redux';\r\nimport * as reduxActions from 'store/actions';\r\n\r\nfunction Component(props) {\r\n return (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: 'calc(100vh - 115px)'\r\n }}>\r\n {props.provisorio || 'Não Autorizado'}\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","const styles = {\r\n root: {\r\n\r\n }\r\n}\r\n\r\nexport default styles;","import React, { useState } from 'react'\r\nimport * as XLSX from \"xlsx\";\r\n\r\n//COMPONENTS\r\nimport PreLoader from \"components/PreLoader\"\r\n\r\n//FUNCTIONS\r\nimport { translate } from 'functions';\r\n\r\nconst DragDrop = ({ handleData }) => {\r\n\r\n\r\n const [dragActive, setDragActive] = useState(false);\r\n const [loading, setLoading] = useState(false)\r\n const [selectedFile, setSelectedFile] = useState(null);\r\n\r\n const styles = {\r\n formFileUpload: {\r\n height: \"88%\",\r\n width: \"90%\",\r\n marginTop: '5%',\r\n marginBottom: \"5%\",\r\n maxWidth: \"100%\",\r\n textAlign: \"center\",\r\n position: \"relative\",\r\n },\r\n inputFileUpload: {\r\n display: \"none\",\r\n },\r\n labelFileUpload: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderWidth: \"2px\",\r\n borderRadius: \"1rem\",\r\n borderStyle: \"dashed\",\r\n borderColor: \"#cbd5e1\",\r\n backgroundColor: \"#f8fafc\",\r\n },\r\n labelFileUploadDragActive: {\r\n backgroundColor: \"#ffffff\",\r\n },\r\n uploadButton: {\r\n cursor: \"pointer\",\r\n padding: \"0.25rem\",\r\n fontSize: \"1rem\",\r\n border: \"none\",\r\n fontFamily: \"'Oswald', sans-serif\",\r\n backgroundColor: \"transparent\",\r\n },\r\n uploadButtonHover: {\r\n textDecorationLine: \"underline\",\r\n },\r\n dragFileElement: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n borderRadius: \"1rem\",\r\n top: \"0px\",\r\n right: \"0px\",\r\n bottom: \"0px\",\r\n left: \"0px\",\r\n },\r\n };\r\n\r\n const inputRef = React.useRef(null);\r\n\r\n const handleFileUpload = (file) => {\r\n setLoading(true)\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const data = e.target.result;\r\n const workbook = XLSX.read(data, { type: \"binary\" });\r\n const sheetName = workbook.SheetNames[0];\r\n const sheet = workbook.Sheets[sheetName];\r\n const parsedData = XLSX.utils.sheet_to_json(sheet);\r\n setTimeout(() => {\r\n setLoading(false);\r\n handleData(parsedData);\r\n }, 0);\r\n };\r\n if (file instanceof File) {\r\n reader.readAsBinaryString(file);\r\n setSelectedFile(file)\r\n } else {\r\n reader.readAsBinaryString(file.target.files[0]);\r\n setSelectedFile(file.target.files[0]);\r\n }\r\n };\r\n\r\n\r\n const handleDrag = function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.type === \"dragenter\" || e.type === \"dragover\") {\r\n setDragActive(true);\r\n } else if (e.type === \"dragleave\") {\r\n setDragActive(false);\r\n }\r\n };\r\n\r\n const handleDrop = function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragActive(false);\r\n if (e.dataTransfer.files && e.dataTransfer.files[0]) {\r\n console.log(e.dataTransfer.files[0])\r\n handleFileUpload(e.dataTransfer.files[0]);\r\n }\r\n };\r\n\r\n\r\n const handleChange = function (e) {\r\n e.preventDefault();\r\n if (e.target.files && e.target.files[0]) {\r\n }\r\n };\r\n const handleBrowseClick = () => {\r\n document.getElementById('selectedFile').click();\r\n };\r\n\r\n\r\n return (\r\n <form\r\n style={styles.formFileUpload}\r\n onDragEnter={handleDrag}\r\n onSubmit={(e) => e.preventDefault()}\r\n >\r\n <input\r\n ref={inputRef}\r\n type=\"file\"\r\n style={styles.inputFileUpload}\r\n multiple={true}\r\n onChange={handleChange}\r\n />\r\n <label\r\n className={dragActive ? \"label-file-upload drag-active\" : \"label-file-upload\"}\r\n style={dragActive ? { ...styles.labelFileUpload, ...styles.labelFileUploadDragActive } : styles.labelFileUpload}\r\n >\r\n <div>\r\n {selectedFile ?\r\n <p>{translate(\"$__youSendedArchive\")} \"{selectedFile.name}\"</p>\r\n : <p>{translate(\"$__putAnArchive\")}</p>\r\n }\r\n\r\n {loading && <PreLoader />}\r\n <input\r\n type=\"file\"\r\n style={{ alignSelf: \"center\", display: \"none\" }}\r\n accept=\".xlsx, .xls\"\r\n id=\"selectedFile\"\r\n onChange={handleFileUpload}\r\n />\r\n <input\r\n style={{\r\n marginTop: '10px',\r\n backgroundColor: '#0095ff',\r\n color: 'white',\r\n cursor: 'pointer',\r\n border: 'none',\r\n borderRadius: '5px',\r\n padding: ' 10px 20px'\r\n }}\r\n type=\"button\"\r\n value={translate(\"$__search...\")}\r\n onClick={handleBrowseClick}\r\n />\r\n </div>\r\n </label>\r\n {dragActive && (\r\n <div\r\n style={styles.dragFileElement}\r\n onDragEnter={handleDrag}\r\n onDragLeave={handleDrag}\r\n onDragOver={handleDrag}\r\n onDrop={handleDrop}\r\n ></div>\r\n )}\r\n </form>\r\n )\r\n}\r\n\r\nexport default DragDrop","import React from 'react'\r\n\r\n//COMPONENTS\r\nimport CircularProgress from \"components/Progress/circular\"\r\nimport Icon from 'components/Icon'\r\nimport HtmlTooltip from 'components/Tooltip/html'\r\n\r\nconst TableRow = (props) => {\r\n\r\n const { usuario, index, handleCheckboxChange, isActive, style, handleDataChange, selected, dataError, column, add, data, data1 } = props\r\n\r\n const divStyles = {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n textAlign: 'left',\r\n flex: 1,\r\n border: '1px solid #ebebeb',\r\n alignSelf: 'stretch'\r\n };\r\n\r\n\r\n const handleChange = () => {\r\n handleCheckboxChange(index);\r\n };\r\n\r\n const InputRender = (props) => {\r\n const prop = props.item\r\n return (\r\n <div style={{ ...divStyles }}>\r\n <input\r\n style={{ border: 'none', backgroundColor: 'transparent', height: '100%', width: '100%', marginLeft: '5px', color: '#1C1C1C', fontWeight: prop === \"nomecompleto\" ? 'bold' : 'normal' }}\r\n type=\"text\"\r\n defaultValue={usuario?.[prop]}\r\n onMouseUp={(e) => e.target.focus()}\r\n onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\r\n onMouseLeave={(e) => { e.target.style.backgroundColor = 'transparent' }}\r\n onBlur={(e) => handleDataChange(index, e.target.value, [prop])}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n const renderIcon = () => {\r\n\r\n if (data1 && Object.keys(data1).length > 0 && index === Object.keys(data1).length) {\r\n return (\r\n <CircularProgress/>\r\n );\r\n } else if (add && index === 0 && !Object.keys(data1).length) {\r\n return (\r\n <CircularProgress/>\r\n );\r\n } else if (index === 0 && isActive === false && Object.keys(data1).length) {\r\n return (\r\n <Icon style={{ color: 'red', alignSelf: 'center' }}>warning</Icon>\r\n );\r\n } else if (isActive === false && Object.keys(data1).length >= index && index !== 0) {\r\n return (\r\n <Icon style={{ color: 'red', alignSelf: 'center' }}>warning</Icon>\r\n );\r\n } else if (dataError) {\r\n return (\r\n <Icon style={{ color: 'red', alignSelf: 'center' }}>warning</Icon>\r\n );\r\n }\r\n\r\n }\r\n\r\n const getRowColor = () => {\r\n\r\n if (isActive === false && Object.keys(data1).length >= index && index !== 0) {\r\n return 'rgba(255, 0, 0, 0.02)';\r\n } else if (isActive && Object.keys(data1).length >= index && index !== 0) {\r\n return 'rgba(0, 128, 0, 0.02)';\r\n } else if (dataError && isActive === false) {\r\n return 'rgba(255, 0, 0, 0.02)';\r\n } else if (index === 0 && isActive === false && Object.keys(data1).length) {\r\n return 'rgba(255, 0, 0, 0.02)';\r\n } else if (isActive && index === 0) {\r\n return 'rgba(0, 128, 0, 0.02)';\r\n } else {\r\n return 'transparent';\r\n }\r\n }\r\n\r\n return (\r\n <div style={style}>\r\n <div style={{ backgroundColor: getRowColor(), width: '100%', display: 'flex', justifyContent: 'center', height: '44px', overflowY: data.length > 11 ? 'hidden' : 'scroll' }}>\r\n <div\r\n style={{\r\n ...divStyles,\r\n width: '80px',\r\n border: '1px solid #ebebeb',\r\n flex: 'none',\r\n height: '100%',\r\n justifyContent: 'center',\r\n display: 'flex'\r\n }}>\r\n <input\r\n type=\"checkbox\"\r\n style={{ width: '16px', height: '16px', borderRadius: '15px', cursor: 'pointer', backgroundColor: 'transparent' }}\r\n defaultChecked={selected}\r\n onMouseUp={handleChange}\r\n />\r\n </div>\r\n {/* <div style={divStyles}>\r\n <Switch checked={true} />\r\n </div> */}\r\n\r\n {column.length > 0 && column.map((item, itemIndex) => {\r\n return (\r\n <InputRender item={item} key={itemIndex} />\r\n )\r\n })}\r\n <div style={{\r\n ...divStyles,\r\n width: '60px',\r\n border: '1px solid #ebebeb',\r\n flex: 'none',\r\n height: '100%',\r\n justifyContent: 'center',\r\n display: 'flex'\r\n }}>\r\n {isActive ?\r\n <div>\r\n <Icon style={{ color: 'green', alignSelf: 'center' }}>done</Icon>\r\n </div>\r\n :\r\n <div>\r\n <HtmlTooltip\r\n\r\n title={(\r\n <React.Fragment>\r\n <div style={{ width: '200px', marginBottom: '20px', fontSize: '16px', marginTop: '20px' }}>\r\n <p>{dataError?.emailError}</p>\r\n <p>{dataError?.nameError}</p>\r\n <p>{dataError?.emailErrorInv}</p>\r\n </div>\r\n </React.Fragment>\r\n )} >\r\n <div style={{ alignSelf: 'center' }}>\r\n {renderIcon()}\r\n </div>\r\n </HtmlTooltip>\r\n </div>}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n\r\nexport default TableRow\r\n\r\n","import React from 'react'\r\n\r\n//COMPONENTS\r\n\r\nimport Icon from \"components/Icon/\"\r\nimport Griditem from 'components/Grid/GridItemV2'\r\nimport { translate } from 'functions'\r\n\r\nconst ErrorModal = ({ resetComponent, message, title, icon, color }) => {\r\n\r\n const GetModal = ({ children }) => {\r\n\r\n return (\r\n <div\r\n style={{\r\n height: \"100%\",\r\n width: \"100%\",\r\n backgroundColor: \"rgba(0, 0, 0, 0.3)\",\r\n left: \"0% !important\",\r\n right: \"0%\",\r\n top: \"0%\",\r\n bottom: \"0%\",\r\n zIndex: \"9999\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n const BoxModal = ({ children, widthSize, id }) => {\r\n\r\n return (\r\n <div\r\n style={{\r\n width: '500px',\r\n position: \"absolute\",\r\n borderRadius: \"5px\",\r\n backgroundColor: \"#fafbfc\",\r\n boxShadow: \"rgba(0, 0, 0, 0.35) 0px 5px 15px\",\r\n alignSelf: \"center\"\r\n }}\r\n id={id}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n\r\n const GetButton = ({ name, handleEvent, style, disabled, id }) => {\r\n\r\n return (\r\n <button\r\n id={id}\r\n onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\r\n onMouseLeave={(e) => { e.target.style.backgroundColor = 'transparent' }}\r\n onMouseUp={handleEvent}\r\n disabled={disabled}\r\n style={{\r\n ...style,\r\n minWidth: \"160px\",\r\n height: \"45px\",\r\n cursor: \"pointer\",\r\n border: \"1px solid #d1d1cf\",\r\n fontWeight: \"bolder\",\r\n backgroundColor: 'transparent'\r\n }}\r\n >\r\n {name}\r\n </button>\r\n )\r\n }\r\n\r\n return (\r\n <div style={{ height: '80vh', maxHeight: '600px', display: 'flex', justifyContent: 'center' }}>\r\n <GetModal>\r\n <BoxModal>\r\n <Griditem item xs={12} style={{ borderBottom: \"1px solid #ebebeb\", justifyContent: \"center\", display: \"flex\", padding: '0px' }} >\r\n <Icon style={{ alignSelf: 'center' }} color={color} size='30px'>{icon}</Icon>\r\n <p\r\n style={{\r\n padding: '7px',\r\n marginTop: \"20px\",\r\n fontSize: \"20px\",\r\n fontWeight: 'bolder',\r\n marginBottom: \"20px\",\r\n color: '#141414'\r\n }}\r\n >\r\n {title}\r\n </p>\r\n </Griditem>\r\n <Griditem item xs={12} style={{ justifyContent: \"center\", display: \"flex\", marginTop: '50px', padding: '0px' }} >\r\n <p style={{ marginLeft: '30px', marginRight: '30px', fontWeight: 'bolder' }}>\r\n {message}\r\n </p>\r\n </Griditem>\r\n <Griditem item xs={12} style={{ justifyContent: \"center\", display: \"flex\", marginTop: '30px' }} >\r\n <GetButton\r\n handleEvent={resetComponent}\r\n name={translate(\"$__back\")}\r\n color='red'\r\n style={{\r\n width: \"120px\",\r\n height: \"30px\",\r\n marginTop: \"25px\",\r\n marginBottom: \"25px\",\r\n backgroundColor: 'none',\r\n color: 'black'\r\n }} />\r\n </Griditem>\r\n </BoxModal>\r\n </GetModal>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ErrorModal","import React, { useState, useEffect } from 'react'\r\nimport { FixedSizeList } from 'react-window';\r\nimport AutoSizer from \"react-virtualized-auto-sizer\";\r\nimport TableRow from './Tablerow'\r\nimport ErrorModal from './errorModal';\r\n\r\n//COMPONENTS\r\nimport Griditem from 'components/Grid/GridItemV2'\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//FUNCTIONS\r\nimport { validateEmail } from 'functions';\r\nimport { emailExistV2 } from \"functions/users\";\r\nimport { translate } from 'functions';\r\n\r\n\r\nimport api from \"api\"\r\n\r\nconst UserAddList = (props) => {\r\n const { dataUser, resetComponent } = props\r\n const [add, addPress] = useState(false);\r\n const [data, setData] = useState(dataUser);\r\n const [data1, setData1] = useState({});\r\n const [selected, setSelected] = useState([])\r\n const [notSended, setNotSended] = useState(false)\r\n const listRef = React.createRef()\r\n const [columns, setColumns] = useState([])\r\n const [errorMSG, setErrorMsg] = useState({})\r\n const [errorScreen, setErrorScreen] = useState(false)\r\n\r\n\r\n // Object.fromEntries(Object.entries(data1).map(([k, v]) => {\r\n\r\n // }\r\n // ));\r\n\r\n useEffect(() => {\r\n if (dataUser.length > 0) {\r\n let columnsFiltered = dataUser\r\n let correctColumsNames = ['nomecompleto', 'nomedeexibição', 'email', 'departamento/grupo', 'ramal', 'observações', 'celular'];\r\n columnsFiltered = [...new Set(dataUser.flatMap(obj => Object.keys(obj)))]\r\n columnsFiltered = columnsFiltered.map((item) => {\r\n return item.toLowerCase()\r\n })\r\n let mandatoryNames = ['nomecompleto', 'email']\r\n columnsFiltered = columnsFiltered.filter(value => correctColumsNames.includes(value));\r\n setColumns(columnsFiltered)\r\n let checker = (arr, target) => target.every(value => arr.includes(value));\r\n checker(columnsFiltered, mandatoryNames) ? setErrorScreen(false) : setErrorScreen(true)\r\n }\r\n }, [dataUser])\r\n\r\n\r\n const objectMap = (obj, fn) =>\r\n Object.fromEntries(\r\n Object.entries(obj).map(\r\n ([k, v], i) => [k, fn(v, k, i)]\r\n )\r\n )\r\n\r\n const handleCheckboxChange = (index) => {\r\n setSelected((prevUsuarios) => {\r\n if (prevUsuarios.includes(index)) {\r\n return prevUsuarios.filter((item) => item !== index);\r\n } else {\r\n return [...prevUsuarios, index];\r\n }\r\n });\r\n }\r\n\r\n const handleDataChange = (index, newName, prop) => {\r\n let newData = [...data];\r\n newData[index][prop] = newName;\r\n newData && setData(newData)\r\n };\r\n\r\n const handleRemoveSelected = () => {\r\n setData(data.filter((item, index) => !selected.includes(index)));\r\n setSelected([])\r\n }\r\n\r\n\r\n const GetButton = ({ name, handleEvent, style, disabled, id }) => {\r\n\r\n return (\r\n <button\r\n id={id}\r\n onMouseEnter={(e) => { e.target.style.backgroundColor = 'rgba(0, 0, 0, 0.12)' }}\r\n onMouseLeave={(e) => { e.target.style.backgroundColor = 'transparent' }}\r\n onMouseUp={handleEvent}\r\n disabled={disabled}\r\n style={{\r\n ...style,\r\n minWidth: \"160px\",\r\n height: \"45px\",\r\n cursor: \"pointer\",\r\n border: \"1px solid #d1d1cf\",\r\n fontWeight: \"bolder\",\r\n backgroundColor: 'transparent'\r\n }}\r\n >\r\n {name}\r\n </button>\r\n )\r\n }\r\n\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (data1 && Object.keys(data1).length > 0 && Object.keys(data1).length < Object.keys(data).length) {\r\n setTimeout(() => {\r\n checkRow(Object.keys(data1).length)\r\n }, 100)\r\n } else {\r\n if (Object.keys(data1).length > 0) {\r\n const handleResetlist = () => {\r\n if (!notSended) {\r\n setNotSended(true)\r\n let newData1 = data1\r\n newData1 = Object.fromEntries(Object.entries(newData1).filter(([key, value]) => value.sended === false))\r\n let getIndex = []\r\n objectMap(newData1, (v, k) => {\r\n if (v.sended === false) {\r\n getIndex = [...getIndex, parseInt(k)]\r\n return getIndex\r\n }\r\n })\r\n setData(data.filter((item, index) => getIndex.includes(index)));\r\n newData1 = Object.entries(newData1).reduce((obj, [key, value], objindex) => {\r\n obj[objindex] = value;\r\n return obj;\r\n }, {});\r\n setErrorMsg(newData1)\r\n setData1({})\r\n }\r\n }\r\n handleResetlist()\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data1])\r\n\r\n const checkRow = async (n = 0) => {\r\n if (props.onAdding)\r\n props.onAdding(true)\r\n\r\n if (data.length > 0) {\r\n setNotSended(false)\r\n let validation = validateEmail(data[n].email)\r\n\r\n let emailExists = await emailExistV2(data[n].email)\r\n\r\n if (emailExists) {\r\n\r\n let xData = {\r\n ...data1,\r\n [n]: {\r\n email: data[n].email,\r\n sended: true,\r\n ...(emailExists && (emailExists.exists || Object.keys(data1).filter(filUser => data1[filUser].email === data[n].email).length > 0)) && {\r\n sended: false,\r\n emailError: translate(\"$__emailAlreadyInUse\")\r\n },\r\n ...(data[n]?.nomecompleto.split('').length < 3 && {\r\n sended: false,\r\n nameError: translate(\"$__minimalNameField\")\r\n }),\r\n ...(!validation && {\r\n sended: false,\r\n emailErrorInv: translate(\"$__invalidEmail\")\r\n })\r\n }\r\n }\r\n if (xData[n].sended) {\r\n\r\n let userData = {\r\n name: data[n].nomedeexibição || (`${data[n].nomecompleto.split(' ')[0]} ${data[n].nomecompleto.split(' ')[1] ? data[n].nomecompleto.split(' ')[1] : ``}`).trim(),\r\n fullName: data[n].nomecompleto,\r\n email: data[n].email,\r\n line: data[n].ramal || null,\r\n phone: data[n].phone || null,\r\n obs: data[n].observações || null,\r\n }\r\n\r\n if (data[n]['departamento/grupo'] && reduxStore.getState().db.userGroup.filter(g => g.label === data[n]['departamento/grupo']).length > 0) {\r\n userData.groups = Array.from(reduxStore.getState().db.userGroup.filter(g => g.label === data[n]['departamento/grupo']))\r\n }\r\n\r\n try {\r\n let register = await api.post(\"user/addImport\", userData)\r\n if (register) {\r\n api.post(\"user/accessSendInvite\", {\r\n _id: register.data._id\r\n })\r\n if (listRef && listRef.current)\r\n listRef.current.scrollToItem(n)\r\n setData1(xData);\r\n\r\n if (data.length === n + 1) {\r\n addPress(false)\r\n if (props.onAdding)\r\n props.onAdding(false)\r\n }\r\n }\r\n } catch (e) {\r\n xData[n] = {\r\n sended: false,\r\n nameError: translate(\"$__serverError\")\r\n }\r\n if (listRef && listRef.current)\r\n listRef.current.scrollToItem(n)\r\n setData1(xData);\r\n // console.log(e)\r\n\r\n if (data.length === n + 1) {\r\n addPress(false)\r\n if (props.onAdding)\r\n props.onAdding(false)\r\n }\r\n }\r\n\r\n } else {\r\n if (listRef && listRef.current)\r\n listRef.current.scrollToItem(n)\r\n setData1(xData);\r\n if (data.length === n + 1) {\r\n addPress(false)\r\n if (props.onAdding)\r\n props.onAdding(false)\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n const divStyles = {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n textAlign: 'left',\r\n flex: 1,\r\n border: '1px solid #ebebeb',\r\n fontWeight: 'bold',\r\n alignSelf: 'stretch',\r\n overflow: 'hidden',\r\n }\r\n\r\n\r\n const RenderColumn = ({ name }) => {\r\n\r\n let colunmName = ''\r\n\r\n switch (name) {\r\n case 'nomecompleto': colunmName = translate(\"$__completeName\")\r\n break;\r\n case 'nomedeexibição': colunmName = translate(\"$__showName\")\r\n break;\r\n case 'email': colunmName = translate(\"$__email\")\r\n break;\r\n case 'departamento/grupo': colunmName = translate(\"$__department/group\")\r\n break;\r\n case 'ramal': colunmName = translate(\"$__branchLine\")\r\n break;\r\n case 'observações': colunmName = translate(\"$__observation\")\r\n break;\r\n case 'celular': colunmName = translate(\"$__phone\")\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return <div style={divStyles}>\r\n <p style={{\r\n width: '100%',\r\n alignSelf: 'center',\r\n padding: '0px',\r\n overflow: 'hidden',\r\n margin: '0px 0px 0px 10px'\r\n }}>\r\n {colunmName}\r\n </p>\r\n </div>\r\n }\r\n\r\n return (\r\n <ErrorBoundary>\r\n <Griditem item xs={12} style={{ justifyContent: \"center\", padding: '0px 4px 0px', position: 'reçative' }} >\r\n {add && <div style={{ position: 'absolute', width: '100%', height: '100%', zIndex: '99' }}></div>}\r\n {data.length === 0 &&\r\n <ErrorModal\r\n message={translate(\"$__finalMsgUserImportConcluded\")}\r\n title={translate(\"$__concluded\")}\r\n icon={\"done\"}\r\n color={\"green\"}\r\n resetComponent={resetComponent}\r\n />}\r\n {errorScreen ?\r\n <ErrorModal\r\n message={translate(\"$__finalMsgUserImportError\")}\r\n title={translate(\"$__error\")}\r\n icon={\"warning\"}\r\n color={\"red\"}\r\n resetComponent={resetComponent}\r\n /> :\r\n <div>\r\n {data.length > 0 && <div id='table-container' style={{ marginBottom: '5px', height: '80vh', maxHeight: '600px', overflow: 'hidden' }}>\r\n <div style={{ overflowY: 'scroll' }}>\r\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center', height: '50px', color: '#141414' }}>\r\n <div style={{\r\n ...divStyles,\r\n width: '80px',\r\n border: '1px solid #ebebeb',\r\n flex: 'none',\r\n justifyContent: 'center',\r\n display: 'flex'\r\n }}>\r\n <p style={{ alignSelf: 'center', padding: '0px' }}>{translate(\"$__remove\")}</p>\r\n </div>\r\n {columns.length > 0 && columns.map((item, ii) => {\r\n return (\r\n <RenderColumn name={item} key={ii} />\r\n )\r\n })}\r\n <div style={{\r\n ...divStyles,\r\n width: '60px',\r\n border: '1px solid #ebebeb',\r\n flex: 'none',\r\n display: 'flex'\r\n }}>\r\n <p style={{ marginLeft: '2px', alignSelf: 'center', padding: '0px', margin: '0px 0px 0px 10px' }}> {translate(\"$__stats\")}</p>\r\n </div>\r\n </div>\r\n </div>\r\n {data.length > 0 &&\r\n <AutoSizer>\r\n {({ height, width }) => (\r\n <FixedSizeList\r\n itemData={data}\r\n height={height}\r\n itemCount={data.length}\r\n itemSize={44}\r\n width={width}\r\n ref={listRef}\r\n >\r\n {({ data, index, style }) => {\r\n return (\r\n <div key={`a_${index}_${Math.random(0, 99999999)}`}>\r\n <TableRow\r\n selected={selected && selected.includes(index) ? true : false}\r\n column={columns}\r\n handleDataChange={(index, value, prop) => handleDataChange(index, value, prop)}\r\n handleCheckboxChange={handleCheckboxChange}\r\n style={style}\r\n add={add}\r\n data={data}\r\n data1={data1}\r\n dataError={errorMSG[index]}\r\n usuario={data[index]}\r\n index={index}\r\n isActive={data1 && data.length > 0 && data1[index]?.sended ? true : false}\r\n />\r\n </div>\r\n )\r\n }}\r\n </FixedSizeList >\r\n )}\r\n </AutoSizer>\r\n }\r\n </div>}\r\n </div>\r\n }\r\n\r\n\r\n </Griditem>\r\n <Griditem item xs={12} style={{ borderTop: \"1px solid #ebebeb\", display: \"flex\", justifyContent: \"right\", marginTop: \"10px\" }} >\r\n {!errorScreen && !add && <>\r\n <GetButton handleEvent={handleRemoveSelected}\r\n name={translate(\"$__removeSelected\")}\r\n color='red'\r\n style={{\r\n width: \"120px\",\r\n height: \"30px\",\r\n marginTop: \"25px\",\r\n marginBottom: \"25px\",\r\n marginRight: '30px',\r\n backgroundColor: 'none',\r\n color: 'black',\r\n justifySelf: 'left'\r\n }} />\r\n <GetButton\r\n handleEvent={() => {\r\n checkRow(0)\r\n addPress(true)\r\n }}\r\n name={translate(\"$__add\")}\r\n color='red'\r\n style={{\r\n width: \"120px\",\r\n height: \"30px\",\r\n marginTop: \"25px\",\r\n marginBottom: \"25px\",\r\n marginRight: '30px',\r\n backgroundColor: 'none',\r\n color: 'black'\r\n }} /> </>}\r\n </Griditem>\r\n </ErrorBoundary>\r\n );\r\n}\r\n\r\n\r\nexport default UserAddList","import React, { useState } from 'react'\r\nimport GridContainer from 'components/Grid/GridContainer';\r\nimport Griditem from 'components/Grid/GridItem'\r\nimport DragDrop from './DragDrop';\r\nimport { customApp } from 'functions';\r\nimport UserAddList from './UserAddList';\r\nimport Icon from \"components/Icon/\"\r\nimport archive from './sample.xlsx'\r\nimport archiveoptions from './sampleoptions.xlsx'\r\n\r\n//COMPONENTS\r\nimport { translate } from 'functions';\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\r\nconst ImportUsers = (props) => {\r\n const [data, setData] = useState([]);\r\n const [adding, setAdding] = useState(false)\r\n\r\n const tableStyle = {\r\n borderCollapse: 'collapse',\r\n fontSize: '0.9em',\r\n fontFamily: 'sans-serif',\r\n width: '100%',\r\n minHeight: '300px',\r\n height: '100%',\r\n boxShadow: 'rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px',\r\n };\r\n\r\n const headerCellStyle = {\r\n padding: '5px 10px',\r\n };\r\n\r\n const dataRowStyle = {\r\n borderBottom: '1px solid #dddddd',\r\n };\r\n\r\n const dataCellStyle = {\r\n padding: '5px 25px',\r\n fontWeight: 'bold',\r\n backgroundColor: '#f2f2f2',\r\n };\r\n\r\n const handleData = (array) => {\r\n const lowerCaseArray = array.reduce((acc, obj) => {\r\n const newObj = Object.entries(obj).reduce((newObjAcc, [key, value]) => {\r\n // console.log(value)\r\n newObjAcc[key.toLowerCase().replace(/\\s/g, \"\")] = value.toString().trim();\r\n return newObjAcc;\r\n }, {});\r\n return [...acc, newObj];\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n setData(lowerCaseArray)\r\n }\r\n\r\n if (!props.importUsers)\r\n return <></>\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 3000,\r\n backgroundColor: \"rgba(250,250,250,0.7)\",\r\n backdropFilter: \"blur(3px)\",\r\n padding: 33,\r\n margin: \"auto\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContents: \"center\"\r\n }}\r\n >\r\n <GridContainer style={{ maxWidth: \"1400px\", backgroundColor: \"#ffffff\", borderRadius: '5px', border: \"2px solid #dedede\", position: 'relative', margin: \"auto\" }} >\r\n <Griditem item xs={12} style={{ borderBottom: \"1px solid #ebebeb\", justifyContent: \"center\", display: \"flex\" }} >\r\n {data.length > 0 && !adding &&\r\n < Icon\r\n onClick={() => setData([])}\r\n style={{\r\n alignSelf: 'left',\r\n color: customApp('menu'),\r\n left: '25px',\r\n top: '25px',\r\n position: 'absolute'\r\n }} size='30px'>arrow_back</Icon>}\r\n {!adding &&\r\n <Icon\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n importUsers: false,\r\n })\r\n }}\r\n style={{\r\n alignSelf: 'left',\r\n color: customApp('menu'),\r\n right: '25px',\r\n top: '25px',\r\n position: 'absolute'\r\n }}\r\n size='30px'>close</Icon>\r\n }\r\n <Icon style={{ alignSelf: 'center', color: customApp('menu') }} size='30px'>download</Icon>\r\n <p\r\n style={{\r\n padding: '7px',\r\n marginTop: \"20px\",\r\n fontSize: \"20px\",\r\n marginBottom: \"20px\",\r\n width: \"240px\",\r\n color: customApp('menu')\r\n }}\r\n >\r\n {translate(\"$__importUsers\")}\r\n </p>\r\n </Griditem>\r\n {!data.length > 0 ?\r\n <> <Griditem item xs={6} style={{}} >\r\n <Griditem item xs={12} style={{ display: 'flex' }} >\r\n <Icon style={{ alignSelf: 'center', color: customApp('menu') }} size='30px'>task</Icon>\r\n <p\r\n style={{\r\n padding: '7px',\r\n marginTop: \"20px\",\r\n fontSize: \"20px\",\r\n marginBottom: \"10px\"\r\n }}\r\n >\r\n {translate(\"$__beforeImportUser\")}\r\n </p>\r\n </Griditem>\r\n <Griditem item xs={12} >\r\n <p style={{ alignSelf: \"center\", marginBottom: \"10px\" }}>\r\n {translate(\"$__importUsersDescp\")}\r\n <span style={{ fontWeight: 'bold' }}>\"{translate(\"$__email\")}\" </span >\r\n {translate(\"$__and\")} <span style={{ fontWeight: 'bold' }}>\"{translate(\"$__completeName\")}\"</span>.\r\n </p>\r\n <a href={archive} style={{ fontSize: '17px' }} target=\"_blank\" rel=\"noopener noreferrer\"\r\n download={\"Arquivo-Amostra\"}>\r\n <p style={{ color: '#478cd2', fontWeight: 'bold' }}>\r\n {translate(\"$__clickToDownloadXLSX\")}\r\n </p>\r\n </a>\r\n </Griditem>\r\n <Griditem item xs={12} >\r\n <p style={{ alignSelf: \"center\", marginTop: \"10px\" }}>\r\n {translate(\"$__importUsersSecondDescp\")}\r\n </p>\r\n <a href={archiveoptions} style={{ fontSize: '16px' }} target=\"_blank\" rel=\"noopener noreferrer\" download={\"Arquivo-Amostra-Completo\"}>\r\n <p style={{ color: '#478cd2', fontWeight: 'bold' }}>\r\n {translate(\"$__clickToDownloadXLSXOptions\")}\r\n </p>\r\n </a>\r\n </Griditem>\r\n <Griditem item xs={12} style={{ display: 'flex' }} >\r\n <Icon style={{ alignSelf: 'center', color: customApp('menu') }} size='30px'>checklist</Icon>\r\n <p\r\n style={{\r\n padding: '7px',\r\n marginTop: \"20px\",\r\n fontSize: \"20px\",\r\n marginBottom: \"20px\",\r\n color: customApp('menu')\r\n\r\n }}\r\n >\r\n {translate(\"$__fieldOptions\")}\r\n </p>\r\n </Griditem >\r\n <Griditem item xs={12} style={{ display: \"flex\", justifyContent: \"center\", marginBottom: \"60px\" }} >\r\n <table style={tableStyle}>\r\n <tbody>\r\n <tr style={dataRowStyle}>\r\n <th style={headerCellStyle}>{translate(\"$__phone\")}</th>\r\n <td style={dataCellStyle}> {translate(\"$__phoneDescpImportUsers\")}</td>\r\n </tr>\r\n <tr style={dataRowStyle}>\r\n <th style={headerCellStyle}>{translate(\"$__branchLine\")}</th>\r\n <td style={dataCellStyle}>{translate(\"$__branchLineDescp\")}</td>\r\n </tr>\r\n <tr style={dataRowStyle}>\r\n <th style={headerCellStyle}>{translate(\"$__observation\")}</th>\r\n <td style={dataCellStyle}>{translate(\"$__observationImportDescp\")}</td>\r\n </tr>\r\n <tr style={dataRowStyle}>\r\n <th style={headerCellStyle}>{translate(\"$__department/group\")}</th>\r\n <td style={dataCellStyle}>{translate(\"$__department/groupDescp\")}</td>\r\n </tr>\r\n <tr style={dataRowStyle}>\r\n <th style={headerCellStyle}>{translate(\"$__showName\")}</th>\r\n <td style={dataCellStyle}> {translate(\"$__showNameDescp\")}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </Griditem>\r\n </Griditem>\r\n\r\n <Griditem item xs={6} style={{ border: \"1px solid #ebebeb\", display: \"flex\", justifyContent: \"center\" }} >\r\n <DragDrop handleData={handleData} />\r\n </Griditem>\r\n </> : <UserAddList dataUser={data} resetComponent={() => {\r\n setData([])\r\n setAdding(false)\r\n }}\r\n onAdding={(x = false) => { setAdding(x) }} />}\r\n </GridContainer>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n importUsers: store.controls.importUsers\r\n})\r\n\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ImportUsers)","import React from 'react'\r\nimport MD5 from \"crypto-js/md5\"\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\nimport history from \"store/history\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//COMPONENTES\r\nimport CardsLoader from \"components/Card/loader\"\r\nimport ErrorPage from \"components/ErrorPages\"\r\nimport Filter from \"componentsV3/Filter/menuFilter\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport UserCard from \"components/User/card\"\r\nimport MoreMenu from \"components/MoreMenu/\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/users\";\r\n\r\n//FUNCTIONS\r\nimport { getAppAccess, translate, customApp } from \"functions/\";\r\nimport ImportUsers from 'components/ImportUsers/ImportUsers'\r\n\r\n//API\r\nimport api from \"api\"\r\n\r\n\r\nfunction UsersView(props) {\r\n const [external] = React.useState(false)\r\n const [deleted] = React.useState(false)\r\n const [orderBy, setOrderBy] = React.useState(\"name\")\r\n const { db, session } = reduxStore.getState()\r\n const { users } = db\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n let filtered = Object.keys(users).filter(fil => !users[fil].deleted).map(a => users[a])\r\n\r\n const saveGroupData = async (dt) => {\r\n api.post(\"/user_group/save\", dt)\r\n let newUserGroupData = reduxStore.getState().db.userGroup\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n userGroup: newUserGroupData.map(a => {\r\n if (a.value === dt._id) {\r\n a.label = dt.name\r\n if (dt.icon)\r\n a.icon = dt.icon\r\n }\r\n return a\r\n })\r\n })\r\n }\r\n\r\n const searchID = props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n const search = props.searchs && props.searchs[searchID] ? props.searchs[searchID] : {}\r\n if (search.text)\r\n filtered = filtered.filter(fil => {\r\n if ((fil.name && fil.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (fil.name && fil.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (fil.email && fil.email.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )\r\n return true\r\n return false\r\n }\r\n ).map(a => a)\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'users') {\r\n filtered = filtered.filter(c => c.type === 'user' && !c._parent).map(a => a)\r\n }\r\n if (hashs[0] === 'tab' && hashs[1] === 'units') {\r\n filtered = filtered.filter(c => c.type !== 'user').map(a => a)\r\n }\r\n\r\n\r\n if (search?.userGroups?.length > 0)\r\n filtered = filtered.filter(fil =>\r\n fil.groups && fil.groups.length > 0 && fil.groups.filter(g => {\r\n let result = false\r\n search.userGroups.forEach(group => {\r\n if (group.value === g.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ).map(a => a)\r\n\r\n\r\n let filteredUsers = Object.keys(users).map(a => users[a])\r\n\r\n if (hashs[0] === 'tab' && hashs[1] === 'units' && hashs[2] && hashs[2].length === 36) {\r\n filteredUsers = filteredUsers.filter(c => c.type === 'user' && c._parent === hashs[2]).map(a => a)\r\n }\r\n\r\n if (search?.users && search?.userGroup.length > 0)\r\n filteredUsers = filteredUsers.filter(fil => fil.groups.filter(group => group.value === search.users.userGroup[0].value).length > 0).map(a => a)\r\n\r\n if (search.text)\r\n filteredUsers = filteredUsers.filter(fil => {\r\n if ((fil.name && fil.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (fil.name && fil.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n || (fil.email && fil.email.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n )\r\n return true\r\n return false\r\n }\r\n ).map(a => a)\r\n\r\n if (search?.tags?.length > 0)\r\n filteredUsers = filteredUsers.filter(fil =>\r\n fil.tags && fil.tags.length > 0 && fil.tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ).map(a => a)\r\n\r\n\r\n if (AppAccess && !AppAccess.owner && !AppAccess.user)\r\n return (<ErrorPage />)\r\n\r\n if (!window.location.hash.split('/')[0].replace('#', '')) {\r\n history.push('c#tab/units')\r\n }\r\n\r\n const filterUsersGroup = (group, user) => {\r\n if (\r\n reduxStore.getState().db.users[user]\r\n && reduxStore.getState().db.users[user].groups\r\n && reduxStore.getState().db.users[user].groups.length > 0\r\n && reduxStore.getState().db.users[user].groups.filter(ug =>\r\n ug.value === group.value\r\n ).length > 0\r\n && (\r\n !search.text\r\n || (\r\n search.text\r\n && (\r\n reduxStore.getState().db.users[user].name.toLowerCase().indexOf(search.text.toLowerCase()) > -1\r\n || reduxStore.getState().db.users[user]?.email?.toLowerCase().indexOf(search.text.toLowerCase()) > -1\r\n )\r\n )\r\n )\r\n && (\r\n !search.tags\r\n ||\r\n (\r\n reduxStore.getState().db.users[user]?.tags?.filter(ug =>\r\n search.tags.filter(tag => tag.value === ug.value).length > 0\r\n ).length > 0\r\n )\r\n ) &&\r\n (\r\n (\r\n !external\r\n && (\r\n !reduxStore.getState().db.users[user]._parent\r\n || reduxStore.getState().db.users[user]._parent === session.account\r\n )\r\n )\r\n ||\r\n (\r\n external\r\n && reduxStore.getState().db.users[user]._parent\r\n && reduxStore.getState().db.users[user]._parent !== session.account\r\n )\r\n )\r\n && (\r\n (\r\n !deleted\r\n && !reduxStore.getState().db.users[user].deleted\r\n )\r\n ||\r\n (\r\n deleted\r\n && reduxStore.getState().db.users[user].deleted\r\n )\r\n )\r\n )\r\n return true\r\n return false\r\n }\r\n\r\n return (\r\n <div>\r\n <CardsLoader />\r\n <div>\r\n <div style={{ display: \"flex\" }}>\r\n <Filter\r\n {...!(hashs[0] === 'tab' && (hashs[1] === 'departments')) ? { fields: ['text', 'tags', 'userGroups'] } : { fields: ['text', 'tags'] }}\r\n nodeId={searchID}\r\n showFilters\r\n style={{ marginLeft: 7 }}\r\n onChange={(e) => {\r\n // console.log(e)\r\n }}\r\n title={{\r\n text: translate(\"$__name\")\r\n }}\r\n />\r\n <MoreMenu\r\n noButton={true}\r\n options={[\r\n ...hashs && hashs[2] && hashs[2].length === 36 && orderBy === \"date\" ? [{\r\n color: \"lightblue\",\r\n icon: \"sort_by_alpha\",\r\n name: \"$__orderByName\",\r\n onClick: () => {\r\n setOrderBy(\"name\")\r\n },\r\n show: \"hover\",\r\n }] : hashs && hashs[2] && hashs[2].length === 36 && orderBy === \"name\" ? [{\r\n color: \"lightblue\",\r\n icon: \"login\",\r\n name: \"$__orderByLastAccess\",\r\n onClick: () => {\r\n setOrderBy(\"date\")\r\n },\r\n show: \"hover\",\r\n }] : []\r\n ]}\r\n />\r\n </div>\r\n <GridContainer>\r\n {hashs[0] === 'tab' && (hashs[1] === 'departments') ?\r\n <div>\r\n <div>\r\n {reduxStore.getState().db.userGroup.filter(group => {\r\n if (Object.keys(reduxStore.getState().db.users).filter(user => {\r\n return filterUsersGroup(group, user)\r\n }).length > 0)\r\n return true\r\n return false\r\n })\r\n .sort((a, b) => {\r\n if (a.label < b.label)\r\n return -1\r\n if (a.label > b.label)\r\n return 1\r\n return 0\r\n })\r\n .map(group => {\r\n let users = Object.keys(reduxStore.getState().db.users).filter(user => {\r\n return filterUsersGroup(group, user)\r\n })\r\n return (\r\n <div key={group.value}\r\n style={{ width: \"100%\", padding: 7, marginBottom: 77 }}>\r\n <HeaderWithIcon\r\n title={group.label}\r\n icon={group.icon || null}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n {...AppAccess\r\n && (\r\n AppAccess.userAdmin\r\n ||\r\n AppAccess.userModerate\r\n )\r\n ? {\r\n // permitIcon: true,\r\n iconOnEditable: true,\r\n editable: true,\r\n onEdit: (x) => {\r\n saveGroupData({\r\n ...x,\r\n _id: group.value\r\n })\r\n },\r\n placeholder: translate(\"$__groupName\")\r\n } : {}}\r\n />\r\n <GridContainer>\r\n {users.sort((a, b) => {\r\n let nameA = reduxStore.getState().db.users[a].name.toLowerCase()\r\n let nameB = reduxStore.getState().db.users[b].name.toLowerCase()\r\n if (nameA < nameB)\r\n return -1\r\n if (nameA < nameB)\r\n return 1\r\n return 0\r\n }).map(id => {\r\n return (\r\n <GridItem\r\n key={`${group.value}_${id}`}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={4}\r\n xl={3}\r\n style={{ minWidth: \"300px\" }}\r\n >\r\n <UserCard data={reduxStore.getState().db.users[id]} />\r\n </GridItem>\r\n )\r\n })}\r\n </GridContainer>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n :\r\n <React.Fragment>\r\n {filtered.sort((a, b) => {\r\n if ((a && a.name && a.name < b.name) || (users && a && a.name && a.name < b.name))\r\n return -1\r\n return 1\r\n }).map((us, i) => (\r\n !hashs[2] || (hashs[2] && us._id === hashs[2]) ?\r\n <GridItem\r\n key={us._id}\r\n xs={12}\r\n sm={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 6}\r\n md={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 4}\r\n lg={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 4}\r\n xl={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 3}\r\n style={{ minWidth: \"300px\" }}\r\n >\r\n <UserCard data={us} expanded={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? true : false} />\r\n </GridItem>\r\n : !hashs[2] &&\r\n <GridItem\r\n key={us._id}\r\n xs={12}\r\n sm={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 6}\r\n md={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 4}\r\n lg={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 3}\r\n xl={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? 12 : 3}\r\n >\r\n <UserCard data={us} expanded={hashs[1] && hashs[2] && (hashs[1] === 'units') && hashs[2].length === 36 && db.users[hashs[2]] ? true : false} />\r\n </GridItem>\r\n ))}\r\n {hashs[0] === 'tab'\r\n && hashs[1] === 'units'\r\n && hashs[2]\r\n && hashs[2].length === 36\r\n &&\r\n filteredUsers.filter(a => !a.deleted).sort((a, b) => {\r\n let dA = \"\"\r\n let dB = \"\"\r\n if (orderBy === 'date') {\r\n dA = a._lastAccess || 1\r\n dB = b._lastAccess || 1\r\n }\r\n if (orderBy === 'name') {\r\n dA = a.name\r\n dB = b.name\r\n\r\n }\r\n if ((dA < dB) || (users && dA < dB))\r\n if (orderBy === 'name') {\r\n return -1\r\n } else {\r\n return 1\r\n }\r\n if ((dA > dB) || (users && dA > dB))\r\n if (orderBy === 'name') {\r\n return 1\r\n } else {\r\n return -1\r\n }\r\n return 0\r\n }).map((us, i) => (\r\n <GridItem\r\n key={`${us._id}-${i}`}\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <UserCard data={us} />\r\n </GridItem>\r\n ))\r\n }\r\n </React.Fragment>\r\n }\r\n\r\n </GridContainer>\r\n </div>\r\n <ImportUsers />\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n users: store.db.users,\r\n userGroup: store.db.userGroup,\r\n page: store.db.history,\r\n searchs: store.searchs\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(UsersView));","import React, { useEffect, useState } from 'react'\r\nimport { v4 as uuid } from \"uuid\"\r\n\r\n//COMPONENTS\r\nimport TextField from \"components/TextField\"\r\nimport Icon from \"components/Icon\"\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//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\n\r\nimport { translate, customApp, appAlert } from \"functions\"\r\n\r\nimport {\r\n ClickAwayListener,\r\n Switch,\r\n FormControlLabel,\r\n Input,\r\n Select,\r\n MenuItem,\r\n makeStyles,\r\n FormControl,\r\n InputLabel,\r\n} from '@material-ui/core'\r\n\r\nimport api from \"api\"\r\n\r\nconst useStyles = makeStyles({\r\n formControl: {\r\n color: 'rgb(150,150,150)',\r\n width: '100%',\r\n padding: '0',\r\n fontFamily: '\"Soleto\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n fontWeight: '300',\r\n fontSize: '14px',\r\n '& label': {\r\n marginTop: '5px',\r\n },\r\n '& .Mui-focused': {\r\n color: 'rgb(150,150,150)',\r\n },\r\n '& +:after': {\r\n border: '1px solid rgb(192,178,131)',\r\n },\r\n '& +:before': {\r\n borderBottom: '1px solid rgb(192,178,131)',\r\n },\r\n },\r\n switch: {\r\n '& + .MuiSwitch-track': {\r\n backgroundColor: 'rgb(158, 158, 158)',\r\n },\r\n '& .MuiSwitch-thumb': {\r\n backgroundColor: 'rgb(125, 125, 125)',\r\n },\r\n '& .Mui-checked': {\r\n '& + .MuiSwitch-track': {\r\n backgroundColor: 'rgb(192, 178, 131)',\r\n },\r\n '& .MuiSwitch-thumb': {\r\n backgroundColor: 'rgb(192, 178, 131)',\r\n },\r\n '& .MuiSvgIcon-root': {\r\n backgroundColor: \"rgb(192, 178, 131)\",\r\n borderRadius: \"50%\",\r\n width: '20px',\r\n height: '20px',\r\n color: \"rgb(192, 178, 131)\",\r\n }\r\n },\r\n '& .Mui-disabled': {\r\n '& + .MuiSwitch-track': {\r\n opacity: 0.5,\r\n },\r\n '& .MuiSvgIcon-root': {\r\n backgroundColor: \"rgb(192, 178, 131)\",\r\n borderRadius: \"50%\",\r\n width: '14px !important',\r\n height: '14px !important',\r\n padding: '3px',\r\n color: '#ffffffb0 !important',\r\n transform: 'translate(0, 0, 0, 0.2em)',\r\n }\r\n }\r\n },\r\n labelSwitch: {\r\n marginLeft: '15px'\r\n },\r\n})\r\nconst SwitchCheck = ({ label, icon, defaultChecked, ...props }) => {\r\n const [check, setCheck] = useState(defaultChecked);\r\n const colorSwitch = useStyles();\r\n\r\n return (\r\n <FormControlLabel control={\r\n <Switch className={colorSwitch.switch}\r\n color=\"default\"\r\n checked={check}\r\n onChange={(event) => { setCheck(event.target.checked) }}\r\n {...props}\r\n />\r\n } label={label} />\r\n )\r\n}\r\n\r\nconst CreateForm = (props) => {\r\n const styles = useStyles();\r\n\r\n const [formId, setFormId] = useState(props?.data?._id || uuid())\r\n const [titleForm, setTitleForm] = useState('');\r\n const [boardColumns, setBoardColumns] = useState(false);\r\n const [msg, setMsg] = useState('');\r\n const [elements, setElements] = useState([]);\r\n const [divHover, setDivHover] = useState({});\r\n const [editField, setEditField] = useState({ type: 'text' })\r\n\r\n useEffect(() => {\r\n setFormId(props?.data?._id || uuid())\r\n setTitleForm(props.data?.name || \"\")\r\n setElements(props.data?.elements ? JSON.parse(props.data.elements) : [])\r\n setBoardColumns(props.data?.boardColumns || false)\r\n }, [props.data])\r\n\r\n function saveField() {\r\n let id = editField.id || `f${Math.random().toString(36).slice(2).substr(0, 4)}${Math.floor(Date.now() * Math.random()).toString(36).substr(0, 4)}`\r\n let dataToSave = { ...editField, id }\r\n if (!dataToSave.type)\r\n dataToSave.type = \"text\"\r\n if (dataToSave?.items?.length > 0) {\r\n dataToSave.items = Array.from(dataToSave.items.filter(a => a !== \"\" && a !== undefined && a !== null)) || null\r\n }\r\n if (\r\n (dataToSave.type === \"checkbox\" || dataToSave.type === \"radio\")\r\n && dataToSave.items.filter(a => a !== \"\" && a !== undefined && a !== null).length === 0\r\n ) {\r\n // setMsg('Você deve criar uma lista de opções para este tipo de campo');\r\n setMsg(translate(\"$__formWarningOptionsListRequire\"))\r\n setTimeout(() => {\r\n setMsg('');\r\n }, 4000);\r\n return\r\n } else if (!dataToSave.type || !dataToSave.name) {\r\n // setMsg('Preencha o nome do campo e o tipo!');\r\n setMsg(translate(\"$__formWarningNameAndType\"))\r\n setTimeout(() => {\r\n setMsg('');\r\n }, 4000);\r\n return\r\n } else if (elements.filter(a => a.name === editField.name && a.id !== editField.id).length > 0) {\r\n setMsg('O título para o campo já foi definido para outro campo, defina outro nome!');\r\n setMsg(translate(\"$__formWarningFieldNameUsed\"))\r\n setTimeout(() => {\r\n setMsg('');\r\n }, 4000);\r\n return\r\n } else {\r\n if (elements.filter(a => a.id === id).length === 0) {\r\n setElements([...elements, dataToSave])\r\n } else {\r\n let newElements = Array.from(elements)\r\n newElements = Array.from(newElements.map(a => {\r\n if (a.id === editField.id)\r\n a = dataToSave\r\n return a\r\n }))\r\n setElements([...newElements])\r\n }\r\n }\r\n setEditField({})\r\n }\r\n function removeElement(element) {\r\n appAlert({\r\n message: translate(\"$__confirmDeleteField\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n setElements(elements.filter(item => item.id !== element));\r\n }\r\n })\r\n }\r\n\r\n function moveElement(from, to) {\r\n const updatedElements = [...elements];\r\n const element = updatedElements.splice(from, 1)[0];\r\n updatedElements.splice(to, 0, element);\r\n setElements(updatedElements);\r\n }\r\n\r\n function move(Arr, from, to) {\r\n const updatedElements = [...Arr];\r\n const element = updatedElements.splice(from, 1)[0];\r\n updatedElements.splice(to, 0, element);\r\n return updatedElements\r\n }\r\n\r\n const saveForm = async (close) => {\r\n api.post(\"forms/add\", {\r\n _id: formId,\r\n name: titleForm,\r\n boardColumns: boardColumns,\r\n elements: JSON.stringify(elements)\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_FORMS\", {\r\n ...reduxStore.getState().forms,\r\n [formId]: {\r\n _id: formId,\r\n name: titleForm,\r\n boardColumns: boardColumns,\r\n elements: JSON.stringify(elements)\r\n }\r\n })\r\n if (props.onClose && close)\r\n props.onClose()\r\n\r\n }\r\n\r\n return (\r\n <ClickAwayListener\r\n onClickAway={() => {\r\n // closeChat()\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n // paddingBottom: 100,\r\n ...window.innerWidth > 600 ? {\r\n top: 77,\r\n left: 77,\r\n right: 77,\r\n bottom: 77,\r\n } : {\r\n top: 50,\r\n left: 7,\r\n right: 7,\r\n bottom: 7,\r\n },\r\n ...window.innerWidth > 600 ? {\r\n zIndex: 3,\r\n\r\n } : {\r\n zIndex: 6000,\r\n },\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n borderRadius: \"15px\",\r\n overflow: 'hidden',\r\n backgroundColor: \"#FFFFFF\",\r\n padding: 0\r\n }}\r\n >\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 }}\r\n >\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 // height: \"100%\",\r\n justifyContent: \"flex-end\",\r\n margin: \"0px\",\r\n // width: \"100%\"\r\n }}\r\n >\r\n <div\r\n // item\r\n // xs={8}\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: \"30%\",\r\n backgroundColor: \"#fafbfc\",\r\n overflowY: 'scroll',\r\n // height: '100% ',\r\n // paddingBottom: 100\r\n }}\r\n >\r\n <h1 style={{ margin: '20px 15px' }}>{titleForm}</h1>\r\n <div id=\"form\" style={{\r\n padding: '10px 15px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'flex-start',\r\n flexDirection: 'column',\r\n gap: '5px',\r\n paddingBottom: '50px',\r\n }}>\r\n {elements?.map((element, index) => {\r\n return (\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '20px',\r\n alignItems: 'center',\r\n marginBottom: '10px',\r\n width: '100%',\r\n }}\r\n onMouseOver={() => setDivHover({ ...divHover, [element.id]: true })}\r\n onMouseLeave={() => setDivHover({ ...divHover, [element.id]: false })}\r\n key={element.id}\r\n >\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n }}>\r\n <label htmlFor={element.id} style={{\r\n marginBottom: '5px', display: 'flex'\r\n }}>{element.name}{element.required ? '*' : ''}:</label>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n {\r\n (element.type === 'radio' || element.type === 'checkbox') ?\r\n <div style={{\r\n flexDirection: \"column\",\r\n width: \"100%\"\r\n }}>\r\n {element?.items.map((item, index) => (\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n gap: '5px',\r\n margin: '3px 0px'\r\n }}\r\n key={`ITEM_${element.id}_${index}`}\r\n >\r\n <input type={element.type} id={item} name={element.id} required={element.required ? true : false} />\r\n <label htmlFor={item} style={{ color: '#aaa' }}>{item}</label>\r\n </div>\r\n ))}</div> :\r\n element.type === 'textarea' ?\r\n <textarea rows={4} required={element.required ? true : false} id={element.id} style={{\r\n borderRadius: '5px',\r\n width: '100%',\r\n height: 'auto',\r\n resize: 'none',\r\n padding: '10px 5px',\r\n border: '1px solid rgb(150,150,150)',\r\n fontFamily: '\"Soleto\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n }}></textarea> :\r\n <input type={element.type} required={element.required ? true : false} id={element.id} style={{\r\n borderRadius: '5px',\r\n width: '100%',\r\n height: 'auto',\r\n resize: 'none',\r\n padding: '10px 5px',\r\n border: '1px solid rgb(150,150,150)',\r\n fontFamily: '\"Soleto\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n }} />\r\n }\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '10px',\r\n alignItems: 'center',\r\n color: 'rgb(171 171 171)',\r\n }}>\r\n <div style={{\r\n display: 'flex',\r\n alignItems: \"center\"\r\n }}>\r\n {divHover[element.id] ?\r\n <>\r\n {\r\n index === 0 ? null :\r\n <div style={{ padding: 7, cursor: 'pointer' }}\r\n onClick={() => moveElement(index, index - 1)}\r\n >\r\n <Icon style={{\r\n cursor: 'pointer',\r\n backgroundColor: '#eee',\r\n borderRadius: '50%',\r\n }} >arrow_drop_up</Icon>\r\n </div>\r\n }\r\n {\r\n index === 0 ? null :\r\n <div style={{ padding: 7, cursor: 'pointer' }}\r\n onClick={() => moveElement(index, index - 1)}\r\n >\r\n <Icon style={{\r\n cursor: 'pointer',\r\n backgroundColor: '#eee',\r\n borderRadius: '50%',\r\n }} >arrow_drop_up</Icon>\r\n </div>\r\n }\r\n {\r\n index === elements.length - 1 ? null :\r\n <div style={{ padding: 7, cursor: 'pointer' }}\r\n onClick={() => moveElement(index, index + 1)}\r\n >\r\n <Icon style={{\r\n cursor: 'pointer',\r\n backgroundColor: '#eee',\r\n borderRadius: '50%',\r\n }} >arrow_drop_down</Icon>\r\n </div>\r\n }\r\n <div style={{ padding: 7, cursor: 'pointer' }} onClick={() => removeElement(element.id)}><Icon >delete</Icon></div>\r\n <div style={{ padding: 7, cursor: 'pointer' }} onClick={() => {\r\n let newElement = element\r\n if (newElement.type === 'radio' || newElement.type === \"checkbox\") {\r\n newElement.items.push(\"\")\r\n }\r\n setEditField(newElement)\r\n }}><Icon >edit</Icon></div>\r\n </> : <></>}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n )}\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n backgroundColor: \"#fafbfc\",\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n left: \"70%\",\r\n overflowY: 'scroll',\r\n // minHeight: \"100vh\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n paddingBottom: 100,\r\n\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n borderLeft: \"3px solid rgb(192,178,131)\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n height: \"50px\",\r\n minHeight: \"50px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"calc(100% - 0px)\",\r\n marginTop: \"-4px\",\r\n }}\r\n >\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}>\r\n <Icon style={{ margin: \"0px 10px\" }}>edit_note</Icon>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n fontWeight: \"bold\",\r\n color: \"rgb(1, 30, 65)\",\r\n }}\r\n >\r\n {translate(\"$__createForm\")}\r\n </div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: '5px',\r\n }}>\r\n {\r\n elements?.length > 0 && titleForm ? <><div style={{\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n height: '25px',\r\n width: '25px',\r\n fontSize: '25px',\r\n color: 'rgb(192, 178, 131)',\r\n opacity: '1',\r\n cursor: 'pointer',\r\n }}\r\n onClick={() => {\r\n saveForm()\r\n }}\r\n >\r\n <Icon>save</Icon>\r\n </div>\r\n <div style={{\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n height: '25px',\r\n width: '25px',\r\n fontSize: '25px',\r\n color: 'green',\r\n opacity: '1',\r\n cursor: 'pointer',\r\n }}\r\n onClick={() => {\r\n saveForm(true)\r\n }}\r\n >\r\n <Icon>playlist_add_check</Icon>\r\n </div></> : null\r\n }\r\n <div style={{\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n height: '25px',\r\n width: '25px',\r\n fontSize: '25px',\r\n color: 'lightgrey',\r\n opacity: '1',\r\n cursor: 'pointer',\r\n }}\r\n onClick={props.onClose ? () => props.onClose() : null}\r\n >\r\n <Icon>cancel</Icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n right: \"0px\",\r\n padding: \"4px 25px\",\r\n position: \"relative\",\r\n backgroundColor: \"rgb(192,178,131)\",\r\n marginBottom: \"10px\",\r\n alignItems: 'center',\r\n color: '#fff',\r\n }}\r\n >\r\n </div>\r\n <div\r\n style={{\r\n maxHeight: \"75vh\",\r\n overflowY: \"auto\",\r\n padding: '0px 15px',\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'stretch',\r\n flexDirection: 'column',\r\n gap: '10px'\r\n }}\r\n >\r\n <div>\r\n <FormControl className={styles.formControl} variant=\"standard\">\r\n <InputLabel htmlFor=\"titleForm\" className={styles.formControl}>{translate('$__formName')}</InputLabel>\r\n <Input\r\n id=\"titleForm\"\r\n type={'text'}\r\n onChange={(e) => setTitleForm(e.target.value)}\r\n value={titleForm}\r\n />\r\n <SwitchCheck\r\n label={translate(\"$__showBoardColumns\")}\r\n defaultChecked\r\n onClick={() => {\r\n setBoardColumns(!boardColumns)\r\n }}\r\n checked={boardColumns}\r\n />\r\n </FormControl>\r\n <fieldset style={{\r\n borderRadius: 10,\r\n padding: 7,\r\n marginTop: 33\r\n }}>\r\n <legend>{translate('$__field')}</legend>\r\n <form id=\"adicionar\" onSubmit={(e) => { e.preventDefault(); }}>\r\n <FormControl className={styles.formControl} variant=\"standard\">\r\n <InputLabel htmlFor=\"title\" className={styles.formControl}>{translate(\"$__title\")}</InputLabel>\r\n <Input\r\n id=\"title\"\r\n type={'text'}\r\n onChange={(e) => {\r\n setEditField(({ ...editField, name: e.target.value }))\r\n }}\r\n value={editField.name || \"\"}\r\n />\r\n </FormControl>\r\n <div>\r\n <FormControl variant=\"standard\" fullWidth className={styles.formControl}>\r\n <InputLabel id=\"typeField\" className={styles.formControl}>{translate(\"$__type\")}</InputLabel>\r\n <Select\r\n value={editField.type || \"text\"}\r\n onChange={(e) => {\r\n setEditField(prev => ({\r\n ...prev,\r\n type: e.target.value,\r\n ...(e.target.value === \"radio\" || e.target.value === \"checkbox\") ? {\r\n items: editField.items || [\"\"]\r\n } : {}\r\n }))\r\n }}\r\n labelId=\"typeField\"\r\n id=\"typeField\"\r\n label=\"Tipo de campo\"\r\n >\r\n <MenuItem value={'text'}>{translate(\"$__shortText\")}</MenuItem>\r\n <MenuItem value={'textarea'}>{translate(\"$__longText\")}</MenuItem>\r\n <MenuItem value={'radio'}>{translate(\"$__selection\")}</MenuItem>\r\n <MenuItem value={'checkbox'}>{translate(\"$__multiSelection\")}</MenuItem>\r\n <MenuItem value={'date'}>{translate(\"$__date\")}</MenuItem>\r\n <MenuItem value={'number'}>{translate(\"$__number\")}</MenuItem>\r\n {/* <MenuItem value={'file'}>{translate(\"$__file\")}</MenuItem> */}\r\n </Select>\r\n </FormControl>\r\n {\r\n editField.type === 'radio' || editField.type === 'checkbox' ?\r\n <>\r\n <fieldset>\r\n <legend htmlFor=\"legendRadio\" >{translate(\"$__options\")}</legend>\r\n {editField?.items?.map((item, index) => (\r\n <div style={{ marginBotton: 15, width: \"100%\", clear: \"both\", position: \"relative\" }} key={index}>\r\n <TextField\r\n id={`sideModule_user_fullName`}\r\n label={`${translate('$__option', 1)} ${index + 1}`}\r\n variant={customApp('fieldVariant')}\r\n name={`option${item + 1}`}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n {index > 0 ?\r\n <>\r\n <Icon icon='arrow_drop_up' color={\"gray\"} onClick={() => {\r\n\r\n let newItems = move(editField.items, index, index - 1)\r\n setEditField({\r\n ...editField,\r\n items: newItems\r\n })\r\n }} />\r\n </>\r\n : <>\r\n </>}\r\n {index < editField.items.length - 1 ?\r\n <>\r\n <Icon icon='arrow_drop_down' color={\"gray\"} onClick={() => {\r\n\r\n let newItems = move(editField.items, index, index + 1)\r\n setEditField({\r\n ...editField,\r\n items: newItems\r\n })\r\n }} />\r\n </>\r\n : <>\r\n </>}\r\n <Icon icon='delete' color={\"red\"} onClick={() => {\r\n let newItems = Array.from(editField.items)\r\n if (newItems.length === 1) {\r\n newItems[0] = \"\"\r\n } else {\r\n newItems.splice(index, 1)\r\n }\r\n setEditField({\r\n ...editField,\r\n items: newItems\r\n })\r\n\r\n }} />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n let newItems = Array.from(editField.items)\r\n newItems[index] = d.target.value\r\n if (newItems.filter(a => a === \"\").length === 0)\r\n newItems.push(\"\")\r\n setEditField({\r\n ...editField,\r\n items: newItems\r\n })\r\n },\r\n }}\r\n value={editField.items[index]}\r\n placeholder={translate('$__optionText', 1)}\r\n autoFocus={index === 0}\r\n />\r\n </div>\r\n ))}\r\n\r\n </fieldset>\r\n </>\r\n : <></>}\r\n <div style={{ width: '100%' }}>\r\n <SwitchCheck\r\n label={translate(\"$__required\")}\r\n defaultChecked\r\n onClick={() => {\r\n setEditField(({ ...editField, required: !editField.required ? true : false }))\r\n }}\r\n checked={editField?.required ? true : false}\r\n />\r\n {elements.length > 0 ?\r\n <SwitchCheck label={translate(\"$__dependsOnAnotherAnswew\")}\r\n onClick={() => {\r\n setEditField(({ ...editField, depends: !editField.depends ? true : false }))\r\n }}\r\n checked={editField?.depends ? true : false}\r\n />\r\n : <></>}\r\n {\r\n editField?.depends ?\r\n <div>\r\n {elements.map((element) => (\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n gap: '5px',\r\n margin: '3px 0px'\r\n }}\r\n key={element.id}\r\n >\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n gap: '5px',\r\n margin: '3px 0px'\r\n }}>\r\n <input\r\n type=\"radio\"\r\n id={`R_${element.id}`}\r\n name='dependsOn'\r\n {...editField && editField.dependsOn && String(editField.dependsOn) === String(element.id) ? { defaultChecked: true } : {}}\r\n onClick={() => {\r\n setEditField(({ ...editField, dependsOn: element.id }))\r\n }}\r\n />\r\n <label htmlFor={`R_${element.id}`}>{element.name}</label>\r\n </div>\r\n {\r\n editField && editField.dependsOn && editField.dependsOn === element.id ? <>\r\n {\r\n element.type === 'radio' || element.type === 'checkbox' ?\r\n element?.items.map((item, index) => (\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n gap: '5px',\r\n margin: '3px 15px'\r\n }}\r\n key={`ITEM_${element.id}_${index}`}\r\n // onClick={(e) => {\r\n // if (element.type === 'radio') {\r\n // setValues({ ...values, [element.id]: item })\r\n // }\r\n // if (element.type === 'checkbox') {\r\n // handleCheckboxChange(element.id, item)\r\n // }\r\n // }}\r\n >\r\n <div\r\n // style={{\r\n // pointerEvents: \"none\",\r\n // }}\r\n >\r\n <input\r\n type={element.type}\r\n id={`R_${item}`}\r\n name={element.id}\r\n {...element.type === \"checkbox\"\r\n && (\r\n index === 0\r\n && (\r\n !editField.dependsValue\r\n || (\r\n editField.dependsValue\r\n && editField.dependsValue.length === 0\r\n )\r\n || (\r\n editField.dependsValue\r\n && editField.dependsValue.length === 1\r\n && editField.dependsValue.indexOf(item) > -1\r\n )\r\n )\r\n ) ? { defaultChecked: true } : {}}\r\n {...element.type === 'radio' ? { checked: editField && editField.dependsValue && editField.dependsValue === item ? true : false } : {}}\r\n // {...element.type === 'checkbox' ? { checked: values && values[element.id] && values[element.id].length > 0 && values[element.id].indexOf(item) > -1 ? true : false } : {}}\r\n // value={ }\r\n onClick={(e) => {\r\n let value = item\r\n if (element.type === \"checkbox\") {\r\n if (editField && (\r\n !editField.dependsValue\r\n || (editField.dependsValue\r\n && editField.dependsValue.indexOf(item) === -1\r\n )\r\n )) {\r\n value = Array.from(editField.dependsValue || [])\r\n value.push(item)\r\n } else if (editField && editField.dependsValue && editField.dependsValue.indexOf(item) > -1) {\r\n value = Array.from(editField.dependsValue)\r\n value.splice(editField.dependsValue.indexOf(item), 1)\r\n }\r\n }\r\n setEditField(({ ...editField, dependsValue: value }))\r\n }} />\r\n <label htmlFor={`R_${item}`} style={{ color: '#aaa' }}>{item}</label>\r\n </div>\r\n </div>\r\n )) :\r\n element.type === 'textarea' ?\r\n <textarea rows={4}\r\n onChange={(e) => setEditField(({ ...editField, dependsValue: e.target.value }))}\r\n id={element.id}\r\n style={{\r\n borderRadius: '5px',\r\n width: '100%',\r\n height: 'auto',\r\n resize: 'none',\r\n padding: '10px 5px',\r\n border: '1px solid rgb(150,150,150)',\r\n fontFamily: '\"Soleto\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n }}></textarea> :\r\n <input type={element.type}\r\n onChange={(e) => setEditField(({ ...editField, dependsValue: e.target.value }))}\r\n id={element.id}\r\n style={{\r\n borderRadius: '5px',\r\n width: '100%',\r\n height: 'auto',\r\n resize: 'none',\r\n padding: '10px 5px',\r\n border: '1px solid rgb(150,150,150)',\r\n fontFamily: '\"Soleto\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n }} />\r\n }\r\n </> : null}\r\n </div>))}\r\n {/* {editField && editField.dependsOn ?\r\n <FormControl variant=\"standard\" fullWidth className={styles.formControl}>\r\n <InputLabel id=\"conditionToDependency\" className={styles.formControl}>Condição</InputLabel>\r\n <Select\r\n value={editField.dependsCondition || \"equal\"} onChange={(e) => setEditField(({ ...editField, dependsCondition: e.target.value }))}\r\n labelId=\"conditionToDependency\"\r\n id=\"conditionToDependency\"\r\n label=\"conditionDependecy\"\r\n >\r\n {(elements.filter(a => a.id === editField.dependsOn)[0].type === \"radio\" || elements.filter(a => a.id === editField.dependsOn)[0].type === \"date\" || elements.filter(a => a.id === editField.dependsOn)[0].type === \"number\" || elements.filter(a => a.id === editField.dependsOn)[0].type === \"checkbox\") &&\r\n [\r\n <MenuItem value={'equal'}>{translate(\"$__equal\")}</MenuItem>,\r\n <MenuItem value={'different'}>{translate(\"$__different\")}</MenuItem>\r\n ]\r\n }\r\n {(elements.filter(a => a.id === editField.dependsOn)[0].type === \"date\" || elements.filter(a => a.id === editField.dependsOn)[0].type === \"number\") &&\r\n [\r\n <MenuItem value={'biggerThan'}>{translate(\"$__biggerThen\")}</MenuItem>,\r\n <MenuItem value={'lessThan'}>{translate(\"$__lessThan\")}</MenuItem>\r\n ]\r\n }\r\n {(elements.filter(a => a.id === editField.dependsOn)[0].type === \"checkbox\") &&\r\n [\r\n <MenuItem value={'contain'}>{translate(\"$__contain\")}</MenuItem>,\r\n ]\r\n }\r\n </Select>\r\n </FormControl>\r\n : <></>} */}\r\n </div> : null\r\n }\r\n <button onClick={() => { saveField() }} style={{\r\n padding: '7px 30px',\r\n border: 'rgb(1, 30, 65) 1px solid',\r\n background: 'linear-gradient(90deg, rgb(1, 30, 65) 0%, rgb(0, 49, 112) 100%)',\r\n color: 'rgb(192,178,131)',\r\n borderRadius: '4px',\r\n fontWeight: '600',\r\n margin: '10px 0',\r\n width: '100%',\r\n cursor: 'pointer',\r\n }}>\r\n {editField.id ? translate(\"$__save\") : translate(\"$__add\")}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </fieldset>\r\n </div>\r\n <p style={{\r\n color: 'red',\r\n fontSize: '0.8rem',\r\n textAlign: 'center'\r\n }}>{msg}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ClickAwayListener>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(CreateForm)","import React from 'react'\r\nimport MD5 from \"crypto-js/md5\"\r\n\r\n//REDUX\r\nimport { connect } from 'react-redux'\r\nimport { bindActionCreators } from 'redux'\r\nimport * as reduxActions from 'store/actions'\r\n\r\n//COMPONENTES\r\nimport Forms from \"componentsV3/Forms/edit\"\r\nimport Filter from \"componentsV3/Filter/menuFilter\"\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions/\";\r\nimport { Paper } from '@material-ui/core'\r\nimport GridItem from 'components/Grid/GridItem'\r\nimport ButtonOptions from 'componentsV3/Buttons'\r\nimport GridContainer from 'components/Grid/GridContainer'\r\n\r\nfunction FormsView(props) {\r\n const [search, setSearch] = React.useState({})\r\n const [edit, setEdit] = React.useState({})\r\n const searchID = props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n return (\r\n <div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n grid: 5,\r\n\r\n }}\r\n >\r\n <Filter\r\n nodeId={searchID}\r\n fields={['text']}\r\n showFilters\r\n style={{ marginLeft: 7 }}\r\n onChange={(e) => {\r\n setSearch(e)\r\n }}\r\n title={{\r\n text: translate(\"$__formName\")\r\n }}\r\n />\r\n <ButtonOptions\r\n text={translate(\"$__newForm\")}\r\n icon={\"add\"}\r\n onClick={() => {\r\n setEdit({ new: true })\r\n }}\r\n />\r\n </div>\r\n <GridContainer\r\n style={{\r\n margin: 0,\r\n marginTop: 33,\r\n padding: 0,\r\n marginLeft: -15,\r\n }}\r\n >\r\n {props.forms && Object.keys(props.forms)\r\n .filter(fil => !search || !search.text || (search && search.text && props.forms[fil] && props.forms[fil].name.toLowerCase().indexOf(search.text.toLowerCase()) > -1))\r\n .map((f, i) => (\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={3}\r\n lg={3}\r\n xl={2}\r\n key={`${f}-${i}`}\r\n >\r\n <Paper style={{ marginBottom: 15 }}>\r\n <div\r\n style={{\r\n padding: 7,\r\n cursor: \"pointer\"\r\n }}\r\n onClick={() => {\r\n setEdit(props.forms[f])\r\n }}\r\n >\r\n <div style={{ fontSize: \"18px\", color: \"gray\", fontWeight: \"bold\" }}>{props.forms[f].name}</div>\r\n <div style={{ fontSize: \"12px\", color: \"gray\", marginTop: 15 }}>{translate(\"$__items\")}: {JSON.parse(props.forms[f].elements).length}</div>\r\n </div>\r\n </Paper>\r\n </GridItem>\r\n ))}\r\n\r\n </GridContainer>\r\n {Object.keys(edit).length > 0 ?\r\n <Forms\r\n data={edit}\r\n onClose={() => {\r\n setEdit({})\r\n }}\r\n />\r\n : <></>}\r\n </div>\r\n );\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n forms: store.forms,\r\n // page: store.db.history\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(FormsView)","//CORE\r\nimport React from \"react\"\r\nimport Cards from \"react-credit-cards\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Users.js\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n translate,\r\n} from \"functions/\"\r\n\r\n\r\nimport 'react-credit-cards/es/styles-compiled.css';\r\n\r\nfunction Component(props) {\r\n const [data, setData] = React.useState({\r\n cvc: '',\r\n expiry: '',\r\n focus: '',\r\n name: '',\r\n number: '',\r\n })\r\n\r\n return (\r\n <div>\r\n <Cards\r\n cvc={data.cvc}\r\n expiry={data.expiry}\r\n focused={data.focus}\r\n name={data.name}\r\n number={data.number}\r\n />\r\n <fieldset style={{\r\n wordBreak: \"break-word\"\r\n }}>\r\n <legend>\r\n {translate(\"$__paymentPreffer\")}\r\n </legend>\r\n <div\r\n style={{\r\n borderRadius: 15,\r\n background: customApp(\"ColumnTitleColor\"),\r\n color: \"#FFFFFF\",\r\n boxShadow: \"0 0 3px 7px rgba(0,0,0,0.03)\",\r\n padding: 15\r\n }}\r\n >\r\n </div>\r\n <TextField\r\n id={`sideModule_user_displayName`}\r\n label={translate('$__displayName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name=\"number\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='view_comfy_ind' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n number: d.target.value\r\n })\r\n },\r\n }}\r\n value={data && data.number ? data.number : ''}\r\n placeholder={translate('$__cardNumber', 1)}\r\n // disabled={permission ? false : true}\r\n />\r\n </fieldset>\r\n <fieldset style={{\r\n wordBreak: \"break-word\"\r\n }}>\r\n <legend>\r\n {translate(\"$__forceChangePassword\")}\r\n </legend>\r\n <Switch\r\n checked={data && data._access && data._access.user ? true : false}\r\n onChange={(d) => {\r\n // changeData({\r\n // name: 'user',\r\n // value: data && data._access && data._access.user ? false : true\r\n // })\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate(\"$__forceChangePasswordDescription\")}\r\n </fieldset>\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","import React, { memo } from \"react\"\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 CreditCard from \"components/Account/creditCard\"\r\n\r\n\r\nfunction App(props) {\r\n //SANDBOX\r\n //GALAX Id 5473\r\n //GALAX Hash 83Mw5u8988Qj6fZqS4Z8K7LzOo1j28S706R0BeFe\r\n const test = async () => {\r\n const { socket } = reduxStore.getState().functions\r\n\r\n socket.emit(\"data\", {\r\n module: \"galaxPay\",\r\n method: \"post\",\r\n action: \"integration\"\r\n }, {\r\n action: \"reqData\",\r\n accountData: reduxStore.getState().session.GlobalData\r\n }, response => {\r\n console.log(response)\r\n if (response.error) {\r\n console.log(\"companyDataError\", response.error)\r\n console.log(response)\r\n }\r\n })\r\n }\r\n return (\r\n <div>\r\n <CreditCard />\r\n <div style={{ padding: 15, backgroundColor: \"black\" }} onClick={() => { test() }}>TEST</div>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(memo(App))","import React, { memo } from \"react\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n//COMPONENTS\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport TextField from \"components/TextField\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport ProgressLinear from \"components/Progress/linear\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, appAlert } from \"functions/\"\r\n\r\nimport { customApp } from \"functions\"\r\n\r\nimport apims from \"apims\"\r\nimport api from \"api\"\r\n\r\nfunction App(props) {\r\n const [data, setData] = React.useState({})\r\n const [secretView, setSecretView] = React.useState(false)\r\n const [loading, setLoading] = React.useState(true)\r\n\r\n React.useEffect(() => {\r\n reqIntegrationToken()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n const scrollTimer = setTimeout(() => {\r\n document.getElementById(\"mainPannel\").scrollTo(0, 0)\r\n }, 100)\r\n return () => {\r\n clearTimeout(scrollTimer)\r\n }\r\n }, [props.history])\r\n\r\n const reqIntegrationToken = async (n = false) => {\r\n let ntk = n\r\n let result = await apims.post(\"/ReqIntegrationToken\")\r\n if (!ntk && result && result.data?.token) {\r\n setData({\r\n secretKey: `Bearer ${result.data.token}`\r\n })\r\n } else {\r\n let result = await api.post(\"/api/token\")\r\n if (result)\r\n setData({\r\n secretKey: `Bearer ${result.data.token}`\r\n })\r\n }\r\n setLoading(false)\r\n }\r\n\r\n\r\n return (\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n Integrações\r\n <ErrorBoundary>\r\n {loading ?\r\n <ProgressLinear />\r\n :\r\n <div>\r\n <fieldset style={{\r\n wordBreak: \"break-word\",\r\n marginTop: 50\r\n }}>\r\n <legend>\r\n {translate(\"$__authorizationToken\")}\r\n </legend>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <TextField\r\n label={translate('$__authorizationToken', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'secretKey'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n multiline: true,\r\n minRows: 3,\r\n autoComplete: 'new-password',\r\n type: secretView ? \"text\" : \"password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <div style={{\r\n cursor: \"pointer\",\r\n marginRight: 7\r\n }}\r\n onClick={() => {\r\n navigator.clipboard.writeText(data.secretKey);\r\n }}\r\n >\r\n <Icon icon='content_copy' />\r\n </div>\r\n <Icon icon={secretView ? 'visibility_off' : 'visibility'} onClick={() => {\r\n setSecretView(prev => !prev)\r\n }} />\r\n </InputAdornment>\r\n ),\r\n }}\r\n value={`${data && data.secretKey ? data.secretKey : ''}`}\r\n placeholder={translate('$__secretKey', 1)}\r\n autoFocus\r\n disabled={true}\r\n />\r\n </div>\r\n <i>{translate(\"$__secretKeyDescription\")}</i>\r\n </fieldset>\r\n <div style={{\r\n display: \"none\",\r\n justifyContent: \"flex-end\",\r\n }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__newToken\")}\r\n text={translate(\"$__newToken\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"refresh\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n appAlert({\r\n message: translate(\"$__confirmApiTokenRevokeAndRecreate\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n\r\n }\r\n })\r\n }}\r\n />\r\n </div>\r\n </div >\r\n }\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(memo(App))","import React from \"react\"\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport { EditorState, convertToRaw, ContentState } from 'draft-js';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\n\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 ErrorBoundary from \"components/ErrorBoundary\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n\r\n//VIEWS\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\";\r\n\r\nimport { translate } from \"functions/\"\r\n\r\n\r\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\n\r\nrequire('dotenv').config()\r\n\r\nfunction App(props) {\r\n const { session } = reduxStore.getState()\r\n const [data, setData] = React.useState({})\r\n const [iniData, setIniData] = React.useState(session.GlobalData ? session.GlobalData : {})\r\n const [editorData, setEditorData] = React.useState({\r\n historyEditor: null\r\n })\r\n\r\n React.useEffect(() => {\r\n setData(session.GlobalData ? session.GlobalData : {})\r\n setIniData(session.GlobalData ? session.GlobalData : {})\r\n let history = EditorState.createEmpty(),\r\n vocation = EditorState.createEmpty(),\r\n legacy = EditorState.createEmpty(),\r\n message = EditorState.createEmpty(),\r\n strategicStatement = EditorState.createEmpty(),\r\n values = EditorState.createEmpty()\r\n\r\n if (session.GlobalData.history) {\r\n history = htmlToDraft(`<div>${session.GlobalData.history}</div>`)\r\n history = ContentState.createFromBlockArray(history.contentBlocks)\r\n history = EditorState.createWithContent(history);\r\n }\r\n\r\n if (session.GlobalData.strategicStatement) {\r\n strategicStatement = htmlToDraft(`<div>${session.GlobalData.strategicStatement}</div>`)\r\n strategicStatement = ContentState.createFromBlockArray(strategicStatement.contentBlocks)\r\n strategicStatement = EditorState.createWithContent(strategicStatement);\r\n }\r\n\r\n if (session.GlobalData.values) {\r\n values = htmlToDraft(`<div>${session.GlobalData.values}</div>`)\r\n values = ContentState.createFromBlockArray(values.contentBlocks)\r\n values = EditorState.createWithContent(values);\r\n }\r\n\r\n\r\n if (session.GlobalData.vocation) {\r\n vocation = htmlToDraft(`<div>${session.GlobalData.vocation}</div>`)\r\n vocation = ContentState.createFromBlockArray(vocation.contentBlocks)\r\n vocation = EditorState.createWithContent(vocation);\r\n }\r\n\r\n\r\n\r\n if (session.GlobalData.legacy) {\r\n legacy = htmlToDraft(`<div>${session.GlobalData.legacy}</div>`)\r\n legacy = ContentState.createFromBlockArray(legacy.contentBlocks)\r\n legacy = EditorState.createWithContent(legacy);\r\n }\r\n if (session.GlobalData.message) {\r\n message = htmlToDraft(`<div>${session.GlobalData.message}</div>`)\r\n message = ContentState.createFromBlockArray(message.contentBlocks)\r\n message = EditorState.createWithContent(message)\r\n }\r\n\r\n setEditorData({\r\n history,\r\n vocation,\r\n legacy,\r\n message,\r\n values,\r\n strategicStatement\r\n })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const saveData = async () => {\r\n let newData = {}\r\n Object.keys(data).forEach(mp => {\r\n if (data[mp] && (!iniData[mp] || JSON.stringify({ a: data[mp] }) !== JSON.stringify({ a: iniData[mp] }))) {\r\n newData = {\r\n ...newData,\r\n [mp]: data[mp] && typeof data[mp] === 'string' ? data[mp].trim() : data[mp]\r\n }\r\n }\r\n })\r\n // JSON.str\r\n console.log(newData)\r\n try {\r\n let res = await api.post(\"account/save\", newData)\r\n if (res) {\r\n setData({\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n })\r\n setIniData(\r\n {\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n }\r\n )\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n GlobalData: {\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n }\r\n });\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n <GridContainer\r\n style={{\r\n marginTop: 15\r\n }}\r\n >\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n marginBottom: 33\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <div>{translate(\"$__adminMessage\")}</div>\r\n <ErrorBoundary>\r\n <Editor\r\n toolbar={{\r\n options: ['inline', 'blockType', 'fontSize', 'fontFamily', 'list', 'textAlign', 'colorPicker', 'link', 'emoji', 'image', 'remove', 'history'],\r\n inline: {\r\n inDropdown: false,\r\n options: ['bold', 'italic'],\r\n },\r\n }}\r\n editorState={editorData.message}\r\n onEditorStateChange={(d) => {\r\n setData({\r\n ...data,\r\n message: draftToHtml(convertToRaw(d.getCurrentContent())),\r\n })\r\n setEditorData({\r\n ...editorData,\r\n message: d,\r\n })\r\n }}\r\n hashtag={{\r\n separator: ' ',\r\n trigger: '#',\r\n }}\r\n editorStyle={{\r\n minHeight: 150\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n marginBottom: 33\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <div>{translate(\"$__strategicStatement\")}</div>\r\n <ErrorBoundary>\r\n <Editor\r\n toolbar={{\r\n options: ['inline', 'blockType', 'fontSize', 'fontFamily', 'list', 'textAlign', 'colorPicker', 'link', 'emoji', 'image', 'remove', 'history'],\r\n inline: {\r\n inDropdown: false,\r\n options: ['bold', 'italic'],\r\n },\r\n }}\r\n editorState={editorData.strategicStatement}\r\n onEditorStateChange={(d) => {\r\n setData({\r\n ...data,\r\n strategicStatement: draftToHtml(convertToRaw(d.getCurrentContent())),\r\n })\r\n setEditorData({\r\n ...editorData,\r\n strategicStatement: d,\r\n })\r\n }}\r\n hashtag={{\r\n separator: ' ',\r\n trigger: '#',\r\n }}\r\n editorStyle={{\r\n minHeight: 150\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n marginBottom: 33\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <div>{translate(\"$__vocation\")}</div>\r\n <ErrorBoundary>\r\n <Editor\r\n toolbar={{\r\n options: ['inline', 'blockType', 'fontSize', 'fontFamily', 'list', 'textAlign', 'colorPicker', 'link', 'emoji', 'image', 'remove', 'history'],\r\n inline: {\r\n inDropdown: false,\r\n options: ['bold', 'italic'],\r\n },\r\n }}\r\n editorState={editorData.vocation}\r\n onEditorStateChange={(d) => {\r\n setData({\r\n ...data,\r\n vocation: draftToHtml(convertToRaw(d.getCurrentContent())),\r\n })\r\n setEditorData({\r\n ...editorData,\r\n vocation: d,\r\n })\r\n }}\r\n hashtag={{\r\n separator: ' ',\r\n trigger: '#',\r\n }}\r\n editorStyle={{\r\n minHeight: 150\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n marginBottom: 33\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <div>{translate(\"$__history\")}</div>\r\n <ErrorBoundary>\r\n <Editor\r\n toolbar={{\r\n options: ['inline', 'blockType', 'fontSize', 'fontFamily', 'list', 'textAlign', 'colorPicker', 'link', 'emoji', 'image', 'remove', 'history'],\r\n inline: {\r\n inDropdown: false,\r\n options: ['bold', 'italic'],\r\n },\r\n }}\r\n editorState={editorData.history}\r\n onEditorStateChange={(d) => {\r\n setData({\r\n ...data,\r\n history: draftToHtml(convertToRaw(d.getCurrentContent())),\r\n })\r\n setEditorData({\r\n ...editorData,\r\n history: d,\r\n })\r\n }}\r\n hashtag={{\r\n separator: ' ',\r\n trigger: '#',\r\n }}\r\n editorStyle={{\r\n minHeight: 150\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n marginBottom: 33\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <div>{translate(\"$__values\")}</div>\r\n <ErrorBoundary>\r\n <Editor\r\n toolbar={{\r\n options: ['inline', 'blockType', 'fontSize', 'fontFamily', 'list', 'textAlign', 'colorPicker', 'link', 'emoji', 'image', 'remove', 'history'],\r\n inline: {\r\n inDropdown: false,\r\n options: ['bold', 'italic'],\r\n },\r\n }}\r\n editorState={editorData.values}\r\n onEditorStateChange={(d) => {\r\n setData({\r\n ...data,\r\n values: draftToHtml(convertToRaw(d.getCurrentContent())),\r\n })\r\n setEditorData({\r\n ...editorData,\r\n values: d,\r\n })\r\n }}\r\n hashtag={{\r\n separator: ' ',\r\n trigger: '#',\r\n }}\r\n editorStyle={{\r\n minHeight: 150\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n marginBottom: 33\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <div>{translate(\"$__legacy\")}</div>\r\n <ErrorBoundary>\r\n <Editor\r\n toolbar={{\r\n options: ['inline', 'blockType', 'fontSize', 'fontFamily', 'list', 'textAlign', 'colorPicker', 'link', 'emoji', 'image', 'remove', 'history'],\r\n inline: {\r\n inDropdown: false,\r\n options: ['bold', 'italic'],\r\n },\r\n }}\r\n editorState={editorData.legacy}\r\n onEditorStateChange={(d) => {\r\n setData({\r\n ...data,\r\n legacy: draftToHtml(convertToRaw(d.getCurrentContent())),\r\n })\r\n setEditorData({\r\n ...editorData,\r\n legacy: d,\r\n })\r\n }}\r\n style={{\r\n minHeight: 150\r\n }}\r\n hashtag={{\r\n separator: ' ',\r\n trigger: '#',\r\n }}\r\n editorStyle={{\r\n minHeight: 150\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n\r\n\r\n </GridContainer>\r\n {JSON.stringify(data) !== JSON.stringify(iniData) ?\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData()\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(App)","import React from \"react\";\r\n\r\n//FUNTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\n\r\nexport default function PercentualBar(props) {\r\n return (\r\n <div style={{\r\n position: \"relative\",\r\n height: 5,\r\n backgroundColor: \"lightgray\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n borderRadius: 3,\r\n boxShadow: \"0 0 0 2px rgba(0,0,0,0.05)\"\r\n }}>\r\n <div style={{\r\n position: \"absolute\",\r\n top: 1,\r\n left: 1,\r\n bottom: 1,\r\n width: `calc(${props.value ? props.value : 0}% - 2px)`,\r\n overflow: \"hidden\",\r\n background: `${props.background ? props.background : customApp('ColumnTitleColor')}`,\r\n borderRadius: 3,\r\n boxShadow: \"0 0 0 2px rgba(0,0,0,0.05)\"\r\n }}>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React from \"react\"\r\nimport { cpf, cnpj } from 'cpf-cnpj-validator';\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 ImgCropper from \"components/Cropper\"\r\nimport TextField from \"components/TextField\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport SelectUsers from \"components/User/select\";\r\n\r\n//@MATERIAL\r\nimport Icon from \"components/Icon\"\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card.js\"\r\n\r\n//FUNCTIONS\r\nimport { upload } from \"functions/upload\";\r\nimport {\r\n translate,\r\n customApp,\r\n appAlert,\r\n getDate\r\n} from \"functions/\"\r\n\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\nimport api from \"api\"\r\n\r\nfunction Component(props) {\r\n const { session } = reduxStore.getState()\r\n const [data, setData] = React.useState(session.GlobalData ? session.GlobalData : {})\r\n const [iniData, setIniData] = React.useState(session.GlobalData ? session.GlobalData : {})\r\n\r\n const saveData = async () => {\r\n let newData = {}\r\n let file\r\n Object.keys(data).forEach(mp => {\r\n if (mp === \"file\") {\r\n file = data[mp]\r\n } else if (mp === 'document') {\r\n let valid = false\r\n if (data[mp].length === 11 && cpf.isValid(data[mp]))\r\n valid = true\r\n if (data[mp].length === 14 && cnpj.isValid(data[mp]))\r\n valid = true\r\n if (valid) {\r\n newData = {\r\n ...newData,\r\n [mp]: data[mp] && typeof data[mp] === 'string' ? data[mp].trim() : data[mp]\r\n }\r\n } else {\r\n appAlert({\r\n message: `${translate(`$__${mp}`)}: ${translate(\"$__invalidDocument\")}`,\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n\r\n } else if (data[mp] && (!iniData[mp] || JSON.stringify({ a: data[mp] }) !== JSON.stringify({ a: iniData[mp] }))) {\r\n newData = {\r\n ...newData,\r\n [mp]: data[mp] && typeof data[mp] === 'string' ? data[mp].trim() : data[mp]\r\n }\r\n } else if (!data[mp] && mp !== \"_id\") {\r\n appAlert({\r\n message: `${translate(`$__${mp}`)}: ${translate(\"$__cantBeEmpty\")}`,\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n })\r\n // JSON.str\r\n try {\r\n let imageResult = file ? await upload(session.account, file) : true\r\n if (imageResult) {\r\n if (String(imageResult) !== 'true') {\r\n newData = {\r\n ...newData,\r\n image: imageResult\r\n }\r\n }\r\n const response = await api.post(\"/account/save\", newData)\r\n if (response) {\r\n if (response.error) {\r\n console.log(\"companyDataError\", response.error)\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n GlobalData: {\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n }\r\n });\r\n setIniData({\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n })\r\n }\r\n }\r\n // socket.emit(\"data\", {\r\n // module: \"account\",\r\n // method: \"post\",\r\n // action: \"save\"\r\n // }, newData, response => {\r\n // if (response.error) {\r\n // console.log(\"companyDataError\", response.error)\r\n // } else {\r\n // props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n // ...reduxStore.getState().session,\r\n // GlobalData: {\r\n // ...reduxStore.getState().session.GlobalData,\r\n // ...newData\r\n // }\r\n // });\r\n // setIniData({\r\n // ...reduxStore.getState().session.GlobalData,\r\n // ...newData\r\n // })\r\n // }\r\n // })\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n <div\r\n id={`sideModule_user_foto`}\r\n >\r\n <ImgCropper\r\n maxWidthOrHeight={600}\r\n img={\r\n data &&\r\n data.image ?\r\n data.image :\r\n null\r\n }\r\n onChange={(a, file) => {\r\n setData({\r\n ...data,\r\n file: file\r\n })\r\n }}\r\n avatar\r\n avatarIcon={'business'}\r\n />\r\n </div>\r\n <TextField\r\n id={`sideModule_user_fullName`}\r\n label={translate('$__fullCompanyName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'fullName'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='business' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n fullName: d.target.value\r\n })\r\n },\r\n onBlur: (d) => {\r\n if (data && !data.fullName) {\r\n let name = d.target.value ? `${d.target.value.split(' ')[0]} ${d.target.value.split(' ')[1] ? d.target.value.split(' ')[1] : ''}` : \"\"\r\n setData({\r\n ...data,\r\n fullName: name\r\n })\r\n }\r\n }\r\n }}\r\n value={data && data.fullName ? data.fullName : ''}\r\n placeholder={translate('$__fullName', 1)}\r\n autoFocus\r\n disabled={true}\r\n />\r\n <TextField\r\n id={`sideModule_user_displayName`}\r\n label={translate('$__displayName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name=\"name\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='view_comfy_ind' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n name: d.target.value\r\n })\r\n },\r\n }}\r\n value={data && data.name ? data.name : ''}\r\n placeholder={translate('$__displayName', 1)}\r\n disabled={true}\r\n />\r\n <TextField\r\n id={`customURL`}\r\n label={translate('$__customURL', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'customURL'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <span style={{ color: \"gray\", fontSize: 12 }}>.machen.ai</span>\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n customURL: d.target.value.trim()\r\n })\r\n },\r\n onBlur: (d) => {\r\n if (data && !data.fullName) {\r\n setData({\r\n ...data,\r\n customURL: d.target.value.trim()\r\n })\r\n }\r\n }\r\n }}\r\n value={data && data.customURL ? data.customURL : ''}\r\n placeholder={translate('$__customURL', 1)}\r\n autoFocus\r\n />\r\n <TextField\r\n id={`__documentCPForCNPJ`}\r\n label={translate('$__documentCPForCNPJ', 1)}\r\n variant={customApp('fieldVariant')}\r\n name=\"document\"\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n multiline: true,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon='view_comfy_ind' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n document: d.target.value\r\n })\r\n },\r\n }}\r\n value={data && data.document ? data.document : ''}\r\n placeholder={translate('$__displayName', 1)}\r\n disabled={iniData.document ? true : false}\r\n />\r\n <fieldset>\r\n <legend>{translate(\"$__accountResponsible\")}</legend>\r\n <ErrorBoundary>\r\n <SelectUsers\r\n includeMe\r\n admins\r\n avatarSize=\"33px\"\r\n permission={true}\r\n noLimit\r\n selected={data.accountResponsible ? [data.accountResponsible] : null}\r\n onSelect={(e) => {\r\n setData({\r\n ...data,\r\n accountResponsible: e[0]\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </fieldset>\r\n <fieldset>\r\n <legend>{translate(\"$__invoiceResponsible\")}</legend>\r\n <ErrorBoundary>\r\n <SelectUsers\r\n includeMe\r\n admins\r\n avatarSize=\"33px\"\r\n permission={true}\r\n noLimit\r\n selected={data.invoiceResponsible ? [data.invoiceResponsible] : null}\r\n onSelect={(e) => {\r\n setData({\r\n ...data,\r\n invoiceResponsible: e[0]\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </fieldset>\r\n <ul style={{\r\n color: customApp(\"color\")\r\n }}>\r\n <li>\r\n {translate(\"$__createdAt\")}: {getDate(data.created_at)}\r\n </li>\r\n {data.expire_at ?\r\n <li style={{\r\n color: customApp(\"menu\")\r\n }}>\r\n {translate(\"$__expireDate\")}: {getDate(data.expire_at)}\r\n </li>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </ul>\r\n {JSON.stringify(data) !== JSON.stringify(iniData) ?\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData()\r\n // setEditor(false)\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store) => ({\r\n session: store.session\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","//CORE\r\nimport React from \"react\"\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 Autocomplete from \"components/AutoComplete\"\r\nimport TextField from \"components/TextField\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Switch from \"components/Switch\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport api from \"api\"\r\n\r\nfunction Component(props) {\r\n const {\r\n session,\r\n db\r\n } = reduxStore.getState()\r\n const [data, setData] = React.useState(session.GlobalData ? session.GlobalData : {})\r\n\r\n //hideDeletedUsers\r\n const [iniData, setIniData] = React.useState(session.GlobalData ? session.GlobalData : {})\r\n\r\n const saveData = async () => {\r\n let newData = {}\r\n Object.keys(data).forEach(mp => {\r\n if (String(data[mp]) && (!iniData[mp] || JSON.stringify({ a: data[mp] }) !== JSON.stringify({ a: iniData[mp] }))) {\r\n newData = {\r\n ...newData,\r\n [mp]: data[mp] && typeof data[mp] === 'string' ? data[mp].trim() : data[mp]\r\n }\r\n }\r\n })\r\n\r\n if (!newData.requireExpirePassword && newData.expiresIn)\r\n newData.expiresIn = null\r\n\r\n try {\r\n let res = await api.post(\"account/save\", newData)\r\n if (res) {\r\n setData({\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n })\r\n setIniData({\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n GlobalData: {\r\n ...reduxStore.getState().session.GlobalData,\r\n ...newData\r\n }\r\n });\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n style={{ grid: 7 }}\r\n >\r\n <fieldset style={{\r\n wordBreak: \"break-word\",\r\n marginBottom: 15\r\n }}>\r\n <legend>\r\n {translate(\"$__hideDeletedUsersInTimelines\")}\r\n </legend>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <Switch\r\n checked={data && data.hideDeletedUsers ? true : false}\r\n onChange={(d) => {\r\n let newData = {\r\n ...data,\r\n hideDeletedUsers: data.hideDeletedUsers ? null : true,\r\n }\r\n setData(newData)\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate(\"$__required\")}\r\n </div>\r\n <i>{translate(\"$__hideDeletedUsersDescription\")}</i>\r\n </fieldset>\r\n <fieldset style={{\r\n wordBreak: \"break-word\",\r\n marginBottom: 15\r\n }}>\r\n <legend>\r\n {translate(\"$__2FactorTokenRequired\")}\r\n </legend>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <Switch\r\n checked={data && data.requireToken ? true : false}\r\n onChange={(d) => {\r\n let newData = {\r\n ...data,\r\n requireToken: data.requireToken ? null : true,\r\n }\r\n\r\n setData(newData)\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate(\"$__required\")}\r\n </div>\r\n <i>{translate(\"$__2FactorTokenRequiredDescription\")}</i>\r\n </fieldset>\r\n <fieldset style={{\r\n wordBreak: \"break-word\",\r\n marginBottom: 15\r\n }}>\r\n <legend>\r\n {translate(\"$__forceChangePassword\")}\r\n </legend>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <Switch\r\n checked={data && data.requireExpirePassword ? true : false}\r\n onChange={(d) => {\r\n let newData = {\r\n ...data,\r\n requireExpirePassword: data.requireExpirePassword ? null : true,\r\n ...data.requireExpirePassword ? { passwordExpire: null } : {}\r\n }\r\n setData(newData)\r\n }}\r\n name=\"checkedA\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n {translate(\"$__required\")}\r\n </div>\r\n <i>{translate(\"$__forceChangePasswordDescription\")}</i>\r\n {data.requireExpirePassword ?\r\n <fieldset>\r\n <legend>{translate('$__sessionDuration', 1)}</legend>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.passwordExpire}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"status\"\r\n disableClearable\r\n value={\r\n data\r\n && data.passwordExpire\r\n && db.passwordExpire\r\n ? db.passwordExpire.filter(a =>\r\n String(a.value) === String(data.passwordExpire)\r\n )[0]\r\n : db.passwordExpire[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__expiresIn\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.passwordExpire\r\n && db.passwordExpire\r\n ? db.passwordExpire.filter(a =>\r\n String(a.value) === String(data.passwordExpire)\r\n )[0]\r\n : db.passwordExpire.filter(a =>\r\n !a.value\r\n )[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n setData({\r\n ...data,\r\n passwordExpire: v[\"value\"]\r\n })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </fieldset>\r\n <fieldset>\r\n <legend>{translate('$__language', 1)}</legend>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.languages}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"status\"\r\n disableClearable\r\n value={data\r\n && data.language\r\n && db.languages\r\n && db.languages.filter(a =>\r\n String(a.value) === String(data.language)\r\n ).length > 0\r\n ? db.languages.filter(a =>\r\n String(a.value) === String(data.language)\r\n )[0]\r\n : db.languages[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__language\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={data\r\n && data.language\r\n && db.languages\r\n && db.languages.filter(a =>\r\n String(a.value) === String(data.language)\r\n ).length > 0\r\n ? db.languages.filter(a =>\r\n String(a.value) === String(data.language)\r\n )[0]\r\n : db.languages[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n setData({\r\n ...data,\r\n language: v[\"value\"]\r\n })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n <fieldset>\r\n <legend>{translate('$__sessionExpire', 1)}</legend>\r\n <Autocomplete\r\n id=\"combo-box-demo\"\r\n options={db.expiresIn}\r\n getOptionLabel={(option) => translate(option.label, 1)}\r\n style={{ width: \"100%\" }}\r\n name=\"status\"\r\n disableClearable\r\n value={\r\n data\r\n && data.expiresIn\r\n && db.expiresIn\r\n ? db.expiresIn.filter(a =>\r\n String(a.value) === String(data.expiresIn)\r\n )[0]\r\n : db.expiresIn.filter(a =>\r\n !a.value\r\n )[0]\r\n }\r\n renderInput={(params) =>\r\n <TextField\r\n {...params}\r\n label={translate(\"$__expiresIn\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n value={\r\n data\r\n && data.expiresIn\r\n && db.expiresIn\r\n ? db.expiresIn.filter(a =>\r\n String(a.value) === String(data.expiresIn)\r\n )[0]\r\n : db.expiresIn.filter(a =>\r\n !a.value\r\n )[0]\r\n }\r\n />\r\n }\r\n onChange={\r\n (d, v) => {\r\n setData({\r\n ...data,\r\n expiresIn: v[\"value\"]\r\n })\r\n }\r\n }\r\n />\r\n </fieldset>\r\n {JSON.stringify(data) !== JSON.stringify(iniData) ?\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData()\r\n // setEditor(false)\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div >\r\n )\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(Component)","//CORE\r\nimport React from \"react\"\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 history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport {\r\n BytesConvert,\r\n customApp,\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport 'react-credit-cards/es/styles-compiled.css';\r\n\r\nconst useStyles = makeStyles({\r\n list: {\r\n position: \"relative\",\r\n listStyleType: \"disclosure-closed\",\r\n \"& li\": {\r\n marginBottom: 3\r\n },\r\n },\r\n item: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }\r\n});\r\n\r\nfunction Component(props) {\r\n const { planDetails, data } = props\r\n\r\n const classes = useStyles();\r\n\r\n const upgradeSubscription = (\r\n <span style={{ marginLeft: 15, color: \"red\", fontSize: 11, cursor: \"pointer\" }} onClick={() => {\r\n history.push(\"#tab/subscriptionUpgrade\")\r\n }}>{translate(\"$__upgradeSubscription\")}</span>\r\n )\r\n return (\r\n <div>\r\n <fieldset style={{\r\n wordBreak: \"break-word\",\r\n padding: 0,\r\n position: \"relative\"\r\n }}>\r\n <legend>\r\n {translate(\"$__subscription\")}: <span style={{ fontWeight: \"bold\" }}>{translate(planDetails.label)}</span>\r\n </legend>\r\n <ul\r\n\r\n className={classes.list}\r\n >\r\n\r\n <li >{translate(\"$__adminLimit\", 1)}: {data && data.customAdminsLimit ? data.customAdminsLimit : planDetails.settings.admins}</li>\r\n <li >{translate(\"$__storageSpace\", 1)}: {data && data.customStorageSpace ? BytesConvert(data.customStorageSpace) : BytesConvert(planDetails.settings.space)}</li>\r\n <li>{translate(\"$__BrightAndConnected\", 1)}:\r\n <ul style={{\r\n position: \"relative\",\r\n paddingLeft: 10,\r\n listStyleType: \"disc\",\r\n }}>\r\n <li className={classes.item}>{translate(\"$__feed\", 1)}: {planDetails.settings.brightAndConnected.feed ? <Icon icon='check' color={customApp(\"color\")} size={18} /> : upgradeSubscription}</li>\r\n {planDetails.settings.brightAndConnected.feed ?\r\n <li className={classes.item}>{translate(\"$__feedDays\", 1)}:\r\n {planDetails.settings.brightAndConnected.feedDays ? `${planDetails.settings.brightAndConnected.feedDays} ${translate(\"$__days\")}` : translate(\"$__unlimited\")}\r\n </li>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <li className={classes.item}>{translate(\"$__radarLimit\", 1)}: {planDetails.settings.brightAndConnected.radarLimit ? planDetails.settings.brightAndConnected.radarLimit : translate(\"$__unlimited\")}</li>\r\n <li className={classes.item}>{translate(\"$__insights\", 1)}: {planDetails.settings.brightAndConnected.insight ? <Icon icon='check' color={customApp(\"color\")} size={18} /> : upgradeSubscription}</li>\r\n </ul>\r\n </li>\r\n <li>{translate(\"$__plannings\", 1)}:\r\n <ul style={{\r\n position: \"relative\",\r\n paddingLeft: 10,\r\n listStyleType: \"disc\",\r\n }}>\r\n <li className={classes.item}>{translate(\"$__limit\", 1)}: {planDetails.settings.plan.limit ? planDetails.settings.brightAndConnected.radarLimit : translate(\"$__unlimited\")}</li>\r\n <li className={classes.item}>{translate(\"$__clientPlannings\", 1)}: {planDetails.settings.plan.planClient ? <Icon icon='check' color={customApp(\"color\")} size={18} /> : upgradeSubscription}</li>\r\n {planDetails.settings.plan.planClient ?\r\n <li className={classes.item}>{translate(\"$__clientUserAdmins\", 1)}: {planDetails.settings.plan.clientAdmin ? planDetails.settings.plan.clientAdmin : upgradeSubscription}</li>\r\n : <React.Fragment></React.Fragment>}\r\n <li className={classes.item}>{translate(\"$__externalPlanning\", 1)}: {planDetails.settings.plan.machenPlan ? <Icon icon='check' color={customApp(\"color\")} size={18} /> : upgradeSubscription}</li>\r\n <li className={classes.item}>{translate(\"$__professionalTemplates\", 1)}: {planDetails.settings.plan.templates ? <Icon icon='check' color={customApp(\"color\")} size={18} /> : upgradeSubscription}</li>\r\n <li className={classes.item}>{translate(\"$__guidelineLimit\", 1)}: {planDetails.settings.plan.guidelineLimit ? planDetails.settings.plan.guidelineLimit : translate(\"$__unlimited\")}</li>\r\n <li className={classes.item}>{translate(\"$__feedLimit\", 1)}: {planDetails.settings.plan.feedLimit ? planDetails.settings.plan.feedLimit : translate(\"$__unlimited\")}</li>\r\n <li className={classes.item}>{translate(\"$__radarLimit\", 1)}: {planDetails.settings.plan.radarLimit ? planDetails.settings.plan.radarLimit : translate(\"$__unlimited\")}</li>\r\n <li className={classes.item}>{translate(\"$__insightLimit\", 1)}: {planDetails.settings.plan.insightLimit ? planDetails.settings.plan.insightLimit : translate(\"$__unlimited\")}</li>\r\n </ul>\r\n </li>\r\n <a href=\"https://machen.ai/#planos\" target={\"_blank\"} rel=\"noopener noreferrer\" style={{ fontWeight: \"bold\", color: customApp(\"menu\"), marginTop: 33 }}>{translate(\"$__viewMoreDetails\")}</a>\r\n </ul>\r\n </fieldset>\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = (store, ownProps) => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)","import React, { memo } from \"react\"\r\n\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\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport Icon from \"components/Icon\"\r\nimport PercentualBar from \"components/Percentual/bar\"\r\n\r\n//VIEWS\r\n\r\n//DEPENDENCIES\r\nimport AccountData from \"components/Account/edit\"\r\nimport AccountPreffers from \"components/Account/preffers\"\r\nimport SubscriptionDetails from \"components/Account/SubscriptionDetails\"\r\n\r\n//FUNCTIONS\r\nimport apims from \"apims/\";\r\n\r\nimport { translate, BytesConvert } from \"functions/\"\r\n\r\nimport {\r\n customApp,\r\n} from \"functions\"\r\n\r\nrequire('dotenv').config()\r\n\r\nfunction App(props) {\r\n const { session, db } = reduxStore.getState()\r\n const [usedSpace, setUsedSpace] = React.useState(0)\r\n\r\n React.useEffect(() => {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n const scrollTimer = setTimeout(() => {\r\n document.getElementById(\"mainPannel\").scrollTo(0, 0)\r\n }, 100)\r\n init()\r\n return () => {\r\n clearTimeout(scrollTimer)\r\n }\r\n }, [props.history])\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n if (!window.location.hash.split(\"/\")[0].replace(\"#\", \"\")) {\r\n history.push(\"sp#tab/home\")\r\n }\r\n\r\n\r\n if (hashs[0] && hashs[0].length === 36 && !reduxStore.getState().db.cards[hashs[0]]) {\r\n history.push(\"/deniedAccess\")\r\n }\r\n\r\n const init = async () => {\r\n try {\r\n const res = await apims.post('/Account_Space')\r\n if (res)\r\n setUsedSpace(parseInt(res.data))\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n let space = db.plans[0].settings.space\r\n let subscriptionPlan = db.plans[0]\r\n if (\r\n session\r\n && session.GlobalData\r\n && String(session.GlobalData.plan)\r\n && db.plans[session.GlobalData.plan]\r\n && db.plans[session.GlobalData.plan].settings\r\n ) {\r\n space = db.plans[session.GlobalData.plan].settings.space\r\n subscriptionPlan = db.plans[session.GlobalData.plan]\r\n }\r\n\r\n let percent = usedSpace * (100 / parseInt(space))\r\n\r\n\r\n\r\n return (\r\n <div>\r\n {/* <div style={{\r\n position: \"absolute\",\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n padding: 7,\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 0px 2px rgba(0,0,0,0.1)\"\r\n }}> */}\r\n <GridContainer\r\n style={{\r\n marginBottom: 15,\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }}>\r\n <div\r\n style={{\r\n padding: 10,\r\n background: customApp(\"AvatarBackground\"),\r\n }}\r\n >\r\n <Icon icon=\"card_membership\" size={30} color={\"#FFFFFF\"} />\r\n </div>\r\n <div style={{ marginLeft: 7, width: \"calc(100% - 40px)\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bolder\",\r\n marginTop: 7,\r\n }}>{translate(\"$__subscriptionPlan\", '*')}: {translate(subscriptionPlan.label, '*')}</div>\r\n <div style={{\r\n width: \"100%\",\r\n color: \"mediumgray\",\r\n fontSize: 12,\r\n fontWeight: \"bold\"\r\n }}>{translate(\"$__adminLimit\", 1)}: {subscriptionPlan.settings.admins}</div>\r\n {/* <a\r\n href=\"#\"\r\n style={{\r\n position: \"relative\",\r\n top: '-7px',\r\n color: customApp(\"color\"),\r\n fontSize: 10,\r\n fontWeight: 'bold'\r\n }}>{translate(\"$__viewContract\")}</a> */}\r\n </div>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }}>\r\n <div\r\n style={{\r\n padding: 10,\r\n background: customApp(\"AvatarBackground\"),\r\n }}\r\n >\r\n <Icon icon=\"storage\" size={30} color={\"#FFFFFF\"} />\r\n </div>\r\n <div style={{ marginLeft: 7, width: \"calc(100% - 40px)\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n marginTop: 7,\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bolder\"\r\n }}>{translate(\"$__usedStorage\", \"*\")}<span style={{ marginLeft: 15, color: \"red\", fontSize: 11, cursor: \"pointer\" }} onClick={() => {\r\n history.push(\"#tab/subscriptionUpgrade\")\r\n }}>{translate(\"$__upgradeSubscription\")}</span>\r\n </div>\r\n <PercentualBar\r\n value={Math.ceil(percent)}\r\n background={percent > 100 ? \"red\" : null}\r\n />\r\n <div>\r\n <span style={{\r\n color: percent > 100 ? \"red\" : \"mediumgray\",\r\n fontSize: 12,\r\n fontWeight: \"bold\"\r\n }}>{translate(\"$__used\", 1)}: {BytesConvert(usedSpace)}</span> <span style={{ color: \"lightgray\", fontSize: 11 }}>{translate(\"$__of\")} {translate(\"$__accountSpace\", 1)}: {BytesConvert(space)}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n\r\n {/* </div > */}\r\n <GridContainer\r\n style={{\r\n // marginTop: 15\r\n }}\r\n >\r\n\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n <div>Dados da conta</div>\r\n <ErrorBoundary>\r\n <AccountData data={session && session.GlobalData ? session.GlobalData : {}} />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n Preferências\r\n <ErrorBoundary>\r\n <AccountPreffers data={session && session.GlobalData ? session.GlobalData : {}} />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n >\r\n <div\r\n style={{\r\n padding: 7,\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\"\r\n }}\r\n >\r\n {translate(\"$__subscriptionDetails\")}\r\n <ErrorBoundary>\r\n <SubscriptionDetails data={session && session.GlobalData ? session.GlobalData : {}} planDetails={subscriptionPlan} />\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(memo(App))","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React, { useState } from \"react\"\r\nimport { Panel as ColorPicker } from 'rc-color-picker';\r\nimport { GradientPickerPopover } from 'react-linear-gradient-picker';\r\n\r\n//FUNCTIONS\r\nimport {\r\n hexToRgba\r\n} from \"functions/\"\r\n\r\nimport 'rc-color-picker/assets/index.css';\r\nimport 'react-linear-gradient-picker/dist/index.css';\r\n\r\nconst WrappedColorPicker = ({ onSelect, ...rest }) => (\r\n <ColorPicker {...rest} onChange={c => {\r\n onSelect(c.color, c.alpha / 100);\r\n }}\r\n animation=\"slide-up\"\r\n />\r\n);\r\n\r\nfunction convertLinearToPallet(x) {\r\n let c = x.replace('linear-gradient(90deg,', \"\").replace('radial-gradient(90deg,', \"\")\r\n let s = c.split('rgba(')\r\n let colors = []\r\n s.forEach(color => {\r\n let xc = color.split(') ')\r\n if (xc.length === 2) {\r\n let cl = xc[0].split(',')\r\n let os = (parseInt(xc[1].replace(')', \"\").replace(\"%\", \"\")) / 100).toFixed(2)\r\n colors.push({\r\n color: `rgb(${cl[0].trim()}, ${cl[1].trim()}, ${cl[2].trim()})`,\r\n offset: `${os.trim()}`,\r\n opacity: `${cl[3].trim()}`\r\n })\r\n }\r\n })\r\n return colors\r\n}\r\n\r\nfunction GradientColor(props) {\r\n const [open, setOpen] = useState(false);\r\n const value = props?.value?.css ? convertLinearToPallet(props.value.css) : props?.value?.color || []\r\n\r\n const setGradientColor = (options) => {\r\n let x = options.color\r\n let colorConstruct = (!props.type || props.type === 'linear')\r\n ? `linear-gradient(90deg, `\r\n : `radial-gradient(`\r\n x.forEach((c, i) => {\r\n if (c.color.indexOf(\"#\") > -1) {\r\n colorConstruct = `${colorConstruct}${hexToRgba(c.color, c.opacity || 1)} ${Math.ceil(c.offset * 100)}% ${i < x.length - 1 ? `,` : ``} `\r\n }\r\n if (c.color.indexOf(\"rgb\") > -1 && c.color.indexOf(\"rgba\") === -1) {\r\n colorConstruct = `${colorConstruct}rgba(${c.color.replace(\"rgb(\", \"\").replace(')', `, ${c.opacity || 1}`)}) ${Math.ceil(c.offset * 100)}% ${i < x.length - 1 ? `,` : ``} `\r\n }\r\n })\r\n colorConstruct = `${colorConstruct})`\r\n\r\n if (props.onChange)\r\n props.onChange({\r\n css: colorConstruct,\r\n palette: x\r\n })\r\n }\r\n\r\n\r\n return (\r\n <GradientPickerPopover {...{\r\n showAnglePicker: false,\r\n showGradientTypePicker: false,\r\n open,\r\n setOpen,\r\n width: 320,\r\n paletteHeight: 32,\r\n palette: value,\r\n onPaletteChange: (e) => {\r\n setGradientColor({\r\n name: 'ColumnTitleColor',\r\n color: e,\r\n })\r\n }\r\n }}>\r\n <WrappedColorPicker />\r\n </GradientPickerPopover>\r\n )\r\n}\r\n\r\nexport default GradientColor","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React from \"react\"\r\nimport ColorPicker from 'rc-color-picker';\r\n\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 CustomButton from \"components/Buttons/custom\"\r\nimport FakeExpanded from \"components/Card/fakeCardExpanded\"\r\nimport GradientColor from \"components/ColorPicker/Gradient\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport ImgCropper from \"components/Cropper\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\nimport TextField from \"components/TextField\"\r\nimport { Paper } from \"@material-ui/core\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card.js\"\r\n\r\n//FUNCTIONS\r\nimport { upload } from \"functions/upload\";\r\nimport {\r\n translate,\r\n customApp,\r\n} from \"functions/\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\nimport 'rc-color-picker/assets/index.css';\r\nimport 'react-linear-gradient-picker/dist/index.css';\r\n\r\nimport api from \"api\"\r\n\r\n\r\nfunction WhiteLabelView(props) {\r\n const { session } = reduxStore.getState()\r\n const { custom } = session\r\n const [data, setData] = React.useState(session.custom || {})\r\n const [iniData, setIniData] = React.useState({})\r\n const [newData, setNewData] = React.useState({})\r\n const [logo, setLogo] = React.useState(null)\r\n const [background, setBackground] = React.useState(null)\r\n const [fieldsRefresh, setFieldsRefresh] = React.useState(false)\r\n const [saveDataLoading, setSaveDataLoading] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n setIniData(session.custom || {})\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (fieldsRefresh)\r\n setTimeout(() => {\r\n setFieldsRefresh(false)\r\n }, 500)\r\n }, [fieldsRefresh])\r\n\r\n const setCustom = (d) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n custom: {\r\n ...reduxStore.getState().session.custom,\r\n [d.name]: d.value\r\n }\r\n });\r\n setNewData({\r\n ...reduxStore.getState().session.custom,\r\n [d.name]: d.value\r\n })\r\n setData({\r\n ...data,\r\n [d.name]: d.value\r\n })\r\n }\r\n\r\n const resetData = async () => {\r\n setData(iniData)\r\n setNewData({})\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n custom: iniData\r\n });\r\n }\r\n\r\n const saveData = async () => {\r\n setSaveDataLoading(true)\r\n let newCustom = {\r\n ...custom?.custom ? JSON.parse(custom?.custom) : {},\r\n ...newData,\r\n }\r\n setData(newCustom)\r\n setIniData(newCustom)\r\n\r\n try {\r\n let imageResult = logo ? await upload(session.account, logo) : true\r\n let backgroundResult = background ? await upload(session.account, background) : true\r\n if (imageResult && backgroundResult) {\r\n if (logo) {\r\n newCustom = {\r\n ...newCustom,\r\n customLogo: imageResult\r\n }\r\n }\r\n if (background) {\r\n newCustom = {\r\n ...newCustom,\r\n loginBackground: backgroundResult\r\n }\r\n }\r\n\r\n if (newCustom.custom)\r\n delete newCustom.custom\r\n // return\r\n const saveData = await api.post(\"/account/save\", { custom: JSON.stringify(newCustom) })\r\n if (saveData) {\r\n setSaveDataLoading(false)\r\n setNewData({})\r\n }\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <GridContainer>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend>{translate(\"$__logo\")}</legend>\r\n <ImgCropper\r\n maxWidthOrHeight={600}\r\n img={custom.customLogo}\r\n onChange={(a, file) => {\r\n setLogo(file)\r\n setCustom({\r\n name: 'customLogo',\r\n value: a\r\n })\r\n }}\r\n transparent\r\n ignoreAspect={true}\r\n noGuides\r\n viewMode={0}\r\n accept={\".png\"}\r\n checkOrientation\r\n />\r\n\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend>{translate(\"$__loginBackground\")}</legend>\r\n <ImgCropper\r\n maxWidthOrHeight={2000}\r\n img={custom.loginBackground}\r\n onChange={(a, file) => {\r\n setBackground(file)\r\n setCustom({\r\n name: 'loginBackground',\r\n value: a\r\n })\r\n }}\r\n transparent\r\n ignoreAspect={true}\r\n noGuides\r\n viewMode={0}\r\n accept={\".jpg, .jpeg\"}\r\n checkOrientation\r\n />\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend>{translate(\"$__backgroundColumnsTitle\")}</legend>\r\n <HeaderWithMenu\r\n title={translate(`$__backgroundColumnsTitle`, 1)}\r\n icon={'gradient'}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px'\r\n }}\r\n />\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.ColumnTitleColor\r\n }\r\n\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'ColumnTitleColor',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__background\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.colorText || null}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'colorText',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topLeft\"}\r\n />\r\n <div style={{ marginRight: 7 }}>{translate(\"$__text\")}</div>\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend>{translate(\"$__menu\")}</legend>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.menuColor\r\n }\r\n\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'menuColor',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__background\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.menuButtonColor}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'menuButtonColor',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__menuText\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.active}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'active',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__menuActiveText\")}</div>\r\n </div>\r\n </div>\r\n\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend>{translate(\"$__submenu\")}</legend>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.subMenuColor\r\n }\r\n\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'subMenuColor',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__background\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.subMenuTextColor}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'subMenuTextColor',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__menuTextIconColor\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.subMenuTextColorActive}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'subMenuTextColorActive',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__subMenuActiveText\")}</div>\r\n </div>\r\n </div>\r\n\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend>{translate(\"$__complement\")}</legend>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.linearProgress\r\n }\r\n\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'linearProgress',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n <LinearProgress customColor={custom.linearProgress} />\r\n <div style={{ marginRight: 7 }}>{translate(\"$__progress\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.color}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'color',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__borderColor\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.menu}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'menu',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7, fontWeight: \"bold\", color: customApp(\"menu\") }}>{translate(\"$__primaryText\")}</div>\r\n </div>\r\n </div>\r\n\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend style={{ display: \"flex\", alignItems: \"center\" }}>{translate(\"$__cardImageCover\")}\r\n\r\n <GradientColor value={\r\n {\r\n css: custom.AvatarBackground,\r\n\r\n }\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'AvatarBackground',\r\n value: e.css\r\n })\r\n }}\r\n type={\"radial\"}\r\n />\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.avatarIconColor}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'avatarIconColor',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </legend>\r\n <FakeExpanded\r\n backgroundColor={custom.AvatarBackground}\r\n avatarIconColor={custom.avatarIconColor}\r\n responsive\r\n />\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, padding: 7 }}>\r\n <fieldset>\r\n <legend style={{ display: \"flex\", alignItems: \"center\" }}>\r\n {translate(\"$__fields\")}\r\n </legend>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.line}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'line',\r\n value: c.color\r\n })\r\n setFieldsRefresh(true)\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__line\")}</div>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.medium}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'medium',\r\n value: c.color\r\n })\r\n setFieldsRefresh(true)\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__inputAdorment\")}</div>\r\n </div>\r\n {!fieldsRefresh ?\r\n <TextField\r\n label={translate(\"$__field\", 1)}\r\n variant={custom.fieldVariant}\r\n name={\"field\"}\r\n // InputLabelProps={{\r\n // shrink: true,\r\n // }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"format_color_fill\" color={custom.medium} />\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n : <TextField\r\n label={translate(\"$__field\", 1)}\r\n variant={custom.fieldVariant}\r\n name={\"field\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"format_color_fill\" />\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n }\r\n </fieldset>\r\n </Paper>\r\n </GridItem>\r\n {\r\n JSON.stringify(data) !== JSON.stringify(iniData) ?\r\n <div style={{\r\n position: \"fixed\",\r\n bottom: 50,\r\n right: 50,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n }}>\r\n <div >\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__reset\")}\r\n text={translate(\"$__reset\")}\r\n color=\"red\"\r\n // tr\r\n icon={\"format_color_reset\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n resetData()\r\n }}\r\n load={saveDataLoading}\r\n />\r\n </div>\r\n <div style={{ marginLeft: 15 }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData()\r\n // setEditor(false)\r\n }}\r\n load={saveDataLoading}\r\n />\r\n </div>\r\n\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </GridContainer>\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(withStyles(styles)(WhiteLabelView))\r\n","import React, { memo } from \"react\"\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 history from \"store/history\"\r\n\r\n//DEPENDENCIES\r\nimport Invoices from \"./invoices\"\r\nimport Integrations from \"./integrations\"\r\nimport Profile from \"./profile\"\r\nimport Resume from \"./resume\"\r\nimport WhiteLabel from \"./whiteLabel\"\r\n\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\nfunction App(props) {\r\n\r\n React.useEffect(() => {\r\n const scrollTimer = setTimeout(() => {\r\n document.getElementById(\"mainPannel\").scrollTo(0, 0)\r\n }, 100)\r\n return () => {\r\n clearTimeout(scrollTimer)\r\n }\r\n }, [props.history])\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n if (!window.location.hash.split(\"/\")[0].replace(\"#\", \"\")) {\r\n history.push(\"acc#tab/resume\")\r\n }\r\n\r\n return (\r\n <div>\r\n {/* <CardsLoader /> */}\r\n {hashs[1] && hashs[1] === \"resume\" ?\r\n <ErrorBoundary>\r\n <Resume />\r\n </ErrorBoundary>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === \"profile\" ?\r\n <ErrorBoundary>\r\n <Profile />\r\n </ErrorBoundary>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === \"whiteLabel\" ?\r\n <ErrorBoundary>\r\n <WhiteLabel />\r\n </ErrorBoundary>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === \"integrations\" ?\r\n <ErrorBoundary>\r\n <Integrations />\r\n </ErrorBoundary>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === \"invoicing\" ?\r\n <ErrorBoundary>\r\n <Invoices />\r\n </ErrorBoundary>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {/* {(!hashs[0] || (hashs[0] && hashs[0].replace(\"#\", \"\").length !== 36)) && hashs[1] === \"home\" ?\r\n <React.Fragment>\r\n <HomePlans />\r\n </React.Fragment>\r\n : (!hashs[0] || (hashs[0] && hashs[0].replace(\"#\", \"\").length !== 36)) && hashs[1] === \"completed\" ?\r\n <React.Fragment>\r\n <HomePlans completed={true} />\r\n </React.Fragment>\r\n :\r\n (!hashs[0]\r\n ||\r\n (hashs[0]\r\n && hashs[0].replace(\"#\", \"\").length !== 36\r\n )\r\n )\r\n &&\r\n // <Plans />\r\n } */}\r\n {/* {hashs[0].length === 36 && reduxStore.getState().db.cards[hashs[0].replace(\"#\", \"\")] ?\r\n <React.Fragment>\r\n {hashs[1] && hashs[1] === \"matrix\" &&\r\n <Matrix />\r\n }\r\n {hashs[1] && (hashs[1] === \"actions\" || hashs[1] === \"guidelines\" || hashs[1] === \"objectives\" || hashs[1] === \"goals\")\r\n &&\r\n <Actions type={hashs[1]} />\r\n }\r\n {hashs[1] && hashs[1] === \"dashboard\" &&\r\n <Dashboard />\r\n }\r\n {hashs[1] && hashs[1] === \"overview\" &&\r\n <Overview />\r\n }\r\n {hashs[1] && hashs[1] === \"bright-and-connected\" &&\r\n <React.Fragment>\r\n <BrightAndConnected />\r\n </React.Fragment>\r\n }\r\n {hashs[1] && hashs[1] === \"insight-boards\" &&\r\n <InsightBoards />\r\n }\r\n {hashs[1] && hashs[1] === \"radar\" &&\r\n <Radar />\r\n }\r\n {hashs[1] && hashs[1] === \"library\" &&\r\n <Library />\r\n }\r\n {hashs[1] && hashs[1] === \"planningBoard\" &&\r\n <iframe title=\"outModule\"\r\n style={{ position: \"absolute\", width: \"calc(100% - 30px)\", height: \"100%\", border: 'none' }}\r\n src={`https://miro.com/app/live-embed/${reduxStore.getState().db.cards[hashs[0]].miroBoard}=/?embedAutoplay=true&moveToViewport=-23165,-5837,13803,7546`}\r\n ></iframe>\r\n }\r\n </React.Fragment>\r\n :\r\n <React.Fragment>\r\n </React.Fragment>\r\n } */}\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(memo(App))","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n// core components\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/errorPageStyles\";\r\nimport { customApp } from \"functions\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function ErrorPage() {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.contentCenter}>\r\n <GridContainer>\r\n <GridItem md={12}>\r\n <h1 className={classes.title} style={{ color: customApp(\"color\") }}>\\o/</h1>\r\n <h2 className={classes.subTitle} style={{ color: customApp(\"menu\") }}>Você já utilizou o número de usuários contratados</h2>\r\n <h4 className={classes.description} style={{ color: customApp(\"menu\") }}>\r\n Entre em contato com nossos consultores para solicitar um upgrade do seu plano.\r\n </h4>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n// core components\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/errorPageStyles\";\r\nimport { customApp, translate } from \"functions\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function ErrorPage() {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.contentCenter}>\r\n <GridContainer>\r\n <GridItem md={12}>\r\n <h1 className={classes.title} style={{ color: customApp(\"color\") }}>\\o/</h1>\r\n <h2 className={classes.subTitle} style={{ color: customApp(\"menu\") }}>{translate(\"$__accessDenied\", '*')}</h2>\r\n <h4 className={classes.description} style={{ color: customApp(\"menu\") }}>\r\n {translate(\"$__accessDeniedDescription\", '*')}\r\n </h4>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\"\r\n\r\n//COMPONENTES\r\nimport Icon from \"components/Icon\";\r\nimport Progress from \"components/Progress/circular\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate, getDate } from \"functions\";\r\n\r\n//APIS\r\nimport apims from \"apims\"\r\n\r\nconst Historic = () => {\r\n const [loader, setLoader] = useState(true)\r\n const [approvalList, setApprovalList] = useState([])\r\n\r\n useEffect(() => {\r\n const init = async () => {\r\n const Approval = await apims.post('/Approval_List')\r\n if (Approval) {\r\n setLoader(false)\r\n setApprovalList(Approval.data)\r\n }\r\n }\r\n init()\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n\r\n if (loader)\r\n return (\r\n <div style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n paddintTop: \"40%\"\r\n }}>\r\n <Progress />\r\n </div>\r\n )\r\n\r\n return (\r\n <>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n marginBottom: \"50px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n marginBottom: \"15px\",\r\n padding: \"7px 0px\",\r\n color: customApp(\"colorText\"),\r\n background: customApp(\"ColumnTitleColor\"),\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>history</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__approvalHistory')}\r\n </span>\r\n </div>\r\n <div style={{ display: \"flex\", flexDirection: \"row\" }}>\r\n <div style={{ width: \"100%\", grid: \"15px\", padding: 15 }}>\r\n {approvalList\r\n .sort((a, b) => {\r\n if (a.date > b.date)\r\n return -1\r\n if (a.date < b.date)\r\n return 1\r\n return 0\r\n })\r\n .map((al, ali) => {\r\n console.log(al)\r\n return (<ApprovalItem key={al.timeline._id} approved={al.timeline.message.indexOf(\"$__approved\") > -1 ? true : false}>\r\n\r\n <div className={\"cardTitle\"}><div className={\"cardApprovalDate\"}>{getDate(al.date)}</div>{al.card} <div className={\"item\"}>(#{al.code})</div></div>\r\n <div className={\"local\"}>\r\n {al.local.reverse().map((lc, i) => <div className=\"cardApprovalLocal\" key={`lc${lc.code}`}>{lc.name}{i + 1 < al.local.length ? ` / ` : ``}</div>)}\r\n </div>\r\n <div className={\"cardApprovalStep\"}>\r\n <div>{translate(\"$__step\", 1)}: {al.approvedIn}</div>\r\n <div className={\"cardApprovalReason\"}>\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\" }}>\r\n {al.timeline.message.indexOf(\"$__approved\") > -1 ?\r\n <Icon icon=\"verified\" color={\"green\"} />\r\n : al.timeline.message.indexOf(\"$__rejected\") > -1 ?\r\n <Icon icon=\"gpp_bad\" color={\"red\"} />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ wordBreak: \"break-word\", width: \"100%\", clear: \"both\", marginRight: 15 }}>\r\n {translate(al.timeline.message)}\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ApprovalItem>)\r\n })}\r\n\r\n </div>\r\n {/* <div\r\n style={{\r\n height: \"100%\",\r\n borderLeft: \"1px solid #b9b9b9\",\r\n padding: \"0px 20px\",\r\n }}\r\n >\r\n <TextField\r\n id={`search`}\r\n label={translate(\"$__search\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"search\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon>search</Icon>\r\n </InputAdornment>\r\n ),\r\n }}\r\n placeholder={translate(\"$__search\", 1)}\r\n autoFocus\r\n />\r\n {plans?.map((plan) => (\r\n <div\r\n style={{\r\n marginTop: \"10px\",\r\n display: \"flex\",\r\n gap: \"5px\",\r\n alignItems: \"center\",\r\n }}\r\n key={plan}\r\n >\r\n <Avatar>{plan.slice(0, 2)}</Avatar>\r\n <FormControlLabel\r\n required\r\n control={<Checkbox color=\"default\" />}\r\n label={plan}\r\n />\r\n </div>\r\n ))}\r\n </div> */}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nconst ApprovalItem = styled.div`\r\n position:relative;\r\n float:left;\r\n width:100%; \r\n border-radius:7px;\r\n box-shadow:rgba(0,0,0,0.1) 0px 0px 3px 1px;\r\n padding:7px;\r\n grid:15px;\r\n align-items:center;\r\n margin-bottom:15px;\r\n ${props => `\r\n \r\n `}\r\n .cardApprovalDate{\r\n position:relative;\r\n float:left;\r\n font-size:12px;\r\n font-weight:regular;\r\n color:#979797;\r\n display:flex;\r\n margin-right:15px;\r\n }\r\n .cardTitle{\r\n position:relative;\r\n float:left;\r\n font-size:16px;\r\n font-weight:bold;\r\n display:flex;\r\n }\r\n .cardApprovalStep{\r\n position:relative;\r\n float:right;\r\n font-size:14px;\r\n font-weight:bold;\r\n text-align:right;\r\n ${props => `\r\n color:${props.approved ? `green` : `red`}\r\n `}\r\n }\r\n .cardApprovalLocal{\r\n position:relative;\r\n float:left;\r\n font-size:12px;\r\n color:#979797;\r\n display:flex;\r\n justify-content:center;\r\n align-items:center;\r\n margin-left:15px;\r\n }\r\n .cardApprovalReason{\r\n position:relative;\r\n float:left;\r\n clear:both;\r\n width:100%;\r\n font-size:13px;\r\n color:#979797;\r\n display:flex;\r\n justify-content:center;\r\n align-items:center;\r\n margin-left:15px;\r\n }\r\n \r\n`;\r\n\r\nexport default Historic;\r\n","//REACT\r\nimport React from 'react'\r\n//COMPONENTES\r\nimport Icon from 'components/Icon';\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//@MATERIAL\r\nimport { Tooltip } from '@mui/material';\r\n\r\n//FUNCTIONS\r\nimport { customApp, stringLength } from 'functions';\r\n\r\nconst User = (props) => {\r\n const { db, session } = reduxStore.getState();\r\n\r\n return (\r\n <>\r\n <div style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n gap: \"20px\",\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n }}>\r\n <input type=\"file\" id='fileBack' style={{ display: 'none' }} />\r\n <img\r\n src={session?.custom.loginBackground}\r\n alt=\"background\"\r\n style={{\r\n height: '150px',\r\n width: '100%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n <div\r\n style={{\r\n height: \"auto\",\r\n backgroundColor: \"none\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: '0px',\r\n marginTop: '-110px',\r\n padding: '0 17px',\r\n }}\r\n >\r\n <img\r\n src={session?.image}\r\n style={{\r\n borderRadius: \"50%\",\r\n border: `2px solid ${customApp('color')}`,\r\n width: \"110px\",\r\n height: \"110px\",\r\n margin: \"5px\",\r\n zIndex: '998',\r\n cursor: 'auto',\r\n }}\r\n alt='Profile'\r\n />\r\n <div style={{\r\n backgroundColor: 'rgb(238,238,238)',\r\n padding: '5px 20px 5px 50px',\r\n marginLeft: '-40px',\r\n zIndex: '0',\r\n borderRadius: '0px 10px 10px 0px',\r\n boxShadow: 'rgba(0, 0, 0, 0.14) 0px 1px 4px 0px',\r\n border: `2px solid ${customApp('color')}`,\r\n }}>\r\n <p style={{\r\n color: customApp('medium'),\r\n fontSize: '1.7rem',\r\n fontWeight: 'bold',\r\n margin: '5px 0px',\r\n display: 'flex',\r\n textAlign: 'left',\r\n justifyContent: 'flex-start',\r\n }}>{session?.name}\r\n <sup style={{ fontSize: '1rem !important' }}>\r\n <Icon\r\n style={{ cursor: 'pointer' }}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...db.sideModule,\r\n id: session?._id,\r\n activeModule: 'userEdit',\r\n db: 'users',\r\n data: {\r\n type: 'user',\r\n ...reduxStore.getState().db.users[session._id],\r\n }\r\n })\r\n }}\r\n >edit</Icon>\r\n </sup>\r\n </p>\r\n <p style={{\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: customApp('colorText'),\r\n margin: '0px',\r\n textAlign: 'left',\r\n }}>{session?.email}</p>\r\n <p style={{ margin: '0px', color: customApp('mediumText'), textAlign: 'left', fontSize: '11px' }}>{session?.GlobalData?.name} ●\r\n <Tooltip title={session?.groups\r\n .filter(a => a.value)\r\n .sort((a, b) => {\r\n if (a.label < b.label)\r\n return -1\r\n return 1\r\n }).map((item, i) => `${i > 0 ? ` / ` : ``}${item.label}`)}>\r\n <>\r\n {session?.groups\r\n ?.filter(a => a.value)\r\n ?.sort((a, b) => {\r\n if (a.label < b.label)\r\n return -1\r\n return 1\r\n }).map((item, i) => `${i > 0 ? ` / ` : ``}${item.label}`)\r\n .map((group) => stringLength(group, 32))}\r\n </>\r\n </Tooltip></p>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(User);\r\n","import React, { useState } from \"react\";\r\n\r\n//@MATERIAL\r\nimport { FormControlLabel, Switch, Tooltip, makeStyles } from \"@material-ui/core\";\r\nimport LockIcon from '@material-ui/icons/Lock';\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions/\";\r\n\r\nconst useStyles = makeStyles({\r\n switch: {\r\n '& + .MuiSwitch-track': {\r\n backgroundColor: customApp('color'),\r\n },\r\n '& .MuiSwitch-thumb': {\r\n backgroundColor: 'rgb(125, 125, 125)',\r\n },\r\n '& .Mui-checked': {\r\n '& + .MuiSwitch-track': {\r\n backgroundColor: customApp('color'),\r\n },\r\n '& .MuiSwitch-thumb': {\r\n backgroundColor: customApp('color'),\r\n },\r\n '& .MuiSvgIcon-root': {\r\n backgroundColor: customApp('color'),\r\n borderRadius: \"50%\",\r\n width: '20px',\r\n height: '20px',\r\n color: customApp('color'),\r\n }\r\n },\r\n '& .Mui-disabled': {\r\n '& + .MuiSwitch-track': {\r\n opacity: 0.5,\r\n },\r\n '& .MuiSvgIcon-root': {\r\n backgroundColor: customApp('color'),\r\n borderRadius: \"50%\",\r\n width: '20px !important',\r\n height: '20px !important',\r\n padding: '3px',\r\n color: `${customApp('lightText')} !important`,\r\n transform: 'translate(0, 0, 0, 0.2em)',\r\n }\r\n }\r\n },\r\n});\r\n\r\nconst SwitchCheck = ({ checked, setData, notificationType, notifications, notification, data }) => {\r\n const [check, setCheck] = useState(checked !== \"block\" ? checked : true);\r\n const colorSwitch = useStyles();\r\n const handleChangeNotifications = (check) => {\r\n const updateData = data?.map(updateNotifications => {\r\n if (updateNotifications === notifications) {\r\n const updateDataNotification = updateNotifications.notifications.map(updateNotification => {\r\n if (updateNotification === notification) {\r\n return { ...updateNotification, [notificationType]: check };\r\n }\r\n return updateNotification;\r\n })\r\n return { ...updateNotifications, notifications: updateDataNotification };\r\n }\r\n return updateNotifications;\r\n })\r\n setData(updateData);\r\n }\r\n\r\n return (\r\n <Tooltip title={checked === \"block\" ? translate('$__requiredNotification') : ''}>\r\n <FormControlLabel control={\r\n <Switch className={colorSwitch.switch}\r\n color=\"default\"\r\n checked={check}\r\n onChange={(event) => { setCheck(event.target.checked); handleChangeNotifications(event.target.checked) }}\r\n disabled={checked === \"block\" ? true : false}\r\n checkedIcon={<LockIcon />}\r\n />\r\n } />\r\n </Tooltip>\r\n )\r\n}\r\nexport default SwitchCheck;\r\n","import React, { useEffect, useState } from \"react\";\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//COMPONENTES\r\nimport Icon from \"components/Icon\";\r\nimport SwitchCheck from \"./SwitchCheck\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions\";\r\n\r\nconst Notifications = (props) => {\r\n const { session } = reduxStore.getState();\r\n const [iniData, setIniData] = useState(session.notifications\r\n ? session.notifications\r\n : [\r\n {\r\n notificationName: translate(\"$__activities\"),\r\n notifications: [\r\n { title: translate('$__lateActivities'), machen: \"block\", email: null },\r\n { title: translate('$__dayTasks'), machen: true, email: null },\r\n { title: translate('$__nextActivities'), machen: false, email: null },\r\n { title: translate(\"$__statusUpdate\"), machen: true, email: null },\r\n { title: translate(\"$__youWasRemoved\"), machen: false, email: null },\r\n ],\r\n },\r\n {\r\n notificationName: translate(\"$__messages\"),\r\n notifications: [\r\n { title: translate(\"$__unreadMessages\"), machen: \"block\", email: true },\r\n { title: translate(\"$__reactionsMyMessages\"), machen: false, email: null },\r\n ],\r\n },\r\n {\r\n notificationName: \"BRIGHT & CONNECTED\",\r\n notifications: [\r\n { title: translate('$__radar'), machen: true, email: false },\r\n { title: translate(\"$__newInsights\"), machen: \"block\", email: true },\r\n ],\r\n },\r\n {\r\n notificationName: translate(\"$__approvals\"),\r\n notifications: [{ title: translate(\"$__pendingApprovals\"), machen: true, email: \"block\" }],\r\n },\r\n {\r\n notificationName: translate('$__myDay'),\r\n notifications: [\r\n { title: translate('$__myDay'), machen: \"block\", email: null },\r\n { title: translate(\"$__otherDays\"), machen: false, email: null },\r\n ],\r\n },\r\n ]);\r\n const [data, setData] = useState();\r\n\r\n useEffect(() => {\r\n const { session } = reduxStore.getState()\r\n if (session.notifications && session.GlobalData.notifications) {\r\n const newNotifications = session.notifications.map(userNotifications => {\r\n const notificationGlobal = session.GlobalData.notifications.find(globalNotifications => globalNotifications.notificationName === userNotifications.notificationName);\r\n const newNotification = userNotifications.notifications.map(userNotification => {\r\n const blockGlobal = notificationGlobal.notifications.find(globalNotification => globalNotification.title === userNotification.title);\r\n return {\r\n ...userNotification,\r\n machen: blockGlobal.machen === \"block\" ? \"block\" : userNotification.machen === \"block\" ? blockGlobal.machen : userNotification.machen,\r\n email: blockGlobal.email === \"block\" ? \"block\" : userNotification.email === \"block\" ? blockGlobal.email : userNotification.email,\r\n };\r\n });\r\n\r\n return { notificationName: userNotifications.notificationName, notifications: newNotification };\r\n });\r\n setData(newNotifications);\r\n } else {\r\n setData(prev =>\r\n session.notifications\r\n ? session.notifications\r\n : session.GlobalData.notifications\r\n ? session.GlobalData.notifications\r\n : prev\r\n );\r\n }\r\n }, []);\r\n\r\n const saveData = async () => {\r\n setIniData(data);\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n notifications: data,\r\n });\r\n };\r\n const resetData = async () => {\r\n setData(session.GlobalData.notifications ? session.GlobalData.notifications : iniData);\r\n setIniData(session.GlobalData.notifications ? session.GlobalData.notifications : iniData);\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n notifications: session.GlobalData.notifications ? session.GlobalData.notifications : iniData,\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n minWidth: '70vw',\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n margin: \"0 auto\",\r\n marginBottom: \"50px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px 0px\",\r\n color: customApp(\"colorText\"),\r\n background: customApp(\"ColumnTitleColor\"),\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>notifications_active</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate(\"$__notificationManagement\")}\r\n </span>\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n gap: \"0px 10px\",\r\n alignItems: \"flex-start\",\r\n padding: \"0px 20px\",\r\n flexWrap: \"nowrap\",\r\n fontSize: \"16px\",\r\n }}\r\n >\r\n <div style={{ width: '100%' }}>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n color: customApp(\"darkText\"),\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n fontWeight: \"600\",\r\n }}\r\n >\r\n <p\r\n style={{\r\n textAlign: \"left\",\r\n width: \"60%\",\r\n paddingLeft: \"15px\",\r\n }}\r\n >\r\n {translate('$__notifyMe')}\r\n </p>\r\n <p style={{ padding: \"0 10px\", width: \"20%\" }}>Machen</p>\r\n <p style={{ padding: \"0 10px\", width: \"25%\" }}>\r\n {translate(\"$__email\")}\r\n </p>\r\n </div>\r\n <div\r\n style={{\r\n color: customApp(\"darkText\"),\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n fontWeight: \"600\",\r\n }}\r\n >\r\n <p\r\n style={{\r\n textAlign: \"left\",\r\n width: \"60%\",\r\n paddingLeft: \"15px\",\r\n }}\r\n >\r\n {translate('$__notifyMe')}\r\n </p>\r\n <p style={{ padding: \"0 10px\", width: \"20%\" }}>Machen</p>\r\n <p style={{ padding: \"0 10px\", width: \"25%\" }}>\r\n {translate(\"$__email\")}\r\n </p>\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n width: \"100%\",\r\n gridTemplateColumns: \"1fr 1fr\",\r\n gridTemplateRows: \"1fr 1fr 1fr\",\r\n gap: \"10px\",\r\n flexWrap: \"wrap\",\r\n justifyContent: \"center\",\r\n marginBottom: \"20px\",\r\n }}\r\n >\r\n {data?.map((notifications, index) => (\r\n <fieldset\r\n key={notifications?.notificationName}\r\n style={{\r\n borderColor: \"rgb(224 224 224)\",\r\n borderStyle: \"solid\",\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n paddingBottom: \"0px\",\r\n gridRow: index === 0 && \"1 / 3\",\r\n }}\r\n >\r\n <legend\r\n style={{\r\n padding: \"0px 5px\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n fontFamily:\r\n \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: customApp(\"colorText\"),\r\n margin: \"0px\",\r\n }}\r\n >\r\n {notifications?.notificationName}\r\n </legend>\r\n {notifications?.notifications.map((notification) => (\r\n <div\r\n key={notification?.title}\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n alignItems: \"baseline\",\r\n }}\r\n >\r\n <p style={{ width: \"60%\" }}>{notification?.title}</p>\r\n <div style={{ width: \"20%\" }}>\r\n <SwitchCheck\r\n checked={notification?.machen}\r\n setData={setData}\r\n notificationType={\"machen\"}\r\n notifications={notifications}\r\n data={data}\r\n notification={notification}\r\n />\r\n </div>\r\n <div style={{ width: \"20%\" }}>\r\n {notification?.email !== null &&\r\n <SwitchCheck\r\n checked={notification?.email}\r\n setData={setData}\r\n notificationType={\"email\"}\r\n notifications={notifications}\r\n data={data}\r\n notification={notification}\r\n />}\r\n </div>\r\n </div>\r\n ))}\r\n </fieldset>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {JSON.stringify(data) !== JSON.stringify(iniData) ? (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n bottom: 50,\r\n right: 50,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <div>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__reset\")}\r\n text={translate(\"$__reset\")}\r\n color=\"red\"\r\n // tr\r\n icon={\"format_color_reset\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n resetData();\r\n }}\r\n />\r\n </div>\r\n <div style={{ marginLeft: 15 }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData();\r\n // setEditor(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n ) : (\r\n <></>\r\n )}\r\n </>\r\n );\r\n};\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Notifications);\r\n","import React, { useState } from 'react';\r\n\r\n//COMPONENTES\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport { convertToRaw } from 'draft-js';\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport \"draft-js/dist/Draft.css\";\r\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\r\n\r\nexport const MessageEditor = (props) => {\r\n const {edit, data, changeData, id, options} = props\r\n \r\n const [editorData, setEditorData] = useState({\r\n historyEditor: null\r\n })\r\n \r\n const editorStyle = {\r\n backgroundColor: '#fff',\r\n width:'100%',\r\n height:'100%',\r\n fontFamily:'Soleto, Roboto, Helvetica, Arial, sans-serif',\r\n border:'none',\r\n margin:'0px'\r\n }\r\n const toolbarStyleObject = {\r\n width:'100%',\r\n fontFamily:'Soleto, Roboto, Helvetica, Arial, sans-serif',\r\n border:'none',\r\n display: edit ? 'flex':'none',\r\n justifyContent:'flex-start',\r\n borderBottom:'2px solid #eeeeee',\r\n borderRadius: '5px',\r\n }\r\n return (\r\n <>\r\n <Editor \r\n toolbar={{\r\n options:options ? options : ['inline', 'blockType', 'fontSize', 'fontFamily', 'list', 'textAlign', 'colorPicker', 'link', 'emoji', 'image', 'remove', 'history'],\r\n inline: {\r\n inDropdown: false,\r\n options: ['bold', 'italic', 'underline'],\r\n },\r\n list:{\r\n inDropdown: false,\r\n options: ['unordered']\r\n },\r\n link:{\r\n inDropdown: false,\r\n options: ['link']\r\n },\r\n }}\r\n wrapperClassName=\"wrapper-class\"\r\n editorClassName=\"editor-class\"\r\n toolbarClassName=\"toolbar-class\"\r\n toolbarStyle={toolbarStyleObject}\r\n editorState={data?.messageD}\r\n onEditorStateChange={(d) => {\r\n changeData(draftToHtml(convertToRaw(d.getCurrentContent())), d, id)\r\n setEditorData({\r\n ...editorData,\r\n message: d,\r\n })\r\n }}\r\n hashtag={{\r\n separator: ' ',\r\n trigger: '#',\r\n }}\r\n editorStyle={editorStyle}\r\n readOnly={!edit}\r\n />\r\n </>\r\n )\r\n}","import React, { useState } from \"react\";\r\n\r\n//COMPONENTES\r\nimport Icon from \"components/Icon\";\r\nimport { MessageEditor } from \"components/MessageEditor/MessageEditor\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions\";\r\n\r\nconst Overview = () => {\r\n const [edit, setEdit] = useState(false);\r\n const [data, setData] = useState({});\r\n const changeData = (message, messageD, id) => {\r\n setData({\r\n ...data,\r\n message: message,\r\n messageD: messageD,\r\n })\r\n }\r\n return (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n gap: \"20px\",\r\n flexDirection: \"column\",\r\n marginBottom: \"50px\",\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <div\r\n style={{\r\n flexGrow: \"1\",\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n width: '100%',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"space-between\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px 15px\",\r\n color: customApp('colorText'),\r\n background:\r\n customApp('ColumnTitleColor'),\r\n }}\r\n >\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__about')}\r\n </span>\r\n <Icon\r\n onClick={() => setEdit(!edit)}\r\n style={{ cursor: \"pointer\", color: customApp('color') }}\r\n >\r\n {edit ? 'cancel' : 'edit'}\r\n </Icon>\r\n </div>\r\n <div style={{ padding: \"10px 20px 20px 20px\" }} >\r\n <MessageEditor edit={edit} data={data} changeData={changeData} title={null} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\nexport default Overview;","import React, { useEffect, useState } from \"react\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//COMPONENTES\r\nimport Icon from \"components/Icon\";\r\nimport TextField from \"components/TextField\";\r\nimport Checkbox from \"components/Checkbox\";\r\n\r\n//@MATERIAL\r\nimport { InputAdornment, Avatar, FormControlLabel } from \"@material-ui/core\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions\";\r\n\r\nconst Historic = () => {\r\n const { db } = reduxStore.getState();\r\n const { cards } = db;\r\n const [plans, setPlans] = useState([]);\r\n\r\n useEffect(() => {\r\n const cardsPlans = Object.values(cards)\r\n .filter((value) => value.type === \"plan\")\r\n .map((value) => value.name);\r\n setPlans([...new Set(cardsPlans)]);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n marginBottom: \"50px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n marginBottom: \"15px\",\r\n padding: \"7px 0px\",\r\n color: customApp(\"colorText\"),\r\n background: customApp(\"ColumnTitleColor\"),\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>history</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__activityHistory')}\r\n </span>\r\n </div>\r\n <div style={{ display: \"flex\", flexDirection: \"row\" }}>\r\n <div style={{ width: \"70%\" }}></div>\r\n <div\r\n style={{\r\n height: \"100%\",\r\n borderLeft: \"1px solid #b9b9b9\",\r\n padding: \"0px 20px\",\r\n }}\r\n >\r\n <TextField\r\n id={`search`}\r\n label={translate(\"$__search\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"search\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon>search</Icon>\r\n </InputAdornment>\r\n ),\r\n }}\r\n placeholder={translate(\"$__search\", 1)}\r\n autoFocus\r\n />\r\n {plans?.map((plan) => (\r\n <div\r\n style={{\r\n marginTop: \"10px\",\r\n display: \"flex\",\r\n gap: \"5px\",\r\n alignItems: \"center\",\r\n }}\r\n key={plan}\r\n >\r\n <Avatar>{plan.slice(0, 2)}</Avatar>\r\n <FormControlLabel\r\n required\r\n control={<Checkbox color=\"default\" />}\r\n label={plan}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Historic;\r\n","import React from 'react'\r\n\r\n//COMPONENTES\r\nimport GridItem from 'components/Grid/GridItem';\r\nimport UserCard from \"components/User/card\";\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\nconst Department = () => {\r\n const { db, session } = reduxStore.getState()\r\n\r\n const filterUsersGroup = (group, user) => {\r\n if (\r\n db.users[user]\r\n && db.users[user].groups\r\n && db.users[user].groups.length > 0\r\n && db.users[user].groups.filter(ug =>\r\n ug.value === group.value\r\n ).length > 0\r\n && session?.groups.some(sgroup => sgroup.label === group.label)\r\n )\r\n return true\r\n return false\r\n }\r\n\r\n let groups = ``\r\n if (session?.groups\r\n .filter(a => a.value).length > 0\r\n )\r\n session.groups\r\n .filter(a => a.value).sort((a, b) => {\r\n if (a.label < b.label)\r\n return -1\r\n return 1\r\n }).forEach((item, i) => {\r\n groups += `${i > 0 ? ` / ` : ``}${item.label}`\r\n })\r\n\r\n return (\r\n <>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n }}\r\n >\r\n <p>{groups}\r\n </p>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n gap: \"20px\",\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n }}\r\n >\r\n {reduxStore\r\n .getState()\r\n .db.userGroup.filter((group) => {\r\n if (\r\n Object.keys(db.users).filter((user) => {\r\n return filterUsersGroup(group, user);\r\n }).length > 0\r\n )\r\n return true;\r\n return false;\r\n })\r\n .map((group) => {\r\n let users = Object.keys(db.users).filter(\r\n (user) => {\r\n return filterUsersGroup(group, user);\r\n }\r\n );\r\n return (\r\n <>\r\n {users\r\n .sort((a, b) => {\r\n let nameA = reduxStore\r\n .getState()\r\n .db.users[a].name.toLowerCase();\r\n let nameB = reduxStore\r\n .getState()\r\n .db.users[b].name.toLowerCase();\r\n if (nameA < nameB) return -1;\r\n if (nameA < nameB) return 1;\r\n return 0;\r\n })\r\n .map((id) => (\r\n <GridItem\r\n key={`${group.value}_${id}`}\r\n xs={12}\r\n sm={4}\r\n md={2}\r\n lg={2}\r\n xl={2}\r\n style={{ minWidth: \"300px\" }}\r\n >\r\n <UserCard data={db.users[id]} />\r\n </GridItem>\r\n )\r\n )}\r\n </>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n users: store.db.users\r\n});\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Department)","import React, { useState } from \"react\";\r\n\r\n//COMPONENTES\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Icon from \"components/Icon\";\r\n\r\n//REDUX_HISTORY\r\nimport history from \"store/history\"\r\n\r\n//DEPENDENCIES\r\nimport Approval from \"./Approval\"\r\nimport User from \"./User\";\r\nimport Notifications from \"./Notifications\";\r\nimport Overview from \"./Overview\";\r\nimport Historic from \"./Historic\";\r\nimport Department from \"./Department\";\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions\";\r\n\r\nconst Profile = () => {\r\n const [check, setCheck] = useState('Overview');\r\n\r\n const handleChange = (name) => {\r\n history.push(`/profile#${name}`)\r\n setCheck(name);\r\n };\r\n\r\n React.useEffect(() => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n if (hashs[0] !== check)\r\n setCheck(hashs[0])\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n return (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n position: \"relative\",\r\n borderRadius: \"5px\",\r\n backgroundColor: \"#eee\",\r\n height: \"auto\",\r\n margin: \"0px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\"\r\n }}\r\n >\r\n <GridContainer>\r\n <GridItem\r\n item\r\n xs={12}\r\n style={{\r\n backgroundColor: \"#eee\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n flexDirection: 'column',\r\n gap: '5px',\r\n marginBottom: '30px'\r\n }}\r\n >\r\n <User />\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '15px',\r\n padding: '10px',\r\n borderBottom: '1px solid #b9b9b9',\r\n width: '100%',\r\n justifyContent: 'flex-start',\r\n marginTop: '0px',\r\n marginBottom: '20px',\r\n color: 'rgb(83 83 83)',\r\n overflowX: 'auto',\r\n }}>\r\n <LinkMenu value={'Overview'} check={check} onClick={() => handleChange('Overview')}>\r\n <Icon>grid_view</Icon> {translate('$__overview', 1)}\r\n </LinkMenu>\r\n {/* <LinkMenu value={'Historic'} check={check} onClick={() => handleChange('Historic')}>\r\n <Icon>history</Icon> {translate('$__activityHistory', 1)}\r\n </LinkMenu> */}\r\n <LinkMenu value={'ApprovalHistoric'} check={check} onClick={() => handleChange('ApprovalHistoric')}>\r\n <Icon>approval</Icon> {translate('$__approvalHistory', 1)}\r\n </LinkMenu>\r\n {/* <LinkMenu value={'Notifications'} check={check} onClick={() => handleChange('Notifications')}>\r\n <Icon>notifications_active</Icon> {translate('$__notificationManagement', 1)}\r\n </LinkMenu> */}\r\n <LinkMenu value={'Department'} check={check} onClick={() => handleChange('Department')}>\r\n <Icon>group</Icon> {translate('$__department/group', 1)}\r\n </LinkMenu>\r\n </div>\r\n {\r\n check === 'Overview' ? <Overview /> :\r\n check === 'Notifications' ? <Notifications /> :\r\n check === 'Historic' ? <Historic /> :\r\n check === 'ApprovalHistoric' ? <Approval /> :\r\n check === 'Department' ? <Department /> : null\r\n }\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\nexport default Profile;\r\n\r\nfunction LinkMenu({ children, value, check, onClick }) {\r\n const [buttonHover, setButtonHover] = useState(false)\r\n return (\r\n <div\r\n // href='javascript:void(0)'\r\n onMouseEnter={() => setButtonHover(true)}\r\n onMouseLeave={() => setButtonHover(false)}\r\n onClick={onClick}\r\n style={{\r\n textDecoration: 'none',\r\n color: 'rgb(83 83 83)',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '5px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '15px',\r\n padding: '2px 7px',\r\n borderRadius: '3px',\r\n transition: '0.3s all',\r\n backgroundColor: buttonHover ? '#cfcfcf' : value === check ? '#cfcfcf' : 'transparent',\r\n cursor: buttonHover ? 'pointer' : 'default',\r\n }}>{children}</div>\r\n )\r\n}","import React from \"react\";\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\nimport history from \"store/history\";\r\n\r\n// @MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Check from \"@material-ui/icons/Check\";\r\nimport Close from \"@material-ui/icons/Close\";\r\nimport Business from \"@material-ui/icons/Business\";\r\nimport Person from \"@material-ui/icons/Person\";\r\nimport ArrowForward from \"@material-ui/icons/ArrowForward\";\r\n\r\n// core components\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Button from \"components/CustomButtons/Button\";\r\nimport Card from \"components/Card/Card\";\r\nimport CardBody from \"components/Card/CardBody\";\r\nimport CardHeader from \"components/Card/CardHeader\";\r\nimport Icon from \"components/Icon\";\r\n\r\n// functions\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n padding: \"30px 15px\",\r\n position: \"relative\",\r\n width: \"100%\"\r\n },\r\n pageHeader: {\r\n textAlign: \"center\",\r\n marginBottom: \"50px\"\r\n },\r\n pageSubtitle: {\r\n marginTop: \"10px\",\r\n color: \"#777\",\r\n maxWidth: \"700px\",\r\n margin: \"0 auto\",\r\n },\r\n planCard: {\r\n height: \"100%\",\r\n transition: \"all 0.3s ease\",\r\n \"&:hover\": {\r\n transform: \"translateY(-5px)\",\r\n boxShadow: \"0 15px 30px rgba(0,0,0,0.1)\"\r\n }\r\n },\r\n planTitle: {\r\n textAlign: \"center\",\r\n fontWeight: \"bold\",\r\n fontSize: \"1.5rem\",\r\n },\r\n planPrice: {\r\n textAlign: \"center\",\r\n fontSize: \"2rem\",\r\n fontWeight: \"bold\",\r\n margin: \"15px 0\",\r\n color: customApp(\"color\")\r\n },\r\n planDescription: {\r\n textAlign: \"center\",\r\n color: \"#777\",\r\n marginBottom: \"20px\"\r\n },\r\n featuresTitle: {\r\n fontWeight: \"bold\",\r\n marginTop: \"20px\",\r\n marginBottom: \"10px\"\r\n },\r\n featureItem: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n margin: \"10px 0\",\r\n },\r\n featureText: {\r\n marginLeft: \"10px\"\r\n },\r\n featureIcon: {\r\n minWidth: \"24px\"\r\n },\r\n divider: {\r\n margin: \"20px 0\"\r\n },\r\n actionButton: {\r\n marginTop: \"20px\",\r\n width: \"100%\"\r\n },\r\n enterpriseHighlight: {\r\n backgroundColor: customApp(\"color\"),\r\n color: \"#fff\",\r\n padding: \"15px\",\r\n borderRadius: \"5px\",\r\n marginTop: \"20px\"\r\n },\r\n comparePlans: {\r\n marginTop: \"60px\",\r\n marginBottom: \"30px\",\r\n textAlign: \"center\"\r\n },\r\n comparisonTable: {\r\n width: \"100%\",\r\n borderCollapse: \"collapse\",\r\n marginTop: \"20px\",\r\n \"& th, & td\": {\r\n padding: \"12px 15px\",\r\n textAlign: \"left\",\r\n borderBottom: \"1px solid #eee\"\r\n },\r\n \"& th\": {\r\n backgroundColor: \"#f8f9fa\",\r\n fontWeight: \"bold\"\r\n },\r\n \"& tr:hover\": {\r\n backgroundColor: \"#f5f5f5\"\r\n }\r\n },\r\n icon: {\r\n color: customApp(\"color\")\r\n },\r\n iconNegative: {\r\n color: \"#999\"\r\n },\r\n faqSection: {\r\n marginTop: \"60px\"\r\n },\r\n faqQuestion: {\r\n fontWeight: \"bold\",\r\n margin: \"20px 0 10px 0\"\r\n },\r\n faqAnswer: {\r\n color: \"#555\",\r\n marginBottom: \"15px\"\r\n },\r\n contactSection: {\r\n marginTop: \"60px\",\r\n textAlign: \"center\",\r\n padding: \"30px\",\r\n backgroundColor: \"#f8f9fa\",\r\n borderRadius: \"10px\"\r\n }\r\n}));\r\n\r\nfunction PlanFeature({ available, text }) {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.featureItem}>\r\n <div className={classes.featureIcon}>\r\n {available ?\r\n <Check className={classes.icon} /> :\r\n <Close className={classes.iconNegative} />\r\n }\r\n </div>\r\n <Typography variant=\"body2\" className={classes.featureText}>\r\n {text}\r\n </Typography>\r\n </div>\r\n );\r\n}\r\n\r\nfunction Plans(props) {\r\n const classes = useStyles();\r\n const { session } = reduxStore.getState();\r\n\r\n const handleUpgrade = () => {\r\n // Abre formulário de contato ou redirecionamento\r\n window.open(\"https://sonne.global/\", \"_blank\");\r\n };\r\n\r\n const handleConsultative = () => {\r\n // Abre formulário de contato para consulta\r\n window.open(\"https://sonne.global/\", \"_blank\");\r\n };\r\n\r\n return (\r\n <div className={classes.container}>\r\n <div className={classes.pageHeader}>\r\n <Typography variant=\"h3\" style={{ fontWeight: \"bold\" }}>\r\n Planos MACHEN\r\n </Typography>\r\n <Typography variant=\"h6\" className={classes.pageSubtitle}>\r\n Escolha o plano ideal para a sua jornada de transformação digital.\r\n Desde soluções gratuitas até atendimento empresarial personalizado.\r\n </Typography>\r\n </div>\r\n\r\n <GridContainer>\r\n {/* Plano Gratuito */}\r\n <GridItem xs={12} sm={12} md={6}>\r\n <Card className={classes.planCard}>\r\n <CardHeader>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", margin: \"10px 0\" }}>\r\n <Person style={{ fontSize: \"48px\", color: customApp(\"color\") }} />\r\n </div>\r\n <Typography className={classes.planTitle}>\r\n Plano Gratuito\r\n </Typography>\r\n <Typography className={classes.planPrice}>\r\n R$ 0\r\n </Typography>\r\n <Typography className={classes.planDescription}>\r\n Perfeito para conhecer a plataforma e experimentar funcionalidades básicas\r\n </Typography>\r\n </CardHeader>\r\n <CardBody>\r\n <Typography className={classes.featuresTitle}>\r\n Funcionalidades incluídas:\r\n </Typography>\r\n <PlanFeature available={true} text=\"Dashboard básico\" />\r\n <PlanFeature available={true} text=\"Gerenciamento de tarefas simples\" />\r\n <PlanFeature available={true} text=\"Acesso para 1 usuário\" />\r\n <PlanFeature available={true} text=\"Suporte via e-mail\" />\r\n\r\n <Divider className={classes.divider} />\r\n\r\n <Typography className={classes.featuresTitle}>\r\n Limitações:\r\n </Typography>\r\n <PlanFeature available={false} text=\"Planejamento Estratégico\" />\r\n <PlanFeature available={false} text=\"Biblioteca de documentos\" />\r\n <PlanFeature available={false} text=\"Sistema de tags avançado\" />\r\n <PlanFeature available={false} text=\"Calendário integrado\" />\r\n <PlanFeature available={false} text=\"Chat de equipe\" />\r\n <PlanFeature available={false} text=\"BRIGHT & CONNECTED\" />\r\n <PlanFeature available={false} text=\"Suporte prioritário\" />\r\n\r\n <Button\r\n color=\"primary\"\r\n round\r\n className={classes.actionButton}\r\n onClick={() => history.push('/d')}\r\n >\r\n Começar Gratuitamente\r\n </Button>\r\n </CardBody>\r\n </Card>\r\n </GridItem>\r\n\r\n {/* Plano Empresarial */}\r\n <GridItem xs={12} sm={12} md={6}>\r\n <Card className={classes.planCard}>\r\n <CardHeader>\r\n <div style={{ display: \"flex\", justifyContent: \"center\", margin: \"10px 0\" }}>\r\n <Business style={{ fontSize: \"48px\", color: customApp(\"color\") }} />\r\n </div>\r\n <Typography className={classes.planTitle}>\r\n Plano Empresarial\r\n </Typography>\r\n <Typography className={classes.planPrice}>\r\n Personalizado\r\n </Typography>\r\n <Typography className={classes.planDescription}>\r\n Solução completa adaptada às necessidades específicas da sua empresa\r\n </Typography>\r\n </CardHeader>\r\n <CardBody>\r\n <Typography className={classes.featuresTitle}>\r\n Personalize a sua MACHEN:\r\n </Typography>\r\n <PlanFeature available={true} text=\"Dashboard avançado e personalizado\" />\r\n <PlanFeature available={true} text=\"Planejamento Estratégico completo\" />\r\n <PlanFeature available={true} text=\"Biblioteca de documentos ilimitada\" />\r\n <PlanFeature available={true} text=\"Sistema de tags avançado\" />\r\n <PlanFeature available={true} text=\"Calendário integrado\" />\r\n <PlanFeature available={true} text=\"Chat de equipe em tempo real\" />\r\n <PlanFeature available={true} text=\"BRIGHT & CONNECTED\" />\r\n <PlanFeature available={true} text=\"Suporte prioritário 24/7\" />\r\n <PlanFeature available={true} text=\"Múltiplos usuários (conforme contrato)\" />\r\n <PlanFeature available={true} text=\"Onboarding e treinamento para equipe\" />\r\n\r\n <div className={classes.enterpriseHighlight}>\r\n <Typography variant=\"subtitle1\" style={{ fontWeight: \"bold\" }}>\r\n Atendimento Consultivo\r\n </Typography>\r\n <Typography variant=\"body2\" style={{ marginTop: \"5px\" }}>\r\n Nossa equipe realizará uma análise detalhada das necessidades do seu negócio\r\n para oferecer a solução mais adequada, com implementação personalizada\r\n e acompanhamento continuo.\r\n </Typography>\r\n </div>\r\n\r\n <Button\r\n color=\"primary\"\r\n round\r\n className={classes.actionButton}\r\n onClick={handleConsultative}\r\n >\r\n Solicitar Atendimento <ArrowForward style={{ marginLeft: \"5px\" }} />\r\n </Button>\r\n </CardBody>\r\n </Card>\r\n </GridItem>\r\n </GridContainer>\r\n\r\n <div className={classes.comparePlans}>\r\n <Typography variant=\"h4\" style={{ fontWeight: \"bold\" }}>\r\n Comparativo Detalhado\r\n </Typography>\r\n\r\n <table className={classes.comparisonTable}>\r\n <thead>\r\n <tr>\r\n <th>Recursos</th>\r\n <th>Plano Gratuito</th>\r\n <th>Plano Empresarial</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Dashboard</td>\r\n <td>Básico</td>\r\n <td>Avançado e Personalizado</td>\r\n </tr>\r\n <tr>\r\n <td>Planejamento Estratégico</td>\r\n <td><Close className={classes.iconNegative} /></td>\r\n <td><Check className={classes.icon} /></td>\r\n </tr>\r\n <tr>\r\n <td>Biblioteca de documentos</td>\r\n <td><Close className={classes.iconNegative} /></td>\r\n <td><Check className={classes.icon} /></td>\r\n </tr>\r\n <tr>\r\n <td>Sistema de tags</td>\r\n <td><Close className={classes.iconNegative} /></td>\r\n <td><Check className={classes.icon} /></td>\r\n </tr>\r\n <tr>\r\n <td>Calendário</td>\r\n <td><Close className={classes.iconNegative} /></td>\r\n <td><Check className={classes.icon} /></td>\r\n </tr>\r\n <tr>\r\n <td>Chat</td>\r\n <td><Close className={classes.iconNegative} /></td>\r\n <td><Check className={classes.icon} /></td>\r\n </tr>\r\n <tr>\r\n <td>BRIGHT & CONNECTED</td>\r\n <td><Close className={classes.iconNegative} /></td>\r\n <td><Check className={classes.icon} /></td>\r\n </tr>\r\n <tr>\r\n <td>Usuários</td>\r\n <td>1</td>\r\n <td>Múltiplos (conforme contrato)</td>\r\n </tr>\r\n <tr>\r\n <td>Suporte</td>\r\n <td>E-mail</td>\r\n <td>Prioritário 24/7</td>\r\n </tr>\r\n <tr>\r\n <td>Onboarding</td>\r\n <td>Auto-serviço</td>\r\n <td>Personalizado com treinamento</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div className={classes.faqSection}>\r\n <Typography variant=\"h4\" style={{ fontWeight: \"bold\", marginBottom: \"20px\" }}>\r\n Perguntas Frequentes\r\n </Typography>\r\n\r\n <Typography variant=\"h6\" className={classes.faqQuestion}>\r\n Como funciona o plano empresarial?\r\n </Typography>\r\n <Typography variant=\"body1\" className={classes.faqAnswer}>\r\n O plano empresarial da MACHEN é totalmente personalizado. Iniciamos com uma consultoria\r\n para entender as necessidades específicas do seu negócio, depois montamos uma proposta\r\n sob medida que atenda exatamente às suas demandas. O valor e as funcionalidades são\r\n determinados após esta análise.\r\n </Typography>\r\n\r\n <Typography variant=\"h6\" className={classes.faqQuestion}>\r\n Posso migrar do plano gratuito para o empresarial?\r\n </Typography>\r\n <Typography variant=\"body1\" className={classes.faqAnswer}>\r\n Sim! A migração é simples e garantimos que todos os seus dados sejam preservados.\r\n Entre em contato com nossa equipe através do botão \"Solicitar Atendimento\"\r\n e iniciaremos o processo de upgrade.\r\n </Typography>\r\n\r\n <Typography variant=\"h6\" className={classes.faqQuestion}>\r\n O que é o BRIGHT & CONNECTED?\r\n </Typography>\r\n <Typography variant=\"body1\" className={classes.faqAnswer}>\r\n BRIGHT & CONNECTED é nossa solução premium de conexão e gerenciamento de conhecimento\r\n empresarial, que integra todos os projetos e equipes em uma interface intuitiva,\r\n potencializando a colaboração e o compartilhamento de informações estratégicas.\r\n </Typography>\r\n\r\n <Typography variant=\"h6\" className={classes.faqQuestion}>\r\n Existe algum compromisso de permanência?\r\n </Typography>\r\n <Typography variant=\"body1\" className={classes.faqAnswer}>\r\n Os termos de contrato são personalizados para cada cliente empresarial,\r\n mas oferecemos opções flexíveis que se adaptam às necessidades da sua\r\n empresa. Durante a consultoria, discutiremos as melhores opções para o seu caso.\r\n </Typography>\r\n </div>\r\n\r\n <div className={classes.contactSection}>\r\n <Typography variant=\"h4\" style={{ fontWeight: \"bold\", marginBottom: \"15px\" }}>\r\n Ainda com dúvidas?\r\n </Typography>\r\n <Typography variant=\"body1\" style={{ maxWidth: \"700px\", margin: \"0 auto 20px\" }}>\r\n Nossa equipe está pronta para ajudar você a encontrar o plano ideal para o seu negócio.\r\n Entre em contato conosco para uma conversa personalizada.\r\n </Typography>\r\n <Button\r\n color=\"primary\"\r\n round\r\n size=\"lg\"\r\n onClick={handleConsultative}\r\n >\r\n Fale com um Consultor\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n session: store.session\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Plans);\r\n","import React from 'react'\r\n\r\n//REDUX\r\nimport reduxStore from \"store\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from 'functions';\r\n\r\nconst Enterprise = () => {\r\n const { session } = reduxStore.getState();\r\n console.log(session);\r\n return (\r\n <>\r\n <div style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n gap: \"20px\",\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n }}>\r\n <img\r\n src={session?.custom.loginBackground}\r\n alt=\"background\"\r\n style={{\r\n height: '150px',\r\n width: '100%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n <div\r\n style={{\r\n height: \"auto\",\r\n backgroundColor: \"none\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: '0px',\r\n marginTop: '-110px',\r\n padding: '0 17px',\r\n }}\r\n >\r\n <img\r\n src={session?.custom.customLogo}\r\n style={{\r\n borderRadius: \"50%\",\r\n border: `2px solid ${customApp('color')}`,\r\n width: \"110px\",\r\n height: \"110px\",\r\n margin: \"5px\",\r\n zIndex: '998',\r\n cursor: 'auto',\r\n objectFit: 'contain',\r\n backgroundColor: session?.custom.menu,\r\n }}\r\n alt='Profile'\r\n />\r\n <div style={{\r\n backgroundColor: 'rgb(238,238,238)',\r\n padding: '15px 20px 15px 50px',\r\n marginLeft: '-40px',\r\n zIndex: '0',\r\n borderRadius: '0px 10px 10px 0px',\r\n boxShadow: 'rgba(0, 0, 0, 0.14) 0px 1px 4px 0px',\r\n border: `2px solid ${customApp('color')}`,\r\n }}>\r\n <p style={{\r\n color: customApp('medium'),\r\n fontSize: '1.7rem',\r\n fontWeight: 'bold',\r\n margin: '0px',\r\n display: 'flex',\r\n textAlign: 'left',\r\n justifyContent: 'flex-start',\r\n }}>{session?.GlobalData.fullName}</p>\r\n <p style={{\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: customApp('color'),\r\n margin: '0px',\r\n textAlign: 'left',\r\n }}>{session?.GlobalData.email}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport default Enterprise;\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\n//@MATERIAL\r\nimport { FormControlLabel, Switch, Checkbox, makeStyles, Typography } from \"@material-ui/core\";\r\nimport LockIcon from '@material-ui/icons/Lock';\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions\";\r\n\r\nconst useStyles = makeStyles({\r\n switch: {\r\n marginBottom: '10px',\r\n '& + .MuiSwitch-track': {\r\n backgroundColor: customApp('color'),\r\n },\r\n '& .MuiSwitch-thumb': {\r\n backgroundColor: 'rgb(125, 125, 125)',\r\n },\r\n '& .Mui-checked': {\r\n '& + .MuiSwitch-track': {\r\n backgroundColor: customApp('color'),\r\n },\r\n '& .MuiSwitch-thumb': {\r\n backgroundColor: customApp('color'),\r\n },\r\n '& .MuiSvgIcon-root': {\r\n backgroundColor: customApp('color'),\r\n borderRadius: \"50%\",\r\n width: '20px',\r\n height: '20px',\r\n color: customApp('color'),\r\n }\r\n },\r\n '& .Mui-disabled': {\r\n '& + .MuiSwitch-track': {\r\n opacity: 0.5,\r\n },\r\n '& .MuiSvgIcon-root': {\r\n backgroundColor: customApp('color'),\r\n borderRadius: \"50%\",\r\n width: '20px !important',\r\n height: '20px !important',\r\n padding: '3px',\r\n color: `${customApp('lightText')} !important`,\r\n transform: 'translate(0, 0, 0, 0.2em)',\r\n }\r\n }\r\n },\r\n check: {\r\n '&': {\r\n display: 'none'\r\n }\r\n },\r\n checkbox: {\r\n '&': {\r\n padding: '0px',\r\n }\r\n },\r\n});\r\n\r\nconst SwitchAndCheck = ({ checked, setData, notificationType, notification, data }) => {\r\n const [check, setCheck] = useState(checked !== \"block\" ? checked : true);\r\n const [checkbox, setCheckbox] = useState(checked === \"block\" ? true : false);\r\n const styles = useStyles();\r\n const notChange = (check) => {\r\n\r\n let newArr = []\r\n\r\n data.forEach(updateNotifications => {\r\n let newObject = updateNotifications\r\n let newNotifications = []\r\n newObject.notifications.forEach((item) => {\r\n let newNotificationsObject = item\r\n if (notification?.title === item.title) {\r\n newNotificationsObject = {\r\n ...newNotificationsObject,\r\n [notificationType]: check\r\n }\r\n }\r\n newNotifications = [...newNotifications, newNotificationsObject]\r\n })\r\n newObject = {\r\n ...newObject,\r\n notifications: newNotifications,\r\n }\r\n newArr = [...newArr, newObject]\r\n })\r\n\r\n console.log(newArr)\r\n\r\n setData(newArr);\r\n\r\n }\r\n\r\n useEffect(() => {\r\n setCheck(checked !== \"block\" ? checked : true);\r\n }, [checked]);\r\n\r\n return (\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n marginRight: '0px',\r\n }}>\r\n <FormControlLabel control={\r\n <>\r\n <Switch className={styles.switch}\r\n color=\"default\"\r\n checked={check}\r\n onChange={(e) => { setCheck(e.target.checked); notChange(e.target.checked) }}\r\n disabled={checked === \"block\" ? true : false}\r\n checkedIcon={<LockIcon />}\r\n />\r\n </>\r\n } />\r\n <FormControlLabel style={{ marginTop: '-18px' }} control={\r\n <Checkbox\r\n color=\"default\"\r\n onChange={(e) => { setCheckbox(e.target.checked); notChange(e.target.checked ? \"block\" : true) }}\r\n checked={checkbox}\r\n disabled={checked === true || checked === \"block\" ? false : true}\r\n className={styles.checkbox}\r\n />\r\n } label={<Typography style={{ fontSize: '12px' }}>{translate('$__required')}</Typography>} />\r\n </div>\r\n )\r\n}\r\nexport default SwitchAndCheck;\r\n\r\n\r\n","import React, { useState, useEffect } from \"react\";\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//COMPONENTES\r\nimport Icon from \"components/Icon\";\r\nimport SwitchAndCheck from \"./SwitchAndCheck\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions\";\r\n\r\nconst Notifications = (props) => {\r\n const { session } = reduxStore.getState();\r\n\r\n const [iniData, setIniData] = useState(session.GlobalData.notifications\r\n ? session.GlobalData.notifications\r\n : [\r\n {\r\n notificationName: translate(\"$__activities\"),\r\n notifications: [\r\n { title: translate('$__lateActivities'), machen: \"block\", email: null },\r\n { title: translate('$__dayTasks'), machen: true, email: null },\r\n { title: translate('$__nextActivities'), machen: false, email: null },\r\n { title: translate(\"$__statusUpdate\"), machen: true, email: null },\r\n { title: translate(\"$__youWasRemoved\"), machen: false, email: null },\r\n ],\r\n },\r\n {\r\n notificationName: translate(\"$__messages\"),\r\n notifications: [\r\n { title: translate(\"$__unreadMessages\"), machen: \"block\", email: true },\r\n { title: translate(\"$__reactionsMyMessages\"), machen: false, email: null },\r\n ],\r\n },\r\n {\r\n notificationName: \"BRIGHT & CONNECTED\",\r\n notifications: [\r\n { title: translate('$__radar'), machen: true, email: false },\r\n { title: translate(\"$__newInsights\"), machen: \"block\", email: true },\r\n ],\r\n },\r\n {\r\n notificationName: translate(\"$__approvals\"),\r\n notifications: [{ title: translate(\"$__pendingApprovals\"), machen: true, email: \"block\" }],\r\n },\r\n {\r\n notificationName: translate('$__myDay'),\r\n notifications: [\r\n { title: translate('$__myDay'), machen: \"block\", email: null },\r\n { title: translate(\"$__otherDays\"), machen: false, email: null },\r\n ],\r\n },\r\n ]);\r\n const [data, setData] = useState();\r\n\r\n useEffect(() => {\r\n setData(\r\n session.GlobalData.notifications\r\n ? session.GlobalData.notifications\r\n : iniData\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const saveData = async () => {\r\n setIniData(data);\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n GlobalData: {\r\n ...reduxStore.getState().session.GlobalData,\r\n notifications: data,\r\n },\r\n });\r\n };\r\n return (\r\n <>\r\n <div\r\n style={{\r\n width: \"fit-content\",\r\n minWidth: '65vw',\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n margin: \"0 auto\",\r\n marginBottom: \"50px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px 0px\",\r\n color: customApp(\"colorText\"),\r\n background: customApp(\"ColumnTitleColor\"),\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>notifications_active</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__notificationManagement')}\r\n </span>\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n gap: \"0px 10px\",\r\n alignItems: \"flex-start\",\r\n padding: \"0px 20px\",\r\n flexWrap: \"nowrap\",\r\n fontSize: \"16px\",\r\n }}\r\n >\r\n <div style={{ width: '100%' }}>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n marginTop: \"20px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n color: customApp(\"darkText\"),\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n fontWeight: \"600\",\r\n }}\r\n >\r\n <p\r\n style={{\r\n textAlign: \"left\",\r\n width: \"60%\",\r\n paddingLeft: \"15px\",\r\n }}\r\n >\r\n {translate('$__notifyMe')}\r\n </p>\r\n <p style={{ padding: \"0 10px\", width: \"20%\" }}>Machen</p>\r\n <p style={{ padding: \"0 10px\", width: \"25%\" }}>{translate('$__email')}</p>\r\n </div>\r\n <div\r\n style={{\r\n color: customApp(\"darkText\"),\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n fontWeight: \"600\",\r\n }}\r\n >\r\n <p\r\n style={{\r\n textAlign: \"left\",\r\n width: \"60%\",\r\n paddingLeft: \"15px\",\r\n }}\r\n >\r\n {translate('$__notifyMe')}\r\n </p>\r\n <p style={{ padding: \"0 10px\", width: \"20%\" }}>Machen</p>\r\n <p style={{ padding: \"0 10px\", width: \"25%\" }}>{translate('$__email')}</p>\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: \"grid\",\r\n width: \"100%\",\r\n gridTemplateColumns: \"1fr 1fr\",\r\n gridTemplateRows: \"1fr 1fr 1fr\",\r\n gap: \"10px\",\r\n flexWrap: \"wrap\",\r\n justifyContent: \"center\",\r\n marginBottom: \"20px\",\r\n }}\r\n >\r\n {data?.map((notifications, index) => (\r\n <fieldset\r\n key={notifications?.notificationName}\r\n style={{\r\n borderColor: \"rgb(224 224 224)\",\r\n borderStyle: \"solid\",\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n paddingBottom: \"0px\",\r\n gridRow: index === 0 && \"1 / 3\",\r\n }}\r\n >\r\n <legend\r\n style={{\r\n padding: \"0px 5px\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n fontFamily:\r\n \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: customApp(\"colorText\"),\r\n margin: \"0px\",\r\n }}\r\n >\r\n {notifications?.notificationName}\r\n </legend>\r\n {notifications?.notifications.map((notification) => (\r\n <div\r\n key={notification?.title}\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n alignItems: \"baseline\",\r\n gap: \"30px\",\r\n }}\r\n >\r\n <p style={{ width: \"60%\" }}>{notification?.title}</p>\r\n <div style={{ width: \"20%\" }}>\r\n <SwitchAndCheck\r\n checked={notification?.machen}\r\n setData={setData}\r\n notificationType={\"machen\"}\r\n data={data}\r\n notification={notification}\r\n />\r\n </div>\r\n <div style={{ width: \"20%\", marginRight: notification?.email === null ? '20px' : '0px' }}>\r\n {notification?.email !== null &&\r\n <SwitchAndCheck\r\n checked={notification?.email}\r\n setData={setData}\r\n notificationType={\"email\"}\r\n data={data}\r\n notification={notification}\r\n />}\r\n </div>\r\n </div>\r\n ))}\r\n </fieldset>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {JSON.stringify(data) !== JSON.stringify(iniData) ? (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n bottom: 50,\r\n right: 50,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <div style={{ marginLeft: 15 }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData();\r\n // setEditor(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n </>\r\n );\r\n};\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Notifications);\r\n","import React from \"react\";\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\nimport history from \"store/history\";\r\n\r\n\r\n//COMPONENTES\r\nimport Icon from \"components/Icon\";\r\nimport PercentualBar from \"components/Percentual/bar\";\r\n\r\n//DEPENDENCIES\r\nimport AccountData from \"components/Account/edit\";\r\nimport AccountPreffers from \"components/Account/preffers\";\r\nimport SubscriptionDetails from \"components/Account/SubscriptionDetails\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, BytesConvert } from \"functions\";\r\n\r\nrequire(\"dotenv\").config();\r\n\r\nconst Overview = () => {\r\n const { session, db } = reduxStore.getState();\r\n const usedSpace = 0\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n let space = db.plans[0].settings.space;\r\n let subscriptionPlan = db.plans[0];\r\n if (\r\n session &&\r\n session.GlobalData &&\r\n String(session.GlobalData.plan) &&\r\n db.plans[session.GlobalData.plan] &&\r\n db.plans[session.GlobalData.plan].settings\r\n ) {\r\n space = db.plans[session.GlobalData.plan].settings.space;\r\n subscriptionPlan = db.plans[session.GlobalData.plan];\r\n }\r\n\r\n let percent = usedSpace * (100 / parseInt(space));\r\n\r\n return (\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n gap: \"20px\",\r\n flexDirection: \"column\",\r\n marginBottom: \"50px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n marginBottom: 15,\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 10,\r\n background: customApp(\"AvatarBackground\"),\r\n }}\r\n >\r\n <Icon icon=\"card_membership\" size={30} color={\"#FFFFFF\"} />\r\n </div>\r\n <div style={{ marginLeft: 7, width: \"calc(100% - 40px)\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bolder\",\r\n marginTop: 7,\r\n }}\r\n >\r\n {translate(\"$__subscriptionPlan\", \"*\")}:{\" \"}\r\n {translate(subscriptionPlan.label, \"*\")}\r\n </div>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n color: \"mediumgray\",\r\n fontSize: 12,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate(\"$__adminLimit\", 1)}:{\" \"}\r\n {subscriptionPlan.settings.admins}\r\n </div>\r\n {/* <a\r\n href=\"#\"\r\n style={{\r\n position: \"relative\",\r\n top: '-7px',\r\n color: customApp(\"color\"),\r\n fontSize: 10,\r\n fontWeight: 'bold'\r\n }}>{translate(\"$__viewContract\")}</a> */}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n padding: 10,\r\n background: customApp(\"AvatarBackground\"),\r\n }}\r\n >\r\n <Icon icon=\"storage\" size={30} color={\"#FFFFFF\"} />\r\n </div>\r\n <div style={{ marginLeft: 7, width: \"calc(100% - 40px)\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n marginTop: 7,\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bolder\",\r\n }}\r\n >\r\n {translate(\"$__usedStorage\", \"*\")}\r\n <span\r\n style={{\r\n marginLeft: 15,\r\n color: \"red\",\r\n fontSize: 11,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => {\r\n history.push(\"#tab/subscriptionUpgrade\");\r\n }}\r\n >\r\n {translate(\"$__upgradeSubscription\")}\r\n </span>\r\n </div>\r\n <PercentualBar\r\n value={Math.ceil(percent)}\r\n background={percent > 100 ? \"red\" : null}\r\n />\r\n <div>\r\n <span\r\n style={{\r\n color: percent > 100 ? \"red\" : \"mediumgray\",\r\n fontSize: 12,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate(\"$__used\", 1)}: {BytesConvert(usedSpace)}\r\n </span>{\" \"}\r\n <span style={{ color: \"lightgray\", fontSize: 11 }}>\r\n {translate(\"$__of\")} {translate(\"$__accountSpace\", 1)}:{\" \"}\r\n {BytesConvert(space)}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n gap: \"20px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: \"50%\",\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px\",\r\n color: customApp(\"colorText\"),\r\n background: customApp(\"ColumnTitleColor\"),\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>group</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__accountData')}\r\n </span>\r\n </div>\r\n <div style={{ padding: \"20px\" }}>\r\n <AccountData\r\n data={session && session.GlobalData ? session.GlobalData : {}}\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n width: \"50%\",\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px\",\r\n color: customApp(\"colorText\"),\r\n background: customApp(\"ColumnTitleColor\"),\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>manage_accounts</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__preffers')}\r\n </span>\r\n </div>\r\n <div style={{ padding: \"20px\" }}>\r\n <AccountPreffers\r\n data={session && session.GlobalData ? session.GlobalData : {}}\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n width: \"50%\",\r\n height: \"auto\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px\",\r\n color: customApp(\"colorText\"),\r\n background: customApp(\"ColumnTitleColor\"),\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>draw</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__subscriptionDetails')}\r\n </span>\r\n </div>\r\n <div style={{ padding: \"20px\" }}>\r\n <SubscriptionDetails\r\n data={session && session.GlobalData ? session.GlobalData : {}}\r\n planDetails={subscriptionPlan}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default Overview;\r\n","import React from 'react'\r\n\r\n//COMPONENTS\r\nimport Icon from 'components/Icon';\r\nimport { Tooltip, Avatar } from '@mui/material';\r\n\r\n//FUNCTIONS\r\nimport {\r\n // stringToColor, \r\n stringAvatar\r\n} from 'functions';\r\n\r\n\r\nconst TableRow = (props) => {\r\n const {\r\n // add,\r\n // checkAll,\r\n column,\r\n // data,\r\n // data1,\r\n // dataError,\r\n edit,\r\n handleDataChange,\r\n selected,\r\n setSelectUser,\r\n handleCheckboxChange,\r\n index,\r\n // isActive,\r\n style,\r\n usuario,\r\n } = props\r\n\r\n const divStyles = {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n textAlign: 'left',\r\n flex: 1,\r\n border: 'none',\r\n borderBottom: '1px solid #ebebeb',\r\n borderTop: '1px solid #ebebeb',\r\n alignSelf: 'stretch'\r\n };\r\n\r\n const handleChange = () => {\r\n handleCheckboxChange(index);\r\n };\r\n const handleSelect = (prop, usuario) => {\r\n if (prop === \"nomecompleto\" || prop === \"nomedeexibição\") {\r\n setSelectUser(usuario)\r\n }\r\n }\r\n\r\n const InputRender = (props) => {\r\n const prop = props.item\r\n return (\r\n <div style={{ ...divStyles }} onClick={() => handleSelect(prop, usuario)}>\r\n {prop === \"nomecompleto\" ?\r\n <div style={{ marginLeft: '5px', cursor: 'pointer' }}>\r\n {/* Imagem */}\r\n <Tooltip title={`Ver ${usuario?.nomecompleto}`}>\r\n <Avatar {...stringAvatar(usuario?.nomecompleto)} src={usuario?.image} />\r\n </Tooltip>\r\n </div>\r\n : null\r\n }\r\n <input\r\n style={{\r\n border: \"none\",\r\n backgroundColor: \"transparent\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n marginLeft: \"5px\",\r\n color: \"#1C1C1C\",\r\n fontWeight: prop === \"nomecompleto\" ? \"bold\" : \"normal\",\r\n cursor: prop === \"nomecompleto\" || prop === \"nomedeexibição\" ? 'pointer' : 'default',\r\n }}\r\n type=\"text\"\r\n defaultValue={prop === \"departamento/grupo\" ?\r\n usuario?.[prop]?.filter(a => a.value)\r\n .sort((a, b) => {\r\n if (a.label < b.label)\r\n return -1\r\n return 1\r\n }).map((item, i) => ` ${item.label}`) :\r\n usuario?.[prop]}\r\n onMouseUp={(e) => e.target.focus()}\r\n onMouseEnter={(e) => {\r\n e.target.style.backgroundColor = \"rgba(0, 0, 0, 0.12)\";\r\n }}\r\n onMouseLeave={(e) => {\r\n e.target.style.backgroundColor = \"transparent\";\r\n }}\r\n onBlur={(e) => handleDataChange(index, e.target.value, [prop])}\r\n disabled={edit ? false : true}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div style={style}>\r\n <div\r\n style={{\r\n backgroundColor: selected ? '#aaaaaa63' : '#fff',\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n height: \"44px\",\r\n overflowY: \"hidden\" /* data.length > 11 ? 'hidden' : 'scroll' */,\r\n }}\r\n >\r\n {edit ? (\r\n <div\r\n style={{\r\n ...divStyles,\r\n width: \"50px\",\r\n borderBottom: '1px solid #ebebeb',\r\n borderTop: '1px solid #ebebeb',\r\n flex: \"none\",\r\n height: \"100%\",\r\n justifyContent: \"center\",\r\n display: \"flex\",\r\n }}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n style={{\r\n width: \"16px\",\r\n height: \"16px\",\r\n borderRadius: \"15px\",\r\n cursor: \"pointer\",\r\n backgroundColor: \"transparent\",\r\n }}\r\n onMouseUp={handleChange}\r\n checked={selected}\r\n />\r\n </div>\r\n ) : null}\r\n\r\n {column.length > 0 &&\r\n column.map((item, itemIndex) => {\r\n return <InputRender item={item} key={itemIndex} />;\r\n })}\r\n {edit ? <>\r\n <div\r\n style={{\r\n ...divStyles,\r\n width: \"60px\",\r\n borderBottom: '1px solid #ebebeb',\r\n borderTop: '1px solid #ebebeb',\r\n flex: \"none\",\r\n display: \"flex\",\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}\r\n >\r\n <p\r\n style={{\r\n alignSelf: \"center\",\r\n padding: \"0px\",\r\n margin: \"0px\",\r\n display: 'flex',\r\n color: 'rgb(159 159 159)',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'pointer',\r\n }}\r\n >\r\n <Icon>delete</Icon>\r\n </p>\r\n </div>\r\n </> : null}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n\r\nexport default TableRow\r\n\r\n","import React, { useState, useEffect } from 'react'\r\n\r\n//COMPONENTS\r\nimport { FixedSizeList } from 'react-window';\r\nimport AutoSizer from \"react-virtualized-auto-sizer\";\r\nimport TableRow from './Tablerow'\r\nimport Icon from 'components/Icon';\r\n\r\n//FUNCTIONS\r\nimport { translate } from 'functions';\r\n\r\nconst UserAddList = (props) => {\r\n const { edit, setEdit, dataUser, columns, orderData, orderColumn, column, setSelectUser } = props\r\n\r\n const [data, setData] = useState([]);\r\n const [selected, setSelected] = useState([])\r\n const listRef = React.createRef()\r\n\r\n useEffect(() => {\r\n setData(dataUser);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n const handleCheckboxChange = (index) => {\r\n setSelected((prevUsuarios) => {\r\n if (prevUsuarios.includes(index)) {\r\n return prevUsuarios.filter((item) => item !== index);\r\n } else {\r\n return [...prevUsuarios, index];\r\n }\r\n });\r\n }\r\n const handleCheckAll = () => {\r\n if (selected.length === data.length) {\r\n setSelected([]);\r\n } else {\r\n const allIndexes = data.map((_, index) => index);\r\n setSelected(allIndexes);\r\n }\r\n };\r\n\r\n const handleDataChange = (index, newName, prop) => {\r\n let newData = [...data];\r\n newData[index][prop] = newName;\r\n newData && setData(newData)\r\n };\r\n\r\n const divStyles = {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n textAlign: 'left',\r\n flex: 1,\r\n /* border: '1px solid #ebebeb', */\r\n fontWeight: 'bold',\r\n alignSelf: 'stretch',\r\n overflow: 'hidden',\r\n }\r\n\r\n\r\n const RenderColumn = ({ name }) => {\r\n let colunmName = ''\r\n\r\n switch (name) {\r\n case 'nomecompleto': colunmName = translate(\"$__completeName\");\r\n break;\r\n case 'nomedeexibição': colunmName = translate(\"$__showName\");\r\n break;\r\n case 'email': colunmName = translate(\"$__email\");\r\n break;\r\n case 'departamento/grupo': colunmName = translate(\"$__department/group\");\r\n break;\r\n case 'ramal': colunmName = translate(\"$__branchLine\");\r\n break;\r\n case 'observações': colunmName = translate(\"$__observation\");\r\n break;\r\n case 'celular': colunmName = translate(\"$__phone\");\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return <div style={{ ...divStyles, cursor: 'pointer' }} onClick={() => orderColumn(name)}>\r\n <p style={{\r\n width: 'auto',\r\n alignSelf: 'center',\r\n padding: '0px',\r\n overflow: 'auto',\r\n margin: '0px 5px 0px 10px'\r\n }}>\r\n {colunmName}\r\n </p>\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: column && column === name ? 'rgb(192,178,131)' : 'rgb(0, 24, 54)',\r\n padding: '0px 5px'\r\n }}>\r\n <Icon style={{ fontSize: '1.1rem', width: '0.9rem', height: '0.9rem' }}>arrow_drop_up</Icon>\r\n <Icon style={{ fontSize: '1.1rem', width: '0.9rem', height: '0.9rem' }}>arrow_drop_down</Icon>\r\n </div>\r\n </div>\r\n }\r\n\r\n return (\r\n <>\r\n <div style={{ justifyContent: \"center\", padding: '10px', position: 'relative', height: '100%', backgroundColor: '#fff', borderRadius: '5px', width: '100%' }} >\r\n {data?.length === 0 && null}\r\n <div>\r\n {data?.length > 0 && <div id='table-container' style={{ marginBottom: '5px', height: '65vh', maxHeight: '600px', overflow: 'hidden', border: '1px solid #ebebeb' }}>\r\n <div style={{ overflowY: 'hidden' }}>\r\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center', height: '50px', color: '#141414', backgroundColor: 'rgb(241 241 241)' }}>\r\n {edit ?\r\n <div style={{\r\n ...divStyles,\r\n width: '50px',\r\n borderTop: '1px solid #ebebeb',\r\n borderBottom: '1px solid #ebebeb',\r\n flex: 'none',\r\n justifyContent: 'center',\r\n display: 'flex'\r\n }}>\r\n <input\r\n type=\"checkbox\"\r\n style={{\r\n width: \"16px\",\r\n height: \"16px\",\r\n borderRadius: \"15px\",\r\n cursor: \"pointer\",\r\n backgroundColor: \"transparent\",\r\n }}\r\n checked={selected.length === data.length}\r\n indeterminate={selected.length > 0 && selected.length < data.length}\r\n onChange={handleCheckAll}\r\n />\r\n </div> : null}\r\n {columns.length > 0 && columns.map((item, ii) => {\r\n return (\r\n <RenderColumn name={item} key={ii} />\r\n )\r\n })}\r\n {edit ? <>\r\n <div style={{\r\n ...divStyles,\r\n width: '60px',\r\n borderTop: '1px solid #ebebeb',\r\n borderBottom: '1px solid #ebebeb',\r\n flex: 'none',\r\n display: 'flex',\r\n color: 'rgb(159 159 159)',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n <p style={{\r\n alignSelf: 'center',\r\n padding: '0px',\r\n margin: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>{translate(\"$__action\")}</p>\r\n </div></> : null}\r\n </div>\r\n </div>\r\n {data?.length > 0 &&\r\n <AutoSizer>\r\n {({ height, width }) => (\r\n <FixedSizeList\r\n itemData={orderData}\r\n height={height}\r\n itemCount={data?.length}\r\n itemSize={44}\r\n width={width}\r\n ref={listRef}\r\n >\r\n {({ data, index, style }) => {\r\n return (\r\n <div key={`a_${index}_${Math.random(0, 99999999)}`}>\r\n <TableRow\r\n edit={edit}\r\n selected={selected && selected.includes(index) ? true : false}\r\n column={columns}\r\n handleDataChange={(index, value, prop) => handleDataChange(index, value, prop)}\r\n handleCheckboxChange={handleCheckboxChange}\r\n style={style}\r\n data={data}\r\n usuario={dataUser[index]}\r\n index={index}\r\n isActive={data.length > 0 ? true : false}\r\n setSelectUser={setSelectUser}\r\n />\r\n </div>\r\n )\r\n }}\r\n </FixedSizeList >\r\n )}\r\n </AutoSizer>\r\n }\r\n </div>}\r\n </div>\r\n {\r\n edit ?\r\n <div\r\n style={{\r\n display: 'flex',\r\n borderTop: '#e8e8e8 1px solid',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n gap: '20px',\r\n padding: '15px 20px',\r\n }}>\r\n <button\r\n style={{\r\n padding: '7px 30px',\r\n border: 'rgb(1, 30, 65) 1px solid',\r\n background: 'linear-gradient(90deg, rgb(1, 30, 65) 0%, rgb(0, 49, 112) 100%)',\r\n color: 'rgb(192,178,131)',\r\n borderRadius: '4px',\r\n fontWeight: '600',\r\n cursor: 'pointer'\r\n }}>{translate('$__deleteSelected')}</button>\r\n <button\r\n style={{\r\n padding: '7px 30px',\r\n border: 'rgb(1, 30, 65) 1px solid',\r\n background: 'linear-gradient(90deg, rgb(1, 30, 65) 0%, rgb(0, 49, 112) 100%)',\r\n color: 'rgb(192,178,131)',\r\n borderRadius: '4px',\r\n fontWeight: '600',\r\n cursor: 'pointer'\r\n }}>{translate('$__save')}</button>\r\n <button\r\n onClick={() => setEdit(!edit)}\r\n style={{\r\n padding: '7px 25px',\r\n border: '1px solid rgb(184 184 184)',\r\n backgroundColor: '#e8e8e8',\r\n color: 'rgb(1, 30, 65)',\r\n borderRadius: '4px',\r\n fontWeight: '600',\r\n cursor: 'pointer'\r\n }}>{translate('$__cancel')}</button>\r\n </div> : null\r\n }\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\n\r\nexport default UserAddList","import React, { useMemo, useState } from 'react'\r\n\r\n// REDUX\r\nimport reduxStore from \"store\"\r\n\r\n// COMPONENTES\r\nimport UserAddList from './UserAddList'\r\nimport Icon from 'components/Icon'\r\n\r\n// @MATERIAL\r\nimport { FormControl, InputAdornment, MenuItem, Select, makeStyles, Checkbox, ListItemText, OutlinedInput } from '@material-ui/core'\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp } from 'functions'\r\n\r\nconst useStyles = makeStyles({\r\n formControl: {\r\n width: '200px',\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#fff',\r\n },\r\n '& .Mui-focused .MuiOutlinedInput-notchedOutline': {\r\n borderColor: 'rgba(0, 0, 0, 0.23)',\r\n },\r\n },\r\n checkbox: {\r\n color: customApp('color'),\r\n '& .Mui-checked': {\r\n color: `${customApp('color')} !important`,\r\n }\r\n },\r\n})\r\n\r\nconst ListUsers = ({ setSelectUser }) => {\r\n const styles = useStyles();\r\n const [edit, setEdit] = useState(false)\r\n const [filter, setFilter] = useState('All')\r\n const [searchValue, setSearchValue] = useState('')\r\n const [column, setColumn] = useState(null);\r\n const [direction, setDirection] = useState('asc');\r\n\r\n const { db } = reduxStore.getState();\r\n const { users } = db;\r\n\r\n // Gera os dados dos usuários com useMemo\r\n const dataUser = useMemo(() => {\r\n return Object.values(users).map(user => ({\r\n nomedeexibição: user?.name,\r\n nomecompleto: user?.fullName,\r\n email: user?.email,\r\n image: user?.image,\r\n _id: user?._id,\r\n \"departamento/grupo\": user?.groups,\r\n }));\r\n }, [users]);\r\n\r\n // Filtra os dados conforme o filtro e valor da busca\r\n const dataFilter = useMemo(() => {\r\n return dataUser.filter(user => {\r\n const matchesFilter = filter === 'All' || (user[\"departamento/grupo\"] && user[\"departamento/grupo\"].some(group => group.label === filter));\r\n const matchesSearch = Object.values(user).some(\r\n value => typeof value === 'string' && value.toLowerCase().includes(searchValue.toLowerCase())\r\n );\r\n return matchesFilter && matchesSearch;\r\n });\r\n }, [dataUser, filter, searchValue]);\r\n\r\n // Ordena os dados conforme a coluna e a direção selecionada\r\n const orderData = useMemo(() => {\r\n if (!column) return dataFilter;\r\n return [...dataFilter].sort((a, b) => {\r\n if (direction === 'asc') {\r\n return a[column] > b[column] ? 1 : -1;\r\n } else {\r\n return a[column] < b[column] ? 1 : -1;\r\n }\r\n });\r\n }, [dataFilter, column, direction]);\r\n\r\n // Mapeamento de colunas para tradução\r\n const columnsMap = {\r\n nomecompleto: translate(\"$__completeName\"),\r\n \"nomedeexibição\": translate(\"$__showName\"),\r\n email: translate(\"$__email\"),\r\n \"departamento/grupo\": translate(\"$__department/group\"),\r\n ramal: translate(\"$__branchLine\"),\r\n observações: translate(\"$__observation\"),\r\n celular: translate(\"$__phone\")\r\n };\r\n\r\n const NameColumn = (name) => columnsMap[name] || name;\r\n\r\n const columns = ['nomecompleto', 'nomedeexibição', 'email', 'departamento/grupo'];\r\n const [selectedColumns, setSelectedColumns] = useState(['nomecompleto', 'nomedeexibição', 'email']);\r\n\r\n const orderColumn = (columnSelect) => {\r\n if (columnSelect === column) {\r\n setDirection(prev => prev === 'asc' ? 'desc' : 'asc');\r\n } else {\r\n setColumn(columnSelect);\r\n setDirection('asc');\r\n }\r\n };\r\n\r\n // Gera a lista única dos grupos/departamentos para o filtro\r\n const selectData = useMemo(() => {\r\n return [...new Set(dataUser.flatMap(user => user[\"departamento/grupo\"]?.map(group => group?.label || [])))];\r\n }, [dataUser]);\r\n\r\n return (\r\n <div\r\n style={{\r\n width: \"95%\",\r\n position: \"absolute\",\r\n zIndex: \"9\",\r\n borderRadius: \"5px\",\r\n backgroundColor: \"#eee\",\r\n minHeight: '100vh',\r\n height: \"auto\",\r\n margin: \"0px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n height: \"100%\",\r\n justifyContent: \"center\",\r\n margin: \"0px\",\r\n width: \"100%\",\r\n backgroundColor: \"#eee\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: \"#eee\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n flexDirection: \"column\",\r\n gap: \"5px\",\r\n marginBottom: \"30px\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: \"#eee\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n flexDirection: \"row\",\r\n gap: \"5px\",\r\n marginBottom: \"15px\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <div style={{\r\n display: 'flex',\r\n alignItems: \"flex-end\",\r\n flexDirection: \"row\",\r\n }}>\r\n <div style={{\r\n height: \"100%\",\r\n width: 'auto',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '0px',\r\n flexDirection: 'column',\r\n marginRight: '25px',\r\n marginLeft: '10px',\r\n }}>\r\n <p style={{ margin: '5px 0' }}>{translate('$__search')}:</p>\r\n <FormControl className={styles.formControl} variant=\"standard\" size='small'>\r\n <OutlinedInput\r\n id=\"search\"\r\n type=\"text\"\r\n placeholder={translate('$__search')}\r\n onChange={(e) => setSearchValue(e.target.value)}\r\n endAdornment={\r\n <InputAdornment position=\"end\">\r\n <Icon>search</Icon>\r\n </InputAdornment>\r\n }\r\n />\r\n </FormControl>\r\n </div>\r\n <div\r\n style={{\r\n height: \"100%\",\r\n width: 'auto',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '0px',\r\n flexDirection: 'column',\r\n marginRight: '25px',\r\n }}\r\n >\r\n <p style={{ margin: '5px 0' }}>{translate(\"$__filterByDepartment\")}:</p>\r\n <FormControl variant=\"outlined\" sx={{ m: 1, minWidth: 220 }} className={styles.formControl} size='small'>\r\n <Select\r\n defaultValue=\"All\"\r\n displayEmpty\r\n onChange={(e) => setFilter(e.target.value)}\r\n >\r\n <MenuItem value=\"All\">{translate('$__all')}</MenuItem>\r\n {selectData.sort().map(departamento => (\r\n <MenuItem value={departamento} key={departamento}>{departamento}</MenuItem>\r\n ))}\r\n </Select>\r\n </FormControl>\r\n </div>\r\n <div\r\n style={{\r\n height: \"100%\",\r\n width: 'auto',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '0px',\r\n flexDirection: 'column',\r\n marginRight: '25px',\r\n }}\r\n >\r\n <p style={{ margin: '5px 0' }}>{translate(\"$__columnName\")}:</p>\r\n <FormControl sx={{ m: 1, width: 300 }} className={styles.formControl} size='small'>\r\n <Select\r\n labelId=\"checkbox-label\"\r\n id=\"multiple-checkbox\"\r\n multiple\r\n defaultValue={selectedColumns}\r\n onChange={(e) => setSelectedColumns(e.target.value)}\r\n input={<OutlinedInput />}\r\n renderValue={(selected) => selected.map(NameColumn).join(', ')}\r\n >\r\n {columns.map(name => (\r\n <MenuItem key={name} value={name}>\r\n <Checkbox checked={selectedColumns.indexOf(name) > -1} color=\"default\" className={styles.checkbox} />\r\n <ListItemText primary={NameColumn(name)} />\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </FormControl>\r\n </div>\r\n <div style={{\r\n backgroundColor: '#fff',\r\n border: '1px solid rgba(0, 0, 0, 0.23)',\r\n borderRadius: '5px',\r\n padding: '10.5px 14px'\r\n }}>\r\n {orderData?.length} {orderData?.length > 1 || orderData?.length === 0 ? translate('$__users') : translate('$__user')}\r\n </div>\r\n </div>\r\n </div>\r\n {orderData.length === 0 ? (\r\n <p>{translate('$__loading')}...</p>\r\n ) : (\r\n <UserAddList\r\n edit={edit}\r\n setSelectUser={setSelectUser}\r\n setEdit={setEdit}\r\n dataUser={orderData}\r\n columns={selectedColumns}\r\n orderData={orderData}\r\n orderColumn={orderColumn}\r\n column={column}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ListUsers;\r\n","import React from 'react'\r\nimport PropTypes from \"prop-types\";\r\n\r\n//COMPONENTES\r\nimport Icon from 'components/Icon';\r\n\r\n//@MATERIAL\r\nimport { Avatar, Tooltip } from '@material-ui/core'\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//FUNCTIONS\r\nimport { stringLength, stringAvatar, customApp, translate } from 'functions';\r\n\r\nfunction User(props) {\r\n const { selectUser } = props;\r\n const { db, session } = reduxStore.getState();\r\n\r\n return (\r\n <>\r\n <div\r\n style={{\r\n height: \"fit-content\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"3px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n paddingBottom: '20px',\r\n width: '40vw',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"space-between\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px 15px\",\r\n color: customApp('colorText'),\r\n background:\r\n customApp('ColumnTitleColor'),\r\n width: '100%',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n gap: \"5px\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Icon style={{ color: customApp('color') }}>notes</Icon>\r\n <p\r\n style={{\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n fontWeight: \"600\",\r\n margin: '0px',\r\n }}\r\n >\r\n {translate('$__userData')}\r\n </p>\r\n </div>\r\n <Icon\r\n style={{ cursor: 'pointer', color: customApp('color') }}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...db.sideModule,\r\n id: session?._id,\r\n activeModule: 'userEdit',\r\n db: 'users',\r\n data: {\r\n type: 'user',\r\n ...reduxStore.getState().db.users[selectUser?._id],\r\n }\r\n })\r\n }}\r\n >edit</Icon>\r\n </div>\r\n <Avatar\r\n src={selectUser?.image}\r\n {...stringAvatar(selectUser?.nomecompleto)}\r\n style={{\r\n width: \"80px\",\r\n height: \"80px\",\r\n marginTop: '20px'\r\n }}\r\n />\r\n <fieldset\r\n style={{\r\n borderColor: \"rgb(224 224 224)\",\r\n borderStyle: \"solid\",\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n flexDirection: \"column\",\r\n width: \"80%\",\r\n marginBottom: \"10px\",\r\n }}\r\n >\r\n <legend\r\n style={{\r\n padding: \"0px 5px\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: \"rgb(192,178,131)\",\r\n margin: \"0px\",\r\n }}\r\n >\r\n {translate(\"$__completeName\")}\r\n </legend>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Tooltip title={selectUser?.nomecompleto}>\r\n <p>{stringLength(selectUser?.nomecompleto, 32)}</p>\r\n </Tooltip>\r\n </div>\r\n </fieldset>\r\n <fieldset\r\n style={{\r\n borderColor: \"rgb(224 224 224)\",\r\n borderStyle: \"solid\",\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n flexDirection: \"column\",\r\n width: \"80%\",\r\n marginBottom: \"10px\",\r\n }}\r\n >\r\n <legend\r\n style={{\r\n padding: \"0px 5px\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: \"rgb(192,178,131)\",\r\n margin: \"0px\",\r\n }}\r\n >\r\n {translate(\"$__email\")}\r\n </legend>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Tooltip title={selectUser?.email}>\r\n <p>{stringLength(selectUser?.email, 32)}</p>\r\n </Tooltip>\r\n </div>\r\n </fieldset>\r\n <fieldset\r\n style={{\r\n borderColor: \"rgb(224 224 224)\",\r\n borderStyle: \"solid\",\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n flexDirection: \"column\",\r\n width: \"80%\",\r\n marginBottom: \"10px\",\r\n }}\r\n >\r\n <legend\r\n style={{\r\n padding: \"0px 5px\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: \"rgb(192,178,131)\",\r\n margin: \"0px\",\r\n }}\r\n >\r\n {translate(\"$__company\")}\r\n </legend>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <p>{session?.GlobalData.fullName}</p>\r\n </div>\r\n </fieldset>\r\n <fieldset\r\n style={{\r\n borderColor: \"rgb(224 224 224)\",\r\n borderStyle: \"solid\",\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n flexDirection: \"column\",\r\n width: \"80%\",\r\n marginBottom: \"10px\",\r\n }}\r\n >\r\n <legend\r\n style={{\r\n padding: \"0px 5px\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace: \"nowrap\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n color: \"rgb(192,178,131)\",\r\n margin: \"0px\",\r\n }}\r\n >\r\n {translate(\"$__department/group\")}\r\n </legend>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Tooltip title={selectUser?.['departamento/grupo']\r\n ?.filter(a => a.value)\r\n ?.sort((a, b) => {\r\n if (a.label < b.label)\r\n return -1\r\n return 1\r\n }).map((item, i) => `${i > 0 ? ` / ` : ``}${item.label}`)}>\r\n <p>{selectUser?.['departamento/grupo']\r\n ?.filter(a => a.value)\r\n ?.sort((a, b) => {\r\n if (a.label < b.label)\r\n return -1\r\n return 1\r\n }).map((item, i) => `${i > 0 ? ` / ` : ``}${item.label}`)\r\n .map((group) => stringLength(group, 32))}\r\n </p>\r\n </Tooltip>\r\n </div>\r\n </fieldset>\r\n </div>\r\n </>\r\n );\r\n}\r\nUser.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(User);\r\n","import React, { useState } from \"react\";\r\n\r\n//COMPONENTES\r\nimport ListUsers from \"./TableUsers/ListUsers\";\r\nimport User from \"./TableUsers/User\";\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions\";\r\n\r\nconst Department = () => {\r\n const [selectUser, setSelectUser] = useState(null);\r\n return (\r\n <>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n }}\r\n >\r\n <div style={{ display: \"flex\", gap: \"5px\", alignItems: \"center\" }}>\r\n <p\r\n style={{\r\n marginTop: \"0px\",\r\n color: \"#7d7d7d\",\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => setSelectUser(null)}\r\n >\r\n {translate('$__usersList')}\r\n </p>\r\n <p\r\n style={{\r\n marginTop: \"0px\",\r\n color: \"#7d7d7d\",\r\n }}\r\n >\r\n {selectUser !== null ? \" - \" : null}\r\n </p>\r\n <p\r\n style={{\r\n marginTop: \"0px\",\r\n color: \"#7d7d7d\",\r\n textDecoration: \"underline\",\r\n }}\r\n >\r\n {selectUser !== null ? `${selectUser.nomecompleto}` : null}\r\n </p>\r\n </div>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n gap: \"20px\",\r\n flexDirection: \"column\",\r\n flexWrap: \"wrap\",\r\n }}\r\n >\r\n {selectUser === null ? (\r\n <ListUsers setSelectUser={setSelectUser} />\r\n ) : (\r\n <div\r\n style={{\r\n width: \"82%\",\r\n position: \"absolute\",\r\n zIndex: \"9\",\r\n height: \"auto\",\r\n margin: \"0px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n display: \"flex\",\r\n minHeight: \"100vh\",\r\n backgroundColor: \"#eee\",\r\n gap: \"20px\",\r\n }}\r\n >\r\n <User selectUser={selectUser} />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Department;\r\n","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React from \"react\"\r\nimport ColorPicker from 'rc-color-picker';\r\n\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 CustomButton from \"components/Buttons/custom\"\r\nimport FakeExpanded from \"components/Card/fakeCardExpanded\"\r\nimport GradientColor from \"components/ColorPicker/Gradient\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport ImgCropper from \"components/Cropper\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\nimport TextField from \"components/TextField\"\r\nimport { Paper } from \"@material-ui/core\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sideModule-Card.js\"\r\n\r\n//FUNCTIONS\r\nimport { upload } from \"functions/upload\";\r\nimport {\r\n translate,\r\n customApp,\r\n} from \"functions/\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\nimport 'rc-color-picker/assets/index.css';\r\nimport 'react-linear-gradient-picker/dist/index.css';\r\n\r\n\r\nfunction WhiteLabelView(props) {\r\n const { session } = reduxStore.getState()\r\n const { custom } = session\r\n const [data, setData] = React.useState(session.custom || {})\r\n const [iniData, setIniData] = React.useState({})\r\n const [newData, setNewData] = React.useState({})\r\n const [logo, setLogo] = React.useState(null)\r\n const [background, setBackground] = React.useState(null)\r\n const [fieldsRefresh, setFieldsRefresh] = React.useState(false)\r\n const [saveDataLoading, setSaveDataLoading] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n let isSubscribed = true\r\n if (isSubscribed)\r\n setIniData(session.custom || {})\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (fieldsRefresh)\r\n setTimeout(() => {\r\n setFieldsRefresh(false)\r\n }, 500)\r\n }, [fieldsRefresh])\r\n\r\n const setCustom = (d) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n custom: {\r\n ...reduxStore.getState().session.custom,\r\n [d.name]: d.value\r\n }\r\n });\r\n setNewData({\r\n ...newData,\r\n [d.name]: d.value\r\n })\r\n setData({\r\n ...data,\r\n [d.name]: d.value\r\n })\r\n }\r\n\r\n const resetData = async () => {\r\n setData(iniData)\r\n setNewData({})\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n custom: iniData\r\n });\r\n }\r\n\r\n const saveData = async () => {\r\n setSaveDataLoading(true)\r\n let newCustom = {\r\n ...custom?.custom ? JSON.parse(custom?.custom) : {},\r\n ...newData,\r\n }\r\n setData(newCustom)\r\n setIniData(newCustom)\r\n\r\n\r\n try {\r\n\r\n let imageResult = logo ? await upload(session.account, logo) : true\r\n let backgroundResult = background ? await upload(session.account, background) : true\r\n if (imageResult && backgroundResult) {\r\n if (logo) {\r\n newCustom = {\r\n ...newCustom,\r\n customLogo: imageResult\r\n }\r\n }\r\n if (background) {\r\n newCustom = {\r\n ...newCustom,\r\n loginBackground: backgroundResult\r\n }\r\n }\r\n\r\n // console.log(newCustom)\r\n // return false\r\n const { socket } = reduxStore.getState().functions\r\n socket.emit(\"data\", {\r\n module: \"account\",\r\n method: \"post\",\r\n action: \"save\"\r\n }, {\r\n custom: JSON.stringify(newCustom)\r\n }, response => {\r\n setSaveDataLoading(false)\r\n setNewData({})\r\n }\r\n )\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <GridContainer>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n margin: \"0px\",\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n }}>{translate(\"$__logo\")}</p>\r\n <ImgCropper\r\n maxWidthOrHeight={600}\r\n img={custom.customLogo}\r\n onChange={(a, file) => {\r\n setLogo(file)\r\n setCustom({\r\n name: 'customLogo',\r\n value: a\r\n })\r\n }}\r\n transparent\r\n ignoreAspect={true}\r\n noGuides\r\n viewMode={0}\r\n accept={\".png\"}\r\n checkOrientation\r\n />\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n margin: \"0px\",\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n }}>{translate(\"$__loginBackground\")}</p>\r\n <div style={{width:'200px', display:'flex', margin:'10px auto'}}>\r\n <ImgCropper\r\n maxWidthOrHeight={2000}\r\n img={custom.loginBackground}\r\n onChange={(a, file) => {\r\n setBackground(file)\r\n setCustom({\r\n name: 'loginBackground',\r\n value: a\r\n })\r\n }}\r\n transparent\r\n ignoreAspect={true}\r\n noGuides\r\n viewMode={0}\r\n accept={\".jpg, .jpeg\"}\r\n checkOrientation\r\n />\r\n </div>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n margin: \"0px\",\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n marginBottom:'10px'\r\n }}>{translate(\"$__backgroundColumnsTitle\")}</p>\r\n <HeaderWithMenu\r\n title={translate(`$__backgroundColumnsTitle`, 1)}\r\n icon={'gradient'}\r\n color={customApp('colorText')}\r\n style={{\r\n background: customApp('ColumnTitleColor'),\r\n padding: '7px',\r\n margin:'10px auto',\r\n width:'90%',\r\n }}\r\n />\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'-15px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__background\")}</div>\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.ColumnTitleColor\r\n }\r\n\r\n }\r\n style={{padding:'0'}}\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'ColumnTitleColor',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__text\")}</div>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.colorText || null}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'colorText',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topLeft\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n margin: \"0px\",\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n marginBottom:'10px',\r\n }}>{translate(\"$__menu\")}</p>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'-15px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__background\")}</div>\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.menuColor\r\n }\r\n\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'menuColor',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__menuText\")}</div>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.menuButtonColor}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'menuButtonColor',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <ErrorBoundary>\r\n <div style={{ marginRight: 7 }}>{translate(\"$__menuActiveText\")}</div>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.active}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'active',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n margin: \"0px\",\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n marginBottom:'10px',\r\n }}>{translate(\"$__submenu\")}</p>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'-15px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__background\")}</div>\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.subMenuColor\r\n }\r\n\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'subMenuColor',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__menuTextIconColor\")}</div>\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.subMenuTextColor}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'subMenuTextColor',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__subMenuActiveText\")}</div>\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.subMenuTextColorActive}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'subMenuTextColorActive',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n margin: \"0px\",\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n marginBottom:'10px',\r\n }}>{translate(\"$__complement\")}</p>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n flexFlow: \"wrap\"\r\n }}>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'-15px 10px',\r\n }}>\r\n\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__progress\")}</div>\r\n <ErrorBoundary>\r\n <GradientColor value={\r\n {\r\n css: custom.linearProgress\r\n }\r\n\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'linearProgress',\r\n value: e.css\r\n })\r\n }}\r\n />\r\n </ErrorBoundary>\r\n <LinearProgress customColor={custom.linearProgress} />\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__borderColor\")}</div>\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.color}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'color',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7, fontWeight: \"bold\", color: customApp(\"menu\") }}>{translate(\"$__primaryText\")}</div>\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.menu}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'menu',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n margin: \"0px\",\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n marginBottom:'10px',\r\n }}>{translate(\"$__cardImageCover\")}</p>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n \r\n }}>\r\n <p style={{ display: \"flex\", alignItems: \"center\" ,margin:'-25px 10px',}}>{translate(\"$__cardImageCover\")}\r\n\r\n <GradientColor value={\r\n {\r\n css: custom.AvatarBackground,\r\n\r\n }\r\n }\r\n onChange={(e) => {\r\n setCustom({\r\n name: 'AvatarBackground',\r\n value: e.css\r\n })\r\n }}\r\n type={\"radial\"}\r\n />\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.avatarIconColor}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'avatarIconColor',\r\n value: c.color\r\n })\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </p>\r\n </div>\r\n <div style={{padding:'10px'}}>\r\n <FakeExpanded\r\n backgroundColor={custom.AvatarBackground}\r\n avatarIconColor={custom.avatarIconColor}\r\n responsive\r\n />\r\n </div>\r\n </Paper>\r\n </GridItem>\r\n <GridItem\r\n md={4}\r\n >\r\n <Paper style={{ marginTop: 15, width: \"300px\", height: \"220px\", }}>\r\n <p style={{\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n padding: \"10px\",\r\n marginBottom:'10px',\r\n borderBottom: \"1px solid #eee\",\r\n color: \"#6d6d6d\",\r\n }}>\r\n {translate(\"$__fields\")}\r\n </p>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__line\")}</div>\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.line}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'line',\r\n value: c.color\r\n })\r\n setFieldsRefresh(true)\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n width: \"100%\",\r\n justifyContent: \"flex-start\",\r\n margin:'0px 10px',\r\n }}>\r\n\r\n <div style={{ marginRight: 7 }}>{translate(\"$__inputAdorment\")}</div>\r\n <ErrorBoundary>\r\n <ColorPicker\r\n enableAlpha={false}\r\n animation=\"slide-up\"\r\n color={custom.medium}\r\n mode={\"RGB\"}\r\n onChange={c => {\r\n setCustom({\r\n name: 'medium',\r\n value: c.color\r\n })\r\n setFieldsRefresh(true)\r\n }}\r\n // placement={\"topRight\"}\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n\r\n <div style={{\r\n width:'100%',\r\n display:'flex',\r\n alignItems:'center',\r\n justifyContent:'center',\r\n }}>\r\n {!fieldsRefresh ?\r\n <TextField\r\n label={translate(\"$__field\", 1)}\r\n variant={custom.fieldVariant}\r\n name={\"field\"}\r\n // InputLabelProps={{\r\n // shrink: true,\r\n // }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"format_color_fill\" color={custom.medium} />\r\n </InputAdornment>\r\n ),\r\n }}\r\n style={{width:'90%', margin:'0 auto'}}\r\n />\r\n : <TextField\r\n label={translate(\"$__field\", 1)}\r\n variant={custom.fieldVariant}\r\n name={\"field\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"format_color_fill\" />\r\n </InputAdornment>\r\n ),\r\n }}\r\n style={{width:'90%', margin:'0 auto'}}\r\n />\r\n }\r\n </div>\r\n </Paper>\r\n </GridItem>\r\n {\r\n JSON.stringify(data) !== JSON.stringify(iniData) ?\r\n <div style={{\r\n position: \"fixed\",\r\n bottom: 50,\r\n right: 50,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n }}>\r\n <div >\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__reset\")}\r\n text={translate(\"$__reset\")}\r\n color=\"red\"\r\n // tr\r\n icon={\"format_color_reset\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n resetData()\r\n }}\r\n load={saveDataLoading}\r\n />\r\n </div>\r\n <div style={{ marginLeft: 15 }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData()\r\n // setEditor(false)\r\n }}\r\n load={saveDataLoading}\r\n />\r\n </div>\r\n\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </GridContainer>\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(withStyles(styles)(WhiteLabelView))\r\n","import React, { useEffect, useState } from \"react\";\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 { EditorState, ContentState } from \"draft-js\";\r\nimport htmlToDraft from \"html-to-draftjs\";\r\nimport { MessageEditor } from \"components/MessageEditor/MessageEditor\";\r\nimport Icon from \"components/Icon\";\r\nimport Icons from \"components/Icons\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions\";\r\n\r\nconst Message = (props) => {\r\n const [editorData, setEditorData] = useState([]);\r\n const { session } = reduxStore.getState();\r\n const [iniData, setIniData] = useState();\r\n\r\n useEffect(() => {\r\n if (!session.GlobalData.messages) {\r\n let history = EditorState.createEmpty(),\r\n vocation = EditorState.createEmpty(),\r\n legacy = EditorState.createEmpty(),\r\n message = EditorState.createEmpty(),\r\n strategicStatement = EditorState.createEmpty(),\r\n values = EditorState.createEmpty();\r\n\r\n if (session.GlobalData.history) {\r\n history = htmlToDraft(`<div>${session.GlobalData.history}</div>`);\r\n history = ContentState.createFromBlockArray(history.contentBlocks);\r\n history = EditorState.createWithContent(history);\r\n }\r\n\r\n if (session.GlobalData.strategicStatement) {\r\n strategicStatement = htmlToDraft(\r\n `<div>${session.GlobalData.strategicStatement}</div>`\r\n );\r\n strategicStatement = ContentState.createFromBlockArray(\r\n strategicStatement.contentBlocks\r\n );\r\n strategicStatement = EditorState.createWithContent(strategicStatement);\r\n }\r\n\r\n if (session.GlobalData.values) {\r\n values = htmlToDraft(`<div>${session.GlobalData.values}</div>`);\r\n values = ContentState.createFromBlockArray(values.contentBlocks);\r\n values = EditorState.createWithContent(values);\r\n }\r\n\r\n if (session.GlobalData.vocation) {\r\n vocation = htmlToDraft(`<div>${session.GlobalData.vocation}</div>`);\r\n vocation = ContentState.createFromBlockArray(vocation.contentBlocks);\r\n vocation = EditorState.createWithContent(vocation);\r\n }\r\n\r\n if (session.GlobalData.legacy) {\r\n legacy = htmlToDraft(`<div>${session.GlobalData.legacy}</div>`);\r\n legacy = ContentState.createFromBlockArray(legacy.contentBlocks);\r\n legacy = EditorState.createWithContent(legacy);\r\n }\r\n if (session.GlobalData.message) {\r\n message = htmlToDraft(`<div>${session.GlobalData.message}</div>`);\r\n message = ContentState.createFromBlockArray(message.contentBlocks);\r\n message = EditorState.createWithContent(message);\r\n }\r\n\r\n const init = [\r\n {\r\n messageD: history,\r\n id: 1,\r\n title: translate(\"$__history\"),\r\n icon: \"menu_book\",\r\n message: session.GlobalData.history,\r\n },\r\n {\r\n messageD: vocation,\r\n id: 2,\r\n title: translate(\"$__vocation\"),\r\n icon: \"spoke\",\r\n message: session.GlobalData.vocation,\r\n },\r\n {\r\n messageD: legacy,\r\n id: 3,\r\n title: translate(\"$__legacy\"),\r\n icon: \"subtitles\",\r\n message: session.GlobalData.legacy,\r\n },\r\n {\r\n messageD: message,\r\n id: 4,\r\n title: translate(\"$__presidentMessage\"),\r\n icon: \"account_box\",\r\n message: session.GlobalData.message,\r\n },\r\n {\r\n messageD: values,\r\n id: 5,\r\n title: translate(\"$__values\"),\r\n icon: \"join_inner\",\r\n message: session.GlobalData.values,\r\n },\r\n {\r\n messageD: strategicStatement,\r\n id: 6,\r\n title: translate(\"$__strategicStatement\"),\r\n icon: \"history_edu\",\r\n message: session.GlobalData.strategicStatement,\r\n },\r\n ];\r\n setIniData(init)\r\n setEditorData(init);\r\n } else {\r\n setEditorData([...session.GlobalData.messages]);\r\n setIniData([...session.GlobalData.messages]);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const addUniqueNumber = () => {\r\n const nextNumber = editorData.length + 1;\r\n if (editorData.some((data) => data.id === nextNumber)) {\r\n let newNumber = nextNumber + 1;\r\n while (editorData.some((data) => data.id === nextNumber)) {\r\n newNumber++;\r\n }\r\n setEditorData([\r\n {\r\n messageD: null,\r\n id: newNumber,\r\n title: null,\r\n message: null,\r\n icon: \"add_reaction\",\r\n },\r\n ...editorData,\r\n ]);\r\n } else {\r\n setEditorData([\r\n {\r\n messageD: null,\r\n id: nextNumber,\r\n title: null,\r\n message: null,\r\n icon: \"add_reaction\",\r\n },\r\n ...editorData,\r\n ]);\r\n }\r\n };\r\n const changeData = (message, messageD, id) => {\r\n const updatedData = editorData.map((data) =>\r\n data.id === id ? { ...data, messageD: messageD, message: message } : data\r\n );\r\n setEditorData(updatedData);\r\n };\r\n const changeTitle = (title, id) => {\r\n const updatedData = editorData.map((data) =>\r\n data.id === id ? { ...data, title: title } : data\r\n );\r\n setEditorData(updatedData);\r\n };\r\n const changeIcon = (icon, id) => {\r\n const updatedData = editorData.map((data) =>\r\n data.id === id ? { ...data, icon: icon } : data\r\n );\r\n setEditorData(updatedData);\r\n };\r\n const deleteData = (message) => {\r\n const updatedData = editorData\r\n .filter((data) => data !== message)\r\n .map((data) => data);\r\n setEditorData(updatedData);\r\n };\r\n\r\n const saveData = async () => {\r\n const messages = { messages: editorData };\r\n setIniData(editorData)\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n GlobalData: {\r\n ...reduxStore.getState().session.GlobalData,\r\n ...messages,\r\n },\r\n });\r\n };\r\n return (\r\n <>\r\n <div style={{ width: \"fit-content\", marginBottom: \"10px\" }}>\r\n <div\r\n style={{\r\n boxShadow:\r\n \"rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px\",\r\n backgroundColor: \"white\",\r\n color: \"#b0b0b0\",\r\n display: \"flex\",\r\n gap: \"10px\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: \"5px 10px\",\r\n borderRadius: \"5px\",\r\n cursor: \"pointer\",\r\n margin: \"0 auto\",\r\n }}\r\n onClick={addUniqueNumber}\r\n >\r\n <div\r\n style={{\r\n padding: \"2px\",\r\n border: \"1px dotted #b0b0b0\",\r\n borderRadius: \"5px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <Icon style={{ fontSize: \"1rem\" }}>add</Icon>\r\n </div>\r\n <p style={{ margin: \"0\" }}>{translate(`$__newMessage`)}</p>\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n gap: \"20px\",\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n alignItems: \"stretch\",\r\n }}\r\n >\r\n {editorData?.map((message) => (\r\n <div\r\n style={{\r\n width: \"45%\",\r\n padding: \"5px\",\r\n backgroundColor: \"#fff\",\r\n borderRadius: \"5px\",\r\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.14)\",\r\n }}\r\n key={message?.id}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: \"10px\",\r\n }}\r\n >\r\n <input\r\n type=\"text\"\r\n placeholder={translate('$__addTitle')}\r\n style={{\r\n border: \"none\",\r\n borderBottom: \"1px solid #eee\",\r\n outline: \"none\",\r\n padding: \"5px\",\r\n margin: \"5px\",\r\n fontSize: \"0.9rem\",\r\n width: \"85%\",\r\n }}\r\n defaultValue={message?.title}\r\n onChange={(e) => changeTitle(e.target.value, message?.id)}\r\n />\r\n <Icons\r\n icon={message?.icon}\r\n onChange={(e) => {\r\n changeIcon(e, message?.id);\r\n }}\r\n />\r\n <Icon\r\n style={{ color: \"#d6d6d6\", cursor: \"pointer\" }}\r\n onClick={() => deleteData(message)}\r\n >\r\n delete\r\n </Icon>\r\n </div>\r\n <MessageEditor\r\n data={message}\r\n edit={true}\r\n id={message?.id}\r\n changeData={changeData}\r\n />\r\n </div>\r\n ))}\r\n {JSON.stringify(editorData) !== JSON.stringify(iniData) ? (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n bottom: 50,\r\n right: 50,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n zIndex: 999,\r\n }}\r\n >\r\n <div style={{ marginLeft: 15 }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"save\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n saveData();\r\n // setEditor(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Message);\r\n","import React, { memo } from \"react\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n//COMPONENTS\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport TextField from \"components/TextField\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport ProgressLinear from \"components/Progress/linear\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, appAlert, customApp } from \"functions/\"\r\n\r\nimport apims from \"apims\"\r\nimport api from \"api\"\r\n\r\nfunction App(props) {\r\n const [data, setData] = React.useState({})\r\n const [secretView, setSecretView] = React.useState(false)\r\n const [loading, setLoading] = React.useState(true)\r\n\r\n React.useEffect(() => {\r\n reqIntegrationToken()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n const scrollTimer = setTimeout(() => {\r\n document.getElementById(\"mainPannel\").scrollTo(0, 0)\r\n }, 100)\r\n return () => {\r\n clearTimeout(scrollTimer)\r\n }\r\n }, [props.history])\r\n\r\n const reqIntegrationToken = async (n = false) => {\r\n let ntk = n\r\n let result = await apims.post(\"/ReqIntegrationToken\")\r\n if (!ntk && result && result.data?.token) {\r\n setData({\r\n secretKey: `Bearer ${result.data.token}`\r\n })\r\n } else {\r\n let result = await api.post(\"/api/token\")\r\n if (result)\r\n setData({\r\n secretKey: `Bearer ${result.data.token}`\r\n })\r\n }\r\n setLoading(false)\r\n }\r\n\r\n\r\n return (\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={6}\r\n lg={6}\r\n xl={6}\r\n >\r\n <div\r\n style={{\r\n width: \"100%\",\r\n backgroundColor: \"#FFFFFF\",\r\n borderRadius: 2,\r\n boxShadow: \"0px 0px 7px 5px rgba(0,0,0,0.03)\",\r\n paddingBottom:\"15px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n justifyContent: \"center\",\r\n borderBottom: \"#e8e8e8 1px solid\",\r\n padding: \"7px\",\r\n color: customApp('colorText'),\r\n background: customApp('ColumnTitleColor'),\r\n }}\r\n >\r\n <Icon style={{color: customApp('color')}}>integration_instructions</Icon>\r\n <span\r\n style={{\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {translate('$__integrations')}\r\n </span>\r\n </div>\r\n <ErrorBoundary>\r\n {loading ?\r\n <ProgressLinear />\r\n :\r\n <div>\r\n <fieldset style={{\r\n wordBreak: \"break-word\",\r\n margin:'15px',\r\n }}>\r\n <legend>\r\n {translate(\"$__authorizationToken\")}\r\n </legend>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <TextField\r\n label={translate('$__authorizationToken', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'secretKey'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n multiline: true,\r\n minRows: 3,\r\n autoComplete: 'new-password',\r\n type: secretView ? \"text\" : \"password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <div style={{\r\n cursor: \"pointer\",\r\n marginRight: 7\r\n }}\r\n onClick={() => {\r\n navigator.clipboard.writeText(data.secretKey);\r\n }}\r\n >\r\n <Icon icon='content_copy' />\r\n </div>\r\n <Icon icon={secretView ? 'visibility_off' : 'visibility'} onClick={() => {\r\n setSecretView(prev => !prev)\r\n }} />\r\n </InputAdornment>\r\n ),\r\n }}\r\n value={`${data && data.secretKey ? data.secretKey : ''}`}\r\n placeholder={translate('$__secretKey', 1)}\r\n autoFocus\r\n disabled={true}\r\n />\r\n </div>\r\n <i>{translate(\"$__secretKeyDescription\")}</i>\r\n </fieldset>\r\n <div style={{\r\n display: \"none\",\r\n justifyContent: \"flex-end\",\r\n }}>\r\n <CustomButton\r\n // shadow\r\n title={translate(\"$__newToken\")}\r\n text={translate(\"$__newToken\")}\r\n color=\"green\"\r\n // tr\r\n icon={\"refresh\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n appAlert({\r\n message: translate(\"$__confirmApiTokenRevokeAndRecreate\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n\r\n }\r\n })\r\n }}\r\n />\r\n </div>\r\n </div >\r\n }\r\n </ErrorBoundary>\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n history: store.db.history\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)(memo(App))","import React, { useState } from \"react\";\r\n\r\n//COMPONENTES\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Icon from 'components/Icon';\r\nimport Enterprise from \"./Enterprise\";\r\nimport Notifications from \"./Notifications\";\r\nimport Overview from \"./Overview\";\r\nimport Department from \"./Department\";\r\nimport WhiteLabel from \"./WhiteLabel\";\r\nimport Message from \"./Message\";\r\nimport Integrations from \"./Integrations\";\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions\";\r\n\r\nconst ProfileEnterprise = () => {\r\n const [check, setCheck] = useState('Overview');\r\n\r\n const handleChange = (name) => {\r\n setCheck(name);\r\n };\r\n return (\r\n <div\r\n style={{\r\n width: \"calc(100% - 15px)\",\r\n position: \"absolute\",\r\n zIndex: \"9\",\r\n borderRadius: \"5px\",\r\n backgroundColor: \"#eee\",\r\n margin: \"0px\",\r\n fontFamily: \"Soleto, Roboto, Helvetica, Arial, sans-serif\",\r\n minHeight: '100vh',\r\n height: \"auto\",\r\n }}\r\n >\r\n <GridContainer\r\n style={{\r\n height: \"100%\",\r\n justifyContent: \"flex-end\",\r\n margin: \"0px\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <GridItem\r\n item\r\n xs={12}\r\n style={{\r\n backgroundColor: \"#eee\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n flexDirection: 'column',\r\n gap: '5px',\r\n marginBottom: '30px'\r\n }}\r\n >\r\n <Enterprise />\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '15px',\r\n padding: '10px',\r\n borderBottom: '1px solid #b9b9b9',\r\n width: '100%',\r\n justifyContent: 'flex-start',\r\n marginTop: '0px',\r\n marginBottom: '20px',\r\n color: 'rgb(83 83 83)',\r\n overflowX: 'auto',\r\n }}>\r\n <LinkMenu value={'Overview'} check={check} onClick={() => handleChange('Overview')}>\r\n <Icon>grid_view</Icon> {translate('$__overview')}\r\n </LinkMenu>\r\n <LinkMenu value={'Notifications'} check={check} onClick={() => handleChange('Notifications')}>\r\n <Icon>notifications_active</Icon> {translate('$__notificationManagement')}\r\n </LinkMenu>\r\n <LinkMenu value={'Department'} check={check} onClick={() => handleChange('Department')}>\r\n <Icon>group</Icon> {translate('$__users')}\r\n </LinkMenu>\r\n <LinkMenu value={'Message'} check={check} onClick={() => handleChange('Message')}>\r\n <Icon>sticky_note_2</Icon> {translate('$__profileMessages')}\r\n </LinkMenu>\r\n <LinkMenu value={'WhiteLabel'} check={check} onClick={() => handleChange('WhiteLabel')}>\r\n <Icon>palette</Icon> {translate('$__whiteLabel')}\r\n </LinkMenu>\r\n <LinkMenu value={'Integrations'} check={check} onClick={() => handleChange('Integrations')}>\r\n <Icon>integration_instructions</Icon> {translate('$__integrations')}\r\n </LinkMenu>\r\n </div>\r\n {\r\n check === 'Overview' ? <Overview /> :\r\n check === 'Notifications' ? <Notifications /> :\r\n check === 'WhiteLabel' ? <WhiteLabel /> :\r\n check === 'Message' ? <Message /> :\r\n check === 'Integrations' ? <Integrations /> :\r\n check === 'Department' ? <Department /> : null\r\n }\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\nexport default ProfileEnterprise;\r\n\r\nfunction LinkMenu({ children, value, check, onClick }) {\r\n const [buttonHover, setButtonHover] = useState(false)\r\n return (\r\n <div\r\n onMouseEnter={() => setButtonHover(true)}\r\n onMouseLeave={() => setButtonHover(false)}\r\n onClick={onClick}\r\n style={{\r\n textDecoration: 'none',\r\n color: 'rgb(83 83 83)',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '5px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '15px',\r\n padding: '2px 7px',\r\n borderRadius: '3px',\r\n transition: '0.3s all',\r\n backgroundColor: buttonHover ? '#cfcfcf' : value === check ? '#cfcfcf' : 'transparent',\r\n cursor: buttonHover ? 'pointer' : 'default',\r\n }}>{children}</div>\r\n )\r\n}","//VIEWS\r\nimport ActivateUserPage from \"views/Pages/ActivateUser\"\r\nimport BackOffice from \"views/BackOffice\"\r\nimport BrightAndConnected from \"views/BrightAndConnected\"\r\nimport Calendar from \"views/Calendar/Calendar\"\r\nimport Dashboard from \"views/Dashboard\"\r\nimport ErrorPage from \"views/Pages/ErrorPage\"\r\nimport Library from \"views/Library\"\r\nimport LoginPage from \"views/Pages/LoginPage\"\r\nimport MaintenancePage from \"views/Pages/MaintenancePage\"\r\nimport OfflinePage from \"views/Pages/OffLinePage\"\r\nimport MyTasks from \"views/MyTasks\"\r\nimport MasterAdmin from \"views/MasterAdmin\"\r\nimport Notifications from \"views/Notifications\"\r\nimport RegisterPage from \"views/Pages/RegisterPage\"\r\nimport StrategyAndPlans from \"views/StrategyAndPlans\"\r\nimport Tags from \"views/Tags\"\r\nimport Users from \"views/Users\"\r\nimport Forms from \"views/Forms\"\r\nimport Account from \"views/Account/\"\r\nimport SubscriptionUpgrade from \"views/Pages/subscriptionPlan\"\r\nimport DeniedAccess from \"views/Pages/deniedAccess\"\r\nimport Profile from \"views/ProfileUser/Profile\"\r\nimport Plans from \"views/Plans/\"\r\nimport ProfileEnterprise from \"views/ProfileEnterprise/ProfileEnterprise\"\r\n\r\n//ICONS\r\nimport Matrix from \"assets/icons/Matrix\"\r\nimport Bright from \"assets/icons/BrigthAndConnected\"\r\nimport Ideas from \"assets/icons/Ideas\"\r\n\r\n\r\nvar dashRoutes = [\r\n {\r\n path: \"/d\",\r\n name: \"DASHBOARD\",\r\n alias: 'Dashboard',\r\n icon: 'dashboard',\r\n component: Dashboard,\r\n show: true,\r\n auth: true,\r\n search: false,\r\n tabs: [\r\n {\r\n path: \"resume\",\r\n name: \"RESUME\",\r\n alias: \"home\",\r\n icon: 'space_dashboard',\r\n show: true,\r\n auth: true,\r\n },\r\n {\r\n path: \"dayTasks\",\r\n name: \"DAYTASKS\",\r\n alias: \"dayTasks\",\r\n icon: 'hail',\r\n show: true,\r\n auth: true,\r\n AppAccess: ['planAdmin', 'planModerate'],\r\n },\r\n ]\r\n },\r\n {\r\n path: \"/bright-and-connected\",\r\n name: \"BRIGHTANDCONNECTED\",\r\n alias: \"brightandconnected\",\r\n icon: Bright,\r\n component: BrightAndConnected,\r\n show: true,\r\n auth: true,\r\n subMenu: true,\r\n searchFields: ['tags', 'text'],\r\n tabs: [\r\n {\r\n path: \"home\",\r\n name: \"home\",\r\n alias: \"home\",\r\n icon: \"home\",\r\n show: true,\r\n auth: true,\r\n },\r\n {\r\n path: \"feeds\",\r\n name: \"FEEDS\",\r\n alias: \"feeds\",\r\n icon: \"menu_book\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['tags', 'text'],\r\n },\r\n\r\n {\r\n path: \"radar\",\r\n name: \"radar\",\r\n alias: \"radar\",\r\n icon: \"settings_input_antenna\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['tags', 'text', 'users', 'priority'],\r\n },\r\n {\r\n path: \"insight-boards\",\r\n name: \"INSIGHTS\",\r\n alias: \"insights\",\r\n icon: Ideas,\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['tags', 'text', 'users', 'priority'],\r\n },\r\n {\r\n path: \"allNews\",\r\n name: \"allNews\",\r\n alias: \"allNews\",\r\n icon: \"feed\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['tags', 'text'],\r\n }, {\r\n path: \"hideFeeds\",\r\n name: \"HIDEFEEDS\",\r\n alias: \"hideFeeds\",\r\n icon: \"visibility_off\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['tags', 'text'],\r\n },\r\n ]\r\n },\r\n {\r\n path: \"/c\",\r\n name: \"Users\",\r\n alias: 'users',\r\n icon: 'business',\r\n component: Users,\r\n show: true,\r\n auth: true,\r\n search: true,\r\n subMenu: true,\r\n searchFields: ['text', 'tags', 'users', 'userGroup'],\r\n tabs: [\r\n {\r\n path: \"users\",\r\n name: \"USERS\",\r\n alias: \"users\",\r\n icon: \"supervised_user_circle\",\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'userGroup'],\r\n },\r\n {\r\n path: \"units\",\r\n name: \"units\",\r\n alias: \"customersCompaniesAndDivisions\",\r\n icon: \"business\",\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'userGroup'],\r\n },\r\n {\r\n path: \"departments\",\r\n name: \"groupsAndDepartments\",\r\n alias: \"groupsAndDepartments\",\r\n icon: \"group_work\",\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/forms\",\r\n name: \"Forms\",\r\n alias: 'forms',\r\n icon: 'ballot',\r\n component: Forms,\r\n show: true,\r\n auth: true,\r\n search: true,\r\n subMenu: true,\r\n tabs: [\r\n {\r\n path: \"resume\",\r\n name: \"resume\",\r\n alias: \"resume\",\r\n icon: \"ballot\",\r\n show: true,\r\n auth: true,\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/sp\",\r\n name: \"Strategy & Plans\",\r\n alias: \"plan\",\r\n icon: 'view_comfy',\r\n component: StrategyAndPlans,\r\n show: true,\r\n auth: true,\r\n search: true,\r\n subMenu: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n tabs: [\r\n {\r\n path: \"home\",\r\n name: \"home\",\r\n alias: \"home\",\r\n icon: \"home\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n hashId: false,\r\n },\r\n {\r\n path: \"StrategyAndPlans\",\r\n name: \"StrategyAndPlans\",\r\n alias: \"StrategyAndPlans\",\r\n icon: \"view_comfy\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n hashId: false,\r\n },\r\n {\r\n path: \"archived\",\r\n name: \"archivedPlans\",\r\n alias: \"archivedPlans\",\r\n icon: \"archive\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n hashId: false,\r\n },\r\n {\r\n path: \"admin\",\r\n name: \"admin\",\r\n alias: \"admin\",\r\n icon: \"admin_panel_settings\",\r\n show: true,\r\n auth: true,\r\n AppAccess: ['planAdmin'],\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n hashId: false,\r\n },\r\n {\r\n path: \"templates\",\r\n name: \"templates\",\r\n alias: \"templates\",\r\n icon: \"smart_button\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n hashId: false,\r\n },\r\n {\r\n path: \"completed\",\r\n name: \"completed\",\r\n alias: \"completed\",\r\n icon: \"assignment_turned_in\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n hashId: false,\r\n },\r\n {\r\n path: \"trash\",\r\n name: \"trash\",\r\n alias: \"trash\",\r\n icon: \"recycling\",\r\n show: true,\r\n auth: true,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'units', 'status'],\r\n hashId: false,\r\n },\r\n {\r\n path: \"dashboard\",\r\n name: \"dashboard\",\r\n alias: \"home\",\r\n icon: \"dashboard\",\r\n show: true,\r\n auth: true,\r\n permission: 4,\r\n search: false,\r\n searchFields: [],\r\n hashId: true,\r\n templates: true,\r\n },\r\n {\r\n path: \"overview\",\r\n name: \"OVERVIEW\",\r\n alias: \"overview\",\r\n icon: \"select_all\",\r\n show: true,\r\n auth: true,\r\n permission: 4,\r\n search: false,\r\n hashId: true,\r\n templates: true,\r\n },\r\n {\r\n path: \"board\",\r\n name: \"board\",\r\n alias: \"board\",\r\n icon: \"view_week\",\r\n show: true,\r\n auth: true,\r\n permission: 3,\r\n search: false,\r\n hashId: true,\r\n templates: true,\r\n },\r\n {\r\n path: \"matrix\",\r\n name: \"MATRIX SWOT\",\r\n alias: \"matrix\",\r\n icon: Matrix,\r\n show: true,\r\n auth: true,\r\n permission: 3,\r\n hashId: true,\r\n templates: true,\r\n },\r\n {\r\n path: \"guidelines\",\r\n name: \"guidelines\",\r\n alias: \"guidelines\",\r\n icon: 'alt_route',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: false,\r\n hashId: true,\r\n },\r\n {\r\n path: \"objectives\",\r\n name: \"objectives\",\r\n alias: \"objectives\",\r\n icon: 'gps_fixed',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: false,\r\n hashId: true,\r\n },\r\n {\r\n path: \"goals\",\r\n name: \"goals\",\r\n alias: \"goals\",\r\n icon: 'flag',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: false,\r\n hashId: true,\r\n },\r\n {\r\n path: \"actions\",\r\n name: \"ACTIONS\",\r\n alias: \"actions\",\r\n icon: \"playlist_play\",\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: false,\r\n hashId: true,\r\n },\r\n {\r\n path: \"bright-and-connected\",\r\n name: \"feeds\",\r\n alias: \"feeds\",\r\n icon: 'menu_book',\r\n show: true,\r\n auth: true,\r\n permission: 3,\r\n hashId: true,\r\n templates: true,\r\n },\r\n {\r\n path: \"radar\",\r\n name: \"radar\",\r\n alias: \"radar\",\r\n icon: \"settings_input_antenna\",\r\n show: true,\r\n auth: true,\r\n permission: 3,\r\n hashId: true,\r\n templates: true,\r\n },\r\n {\r\n path: \"insight-boards\",\r\n name: \"INSIGHTS\",\r\n alias: \"insights\",\r\n icon: Ideas,\r\n show: true,\r\n auth: true,\r\n permission: 3,\r\n // search: true,\r\n // searchFields: ['tags', 'text'],\r\n hashId: true,\r\n templates: true,\r\n },\r\n {\r\n path: \"library\",\r\n name: \"library\",\r\n alias: \"library\",\r\n icon: \"folder\",\r\n show: true,\r\n auth: true,\r\n permission: 3,\r\n // search: true,\r\n // searchFields: ['text'],\r\n hashId: true,\r\n },\r\n ]\r\n },\r\n {\r\n path: \"/t\",\r\n name: \"Tasks\",\r\n alias: \"tasks\",\r\n component: MyTasks,\r\n icon: 'recent_actors',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n hashId: false,\r\n search: true,\r\n subMenu: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n tabs: [\r\n {\r\n path: \"myDay\",\r\n name: \"myDay\",\r\n alias: \"myDay\",\r\n icon: 'today',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"ourDay\",\r\n name: \"ourDay\",\r\n alias: \"ourDay\",\r\n icon: 'reduce_capacity',\r\n show: true,\r\n auth: true,\r\n permission: 3,\r\n AppAccess: ['planAdmin', 'planModerate'],\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"allTasks\",\r\n name: \"allTasks\",\r\n alias: \"allTasks\",\r\n icon: 'how_to_reg',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"myTasks\",\r\n name: \"myTasks\",\r\n alias: \"myTasks\",\r\n icon: 'admin_panel_settings',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"unreaded\",\r\n name: \"unreaded\",\r\n alias: \"unreaded\",\r\n icon: 'notifications_active',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"private\",\r\n name: \"private\",\r\n alias: \"private\",\r\n icon: 'private_connectivity',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"unlinkedCards\",\r\n name: \"unlinkedCards\",\r\n alias: \"unlinkedCards\",\r\n icon: 'link_off',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"lateTasks\",\r\n name: \"lateTasks\",\r\n alias: \"lateTasks\",\r\n icon: 'playlist_play',\r\n show: false,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n {\r\n path: \"nextTasks\",\r\n name: \"nextTasks\",\r\n alias: \"nextTasks\",\r\n icon: 'playlist_play',\r\n show: false,\r\n auth: true,\r\n permission: 1,\r\n search: true,\r\n searchFields: ['text', 'tags', 'users', 'plans', 'priority', 'units', 'groups', 'status', 'date'],\r\n },\r\n ]\r\n },\r\n {\r\n path: \"/tags\",\r\n name: \"Tags\",\r\n alias: \"Tags\",\r\n component: Tags,\r\n icon: 'turned_in',\r\n show: true,\r\n auth: true,\r\n // search: true,\r\n // subMenu: true,\r\n permission: 1,\r\n },\r\n {\r\n path: \"/plataformAdministrator\",\r\n name: \"BackOffice\",\r\n alias: 'BackOffice',\r\n icon: 'business',\r\n component: BackOffice,\r\n access: ['_isDeveloper'],\r\n show: true,\r\n auth: true,\r\n search: true,\r\n tabs: [\r\n {\r\n path: \"versions\",\r\n name: \"versions\",\r\n alias: \"versions\",\r\n icon: \"app_registration\",\r\n show: true\r\n },\r\n {\r\n path: \"accounts\",\r\n name: \"accounts\",\r\n alias: \"accounts\",\r\n icon: \"account_box\",\r\n show: true\r\n },\r\n {\r\n path: \"languages\",\r\n name: \"languages\",\r\n alias: \"languages\",\r\n icon: 'translate',\r\n show: true\r\n },\r\n {\r\n path: \"feeds\",\r\n name: \"feeds\",\r\n alias: \"feeds\",\r\n icon: \"rss_feed\",\r\n show: true\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/masterAdmin\",\r\n name: \"masterAdmin\",\r\n alias: 'masterAdmin',\r\n icon: 'admin_panel_settings',\r\n component: MasterAdmin,\r\n show: false,\r\n access: ['_isAdmin'],\r\n auth: true,\r\n search: false,\r\n tabs: [\r\n {\r\n path: \"accounts\",\r\n name: \"accounts\",\r\n alias: \"accounts\",\r\n icon: \"account_box\",\r\n show: true\r\n },\r\n {\r\n path: \"languages\",\r\n name: \"languages\",\r\n alias: \"languages\",\r\n icon: 'translate',\r\n show: true\r\n },\r\n {\r\n path: \"feeds\",\r\n name: \"feeds\",\r\n alias: \"feeds\",\r\n icon: \"rss_feed\",\r\n show: true\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/notifications\",\r\n name: \"Notifications\",\r\n alias: 'Notifications',\r\n icon: 'notifications',\r\n component: Notifications,\r\n show: false,\r\n auth: true,\r\n },\r\n {\r\n collapse: true,\r\n name: \"Pages\",\r\n icon: 'image',\r\n state: \"pageCollapse\",\r\n show: false,\r\n views: [\r\n {\r\n path: \"/activate\",\r\n name: \"Activate User\",\r\n mini: \"AU\",\r\n component: ActivateUserPage,\r\n show: true,\r\n auth: false\r\n },\r\n {\r\n path: \"/login\",\r\n name: \"Login Page\",\r\n mini: \"L\",\r\n component: LoginPage,\r\n show: true,\r\n auth: false\r\n },\r\n {\r\n path: \"/register\",\r\n name: \"Register Page\",\r\n mini: \"R\",\r\n component: RegisterPage,\r\n show: true,\r\n auth: false\r\n },\r\n {\r\n path: \"/error-page\",\r\n name: \"Error Page\",\r\n mini: \"E\",\r\n component: ErrorPage,\r\n show: true,\r\n auth: true\r\n },\r\n {\r\n path: \"/maintenance-mode\",\r\n name: \"Maintenance Mode\",\r\n mini: \"E\",\r\n component: MaintenancePage,\r\n show: false,\r\n auth: false\r\n },\r\n {\r\n path: \"/offline-detect\",\r\n name: \"Offline detect\",\r\n mini: \"O\",\r\n component: OfflinePage,\r\n show: false,\r\n auth: false\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/calendar\",\r\n name: \"Calendar\",\r\n icon: 'date_range',\r\n component: Calendar,\r\n show: true,\r\n auth: true,\r\n search: true,\r\n subMenu: true,\r\n permission: 1,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'risk', 'complexity', 'impact', 'groups', 'status'],\r\n },\r\n {\r\n path: \"/profile\",\r\n name: \"Profile\",\r\n icon: 'date_range',\r\n component: Profile,\r\n show: true,\r\n auth: true,\r\n // search: true,\r\n // subMenu: true,\r\n permission: 0,\r\n // searchFields: ['text', 'tags', 'users', 'priority', 'risk', 'complexity', 'impact', 'groups', 'status'],\r\n },\r\n {\r\n path: \"/plans\",\r\n name: \"Plans\",\r\n icon: 'date_range',\r\n alias: \"plans\",\r\n component: Plans,\r\n show: false,\r\n auth: true,\r\n // search: true,\r\n // subMenu: true,\r\n permission: 0,\r\n // searchFields: ['text', 'tags', 'users', 'priority', 'risk', 'complexity', 'impact', 'groups', 'status'],\r\n },\r\n {\r\n path: \"/enterprise\",\r\n name: \"Enterprise\",\r\n icon: 'date_range',\r\n component: ProfileEnterprise,\r\n show: true,\r\n auth: true,\r\n search: true,\r\n subMenu: true,\r\n permission: 1,\r\n searchFields: ['text', 'tags', 'users', 'priority', 'risk', 'complexity', 'impact', 'groups', 'status'],\r\n },\r\n {\r\n path: \"/acc\",\r\n name: \"Account\",\r\n icon: 'business',\r\n alias: \"account\",\r\n component: Account,\r\n show: true,\r\n auth: true,\r\n subMenu: true,\r\n permission: 1,\r\n AppAccess: ['planAdmin'],\r\n tabs: [\r\n {\r\n path: \"resume\",\r\n name: \"resume\",\r\n alias: \"resume\",\r\n icon: 'home',\r\n show: true,\r\n auth: true,\r\n AppAccess: ['planAdmin'],\r\n },\r\n {\r\n path: \"profile\",\r\n name: \"profile\",\r\n alias: \"profile\",\r\n icon: 'badge',\r\n show: true,\r\n auth: true,\r\n AppAccess: ['masterAdmin'],\r\n },\r\n {\r\n path: \"whiteLabel\",\r\n name: \"whiteLabel\",\r\n alias: \"whiteLabel\",\r\n icon: 'palette',\r\n show: true,\r\n auth: true,\r\n AppAccess: ['masterAdmin'],\r\n accountHas: ['whiteLabel']\r\n },\r\n {\r\n path: \"integrations\",\r\n name: \"integrations\",\r\n alias: \"plataformsIntegrations\",\r\n icon: 'integration_instructions',\r\n show: true,\r\n auth: true,\r\n AppAccess: ['masterAdmin'],\r\n },\r\n // {\r\n // path: \"invoicing\",\r\n // name: \"invoicing\",\r\n // alias: \"invoicing\",\r\n // icon: 'payment',\r\n // show: true,\r\n // auth: true,\r\n // AppAccess: ['masterAdmin'],\r\n // },\r\n ]\r\n },\r\n {\r\n path: \"/library\",\r\n name: \"library\",\r\n alias: \"library\",\r\n component: Library,\r\n icon: 'folder',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n hashId: false,\r\n // search: true,\r\n // subMenu: true,\r\n // searchFields: ['text'],\r\n },\r\n {\r\n path: \"/subscriptionUpgrade\",\r\n name: \"subscriptionUpgrade\",\r\n alias: \"subscriptionUpgrade\",\r\n component: SubscriptionUpgrade,\r\n icon: 'upgrade',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n hashId: false,\r\n },\r\n {\r\n path: \"/deniedAccess\",\r\n name: \"deniedAccess\",\r\n alias: \"deniedAccess\",\r\n component: DeniedAccess,\r\n icon: 'upgrade',\r\n show: true,\r\n auth: true,\r\n permission: 1,\r\n hashId: false,\r\n }\r\n]\r\n\r\nexport default dashRoutes","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst styles = (theme) => ({\r\n ...defaultFont,\r\n menu: {\r\n position: 'relative',\r\n borderRight: customApp('color'),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n menuExpanded: {\r\n position: 'relative',\r\n borderRight: customApp('color'),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"baseline\",\r\n },\r\n button: {\r\n padding: '7px 0px',\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n },\r\n buttonExpanded: {\r\n padding: '7px 0px',\r\n display: \"flex\",\r\n justifyContent: \"left\",\r\n width: \"100%\"\r\n },\r\n buttonColor: {\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% + 20px)',\r\n padding: '20px 12px',\r\n marginLeft: '-12px',\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n backgroundColor: customApp('color')\r\n },\r\n buttonColorExpanded: {\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% + 20px)',\r\n padding: '12px 12px 12px 20px',\r\n marginLeft: '-12px',\r\n display: \"flex\",\r\n backgroundColor: customApp('color')\r\n },\r\n separator: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n padding: '7px',\r\n borderTop: `1px solid ${customApp('medium', 0.5)}`,\r\n marginTop: '15px',\r\n marginBottom: '0px',\r\n height: '1px'\r\n }\r\n});\r\n\r\nexport default styles;\r\n","// ID_CREATED*************************\r\n\r\n//CORE\r\nimport React from \"react\";\r\nimport Routes from \"routes\";\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\nimport history from \"store/history\";\r\n\r\n//COMPONENTS\r\nimport HtmlTooltip from \"components/Tooltip/html\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport MoreMenu from \"components/MoreMenu/\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp,\r\n getAppAccess,\r\n} from \"functions/\";\r\n\r\nimport { getUserAccess } from \"functions/cards\"\r\n\r\nimport {\r\n loadCards\r\n} from \"functions/loadData\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sidebar-submenu\";\r\n\r\n//IMAGES\r\nimport defaultAvatar from \"assets/img/fundo-sonne.png\"\r\n\r\nfunction SubMenuSideBar(props) {\r\n const { db, search, session } = reduxStore.getState();\r\n const [expandingCards, setExpandingCards] = React.useState(false);\r\n const [adminViewLoading, setAdminViewLoading] = React.useState(false);\r\n const useStyles = makeStyles(styles);\r\n const classes = useStyles();\r\n const locationPathName = window.location.pathname.split(\"/\");\r\n const pathName = `/${locationPathName[1]}`;\r\n const expanded = props.expanded\r\n\r\n React.useEffect(() => {\r\n if (search && search.users && search.users.selected && Object.keys(search.users.selected).filter(a => search.users.selected[a] === true).length > 0) {\r\n\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n cards: {\r\n ...reduxStore.getState().session.cards,\r\n adminViewLoader: false,\r\n adminView: false\r\n }\r\n });\r\n }\r\n return () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n viewList: false,\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [search.users.selected])\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n\r\n const pageBase = `${pathName}#${hashs[0] ? hashs[0] : \"tab\"}`\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n const expandingAllCards = (v) => {\r\n setExpandingCards(v)\r\n let cards = reduxStore.getState().db.cards\r\n Object.keys(cards).forEach(a => {\r\n if (v && cards[a] && !cards[a]._expanded)\r\n cards[a][\"_expanded\"] = v\r\n if (!v && cards[a] && cards[a]._expanded)\r\n cards[a]._expanded = v\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cardsExpanded: v,\r\n cards: cards\r\n })\r\n }\r\n\r\n const setAdminView = async (enabled) => {\r\n //CREAT A CONDITION USERS TO ADMINVIEW - Precisa estar ao menos com um usuário selecionado para ativar modo ADMIN ***************************************************\r\n setAdminViewLoading(true)\r\n if (!reduxStore.getState().session.cards.adminViewLoader) {\r\n const response = await loadCards(props, null, true)\r\n if (reduxStore.getState().session.cards.adminViewLoader || response) {\r\n setAdminViewLoading(false)\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n cards: {\r\n ...reduxStore.getState().session.cards,\r\n adminViewLoader: true,\r\n adminView: !reduxStore.getState().session.cards.adminView\r\n }\r\n });\r\n }\r\n } else {\r\n setAdminViewLoading(false)\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n cards: {\r\n ...reduxStore.getState().session.cards,\r\n adminViewLoader: true,\r\n adminView: !reduxStore.getState().session.cards.adminView\r\n }\r\n });\r\n }\r\n }\r\n\r\n const openPage = (page) => {\r\n history.push(page)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n {/* {console.log(xs.a.b.c.d.e.f)} //ERRORBOUNDARY TEST ERROR */}\r\n <div className={expanded ? classes.menuExpanded : classes.menu} >\r\n <div className={expanded ? classes.buttonExpanded : classes.button}>\r\n <IconButton\r\n icon={expanded ? \"menu_open\" : \"read_more\"}\r\n text={expanded ? translate(\"$__collapsingMenu\", 1) : null}\r\n title={!expanded ? translate(\"$__expandingMenu\", 1) : null}\r\n iconColor={customApp(\"subMenuTextColor\")}\r\n textColor={customApp(\"subMenuTextColor\")}\r\n onClick={() => {\r\n props.subMenuExpanded(!expanded)\r\n }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n {(window.location.pathname === \"/files\" || window.location.pathname === \"/t\" || window.location.pathname === \"/d\" || (window.location.pathname === \"/sp\" && hashs[0] && hashs[0].length === 36)) &&\r\n <React.Fragment>\r\n {!expandingCards ?\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n id={`sideBar_subMenu_options_expandingCards`}\r\n >\r\n <IconButton\r\n text={expanded ? translate(\"$__expandingCards\", 1) : null}\r\n textColor={customApp(\"subMenuTextColor\")}\r\n title={!expanded ? translate(\"$__expandingCards\", 1) : null}\r\n icon=\"open_in_full\"\r\n iconColor={customApp(\"subMenuTextColor\")}\r\n onClick={() => { expandingAllCards(true) }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n :\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n id={`sideBar_subMenu_options_collapseCards`}\r\n >\r\n <IconButton\r\n text={expanded ? translate(\"$__collapseCards\", 1) : null}\r\n textColor={customApp(\"subMenuTextColor\")}\r\n title={!expanded ? translate(\"$__collapseCards\", 1) : null}\r\n icon=\"close_fullscreen\"\r\n iconColor={customApp(\"subMenuTextColor\")}\r\n onClick={() => { expandingAllCards(false) }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n }\r\n </React.Fragment>\r\n }\r\n {(\r\n (\r\n (\r\n pathName === \"/d\"\r\n && hashs[1] === \"dayTasks\"\r\n )\r\n ||\r\n (\r\n pathName === \"/t\"\r\n && search\r\n && search.users\r\n && search.users.selected\r\n && Object.keys(search.users.selected).filter(a => search.users.selected[a] === true).length > 0\r\n )\r\n ||\r\n (\r\n pathName === \"/sp\"\r\n && !hashs[0]\r\n )\r\n )\r\n && AppAccess\r\n &&\r\n (\r\n AppAccess.owner\r\n ||\r\n (\r\n AppAccess.plan\r\n &&\r\n (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n ) &&\r\n <div className={expanded ? classes.buttonExpanded : classes.button}\r\n style={{\r\n display: \"flex\"\r\n }}>\r\n {adminViewLoading ?\r\n <CircularProgress size={25} style={{ margin: \"auto\", display: \"flex\" }} /> // </div>\r\n :\r\n <IconButton\r\n text={expanded ? translate(\"$__adminViewDescription\", 1) : null}\r\n title={!expanded ? translate(\"$__adminViewDescription\", 1) : null}\r\n textColor={reduxStore.getState().session.cards.adminView ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n iconColor={reduxStore.getState().session.cards.adminView ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n icon=\"groups\"\r\n id={`sideBar_subMenu_options_setAdminView`}\r\n onClick={() => {\r\n setAdminView()\r\n }}\r\n size={\"21px\"}\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n {window.location.pathname === \"/t\" &&\r\n <React.Fragment>\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n id={`sideBar_subMenu_options_setAdminView`}\r\n >\r\n <IconButton\r\n text={expanded ? translate(\"$__viewInColumns\", 1) : null}\r\n textColor={!db.viewList ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n iconColor={!db.viewList ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n title={!expanded ? translate(\"$__viewInColumns\", 1) : null}\r\n icon=\"view_column\"\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n viewList: false,\r\n })\r\n }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n id={`sideBar_subMenu_options_viewInList`}\r\n >\r\n <IconButton\r\n text={expanded ? translate(\"$__viewInList\", 1) : null}\r\n title={!expanded ? translate(\"$__viewInList\", 1) : null}\r\n icon=\"list\"\r\n iconColor={db.viewList ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n textColor={db.viewList ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n viewList: true,\r\n })\r\n }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n </React.Fragment>\r\n }\r\n {\r\n <React.Fragment>\r\n <div\r\n className={classes.separator}\r\n ></div>\r\n {hashs[0] && hashs[0].length === 36 && db.cards[hashs[0]] &&\r\n <div\r\n style={{ zIndex: 1 }}\r\n id={`sideBar_subMenu_plan_infos`}\r\n >\r\n <PlanInfo\r\n expanded={expanded}\r\n {...props}\r\n />\r\n </div>\r\n }\r\n\r\n {Routes.filter(a => a.path === pathName).length > 0\r\n && Routes.filter(a => a.path === pathName)[0].tabs\r\n && Routes.filter(a => a.path === pathName)[0].tabs.length > 0\r\n && ((Routes.filter(a => a.path === pathName)[0].hashId && hashs[0] && hashs[0].length === 36) || !Routes.filter(a => a.path === pathName)[0].hashId) &&\r\n <React.Fragment>\r\n {Routes.filter(a =>\r\n a.path === pathName\r\n )[0].tabs.filter(a =>\r\n (\r\n (\r\n (\r\n !a.hashId\r\n && (\r\n !hashs[0]\r\n ||\r\n (\r\n hashs[0]\r\n && hashs[0].length < 36\r\n )\r\n )\r\n )\r\n ||\r\n (a.hashId\r\n && hashs[0]\r\n && hashs[0].length === 36\r\n )\r\n )\r\n )\r\n )\r\n .filter((a, i) => {\r\n let render = false\r\n let plan = hashs[0] && hashs[0].length === 36 ? db.cards[hashs[0]] : null\r\n if (a && a.AppAccess && a.AppAccess.length > 0) {\r\n a.AppAccess.forEach(acc => {\r\n if (AppAccess[acc])\r\n render = true\r\n })\r\n } else if (\r\n a && !a.AppAccess\r\n )\r\n render = true\r\n\r\n if (plan\r\n && plan.isTemplate\r\n && !a.templates\r\n )\r\n render = false\r\n\r\n if (a\r\n && a.AppAccess\r\n && a.AppAccess.planAdmin\r\n && !(\r\n AppAccess\r\n && AppAccess.plan\r\n && AppAccess.planAdmin\r\n )\r\n )\r\n render = false\r\n\r\n if (\r\n plan\r\n && plan.planType\r\n && (\r\n a.alias === \"matrix\"\r\n || a.alias === \"guidelines\"\r\n || a.alias === \"objectives\"\r\n || a.alias === \"goals\"\r\n )\r\n )\r\n render = false\r\n\r\n if (\r\n plan\r\n && a.alias === \"board\"\r\n && (\r\n !plan.planType\r\n ||\r\n (plan.planType\r\n && plan.planType !== 'operational'\r\n )\r\n )\r\n )\r\n render = false\r\n if (\r\n plan\r\n && a.alias === \"matrix\"\r\n && plan.planType\r\n )\r\n render = false\r\n if (\r\n plan\r\n && plan.planType === \"operational\"\r\n && a.alias === 'overview'\r\n )\r\n render = false\r\n\r\n if (a.accountHas && a.accountHas.filter(a => session[a]).length === 0)\r\n render = false\r\n\r\n if (\r\n (\r\n AppAccess.owner\r\n ||\r\n (\r\n AppAccess\r\n && AppAccess.enabled\r\n && render\r\n )\r\n )\r\n && a.show\r\n )\r\n return true\r\n return false\r\n })\r\n .map((a, i) => {\r\n return (\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n key={i}\r\n id={`sideBar_subMenu_plan_${a.alias}`}\r\n >\r\n <IconButton\r\n text={expanded ? a.alias === \"matrix\" ? \"MATRIX SWOT\" : translate(`$__${a.alias}`, 1) : null}\r\n title={!expanded ? a.alias === \"matrix\" ? \"MATRIX SWOT\" : translate(`$__${a.alias}`, 1) : null}\r\n icon={a.icon}\r\n iconColor={hashs[1] === a.path ? customApp(\"subMenuTextColorActive\") : customApp(\"subMenuTextColor\")}\r\n textColor={hashs[1] === a.path ? customApp(\"subMenuTextColorActive\") : customApp(\"subMenuTextColor\")}\r\n onClick={() => {\r\n openPage(`${pageBase}/${a.path}`)\r\n }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n )\r\n\r\n }\r\n )}\r\n </React.Fragment>\r\n }\r\n {hashs[0] && hashs[0].length === 36 && db.cards[hashs[0]] && db.cards[hashs[0]].miroBoard &&\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n id={`sideBar_subMenu_plan_miroBoard`}\r\n >\r\n <IconButton\r\n text={expanded ? translate(\"$__planningBoard\", 1) : null}\r\n title={!expanded ? translate(\"$__planningBoard\", 1) : null}\r\n icon={'developer_board'}\r\n iconColor={hashs[1] === 'planningBoard' ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n textColor={hashs[1] === 'planningBoard' ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n onClick={() => {\r\n openPage(`${pageBase}/${'planningBoard'}`)\r\n }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n }\r\n {\r\n window.location.pathname === \"/t\" &&\r\n <React.Fragment>\r\n <div\r\n className={classes.separator}\r\n ></div>\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n id={\"sideBar_subMenu_lastTasks\"}\r\n >\r\n <IconButton\r\n text={expanded ? translate(\"$__lateTasks\", 1) : null}\r\n title={!expanded ? translate(\"$__lateTasks\", 1) : null}\r\n icon=\"event_busy\"\r\n iconColor={hashs[1] === \"late\" ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n textColor={hashs[1] === \"late\" ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n onClick={() => {\r\n history.push(\"t#tab/lateTasks\")\r\n }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n <div\r\n className={expanded ? classes.buttonExpanded : classes.button}\r\n id={\"sideBar_subMenu_nextTasks\"}\r\n >\r\n <IconButton\r\n text={expanded ? translate(\"$__nextTasks\", 1) : null}\r\n title={!expanded ? translate(\"$__nextTasks\", 1) : null}\r\n icon=\"date_range\"\r\n iconColor={hashs[1] === \"nextTasks\" ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n textColor={hashs[1] === \"nextTasks\" ? customApp(\"color\") : customApp(\"subMenuTextColor\")}\r\n onClick={() => {\r\n history.push(\"t#tab/nextTasks\")\r\n }}\r\n size={\"21px\"}\r\n />\r\n </div>\r\n </React.Fragment>\r\n }\r\n </React.Fragment>\r\n }\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst PlanInfo = (props) => {\r\n const { db } = reduxStore.getState();\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = hashs[0] && hashs[0].length === 36 && db.cards[hashs[0]] && db.cards[hashs[0]].type === \"plan\" ? getUserAccess(hashs[0]) : null\r\n\r\n let image = hashs && hashs.length > 0 && hashs[0].length === 36 && db.cards[hashs[0]] && db.cards[hashs[0]].image ? db.cards[hashs[0]].image : defaultAvatar\r\n\r\n let planOptions = []\r\n if (db.cards[hashs[0]] && db.cards[hashs[0]].client && Object.keys(db.cards).filter(card => !db.cards[card].deleted && db.cards[card].client && db.cards[card].client === db.cards[hashs[0]].client).length > 1)\r\n Object\r\n .keys(db.cards)\r\n .filter(card =>\r\n !db.cards[card].deleted\r\n && db.cards[card].client === db.cards[hashs[0]].client\r\n && db.cards[card].type === 'plan'\r\n )\r\n .forEach(card => {\r\n planOptions.push({\r\n name: db.cards[card].name,\r\n ...db.cards[card].image ? { avatar: db.cards[card].image } : { icon: 'view_comfy' },\r\n onClick: () => {\r\n history.push(`sp#${db.cards[card]._id}/dashboard`)\r\n }\r\n })\r\n })\r\n return (\r\n <HtmlTooltip title={\r\n <React.Fragment>\r\n {db.cards[hashs[0]].name}\r\n </React.Fragment>\r\n } >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"left\",\r\n alignItems: \"center\",\r\n ...((CardAccess && parseInt(CardAccess) > 3) || AppAccess.owner || AppAccess.planAdmin || AppAccess.planEdit || AppAccess.planModerate) ?\r\n { cursor: 'pointer' } : {}\r\n }\r\n }\r\n id={\"plan_identification\"}\r\n onClick={() => {\r\n if ((CardAccess && parseInt(CardAccess) > 3) || AppAccess.owner || AppAccess.planAdmin || AppAccess.planEdit || AppAccess.planModerate)\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: 'cards',\r\n id: hashs[0],\r\n module: \"cardEdit\",\r\n activeModule: 'cardEdit',\r\n data: db.cards[hashs[0]],\r\n })\r\n\r\n }\r\n }\r\n >\r\n <div\r\n style={{\r\n width: \"30px\",\r\n height: \"30px\",\r\n backgroundColor: \"black\",\r\n marginLeft: \"7px\",\r\n marginRight: \"3px\",\r\n borderRadius: \"11px\",\r\n backgroundImage: `url(\"${image}\")`,\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\"\r\n }}></div>\r\n {props.expanded &&\r\n <div style={{ width: \"100%\", zIndex: 1 }}>\r\n {db.cards[hashs[0]].client\r\n && db.users[db.cards[hashs[0]].client] &&\r\n <div\r\n style={{\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n marginLeft: \"15px\"\r\n }}>\r\n {db.users[db.cards[hashs[0]].client].name}\r\n </div>\r\n }\r\n <div\r\n style={{\r\n fontSize: \"12px\",\r\n marginLeft: \"7px\",\r\n maxWidth: \"calc(100% - 60px)\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }}\r\n id={\"client_plan_switch\"}\r\n >\r\n {planOptions.length === 0 ?\r\n db.cards[hashs[0]].name\r\n :\r\n <MoreMenu\r\n text={db.cards[hashs[0]].name}\r\n icon={'change_circle'}\r\n transparent\r\n maxWidth=\"200px\"\r\n options={planOptions}\r\n />\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </HtmlTooltip>\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(SubMenuSideBar)","//CORE\r\nimport React, { useCallback, useMemo, useState } from \"react\";\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\nimport history from \"store/history\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\nimport ChatCountIcon from \"components/Chat/countIcon\";\r\nimport SubMenu from \"./subMenu\";\r\nimport ErrorBoundary from \"components/ErrorBoundary\";\r\nimport HtmlTooltip from \"components/Tooltip/html\"; // Adicionando HtmlTooltip para tooltips mais elegantes\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//IMAGES\r\nimport Bright from \"assets/icons/BrigthAndConnected\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/sidebarInteractive.js\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nimport packageJson from \"./../../../package.json\";\r\nrequire(\"dotenv\").config();\r\n\r\nfunction Component(props) {\r\n const { classes } = props;\r\n const [viewModule, setViewModule] = useState(null);\r\n\r\n // Verificar recursos disponíveis do usuário\r\n const { session } = reduxStore.getState();\r\n\r\n let platformFeatures = {\r\n ...session?.features,\r\n support: true\r\n } || {};\r\n\r\n if (session.account === \"7806912b-4c7d-4f4f-b9e0-b93fc8f08776\")\r\n platformFeatures = {\r\n StrategyAndPlans: true,\r\n library: true,\r\n tags: true,\r\n calendar: true,\r\n chat: true,\r\n brightAndConnected: true,\r\n support: true\r\n }\r\n\r\n // Determina quais itens estão bloqueados com base nos recursos da plataforma\r\n const determineBlockedItems = () => {\r\n const blocked = [];\r\n\r\n // Mapeamento entre recursos da plataforma e itens do menu\r\n const featureToMenuMap = {\r\n 'StrategyAndPlans': 'StrategyAndPlans',\r\n 'library': 'library',\r\n 'tags': 'tags',\r\n 'calendar': 'calendar',\r\n 'chat': 'chat',\r\n 'brightAndConnected': 'bright-and-connected',\r\n 'support': 'support'\r\n };\r\n\r\n // Verifica cada recurso e adiciona à lista de bloqueados se não estiver ativo\r\n Object.entries(featureToMenuMap).forEach(([feature, menuItem]) => {\r\n if (!platformFeatures[feature]) {\r\n blocked.push(menuItem);\r\n }\r\n });\r\n\r\n return blocked;\r\n };\r\n\r\n // Lista de itens bloqueados com base nos recursos disponíveis\r\n const blockedItems = props.blockedMenuItems || determineBlockedItems();\r\n\r\n // Memoriza os valores do hash da URL\r\n const hashs = useMemo(() => {\r\n const parts = window.location.hash.split(\"/\");\r\n parts[0] = parts[0].replace(\"#\", \"\");\r\n return parts;\r\n }, []);\r\n\r\n // Cores e estilos comuns\r\n const menuButtonColor = customApp(\"menuButtonColor\");\r\n const menuColor = customApp(\"menuColor\");\r\n const commonIconStyle = { marginBottom: \"0px\", marginRight: \"7px\" };\r\n const primaryColor = customApp(\"color\");\r\n\r\n // Função auxiliar para determinar a classe ativa com base no pathname\r\n const getItemClass = (activePath) =>\r\n window.location.pathname === activePath ? classes.itemButtomActive : classes.itemButtom;\r\n\r\n // Encapsula a lógica de navegação e definição de módulos\r\n const openModule = useCallback(\r\n async (route, vm) => {\r\n if (props.subMenuExpanded) {\r\n props.setSubMenuExpanded(false);\r\n }\r\n // Se a rota for diferente da atual ou o módulo for \"chat\", navega\r\n if (route && (window.location.pathname !== route || vm === viewModule)) {\r\n history.push(route);\r\n }\r\n if (vm === \"chat\") {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...reduxStore.getState().chat,\r\n open: true,\r\n });\r\n } else {\r\n setViewModule(vm);\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...reduxStore.getState().chat,\r\n open: false,\r\n });\r\n }\r\n },\r\n [props, viewModule]\r\n );\r\n\r\n // Renderiza o conteúdo do tooltip premium\r\n const renderPremiumTooltip = (feature) => {\r\n return (\r\n <div style={{ padding: '10px', maxWidth: '250px' }}>\r\n <div style={{ fontWeight: 'bold', fontSize: '14px', marginBottom: '8px', color: primaryColor }}>\r\n Recurso Premium\r\n </div>\r\n <div style={{ fontSize: '13px', color: '#555' }}>\r\n Para acessar {feature}, você precisa assinar um plano premium.\r\n </div>\r\n <div style={{\r\n marginTop: '10px',\r\n padding: '6px 12px',\r\n backgroundColor: primaryColor,\r\n color: 'white',\r\n borderRadius: '4px',\r\n display: 'inline-block',\r\n fontSize: '12px',\r\n cursor: 'pointer'\r\n }}\r\n onClick={() => history.push('/plans')}\r\n >\r\n Ver planos disponíveis\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n // Componente auxiliar para renderizar itens do menu\r\n const renderMenuItem = (menuId, route, vm, icon, label, activePath) => {\r\n const isBlocked = blockedItems.includes(vm);\r\n const itemClass = getItemClass(activePath);\r\n const handleClick = () => {\r\n if (!isBlocked) {\r\n openModule(route, vm);\r\n }\r\n };\r\n\r\n const content = (\r\n <div\r\n className={itemClass}\r\n onClick={handleClick}\r\n style={{\r\n color: menuButtonColor,\r\n cursor: isBlocked ? \"default\" : \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n width: \"100%\",\r\n textDecoration: isBlocked ? 'underlined' : 'none',\r\n justifyContent: \"space-between\",\r\n fontSize: \"11px\",\r\n opacity: isBlocked ? 0.6 : 1,\r\n }}\r\n >\r\n <div style={{\r\n whiteSpace: \"nowrap\",\r\n display: \"flex\"\r\n }}>\r\n <Icon\r\n icon={icon}\r\n badgeColor=\"primary\"\r\n color=\"parent\"\r\n badgeVisible\r\n size=\"21px\"\r\n style={commonIconStyle}\r\n />\r\n {label}\r\n </div>\r\n {isBlocked && (\r\n <Icon\r\n icon=\"lock\"\r\n color=\"inherit\"\r\n size=\"16px\"\r\n style={{ marginLeft: \"4px\", float: \"right\" }}\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={classes.item} id={`sideBar_button_${menuId}`} style={{ width: \"100%\" }}>\r\n {isBlocked ? (\r\n <HtmlTooltip\r\n title={renderPremiumTooltip(label)}\r\n placement=\"right\"\r\n interactive\r\n >\r\n <div style={{ width: \"100%\" }}>{content}</div>\r\n </HtmlTooltip>\r\n ) : (\r\n content\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n // Renderiza item do Chat (função especial, pois o comportamento é de toggle)\r\n const renderChatItem = () => {\r\n const isBlocked = blockedItems.includes(\"chat\");\r\n const chatOpen = reduxStore.getState().chat.open;\r\n const itemClass = chatOpen ? classes.itemButtomActive : classes.itemButtom;\r\n const handleClick = () => {\r\n if (!isBlocked) {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...reduxStore.getState().chat,\r\n open: !chatOpen,\r\n });\r\n }\r\n };\r\n\r\n const content = (\r\n <div\r\n className={itemClass}\r\n onClick={handleClick}\r\n style={{\r\n color: menuButtonColor,\r\n cursor: isBlocked ? \"default\" : \"pointer\",\r\n opacity: isBlocked ? 0.6 : 1,\r\n }}\r\n >\r\n <ChatCountIcon>\r\n <Icon\r\n icon=\"chat\"\r\n color=\"parent\"\r\n title=\"$__chat\"\r\n size=\"21px\"\r\n style={commonIconStyle}\r\n />\r\n </ChatCountIcon>\r\n {translate(\"$__chat\", \"*\")}\r\n {isBlocked && (\r\n <Icon\r\n icon=\"lock\"\r\n color=\"inherit\"\r\n size=\"16px\"\r\n style={{ marginLeft: \"4px\" }}\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={classes.item} id=\"sideBar_button_chat\">\r\n {isBlocked ? (\r\n <HtmlTooltip\r\n title={renderPremiumTooltip(\"Chat\")}\r\n placement=\"right\"\r\n interactive\r\n >\r\n <div>{content}</div>\r\n </HtmlTooltip>\r\n ) : (\r\n content\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n // Renderiza item de Support (abre link externo)\r\n const renderSupportItem = () => {\r\n const isBlocked = blockedItems.includes(\"support\");\r\n const handleClick = () => {\r\n if (!isBlocked) {\r\n window.open(\"https://support.machen.ai\", \"_blank\");\r\n }\r\n };\r\n\r\n const content = (\r\n <div\r\n className={classes.itemButtom}\r\n onClick={handleClick}\r\n style={{\r\n color: menuButtonColor,\r\n cursor: isBlocked ? \"default\" : \"pointer\",\r\n opacity: isBlocked ? 0.6 : 1,\r\n }}\r\n >\r\n <Icon\r\n icon=\"help_outline\"\r\n badgeColor=\"primary\"\r\n color=\"parent\"\r\n badgeVisible\r\n title={translate(\"$__support\")}\r\n size=\"21px\"\r\n style={commonIconStyle}\r\n />\r\n {translate(\"$__support\", \"*\")}\r\n {isBlocked && (\r\n <Icon\r\n icon=\"lock\"\r\n color=\"inherit\"\r\n size=\"16px\"\r\n style={{ marginLeft: \"4px\" }}\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div className={classes.item} id=\"sideBar_button_support\">\r\n {isBlocked ? (\r\n <HtmlTooltip\r\n title={renderPremiumTooltip(\"Suporte\")}\r\n placement=\"right\"\r\n interactive\r\n >\r\n <div>{content}</div>\r\n </HtmlTooltip>\r\n ) : (\r\n content\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <ErrorBoundary info={{ path: \"components/Sidebar/Index\" }}>\r\n <div className={classes.root}>\r\n <div\r\n className={classes.bar}\r\n id=\"sideBar\"\r\n style={{ background: menuColor }}\r\n >\r\n {/* Área do logo */}\r\n <div\r\n className={classes.logoMini}\r\n id=\"sideBar_logoMini\"\r\n style={{\r\n width: \"100%\",\r\n justifyContent: \"space-between\",\r\n display: \"flex\",\r\n cursor: \"pointer\",\r\n color: menuButtonColor,\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundImage: `url(\"${customApp(\"customLogo\")}\")`,\r\n width: \"calc(100% - 70px)\",\r\n height: \"auto\",\r\n marginLeft: \"15px\",\r\n minHeight: \"min-content\",\r\n cursor: \"pointer\",\r\n paddingTop: \"33%\",\r\n backgroundPosition: \"center center\",\r\n backgroundSize: \"contain\",\r\n backgroundRepeat: \"no-repeat\",\r\n }}\r\n onClick={() => openModule(\"/d#tab/resume\", \"dashboard\")}\r\n />\r\n <div\r\n style={{ padding: \"7px\", marginRight: \"7px\", cursor: \"pointer\" }}\r\n onClick={props.menuExpand}\r\n id=\"sideBar_button_hideMenu\"\r\n >\r\n <Icon icon=\"menu\" color=\"parent\" title=\"$__hideMenu\" size=\"22px\" />\r\n </div>\r\n </div>\r\n\r\n {/* Itens do menu */}\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: \"100px\",\r\n bottom: \"0px\",\r\n overflowX: \"auto\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {renderMenuItem(\r\n \"dashboard\",\r\n \"/d#tab/resume\",\r\n \"dashboard\",\r\n \"dashboard\",\r\n translate(\"$__dashboard\", \"*\"),\r\n \"/d\"\r\n )}\r\n {renderMenuItem(\r\n \"brightAndConnected\",\r\n \"/bright-and-connected#tab/home\",\r\n \"bright-and-connected\",\r\n Bright,\r\n \"BRIGHT & CONNECTED\",\r\n \"/bright-and-connected\"\r\n )}\r\n {renderMenuItem(\r\n \"StrategyAndPlans\",\r\n \"/sp#tab/home\",\r\n \"StrategyAndPlans\",\r\n \"view_comfy\",\r\n translate(\"$__StrategyAndPlans\", \"*\"),\r\n \"/sp\"\r\n )}\r\n {renderMenuItem(\r\n \"myTasks\",\r\n \"/t#tab/myTasks\",\r\n \"myTasks\",\r\n \"task\",\r\n translate(\"$__activities\", \"*\"),\r\n \"/t\"\r\n )}\r\n {renderMenuItem(\r\n \"library\",\r\n \"/library\",\r\n \"library\",\r\n \"folder\",\r\n translate(\"$__library\", \"*\"),\r\n \"/library\"\r\n )}\r\n {renderMenuItem(\r\n \"tags\",\r\n \"/tags\",\r\n \"tags\",\r\n \"turned_in\",\r\n translate(\"$__tags\", \"*\"),\r\n \"/tags\"\r\n )}\r\n {renderMenuItem(\r\n \"calendar\",\r\n \"/calendar\",\r\n \"calendar\",\r\n \"event\",\r\n translate(\"$__calendar\", \"*\"),\r\n \"/calendar\"\r\n )}\r\n <div className={classes.separator} />\r\n {renderChatItem()}\r\n {renderSupportItem()}\r\n </div>\r\n\r\n {/* SubMenu */}\r\n {props.subMenu && (\r\n <div\r\n className={\r\n props.subMenuExpanded ? classes.moduleExpanded : classes.module\r\n }\r\n id=\"sideBar_subMenu\"\r\n style={{\r\n background: customApp(\"subMenuColor\"),\r\n borderRight: `4px solid ${customApp(\"color\")}`,\r\n }}\r\n >\r\n <SubMenu\r\n hashs={hashs}\r\n subMenuExpanded={(a) => props.setSubMenuExpanded(a)}\r\n expanded={props.subMenuExpanded}\r\n blockedItems={blockedItems}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Versão */}\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 15,\r\n color: \"#c0b283\",\r\n fontSize: \"10px\",\r\n }}\r\n >\r\n V:{packageJson.version}\r\n </div>\r\n </div>\r\n </div>\r\n </ErrorBoundary>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n session: state.session\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(\r\n withStyles(styles)(Component)\r\n);","//CORE\r\nimport React from 'react'\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\nimport CountIcon from \"./countIcon\"\r\n\r\n//@MATERIAL\r\nimport Button from '@material-ui/core/Button'\r\n\r\nfunction Component(props) {\r\n const { chat } = reduxStore.getState()\r\n\r\n return (\r\n <div id=\"chatNotificationsBt\"\r\n style={{\r\n zIndex: '100 !important'\r\n }}>\r\n <Button\r\n aria-haspopup=\"true\"\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n open: !chat.open\r\n })\r\n }}\r\n >\r\n <CountIcon>\r\n <Icon\r\n icon={'chat_bubble_outline'}\r\n color={'parent'}\r\n title=\"$__chat\"\r\n />\r\n </CountIcon>\r\n </Button>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(Component)\r\n","import React, { useState, useMemo, useRef } from \"react\";\r\nimport moment from \"moment-timezone\";\r\n\r\n// REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n// COMPONENTS\r\nimport Checklist from \"components/Checklist\";\r\nimport Icon from \"components/Icon\";\r\n\r\n// @MATERIAL\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Popper from \"@material-ui/core/Popper\";\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nfunction MyDay(props) {\r\n const { db, session } = props;\r\n const [open, setOpen] = useState(false);\r\n const anchorRef = useRef(null);\r\n const today = useMemo(\r\n () => moment().tz(\"America/Sao_Paulo\").format(\"YYYY/MM/DD\"),\r\n []\r\n );\r\n\r\n const cards = useMemo(() => {\r\n return Object.keys(db.cards)\r\n .filter((cardId) => {\r\n const card = db.cards[cardId];\r\n if (!card || card.deleted) return false;\r\n if (card.checklist && !card.showCard) return false;\r\n if (!card._users || !card._users[session._id]) return false;\r\n if (!card._users[session._id].myDay) return false;\r\n const cardDay = moment(\r\n new Date(card._users[session._id].myDay * 1000)\r\n )\r\n .tz(\"America/Sao_Paulo\")\r\n .format(\"YYYY/MM/DD\");\r\n return cardDay === today;\r\n })\r\n .map((cardId) => db.cards[cardId]);\r\n }, [db.cards, session._id, today]);\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n\r\n if (cards.length === 0) return null;\r\n\r\n return (\r\n <div id=\"notificationsBt\" style={{ zIndex: \"100 !important\" }}>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? \"menu-list-grow\" : undefined}\r\n aria-haspopup=\"true\"\r\n onClick={handleToggle}\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={cards.filter((card) => card.status !== \"completed\").length}\r\n color=\"secondary\"\r\n >\r\n <Icon icon=\"hourglass_empty\" color=\"parent\" title=\"$__myDay\" />\r\n </Badge>\r\n </Button>\r\n {cards.length > 0 && (\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n role={undefined}\r\n transition\r\n disablePortal\r\n style={{ width: \"400px\" }}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin:\r\n placement === \"bottom\" ? \"center top\" : \"center bottom\",\r\n }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <div\r\n style={{\r\n height: \"auto\",\r\n maxHeight: \"calc(90vh - 80px)\",\r\n width: \"100%\",\r\n overflowY: \"auto\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n padding: \"7px\",\r\n }}\r\n >\r\n <p\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n padding: '7px',\r\n fontSize: 15,\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bold\",\r\n paddingLeft: 10\r\n }}\r\n >\r\n {translate(\"$__myDay\")}\r\n </p>\r\n </div>\r\n <Checklist noChecklist noDelete showCard myDay db=\"cards\" />\r\n </div>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n db: store.db,\r\n session: store.session,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyDay);\r\n","//CORE\r\nimport React from 'react';\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport reduxStore from \"store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\nimport Card from \"components/Card\"\r\nimport Approve from \"components/Card/approval\"\r\n\r\n//@MATERIAL\r\nimport Badge from '@material-ui/core/Badge';\r\nimport Button from '@material-ui/core/Button';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from 'functions/';\r\n\r\nfunction RequireApproval(props) {\r\n const { db, session } = reduxStore.getState()\r\n const [open, setOpen] = React.useState(false);\r\n const [approvals, setApprovals] = React.useState([])\r\n const anchorRef = React.useRef(null)\r\n\r\n const cards = Object.keys(reduxStore.getState().db.cards).filter(a => {\r\n if (\r\n db.cards[a]\r\n && !db.cards[a].deleted\r\n && db.cards[a].type !== \"chatGroup\"\r\n && db.cards[a]._parent\r\n && reduxStore.getState().db.cards[reduxStore.getState().db.cards[a]._parent]\r\n && reduxStore.getState().db.cards[reduxStore.getState().db.cards[a]._parent].requireApproval\r\n && (\r\n (\r\n reduxStore.getState().db.cards[reduxStore.getState().db.cards[a]._parent]._users[session._id]\r\n && reduxStore.getState().db.cards[reduxStore.getState().db.cards[a]._parent]._users[session._id].approvalResponsible\r\n )\r\n ||\r\n (\r\n db.cards[a]._users\r\n && Object.keys(db.cards[a]._users).length === 1\r\n && db.cards[a]._users[session._id]\r\n )\r\n )\r\n ) return true\r\n return false\r\n }).map(a => db.cards[a])\r\n\r\n React.useEffect(() => {\r\n if (cards.length === 0)\r\n setOpen(false)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards])\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n if (cards.length === 0)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <div id=\"notificationsApprovalBt\"\r\n style={{\r\n zIndex: '100 !important'\r\n }}>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n onClick={handleToggle}\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={cards?.filter(fil => fil.status !== 'completed').length}\r\n color=\"secondary\"\r\n >\r\n <Icon\r\n icon={'approval'}\r\n color={'parent'}\r\n title=\"$__forApproval\"\r\n />\r\n </Badge>\r\n </Button>\r\n {cards.length > 0 &&\r\n <Popper open={open} anchorEl={anchorRef.current} role={undefined} transition disablePortal\r\n style={{ width: '400px' }}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom',\r\n padding: 11,\r\n }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <div style={{\r\n height: 'auto',\r\n maxHeight: 'calc(90vh - 80px)',\r\n width: '100%',\r\n overflowY: 'auto'\r\n }}>\r\n <div\r\n style={{\r\n color: \"red\",\r\n fontWeight: \"bold\",\r\n fontSize: 14\r\n }}\r\n >{translate(\"$__attention\", 1)}: <span style={{ color: customApp('menu') }}>{translate(\"$__thisActivityRequireApproval\", 1)}</span></div>\r\n {cards\r\n .filter(a => approvals.indexOf(a._id) === -1)\r\n .sort((a, b) => {\r\n let au = a.updated_at && a.updated_at.low ? a.updated_at.low : a.updated_at\r\n let bu = b.updated_at && b.updated_at.low ? b.updated_at.low : b.updated_at\r\n if (au < bu)\r\n return -1\r\n if (au > bu)\r\n return 1\r\n return 0\r\n })\r\n .map((card, cardIndex) => {\r\n return (\r\n <div\r\n key={card._id}\r\n style={{\r\n display: \"grid\",\r\n width: \"100%\",\r\n border: \"solid 1px rgba(0,0,0,0.1)\",\r\n padding: 12,\r\n marginTop: 7,\r\n borderRadius: 7,\r\n }}\r\n >\r\n <Card\r\n db=\"cards\"\r\n cardId={card._id}\r\n onlyOption={true}\r\n />\r\n <Approve nodeId={card._id}\r\n onAction={() => {\r\n let newApprovals = Array.from(approvals)\r\n if (newApprovals.indexOf(card._id) === -1)\r\n newApprovals.push(card._id)\r\n setApprovals(newApprovals)\r\n }}\r\n />\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => ({\r\n cards: store.db.cards\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RequireApproval)\r\n","//CORE\r\nimport React from \"react\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Card from \"components/Card\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Message from \"componentsV3/Timeline/message\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp\r\n} from \"functions/\"\r\n\r\nimport {\r\n countNotifications\r\n} from \"functions/cards\"\r\nimport {\r\n chatReaded,\r\n} from \"functions/chat\"\r\n\r\nconst useStyles = makeStyles(() => ({\r\n unReaded: {\r\n padding: \"7px\",\r\n borderBottom: \"solid 1px rgba(0,0,0,0.1)\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n opacity: 1,\r\n borderLeft: `solid red 2px`\r\n },\r\n Readed: {\r\n padding: \"7px\",\r\n borderBottom: \"solid 1px rgba(0,0,0,0.1)\",\r\n width: \"100%\",\r\n opacity: 0.5,\r\n maxWidth: \"100%\",\r\n }\r\n}))\r\n\r\nfunction CardNotification(props) {\r\n const { timeline, functions, session } = reduxStore.getState()\r\n const { socket } = functions;\r\n const { data, type } = props\r\n\r\n const [showPrivate, setShowPrivate] = React.useState(false)\r\n const classes = useStyles()\r\n\r\n React.useEffect(() => {\r\n // setMounted(true)\r\n return () => {\r\n // setMounted(false)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n let dbNotify = \"cards\"\r\n if (data && data.cardId && reduxStore.getState().db.users[data.cardId]) {\r\n dbNotify = \"users\"\r\n }\r\n\r\n const markAsRead = () => {\r\n let notifications = countNotifications(data.cardId)\r\n props.reduxFunction(\"IMMEDIATE\", \"SET_NOTIFICATIONS\", {\r\n ...reduxStore.getState().notifications,\r\n total: reduxStore.getState().notifications.total - notifications.total,\r\n })\r\n chatReaded(props, {\r\n readedBy: session._id,\r\n id: props.cardId,\r\n db: 'cards',\r\n type: type === \"all\" || type === \"mentions\" || type === \"completed\" || type === \"deleted\" ? \"all\" : type\r\n })\r\n\r\n if (reduxStore.getState().db && reduxStore.getState().db.cards && reduxStore.getState().db.cards[data.cardId])\r\n props.reduxFunction(\"IMMEDIATE\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.cardId]: {\r\n ...reduxStore.getState().db.cards[data.cardId],\r\n _notifications: {\r\n comment: 0,\r\n kpi: 0,\r\n timer: 0,\r\n log: 0\r\n }\r\n }\r\n\r\n }\r\n })\r\n\r\n\r\n socket.emit(\"data\", {\r\n module: \"chat\",\r\n method: \"put\",\r\n action: \"read\"\r\n }, {\r\n readedBy: session._id,\r\n id: data.cardId,\r\n db: 'cards',\r\n type: type === \"all\" || type === \"mentions\" || type === \"completed\" || type === \"deleted\" ? \"all\" : type\r\n }, () => {\r\n })\r\n\r\n\r\n\r\n if (props.onRead) {\r\n setTimeout(() => {\r\n props.onRead()\r\n }, 500)\r\n }\r\n\r\n }\r\n\r\n let cardTimeline = Object.keys(timeline[data.cardId])\r\n .filter(n =>\r\n type === \"all\"\r\n || (\r\n (\r\n type === \"deleted\"\r\n && reduxStore.getState().db.cards[data.cardId]?.deleted\r\n )\r\n || (\r\n type !== \"deleted\"\r\n && reduxStore.getState().db.cards[data.cardId]\r\n && !reduxStore.getState().db.cards[data.cardId].deleted\r\n && (\r\n (\r\n type === \"comment\"\r\n && Object.keys(timeline[data.cardId]).filter(a =>\r\n timeline[data.cardId][n]?.type === \"comment\"\r\n && !timeline[data.cardId][n].deleted\r\n ).length > 0\r\n )\r\n ||\r\n (\r\n type === \"log\"\r\n && Object.keys(timeline[data.cardId]).filter(a =>\r\n timeline[data.cardId][n]?.type === \"log\"\r\n && !timeline[data.cardId][n].deleted\r\n ).length > 0\r\n )\r\n ||\r\n (\r\n type === \"timer\"\r\n && Object.keys(timeline[data.cardId]).filter(a =>\r\n timeline[data.cardId][n]?.type === \"timer\"\r\n && !timeline[data.cardId][n].deleted\r\n ).length > 0\r\n )\r\n ||\r\n (\r\n type === \"kpi\"\r\n && Object.keys(timeline[data.cardId]).filter(a =>\r\n timeline[data.cardId][n]?.type === \"kpi\"\r\n && !timeline[data.cardId][n].deleted\r\n ).length > 0\r\n )\r\n ||\r\n (\r\n type === \"mentions\"\r\n && Object.keys(timeline[data.cardId]).filter(a =>\r\n timeline[data.cardId][n]?.message?.indexOf(session._id) > -1\r\n && !timeline[data.cardId][n].deleted\r\n ).length > 0\r\n )\r\n ||\r\n (\r\n type === \"completed\"\r\n && reduxStore.getState().db.cards[data.cardId].status === \"completed\"\r\n )\r\n )\r\n )\r\n )\r\n )\r\n .filter(a =>\r\n session\r\n && session._id\r\n && timeline[data.cardId]\r\n && timeline[data.cardId][a]\r\n && !timeline[data.cardId][a].deleted\r\n && timeline[data.cardId][a].user\r\n && timeline[data.cardId][a].user._id\r\n && timeline[data.cardId][a].user._id !== session._id\r\n && (\r\n !timeline[data.cardId][a].readedBy\r\n ||\r\n (\r\n timeline[data.cardId][a].readedBy\r\n && !timeline[data.cardId][a].readedBy[session._id]\r\n )\r\n )\r\n )\r\n return (\r\n <div className={data.readed ? classes.Readed : classes.unReaded}\r\n style={{ width: \"100%\", overflow: \"auto\" }}\r\n >\r\n {(\r\n data.cardId && reduxStore.getState().db.cards[data.cardId]\r\n )\r\n &&\r\n <div\r\n style={reduxStore.getState().db.cards[data.cardId] && reduxStore.getState().db.cards[data.cardId].type === \"chatGroup\" ? { cursor: \"pointer\" } : {}}\r\n >\r\n <Card\r\n setPrivate={(a) => {\r\n setShowPrivate(a)\r\n }}\r\n db=\"cards\"\r\n data={reduxStore.getState().db.cards[data.cardId]}\r\n onlyOption={reduxStore.getState().db.cards[data.cardId] && reduxStore.getState().db.cards[data.cardId].type === \"chatGroup\" ? true : false}\r\n onOpen={props.onClick || null}\r\n />\r\n\r\n </div>\r\n }\r\n\r\n {cardTimeline.length > 0\r\n && (\r\n (\r\n !reduxStore.getState().db.cards[data.cardId].private\r\n )\r\n ||\r\n (\r\n reduxStore.getState().db.cards[data.cardId].private\r\n &&\r\n (\r\n reduxStore.getState().controls.lockPrivate\r\n ||\r\n showPrivate\r\n )\r\n )\r\n ) ?\r\n <React.Fragment>\r\n {cardTimeline\r\n\r\n .sort((a, b) => {\r\n if (parseInt(timeline[data.cardId][a].created_at) > parseInt(timeline[data.cardId][b].created_at))\r\n return -1\r\n if (parseInt(timeline[data.cardId][a].created_at) < parseInt(timeline[data.cardId][b].created_at))\r\n return 1\r\n return 0\r\n }).map((tm, tmi) => {\r\n // console.log(tm)\r\n return (\r\n <div key={`${tm}`} style={{ position: \"relative\", marginBottom: \"33px\", paddingBottom: 15, display: \"-webkit-box\" }}>\r\n <Message\r\n storie={{\r\n ...reduxStore.getState().timeline && reduxStore.getState().timeline[data.cardId] && reduxStore.getState().timeline[data.cardId][tm] ? reduxStore.getState().timeline[data.cardId][tm] : {},\r\n idRel: tm,\r\n }}\r\n boxStyle={{ width: \"calc(100% - 10px) !important\", maxWidth: \"285px\" }}\r\n db={dbNotify}\r\n noReactions\r\n noReply\r\n openLightBox={(f) => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n open: true,\r\n files: reduxStore.getState().timeline[data.cardId][tm].files ? reduxStore.getState().timeline[data.cardId][tm].files : [],\r\n file: f\r\n })\r\n }}\r\n />\r\n {(tmi + 1 === cardTimeline.length) ?\r\n <div style={{\r\n position: \"absolute\",\r\n height: \"93px\",\r\n left: 0, bottom: \"-33px\", right: 8,\r\n background: 'linear-gradient(0deg, rgba(255,255,255,1) 34%, rgba(255,255,255,0) 100%)',\r\n }}>\r\n <div style={{ position: \"absolute\", bottom: \"0px\", display: \"flex\", justifyContent: \"space-between\", width: \"100%\" }}>\r\n <CustomButton\r\n title={translate(`$__open`, 1)}\r\n text={translate(`$__open`, 1)}\r\n color={customApp('color')}\r\n icon={'launch'}\r\n onClick={() => {\r\n if (props.onClick)\r\n props.onClick()\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: 'cards',\r\n id: data.cardId,\r\n module: \"cardEdit\",\r\n activeModule: \"cardEdit\",\r\n data: reduxStore.getState().db.cards[data.cardId],\r\n })\r\n markAsRead()\r\n }\r\n }\r\n size={'13px'}\r\n textSize={'13px'}\r\n style={{ padding: \"0px !important\" }}\r\n />\r\n <CustomButton\r\n title={translate(`$__markAsRead`, 1)}\r\n text={translate(`$__markAsRead`, 1)}\r\n color={customApp('color')}\r\n icon={'mark_chat_read'}\r\n onClick={() => {\r\n markAsRead()\r\n }}\r\n size={'13px'}\r\n textSize={'13px'}\r\n style={{ padding: \"0px !important\" }}\r\n />\r\n </div>\r\n </div> : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n })\r\n }\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n cards: store.db.cards,\r\n users: store.db.users,\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, mapDispatchToProps)(CardNotification)\r\n","//CORE\r\nimport React, { useState, useRef, useMemo, useEffect, useCallback } from \"react\";\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\nimport Notification from \"componentsV3/Notifications/card\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\n\r\n//@MATERIAL\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Popper from \"@material-ui/core/Popper\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp,\r\n appAlert\r\n} from \"functions/\";\r\n\r\nfunction Notifications(props) {\r\n const { session, timeline, cards, users, functions, reduxFunction } = props;\r\n const { socket } = functions || {};\r\n\r\n const [open, setOpen] = useState(false);\r\n const [limit, setLimit] = useState({});\r\n const [actualNotificationType, setNotificationType] = useState(\"comment\");\r\n const anchorRef = useRef();\r\n\r\n // Memoiza os dados do usuário\r\n const userData = useMemo(() => {\r\n return session && users && users[session._id] ? users[session._id] : {};\r\n }, [session, users]);\r\n\r\n // Calcula os contadores de notificações\r\n const { ntCount, xCount } = useMemo(() => {\r\n let ntCountLocal = 0;\r\n let xCountLocal = {\r\n comment: 0,\r\n log: 0,\r\n mentions: 0,\r\n deleted: 0,\r\n kpi: 0,\r\n timer: 0,\r\n completed: 0\r\n };\r\n if (!cards || !timeline || !session || !session._id) {\r\n return { ntCount: 0, xCount: xCountLocal };\r\n }\r\n Object.keys(cards)\r\n .filter(n => {\r\n const card = cards[n];\r\n if (\r\n card.type !== 'chatGroup' &&\r\n card.type !== 'step' &&\r\n (\r\n (card._users && card._users[session._id]) ||\r\n (\r\n (!card._users || !card._users[session._id]) &&\r\n card._groups &&\r\n userData.groups &&\r\n userData.groups.length > 0 &&\r\n Object.keys(card._groups).length > 0 &&\r\n Object.keys(card._groups).some(gr =>\r\n userData.groups.some(xg => xg.value === gr)\r\n )\r\n )\r\n ) &&\r\n timeline[n] &&\r\n Object.keys(timeline[n]).some(a => {\r\n const note = timeline[n][a];\r\n return (\r\n !note.deleted &&\r\n note.user &&\r\n note.user._id &&\r\n note.user._id !== session._id &&\r\n (\r\n !note.readedBy ||\r\n (note.readedBy && !note.readedBy[session._id])\r\n )\r\n );\r\n })\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n .forEach(n => {\r\n const card = cards[n];\r\n if (!timeline[n]) return;\r\n Object.keys(timeline[n]).forEach(a => {\r\n const note = timeline[n][a];\r\n if (\r\n !note.deleted &&\r\n note.user &&\r\n note.user._id &&\r\n note.user._id !== session._id &&\r\n (\r\n !note.readedBy ||\r\n (note.readedBy && !note.readedBy[session._id])\r\n )\r\n ) {\r\n if (card.deleted) {\r\n xCountLocal.deleted += 1;\r\n }\r\n if (card.status === \"completed\") {\r\n xCountLocal.completed += 1;\r\n }\r\n if (note.message && note.message.indexOf(session._id) > -1 && !card.deleted) {\r\n xCountLocal.mentions += 1;\r\n }\r\n if (note.type && xCountLocal.hasOwnProperty(note.type)) {\r\n xCountLocal[note.type] = (xCountLocal[note.type] || 0) + 1;\r\n }\r\n ntCountLocal += 1;\r\n }\r\n });\r\n });\r\n return { ntCount: ntCountLocal, xCount: xCountLocal };\r\n }, [cards, timeline, session, userData]);\r\n\r\n // Fecha o menu de notificações se não houver notificações\r\n useEffect(() => {\r\n if (ntCount === 0 && open) {\r\n setOpen(false);\r\n }\r\n }, [ntCount, open]);\r\n\r\n // Define o tipo de notificação a exibir\r\n const notificationType = useMemo(() => {\r\n let type = actualNotificationType;\r\n if (type === \"comment\" && !xCount.comment)\r\n type = \"mentions\";\r\n if (type === \"mentions\" && !xCount.mentions)\r\n type = \"timer\";\r\n if (type === \"timer\" && !xCount.timer)\r\n type = \"kpi\";\r\n if (type === \"kpi\" && !xCount.kpi)\r\n type = \"log\";\r\n if (type === \"log\" && !xCount.log)\r\n type = \"completed\";\r\n if (type === \"completed\" && !xCount.completed)\r\n type = \"deleted\";\r\n if (type === \"deleted\" && !xCount.deleted)\r\n type = \"all\";\r\n return type;\r\n }, [actualNotificationType, xCount]);\r\n\r\n // Filtra e ordena os cards para renderização conforme o tipo de notificação\r\n const renderCards = useMemo(() => {\r\n if (!cards || !timeline || !session || !session._id) return [];\r\n return Object.keys(cards)\r\n .filter(n => {\r\n const card = cards[n];\r\n if (\r\n card.type !== 'chatGroup' &&\r\n session &&\r\n session._id &&\r\n (\r\n (card._users && card._users[session._id]) ||\r\n (\r\n card._groups &&\r\n userData.groups &&\r\n userData.groups.length > 0 &&\r\n Object.keys(card._groups).some(gr =>\r\n userData.groups.some(xg => xg.value === gr)\r\n )\r\n )\r\n ) &&\r\n timeline[n] &&\r\n Object.keys(timeline[n]).some(a => {\r\n const note = timeline[n][a];\r\n return (\r\n !note.deleted &&\r\n note.user &&\r\n note.user._id &&\r\n note.user._id !== session._id &&\r\n (\r\n !note.readedBy ||\r\n (note.readedBy && !note.readedBy[session._id])\r\n )\r\n );\r\n })\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n .filter(n =>\r\n notificationType === \"all\" ||\r\n (\r\n (notificationType === \"deleted\" && cards[n]?.deleted) ||\r\n (notificationType !== \"deleted\" &&\r\n cards[n] &&\r\n !cards[n].deleted &&\r\n (\r\n (notificationType === \"comment\" &&\r\n Object.keys(timeline[n]).some(a => timeline[n][a]?.type === \"comment\")\r\n ) ||\r\n (notificationType === \"log\" &&\r\n Object.keys(timeline[n]).some(a => timeline[n][a]?.type === \"log\")\r\n ) ||\r\n (notificationType === \"kpi\" &&\r\n Object.keys(timeline[n]).some(a => timeline[n][a]?.type === \"kpi\")\r\n ) ||\r\n (notificationType === \"timer\" &&\r\n Object.keys(timeline[n]).some(a => timeline[n][a]?.type === \"timer\")\r\n ) ||\r\n (notificationType === \"mentions\" &&\r\n Object.keys(timeline[n]).some(a => timeline[n][a]?.message?.indexOf(session._id) > -1)\r\n ) ||\r\n (notificationType === \"completed\" &&\r\n cards[n].status === \"completed\")\r\n )\r\n )\r\n )\r\n )\r\n .sort((na, nb) => {\r\n let lna = 0, lnb = 0;\r\n if (timeline[na]) {\r\n Object.keys(timeline[na]).forEach(a => {\r\n const note = timeline[na][a];\r\n if (\r\n note.user &&\r\n note.user._id !== session._id &&\r\n (\r\n !note.readedBy ||\r\n (note.readedBy && !note.readedBy[session._id])\r\n )\r\n ) {\r\n const createdAt = parseInt(note.created_at) || 0;\r\n if (createdAt > lna) lna = createdAt;\r\n }\r\n });\r\n }\r\n if (timeline[nb]) {\r\n Object.keys(timeline[nb]).forEach(a => {\r\n const note = timeline[nb][a];\r\n if (\r\n note.user &&\r\n note.user._id !== session._id &&\r\n (\r\n !note.readedBy ||\r\n (note.readedBy && !note.readedBy[session._id])\r\n )\r\n ) {\r\n const createdAt = parseInt(note.created_at) || 0;\r\n if (createdAt > lnb) lnb = createdAt;\r\n }\r\n });\r\n }\r\n return lna > lnb ? -1 : lna < lnb ? 1 : 0;\r\n });\r\n }, [cards, timeline, session, userData, notificationType]);\r\n\r\n // Função para limpar notificações\r\n const clearNotifications = useCallback(() => {\r\n appAlert({\r\n message: translate(\"$__confirmClearAllNotifications\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n setOpen(false);\r\n let newTimeline = { ...timeline };\r\n Object.keys(newTimeline).forEach(t => {\r\n if (newTimeline[t]) {\r\n Object.keys(newTimeline[t]).forEach(ms => {\r\n const note = newTimeline[t][ms];\r\n if (\r\n cards &&\r\n cards[t] &&\r\n cards[t].type !== 'chatGroup' &&\r\n (\r\n !note.readedBy ||\r\n (note.readedBy && !note.readedBy[session._id])\r\n )\r\n ) {\r\n delete newTimeline[t][ms];\r\n }\r\n });\r\n }\r\n });\r\n reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n timeline: newTimeline\r\n });\r\n reduxFunction(\"ASYNC\", \"SET_NOTIFICATIONS\", {\r\n total: 0,\r\n lastNotification: 0,\r\n firstNotification: 0,\r\n });\r\n try {\r\n socket && socket.emit(\"data\", {\r\n module: \"notifications\",\r\n method: \"put\",\r\n action: \"readedAll\"\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n });\r\n }, [reduxFunction, timeline, session, socket, cards]);\r\n\r\n const handleToggle = useCallback(() => {\r\n setOpen(prevOpen => !prevOpen);\r\n }, []);\r\n\r\n const handleClose = useCallback((event) => {\r\n if (event?.target?.className?.indexOf(\"ignoreClickAway\") > -1)\r\n return;\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n setOpen(false);\r\n }, 100);\r\n }, []);\r\n\r\n if (ntCount === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div id=\"notificationsBt\" style={{ zIndex: \"1000 !important\" }}>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? \"menu-list-grow\" : undefined}\r\n aria-haspopup=\"true\"\r\n onClick={handleToggle}\r\n >\r\n <Badge overlap=\"rectangular\" badgeContent={ntCount} color=\"secondary\">\r\n <Icon\r\n icon={ntCount === 0 ? \"notifications_none\" : \"notifications_active\"}\r\n color={\"parent\"}\r\n title=\"$__notifications\"\r\n />\r\n </Badge>\r\n </Button>\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n transition\r\n disablePortal\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{ transformOrigin: placement === \"bottom\" ? \"center top\" : \"center bottom\" }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <div style={{ width: \"800px\", overflowY: \"auto\" }}>\r\n <div style={{ position: \"relative\", display: \"flex\" }}>\r\n <div style={{ height: \"auto\", width: \"300px\", overflowY: \"auto\", display: \"table\" }}>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n padding: \"7px\",\r\n width: \"100%\",\r\n fontSize: 18,\r\n color: customApp(\"color\"),\r\n fontWeight: \"bold\"\r\n }}>\r\n <div>{translate(\"$__notifications\")}</div>\r\n </div>\r\n <ul style={{ listStyle: \"none\", padding: 0 }}>\r\n {xCount.comment ? (\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__timeline`, '*')}\r\n text={translate(`$__timeline`, '*')}\r\n color={notificationType === \"comment\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'timeline'}\r\n onClick={() => setNotificationType(\"comment\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n badgeContent={xCount.comment}\r\n />\r\n </li>\r\n ) : null}\r\n {xCount.mentions ? (\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__mentioned`, '*')}\r\n text={translate(`$__mentioned`, '*')}\r\n color={notificationType === \"mentions\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'person_pin_circle'}\r\n onClick={() => setNotificationType(\"mentions\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n badgeContent={xCount.mentions}\r\n />\r\n </li>\r\n ) : null}\r\n {xCount.kpi ? (\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__kpi`, '*')}\r\n text={translate(`$__kpi`, '*')}\r\n color={notificationType === \"kpi\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'analytics'}\r\n onClick={() => setNotificationType(\"kpi\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n badgeContent={xCount.kpi}\r\n />\r\n </li>\r\n ) : null}\r\n {xCount.timer ? (\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__timeSheet`, '*')}\r\n text={translate(`$__timeSheet`, '*')}\r\n color={notificationType === \"timer\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'timer'}\r\n onClick={() => setNotificationType(\"timer\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n badgeContent={xCount.timer}\r\n />\r\n </li>\r\n ) : null}\r\n {xCount.log ? (\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__update`, '*')}\r\n text={translate(`$__update`, '*')}\r\n color={notificationType === \"log\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'update'}\r\n onClick={() => setNotificationType(\"log\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n badgeContent={xCount.log}\r\n />\r\n </li>\r\n ) : null}\r\n {xCount.completed ? (\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__completed`, '*')}\r\n text={translate(`$__completed`, '*')}\r\n color={notificationType === \"completed\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'verified'}\r\n onClick={() => setNotificationType(\"completed\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n badgeContent={xCount.completed}\r\n />\r\n </li>\r\n ) : null}\r\n {xCount.deleted ? (\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__deletedItems`, '*')}\r\n text={translate(`$__deletedItems`, '*')}\r\n color={notificationType === \"deleted\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'delete_sweep'}\r\n onClick={() => setNotificationType(\"deleted\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n badgeContent={xCount.deleted}\r\n />\r\n </li>\r\n ) : null}\r\n <li style={{ padding: \"15px 0px\" }}>\r\n <CustomButton\r\n title={translate(`$__all`, '*')}\r\n text={translate(`$__all`, '*')}\r\n color={notificationType === \"all\" ? customApp(\"menu\") : 'lightGray'}\r\n icon={'all_inbox'}\r\n onClick={() => setNotificationType(\"all\")}\r\n size={'22px'}\r\n style={{ padding: \"0px 3px !important\", width: \"100%\" }}\r\n transparent\r\n />\r\n </li>\r\n </ul>\r\n <div>\r\n <div style={{ position: \"absolute\", bottom: 0, left: 0 }}>\r\n <CustomButton\r\n title={translate(`$__clearNotifications`, 1)}\r\n text={translate(`$__clearNotifications`, 1)}\r\n color={customApp('color')}\r\n icon={'clear_all'}\r\n onClick={clearNotifications}\r\n size={'21px'}\r\n style={{ padding: \"0px !important\" }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div style={{\r\n height: \"auto\",\r\n maxHeight: \"calc(90vh - 80px)\",\r\n width: \"600px\",\r\n backgroundColor: \"rgba(247,247,247,1)\",\r\n overflowY: \"auto\"\r\n }}>\r\n {renderCards.slice(0, limit[actualNotificationType] || 6).map(n => (\r\n <div key={n}>\r\n <Notification\r\n type={notificationType}\r\n data={{ cardId: n }}\r\n onClick={() => setOpen(false)}\r\n />\r\n </div>\r\n ))}\r\n {(limit[actualNotificationType] || 6) < renderCards.length && (\r\n <div style={{ textAlign: \"center\", marginTop: \"10px\" }}>\r\n <button\r\n onClick={() => setLimit(prev => ({\r\n ...prev,\r\n [actualNotificationType]: (prev[actualNotificationType] || 6) + 6\r\n }))}\r\n style={{\r\n padding: \"7px 10px\",\r\n backgroundColor: \"#232323\",\r\n color: \"#fff\",\r\n border: \"none\",\r\n borderRadius: \"5px\",\r\n cursor: \"pointer\",\r\n width: \"100%\",\r\n zIndex: 10\r\n }}\r\n >\r\n Exibir mais\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n notifications: store.notifications,\r\n timeline: store.timeline,\r\n session: store.session,\r\n cards: store.db.cards,\r\n users: store.db.users,\r\n functions: store.functions\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Notifications);","import React, { useState, useEffect } from \"react\"\r\nimport Icon from \"components/Icon/\"\r\nimport MatrixIcon from \"assets/icons/Matrix.js\"\r\n\r\nimport { translate } from \"functions\"\r\n\r\n\r\nconst GetHeader = (props) => {\r\n const { handlePrevScreen, name, prev, handleClose } = props\r\n return (\r\n\r\n <div>\r\n <p\r\n style={{\r\n marginTop: \"2px\",\r\n height: \"80px\",\r\n textAlign: \"center\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n fontWeight: \"bold\",\r\n borderBottom: \"1px solid #d1d1cf\",\r\n fontSize: \"16px\"\r\n }}\r\n >\r\n <Icon\r\n size=\"35px\"\r\n style={{\r\n alignSelf: \"center\",\r\n marginRight: \"10px\",\r\n color: \"#001836\"\r\n }}\r\n >\r\n view_comfy\r\n </Icon>\r\n {name}\r\n </p>\r\n <div id=\"getElements_40\">\r\n <Icon\r\n style={{\r\n alignSelf: \"center\",\r\n height: \"25px\",\r\n cursor: \"pointer\",\r\n position: \"absolute\",\r\n width: \"25px\",\r\n right: \"20px\",\r\n top: \"18px\",\r\n color: \"grey\"\r\n }}\r\n size=\"30px\"\r\n onClick={handleClose ? () => { handleClose() } : null}\r\n >\r\n close\r\n </Icon>\r\n </div>\r\n {prev && <div id=\"getElements_58\"> <Icon\r\n style={{\r\n alignSelf: \"center\",\r\n height: \"25px\",\r\n cursor: \"pointer\",\r\n position: \"absolute\",\r\n width: \"25px\",\r\n left: \"20px\",\r\n top: \"18px\",\r\n color: \"grey\"\r\n }}\r\n onClick={handlePrevScreen}\r\n size=\"30px\"\r\n >\r\n arrow_back\r\n </Icon></div>}\r\n </div>\r\n );\r\n};\r\n\r\n\r\nconst GetButton = ({ name, handleEvent, style, disabled, id }) => {\r\n\r\n const [buttonHover, setButtonHover] = useState(false)\r\n const buttonBackground = buttonHover ? \"rgba(0, 0, 0,0.05)\" : \"white\"\r\n\r\n return (\r\n <button\r\n id={id}\r\n onMouseEnter={() => { setButtonHover(true) }}\r\n onMouseLeave={() => { setButtonHover(false) }}\r\n onClick={handleEvent}\r\n disabled={disabled}\r\n style={{\r\n ...style,\r\n minWidth: \"160px\",\r\n height: \"45px\",\r\n cursor: \"pointer\",\r\n border: \"1px solid #d1d1cf\",\r\n fontWeight: \"bolder\",\r\n backgroundColor: buttonBackground\r\n }}\r\n >\r\n {name}\r\n </button>\r\n )\r\n}\r\n\r\nconst GetModal = ({ children }) => {\r\n\r\n return (\r\n <div\r\n style={{\r\n height: \"100.4vh\",\r\n width: \"100vw\",\r\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\r\n position: \"absolute\",\r\n left: \"0% !important\",\r\n right: \"0%\",\r\n top: \"0%\",\r\n bottom: \"0%\",\r\n zIndex: \"9999\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nconst BoxModal = ({ children, widthSize, id }) => {\r\n\r\n\r\n const [scale, setScale] = useState({\r\n top: \"10%\",\r\n resize: \"0.9\"\r\n });\r\n\r\n useEffect(() => {\r\n const size = window.innerWidth < 1500;\r\n setScale(\r\n {\r\n resize: size ? \"0.9\" : \"1\",\r\n });\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <div\r\n style={{\r\n width: widthSize ? widthSize : \"900px\",\r\n position: \"absolute\",\r\n borderRadius: \"5px\",\r\n backgroundColor: \"#fafbfc\",\r\n boxShadow: \"rgba(0, 0, 0, 0.35) 0px 5px 15px\",\r\n transform: `scale(${scale.resize})`,\r\n alignSelf: \"center\"\r\n }}\r\n id={id}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nconst BoxText = ({ tittle, text }) => {\r\n return (\r\n <div\r\n style={{\r\n border: \"1px solid #ebebeb\",\r\n marginLeft: \"25px\",\r\n minHeight: \"50px\",\r\n backgroundColor: \"white\",\r\n marginTop: \"22px\",\r\n width: \"92%\",\r\n height: \"100px\",\r\n position: \"relative\",\r\n boxShadow: \"rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px\",\r\n\r\n }}\r\n >\r\n <p style={{ margin: \"0px\", marginLeft: \"22px\", marginTop: \"16px\", fontSize: \"16px\", fontWeight: \"bold\" }}>\r\n {tittle}\r\n </p>\r\n <Icon\r\n size={\"35px\"}\r\n style={{ alignSelf: \"center\", color: \"#757380\", marginRight: \"10px\", position: 'absolute', top: '-14px', left: '-14px' }}\r\n >\r\n info\r\n </Icon>\r\n <p style={{\r\n marginLeft: \"22px\",\r\n marginTop: \"0px\",\r\n display: 'flex',\r\n position: \"relative\",\r\n fontSize: \"14px\",\r\n color: \"#7c828d\",\r\n maxWidth: \"370px\"\r\n }}>\r\n {text}\r\n </p>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\nconst ListItem = ({ item, index, handleItemClick, selectedPlan }) => {\r\n\r\n const [animate, setAnimate] = useState(null)\r\n\r\n const handleItemHover = (index) => {\r\n setAnimate(index);\r\n };\r\n\r\n return (\r\n <li\r\n id={item.id}\r\n onClick={() => handleItemClick(index, item)}\r\n onMouseEnter={() => handleItemHover(index)}\r\n onMouseLeave={() => handleItemHover(null)}\r\n style={{\r\n filter: `brightness(${selectedPlan?.index === index ? \"100%\" : \"100%\"})`,\r\n opacity: selectedPlan?.index === index ? \"1\" : \"0.7\",\r\n border: `2px solid ${selectedPlan?.index === index ? \"#ebebeb\" : \"#ebebeb\"}`,\r\n width: \"90%\",\r\n height: \"65px\",\r\n marginTop: index === 0 ? \"15px\" : \"12px\",\r\n marginLeft: \"17px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n boxShadow: \"rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px\",\r\n backgroundColor: selectedPlan?.index === index ? \"#ebebeb\" : \"white\",\r\n cursor: \"pointer\",\r\n transform: `scale(${animate === index ? \"1.03\" : \"1\"})`,\r\n }}\r\n >\r\n <Icon\r\n size={\"35px\"}\r\n style={{ alignSelf: \"center\", color: \"#757380\", marginLeft: \"10px\", marginRight: \"10px\", }}\r\n icon={item.icon}\r\n />\r\n {/* {item.icon} */}\r\n {/* </Icon> */}\r\n <p style={{ alignSelf: \"center\", marginTop: \"9px\", color: 'black', fontWeight: 'bold' }}>{translate(item.label)}</p>\r\n {/* <span\r\n style={{\r\n width: \"20px\",\r\n height: \"20px\",\r\n border: \"1px solid grey\",\r\n\r\n position: \"absolute\",\r\n right: \"15px\",\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n {selectedPlan?.index === index && (\r\n <Icon\r\n style={{\r\n alignSelf: \"center\",\r\n cursor: \"pointer\",\r\n color: \"#001836\",\r\n margin: \"0px\",\r\n padding: \"0px\"\r\n }}\r\n size=\"16px\"\r\n >\r\n done\r\n </Icon>\r\n )}\r\n </span> */}\r\n </li>\r\n );\r\n};\r\n\r\n\r\n\r\nconst GetAddTemplate = () => {\r\n\r\n\r\n return (\r\n <>\r\n <div style={{ display: \"flex\", border: \"1px solid #ebebeb\", cursor: \"pointer\", boxShadow: \"rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px\", width: \"303px\", background: \"#fafaff\", padding: \"5px\" }}>\r\n <div style={{ height: \"20px\", borderRadius: \"5px\", marginLeft: \"20px\", width: \"25px\", alignSelf: \"center\", display: \"flex\", justifyContent: \"center\" }}>\r\n <Icon\r\n style={{\r\n alignSelf: \"center\",\r\n cursor: \"pointer\",\r\n color: \"grey\",\r\n fontWeight: \"bolder\",\r\n borderRadius: \"2px\",\r\n padding: \"2px\",\r\n border: \"1px solid grey\",\r\n }}\r\n size=\"24px\"\r\n >\r\n add\r\n </Icon>\r\n </div>\r\n <p style={{\r\n alignSelf: \"center\", marginLeft: \"15px\", fontSize: \"16px\",\r\n color: \"grey\",\r\n marginTop: \"9px\"\r\n }}>Adicionar Template</p>\r\n </div>\r\n </>\r\n )\r\n}\r\n\r\nconst plans = [\r\n {\r\n label: \"$__strategic\",\r\n value: null,\r\n gif: \"https://blobmatrix.blob.core.windows.net/saas/planType_gif.gif\",\r\n description: \"$__planStrategicDescription\",\r\n // description: \"O planejamento estratégico possui a metodologia MATRIX SWOT, que permite ajudar nos processos decisores da estratégia.\",\r\n icon: MatrixIcon,\r\n id: \"SelectPlan\",\r\n index: 0\r\n },\r\n {\r\n label: \"$__tacticAndOrOperational\",\r\n value: \"flow\",\r\n gif: \"https://blobmatrix.blob.core.windows.net/saas/planType_gifEstrategico.gif\",\r\n description: \"$__planTaticAndOperationalDescription\",\r\n // description: \"O plano operacional é indicado para criação de fluxos de execução e atividades sem a estratégia por base de análises de SWOT\",\r\n icon: \"account_tree\",\r\n id: \"c\"\r\n },\r\n {\r\n label: \"$__flowOrProcess\",\r\n value: \"operational\",\r\n gif: \"https://blobmatrix.blob.core.windows.net/saas/planType_gif2.gif\",\r\n description: \"$__planFlowOrProcessDescription\",\r\n // description: \"Planejamento com fluxo automatizado de aprovações, usuários, departamentos.\",\r\n icon: \"view_week\",\r\n id: \"a\"\r\n },\r\n {\r\n label: \"$__crm\",\r\n value: \"crm\",\r\n gif: \"https://blobmatrix.blob.core.windows.net/saas/planType_gif3.gif\",\r\n description: \"$__planCrmDescription\",\r\n icon: \"filter_alt\",\r\n id: \"b\"\r\n },\r\n\r\n]\r\n\r\n\r\n\r\nexport { GetHeader, ListItem, GetModal, BoxModal, BoxText, plans, GetButton, GetAddTemplate };","import React, { useState } from 'react'\r\nimport { GetHeader, GetButton } from './getElements'\r\nimport GridContainer from '../Grid/GridContainer';\r\nimport Griditem from '../Grid/GridItem'\r\n\r\nimport { translate } from \"functions\"\r\n\r\nconst Intro = ({ handleNextScreen, handleName, handleClose }) => {\r\n\r\n const [disabled, setDisabled] = useState(true);\r\n\r\n\r\n const handleChange = (event) => {\r\n const novoValor = event.target.value.slice(-1); // Pega apenas o último caractere digitado\r\n novoValor ? setDisabled(false) : setDisabled(true)\r\n };\r\n\r\n return (\r\n <>\r\n <GetHeader prev={false} name={translate(\"$__insertThePlanName\")} handleClose={handleClose} />\r\n <GridContainer container spacing={0} style={{ width: '92%', marginLeft: '4%' }}>\r\n <Griditem item xs={12} style={{ marginTop: \"30px\" }}>\r\n <p style={{ outline: 'none', alignSelf: 'center', fontWeight: 'bold', width: '99.3%', backgroundColor: 'transparent', border: 'none', fontSize: '12px', marginBottom: '4px', marginLeft: '2px', marginTop: '6px' }} >\r\n {translate(\"$__planName\")}\r\n </p>\r\n <input\r\n onChange={handleChange}\r\n onBlur={(e) => handleName(e.target.value)}\r\n placeholder={translate(\"$__insertThePlanNamePlaceholder\")}\r\n style={{\r\n height: '35px',\r\n color: '#7c828d',\r\n marginBottom: '5px',\r\n outline: 'none',\r\n alignSelf: 'center',\r\n width: '99.3%',\r\n backgroundColor: 'transparent',\r\n border: 'none',\r\n borderBottom: '1px solid #d1d1cf',\r\n fontSize: '16px'\r\n }} >\r\n </input>\r\n </Griditem>\r\n <Griditem item xs={12} style={{ marginTop: \"45px\" }}>\r\n <GetButton\r\n handleEvent={handleNextScreen}\r\n //onMouseEnter={() => { setButtonHover(false) }}\r\n //onMouseLeave={() => { setButtonHover(true) }}\r\n id=\"intro_45\"\r\n name={translate(\"$__next\")}\r\n disabled={disabled}\r\n style={{\r\n width: '40%',\r\n marginLeft: '30%',\r\n marginBottom: '45px',\r\n // backgroundColor: buttonBackground,\r\n border: \"2px solid #ebebeb\",\r\n }}>\r\n </GetButton>\r\n </Griditem>\r\n </GridContainer>\r\n </>\r\n )\r\n}\r\n\r\nexport default Intro","import api from \"api\"\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\nconst addCard = (newData, rows = 0) => {\r\n const { session, db } = reduxStore.getState()\r\n let data = {\r\n ...newData\r\n }\r\n\r\n let parentData = {\r\n ...newData._parent && reduxStore.getState().db.cards[newData._parent] ? reduxStore.getState().db.cards[newData._parent] : {}\r\n }\r\n Object.keys(data).forEach(x => {\r\n if (!data[x])\r\n delete (data[x])\r\n })\r\n let lines = data.name.trim().split(\"\\n\")\r\n let count = rows\r\n\r\n let newCards = {}\r\n let users = {}\r\n\r\n if (data?.users)\r\n data.users.forEach((uid, i) => {\r\n let userData = {\r\n ...i === 0 ? {\r\n access: 5,\r\n isResponsible: true,\r\n ...parentData?.showInPanel ? { channel: true } : {}\r\n } : {\r\n access: 5,\r\n }\r\n }\r\n\r\n if (parentData\r\n && db.cards[parentData._id]\r\n && db.cards[parentData._id]._users\r\n && db.cards[parentData._id]._users[uid]\r\n )\r\n userData = db.cards[parentData._id]._users[uid]\r\n\r\n let u = db.users[uid]\r\n users = {\r\n ...users,\r\n [uid]: {\r\n _id: uid,\r\n name: u.name,\r\n image: u.image || null,\r\n ...userData,\r\n myDay: null\r\n }\r\n }\r\n })\r\n\r\n let addIds = []\r\n\r\n lines.map(async (name, nameI) => {\r\n if (name && name.trim()) {\r\n let newId = uuid()\r\n addIds.push(newId)\r\n api.post('card/add', {\r\n _id: newId,\r\n ...data,\r\n ...parentData.showInPanel ? { channel: true } : {},\r\n name,\r\n ...data.type === \"step\" ? {\r\n step: `${count}`\r\n } : {\r\n order: `${count}`\r\n },\r\n });\r\n\r\n if (data.channel)\r\n delete data.channel\r\n\r\n newCards = {\r\n ...newCards,\r\n [newId]: {\r\n _id: newId,\r\n ...data,\r\n name,\r\n _users: users,\r\n _createdBy: {\r\n name: reduxStore.getState().db.users[session._id].name,\r\n image: reduxStore.getState().db.users[session._id].image,\r\n _id: session._id,\r\n channel: parentData?.showInPanel ? true : false\r\n },\r\n ...parentData._planId ? { _planId: parentData._planId } : {},\r\n ...parentData.type === \"plan\" ? { _planId: parentData._id } : {},\r\n ...data.type === \"step\" ? {\r\n step: `${count}`\r\n } : {\r\n order: `${count}`\r\n },\r\n }\r\n }\r\n if (newCards[newId]?.users)\r\n delete newCards[newId].users\r\n count = count + 1\r\n }\r\n })\r\n return newCards\r\n}\r\n\r\nexport {\r\n addCard\r\n}\r\n","import React, { useState } from 'react'\r\nimport GridContainer from 'components/Grid/GridContainer';\r\nimport Griditem from 'components/Grid/GridItem'\r\nimport Intro from './Intro';\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\n// import Article from './Article';\r\nimport { GetHeader, GetModal, BoxModal, plans, BoxText, ListItem, GetButton } from './getElements';\r\nimport { addCard } from \"../Quick/functions\"\r\n\r\n//COMPONENTS\r\nimport PreLoader from \"components/PreLoader\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport history from \"store/history\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\nimport { translate } from \"functions\"\r\n\r\nimport {\r\n loadCardsV2,\r\n} from \"functions/loadData\"\r\n\r\nconst Plantype = (props) => {\r\n const { handleClose } = props\r\n const { session } = reduxStore.getState()\r\n const [selectedPlan, setSelectedPlan] = useState(plans[0])\r\n const [screen, setScreen] = useState({\r\n intro: true,\r\n type: false,\r\n article: false\r\n })\r\n const [loader, setLoader] = useState(false)\r\n\r\n const handleItemClick = (index, item) => {\r\n setSelectedPlan({\r\n ...selectedPlan.name ? { name: selectedPlan.name } : {},\r\n ...item,\r\n index: index,\r\n })\r\n\r\n };\r\n\r\n const handleNameInput = (name) => {\r\n setSelectedPlan({\r\n ...selectedPlan,\r\n name: name,\r\n })\r\n };\r\n\r\n\r\n\r\n const PlanList = () => (\r\n <ul\r\n id={'testId11'}\r\n style={{\r\n width: '100%',\r\n height: '344px',\r\n listStyle: 'none',\r\n marginTop: '13px',\r\n padding: '5px 10px 10px 0px',\r\n boxShadow: 'rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px',\r\n paddingLeft: '0',\r\n border: '1px solid #ebebeb'\r\n }}\r\n >\r\n {plans.map((item, index) => (\r\n <ListItem\r\n key={item.id}\r\n item={item}\r\n index={index}\r\n handleItemClick={handleItemClick}\r\n selectedPlan={selectedPlan}\r\n />\r\n ))}\r\n </ul>\r\n );\r\n\r\n const createPlan = async () => {\r\n setLoader(true)\r\n let newId = uuid()\r\n let result = await addCard({\r\n _id: newId,\r\n name: selectedPlan.name,\r\n type: \"plan\",\r\n planType: selectedPlan.value,\r\n users: [session._id]\r\n }, 0)\r\n if (result) {\r\n let lc = await loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'card', idRel: newId })\r\n if (lc) {\r\n history.push(`sp#${newId}/dashboard`)//#CORRECT\r\n setLoader(false)\r\n handleClose()\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n return (\r\n <GetModal>\r\n {screen.intro && <>\r\n <BoxModal id='Plantype_67' widthSize={\"700px\"}>\r\n <Intro\r\n handleNextScreen={() => setScreen({ ...screen, intro: false, type: true })}\r\n handleName={handleNameInput}\r\n handleClose={handleClose}\r\n />\r\n </BoxModal>\r\n </>}\r\n <BoxModal >\r\n {screen.type && <div id='Plantype_672'>\r\n <GetHeader prev={true} name={translate(\"$__selectPlanType\")} handlePrevScreen={() => setScreen({ ...screen, type: false, intro: true })} handleClose={handleClose} />\r\n <GridContainer container spacing={0} style={{ width: '92%', marginLeft: '4%' }}>\r\n <Griditem item xs={12} style={{ display: 'flex', justifyContent: 'center', overflow: 'hidden' }}>\r\n <Griditem item xs={5} style={{ marginBottom: '10px', marginTop: '10px' }} >\r\n <PlanList style={{ transition: '0.7s' }} />\r\n {/* <GetAddTemplate /> */}\r\n </Griditem>\r\n <Griditem item xs={7} style={{ display: 'flex', marginTop: '10px', flexDirection: 'column', }}>\r\n <div style={{\r\n padding: '20px',\r\n marginLeft: '25px',\r\n width: '400px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n border: '1px solid #ebebeb',\r\n marginTop: '14px',\r\n boxShadow: 'rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px',\r\n }}>\r\n <img alt=\"MACHEN_IMAGE\" src={selectedPlan.gif} style={{\r\n width: '350px',\r\n boxShadow: \"rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px\",\r\n alignSelf: \"center\",\r\n height: '180px',\r\n zIndex: '100'\r\n }} />\r\n </div>\r\n <BoxText tittle={selectedPlan.type} text={translate(selectedPlan.description ? selectedPlan.description : plans[0].description, 1)} />\r\n </Griditem>\r\n </Griditem>\r\n\r\n <Griditem item xs={12}>\r\n {loader ?\r\n <div style={{ width: '100%', display: 'flex', justifyContent: \"center\" }}><PreLoader /></div>\r\n :\r\n <GetButton\r\n id=\"Plantype_110\"\r\n name={translate(\"$__create\")}\r\n handleEvent={() => {\r\n createPlan()\r\n }}\r\n style={{\r\n width: '50%',\r\n marginLeft: '25%',\r\n marginTop: '35px',\r\n marginBottom: '45px',\r\n border: \"2px solid #ebebeb\",\r\n }}>\r\n </GetButton>\r\n }\r\n </Griditem>\r\n </GridContainer> </div>}\r\n {/* {screen.article && <Article change={() => setScreen({ ...screen, type: false })} type={`infoType`} />} */}\r\n </BoxModal >\r\n </GetModal >\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(Plantype)","import React from \"react\";\r\n\r\n//@MATERIAL\r\nimport Icon from \"components/Icon\";\r\nimport Button from '@material-ui/core/Button';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport MenuList from '@material-ui/core/MenuList';\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//FUNCTIONS\r\nimport { translate, customApp, getAppAccess } from \"functions/\";\r\n\r\n\r\n//COMPONENTS \r\nimport Plantype from \"components/PlanType/Plantype\";\r\n\r\nfunction Comp(props) {\r\n const [newOpen, setNewOpen] = React.useState(false);\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null)\r\n const { db } = reduxStore.getState();\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n let hashs = window.location.hash.split(\"/\");\r\n hashs[0] = hashs[0].replace(\"#\", \"\");\r\n\r\n let idRel = null\r\n if (hashs[0].length !== 36 && (!hashs[2] || hashs[2].length !== 36)) {\r\n idRel = null;\r\n } else if (hashs[0].length === 36) {\r\n idRel = hashs[0];\r\n } else if (hashs[2].length === 36) {\r\n idRel = hashs[2];\r\n }\r\n\r\n const pathName = window.location.pathname.replace(\"/\", \"\").toLowerCase();\r\n let types = db.dataType.filter(a => {\r\n if (\r\n (\r\n pathName === \"sp\"\r\n ||\r\n (\r\n (\r\n !a.hash &&\r\n !idRel\r\n ) ||\r\n (\r\n a.hash &&\r\n idRel\r\n )\r\n )\r\n ) &&\r\n a.view &&\r\n Object.keys(a.view).filter(a => a === pathName).length > 0 &&\r\n (!a.view[pathName].pages ||\r\n (hashs[1] && a.view[pathName].pages.indexOf(hashs[1]) > -1) ||\r\n (!hashs[1] && a.view[pathName].pages.indexOf(\"none\") > -1))\r\n )\r\n return true\r\n return false\r\n });\r\n\r\n const handleToggle = () => {\r\n // console.log(types)\r\n if (types.length === 1 && types[0].name === 'plan') {\r\n setNewOpen(true)\r\n return\r\n }\r\n if (types.length === 1) {\r\n openModule(types[0], hashs[1] && hashs[1] === 'template' ? true : false)\r\n } else if (types.length > 1) {\r\n setOpen((prevOpen) => !prevOpen);\r\n }\r\n };\r\n\r\n const openModule = (i, template = false) => {\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: 'new',\r\n activeModule: i.iniModule,\r\n db: i.db,\r\n data: {\r\n type: i.name,\r\n _parent: hashs[0] && db.cards[hashs[0]] ? hashs[0] : null,\r\n ...i.data.type === \"user\" ? {\r\n }\r\n : {\r\n status: 'notStarted',\r\n ...template ? { isTemplate: true } : {},\r\n }\r\n }\r\n })\r\n // }\r\n }\r\n\r\n const handleClose = (event) => {\r\n // console.log(\"event\")\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === 'Tab') {\r\n event.preventDefault();\r\n setOpen(false);\r\n }\r\n }\r\n\r\n if (hashs && hashs[1] && hashs[1] === \"users\" && AppAccess.user && AppAccess.userAdmin)\r\n types.push({\r\n name: \"importUsers\",\r\n icon: \"import_contacts\",\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n importUsers: true,\r\n })\r\n }\r\n })\r\n\r\n\r\n\r\n\r\n if (types.length === 0)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n\r\n\r\n\r\n return (\r\n <div id=\"QuickAddBt\">\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n onClick={handleToggle}\r\n >\r\n <Icon usePropagation size={\"27px\"} color={customApp('menu')}>add_box</Icon>\r\n </Button>\r\n {newOpen && <Plantype handleClose={() => setNewOpen(false)} />}\r\n <Popper open={open} anchorEl={anchorRef.current} role={undefined} transition disablePortal>\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{ transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={(e) => { handleClose(e) }}>\r\n <MenuList autoFocusItem={open} id=\"menu-list-grow\" onKeyDown={handleListKeyDown}>\r\n {types\r\n .sort((a, b) => {\r\n if (a.name > b.name) return -1;\r\n return 0;\r\n })\r\n .map((a, i) => (\r\n <MenuItem\r\n key={i}\r\n style={{\r\n color: customApp('menu')\r\n }}\r\n onClick={() => {\r\n if (a.onClick) {\r\n a.onClick()\r\n } else {\r\n openModule(a)\r\n }\r\n setOpen(false);\r\n }}>\r\n <Icon icon={a.icon} style={{ margin: 'none !important' }} color={customApp('menu')} /><span style={{ marginLeft: '7px' }}>{translate(`$__${a.name}`, 1)}</span></MenuItem>\r\n ))\r\n }\r\n </MenuList>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n users: store.users\r\n});\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Comp);\r\n","//CORE\r\nimport React from 'react';\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport reduxStore from \"store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport Card from \"components/Card\";\r\nimport Icon from \"components/Icon\";\r\n\r\n\r\n//@MATERIAL\r\nimport Badge from '@material-ui/core/Badge';\r\nimport Button from '@material-ui/core/Button';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\n\r\n//FUNCTIONS\r\nimport { translate } from 'functions/';\r\nimport { countUnRead } from \"functions/chat\";\r\n\r\nfunction Component() {\r\n const { db, timeline, session } = reduxStore.getState()\r\n const [open, setOpen] = React.useState(false);\r\n const [count, setCount] = React.useState({})\r\n const [view, setView] = React.useState('users')\r\n const anchorRef = React.useRef(null)\r\n\r\n React.useEffect(() => {\r\n iniChatNotification()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [timeline])\r\n\r\n const iniChatNotification = async () => {\r\n const reqCount = countUnRead()\r\n setCount(reqCount)\r\n if (count.total > 0 && count.users === 0)\r\n setView('groups')\r\n if (view === 'groups' && count.total > 0 && count.groups === 0)\r\n setView('users')\r\n }\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n let timerCards = Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && db.cards[a]._kpiTimer\r\n && db.cards[a]\r\n && db.cards[a]._users\r\n && Object.keys(db.cards[a]._kpiTimer).filter(t =>\r\n db.cards[a]._kpiTimer &&\r\n db.cards[a]._kpiTimer[t] &&\r\n db.cards[a]._kpiTimer[t].userId &&\r\n session &&\r\n session._id &&\r\n db.cards[a]._kpiTimer[t].userId === session._id\r\n ).length > 0\r\n && Object.keys(db.cards[a]._users).filter(u => session && session._id && u === session._id).length > 0\r\n ).map(a => db.cards[a])\r\n\r\n if (timerCards.length === 0)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <div id=\"notificationsBt\"\r\n style={{\r\n zIndex: '100 !important'\r\n }}>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n onClick={handleToggle}\r\n >\r\n <Badge badgeContent={timerCards.length} color=\"secondary\" overlap=\"rectangular\">\r\n <Icon\r\n icon={'timer'}\r\n color={'parent'}\r\n title=\"$__timersInProgress\"\r\n />\r\n </Badge>\r\n </Button>\r\n {timerCards.length > 0 &&\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n role={undefined}\r\n transition\r\n disablePortal\r\n style={{ width: '400px' }}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{ transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <div style={{\r\n height: 'auto',\r\n maxHeight: 'calc(90vh - 80px)',\r\n width: '100%',\r\n overflowY: 'auto'\r\n }}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n padding: '7px'\r\n }}\r\n >\r\n {translate('$__timersInProgress')}\r\n </div>\r\n {\r\n timerCards.map((card, i) => (\r\n <Card db=\"cards\" key={i} cardId={card._id} notGlobalExpanded viewTimer />\r\n ))\r\n }\r\n </div>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","//CORE\r\nimport React from 'react';\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport reduxStore from \"store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport Card from \"components/Card\";\r\nimport Icon from \"components/Icon\";\r\n\r\n\r\n//@MATERIAL\r\nimport Badge from '@material-ui/core/Badge';\r\nimport Button from '@material-ui/core/Button';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from 'functions/';\r\n\r\nfunction Favorites(props) {\r\n const { session, db } = reduxStore.getState()\r\n const { cards, users } = db\r\n const [open, setOpen] = React.useState(false);\r\n const [FavoriteCards, setFavoriteCards] = React.useState([])\r\n const anchorRef = React.useRef(null)\r\n\r\n React.useEffect(() => {\r\n iniFavorites()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cards, users])\r\n\r\n const iniFavorites = async () => {\r\n let newFavoriteCards = Object.keys(cards)\r\n .filter(fil => {\r\n let myGroups = []\r\n if (db.users[session._id] && db.users[session._id].groups && db.users[session._id].groups.length > 0)\r\n db.users[session._id].groups.forEach(a => {\r\n if (myGroups.indexOf(a.value) === -1)\r\n myGroups.push(a.value)\r\n })\r\n if (\r\n cards[fil]\r\n && cards[fil]._isFavorite\r\n && !cards[fil].deleted\r\n && !cards[fil].archived\r\n && cards[fil].type !== \"plan\"\r\n && cards[fil]._users\r\n && (\r\n cards[fil]._users[session._id]\r\n || (\r\n cards[fil]._groups\r\n && Object.keys(cards[fil]._groups).filter(a => myGroups.indexOf(a) > -1).length > 0\r\n )\r\n )\r\n && cards[fil].status !== \"completed\"\r\n && (\r\n !props.hidePrivate\r\n || (\r\n props.hidePrivate\r\n && !cards[fil].private\r\n )\r\n )\r\n ) return true\r\n return false\r\n }\r\n )\r\n setFavoriteCards(newFavoriteCards)\r\n }\r\n\r\n\r\n\r\n if (FavoriteCards.length === 0)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n\r\n let favoriteCardsContent = FavoriteCards.map(c => {\r\n let a = cards[c]\r\n return (\r\n <div style={{ width: \"calc(100%)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }} key={a._id}>\r\n <Card db=\"cards\" data={a} noShadow />\r\n </div>\r\n )\r\n })\r\n\r\n if (!props.button)\r\n return (<>{favoriteCardsContent}</>)\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <div id=\"notificationsBt\"\r\n style={{\r\n zIndex: '100 !important'\r\n }}>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n onClick={handleToggle}\r\n >\r\n <Badge badgeContent={FavoriteCards.length} color=\"secondary\" overlap=\"rectangular\">\r\n <Icon\r\n icon={'favorite'}\r\n color={'parent'}\r\n title=\"$__favorites\"\r\n />\r\n </Badge>\r\n </Button>\r\n {FavoriteCards.length > 0 &&\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n role={undefined}\r\n transition\r\n disablePortal\r\n style={{ width: '400px' }}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{ transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <div style={{\r\n height: 'auto',\r\n maxHeight: 'calc(90vh - 80px)',\r\n width: '100%',\r\n overflowY: 'auto'\r\n }}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n padding: '7px',\r\n fontSize: 15,\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bold\",\r\n paddingLeft: 10\r\n }}\r\n >\r\n {translate('$__favorites')}\r\n </div>\r\n {favoriteCardsContent}\r\n </div>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n }\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Favorites)\r\n","import React from \"react\"\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 Card from \"components/Card\"\r\nimport GridContainer from \"components/Grid/GridContainer\"\r\nimport GridItem from \"components/Grid/GridItem\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\n\r\n// @MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//DEPENDENCIES\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/search.js\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, getAppAccess } from \"functions/\"\r\nimport { loadCardsV2 } from \"functions/loadData\"\r\nimport { planAccountVerify } from \"functions/cards\"\r\n\r\nfunction SearchComponent(props) {\r\n const [lastChange, setLastChange] = React.useState(\"\")\r\n const [loader, setLoader] = React.useState(false)\r\n const [filteredItems, setfilteredItems] = React.useState([])\r\n const [searchCompleted, setSearchCompleted] = React.useState(false)\r\n const [searchDeleted, setSearchDeleted] = React.useState(false)\r\n const [cardsType, setCardsType] = React.useState('all')\r\n const { db, session } = reduxStore.getState()\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n React.useEffect(() => {\r\n let timer = setTimeout(() => { }, 15000)\r\n if (props.text.length > 1 && props.text !== lastChange) {\r\n setLastChange(props.text)\r\n clearTimeout(timer)\r\n timer = setTimeout(() => searchCardsOnLine(), 500)\r\n setLoader(true)\r\n }\r\n return () => clearTimeout(timer)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.text])\r\n\r\n React.useEffect(() => {\r\n let timer = setTimeout(() => { }, 15000)\r\n if (props.completed !== searchCompleted && props.text && props.text.length > 1) {\r\n setLoader(true)\r\n setSearchCompleted(!searchCompleted)\r\n setSearchDeleted(true)\r\n timer = setTimeout(() => searchCardsOnLine(), 500)\r\n }\r\n return () => clearTimeout(timer)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.completed])\r\n\r\n React.useEffect(() => {\r\n let timer = setTimeout(() => { }, 15000)\r\n if (props.deleted !== searchDeleted && props.text && props.text.length > 1) {\r\n // setfilteredItems([])\r\n setLoader(true)\r\n setSearchDeleted(!searchDeleted)\r\n setSearchCompleted(true)\r\n timer = setTimeout(() => searchCardsOnLine(), 500)\r\n }\r\n return () => clearTimeout(timer)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.deleted])\r\n\r\n const searchCardsOnLine = async () => {\r\n let lc = await loadCardsV2(props, {\r\n search: props.text,\r\n ignoreLoader: true,\r\n deleted: props.deleted,\r\n completed: props.completed,\r\n cardLoad: \"search\"\r\n })\r\n if (lc) {\r\n setTimeout(() => {\r\n searchCards(lc)\r\n }, 1000)\r\n }\r\n }\r\n\r\n const searchCards = async (result) => {\r\n let userData = reduxStore.getState().db.users[session._id] || {}\r\n let cards = {\r\n ...reduxStore.getState().db.cards,\r\n ...result\r\n }\r\n\r\n let searchResult = new Promise((resolve, reject) => {\r\n if (cards && Object.keys(cards).length > 0)\r\n resolve(Object.keys(cards).filter(card => {\r\n if (\r\n cards[card]\r\n && cards[card].type !== 'chatGroup'\r\n &&\r\n (\r\n props.text\r\n &&\r\n (\r\n (\r\n cards[card].name\r\n && props.text\r\n && cards[card]\r\n && cards[card].name\r\n && cards[card].name.toLowerCase().indexOf(props.text.toLowerCase()) > -1\r\n )\r\n ||\r\n (\r\n cards[card]\r\n && props.text\r\n && cards[card].description\r\n && cards[card].description.toLowerCase().indexOf(props.text.toLowerCase()) > -1\r\n )\r\n )\r\n )\r\n && (\r\n (\r\n !cards[card].checklist\r\n ||\r\n (\r\n cards[card].checklist\r\n && cards[card].showCard\r\n )\r\n )\r\n &&\r\n (\r\n (\r\n props.deleted\r\n && cards[card].deleted\r\n )\r\n || (\r\n !props.deleted\r\n && !cards[card].deleted\r\n && (\r\n (\r\n !props.completed\r\n && cards[card]\r\n && cards[card].status !== 'completed'\r\n )\r\n ||\r\n (\r\n props.completed\r\n && cards[card]\r\n && cards[card].status === 'completed'\r\n )\r\n )\r\n )\r\n )\r\n && (\r\n (\r\n (\r\n (\r\n AppAccess.owner\r\n || AppAccess.planAdmin\r\n )\r\n && (\r\n cards[card].type !== 'plan'\r\n || (\r\n cards[card].type === 'plan'\r\n && planAccountVerify(card)\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n session._id\r\n && cards[card]._users\r\n && cards[card]._users[session._id]\r\n )\r\n ||\r\n (\r\n cards[card]\r\n && cards[card]._groups\r\n && Object.keys(cards[card]._groups).length > 0\r\n && Object.keys(cards[card]._groups).filter(gr =>\r\n userData\r\n && userData.groups\r\n && userData.groups.filter(xg => xg.value === gr).length > 0\r\n )\r\n )\r\n )\r\n\r\n &&\r\n (\r\n !cards[card].private\r\n ||\r\n (\r\n cards[card].private\r\n && cards[card]._users\r\n && cards[card]._users[session._id]\r\n )\r\n )\r\n )\r\n )\r\n ) return true\r\n return false\r\n }\r\n )\r\n )\r\n resolve([])\r\n })\r\n\r\n let response = await searchResult.then(a => {\r\n return a\r\n })\r\n if (response) {\r\n setfilteredItems(response)\r\n setLoader(false)\r\n if (props.onFinish)\r\n props.onFinish(response.length)\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n style={{ width: \"100%\" }}\r\n >\r\n <div style={{ positin: 'relative', width: '100%', minHeight: \"100px\" }}>\r\n {loader &&\r\n <GridContainer>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <LinearProgress />\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n }\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: \"177px\",\r\n padding: 7,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n marginRight: \"solid 1px lightgray\"\r\n }}\r\n >\r\n {filteredItems.length > 1 ?\r\n <div\r\n style={{\r\n backgroundColor: cardsType === 'all' ? \"rgba(0,0,0,0.08)\" : \"\",\r\n padding: \"0 3px\"\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__allResults`, '*')}\r\n text={translate(`$__allResults`, '*')}\r\n color={cardsType === 'all' ? customApp('menu') : 'lightGray'}\r\n icon={'manage_search'}\r\n onClick={() => {\r\n setCardsType('all')\r\n }}\r\n size={'17px'}\r\n style={{ padding: \"0px 3px !important\" }}\r\n transparent\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {db.type.filter(tp =>\r\n filteredItems\r\n .filter(card =>\r\n db.cards[card].type === tp.value).length > 0\r\n ).map((tp, i) => {\r\n return (\r\n <div\r\n key={`${i}-${tp}`}\r\n style={{\r\n backgroundColor: cardsType === 'asset' ? \"rgba(0,0,0,0.08)\" : \"\",\r\n padding: \"0 3px\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`${tp.label}`, '*')}\r\n text={translate(`${tp.label}`, '*')}\r\n color={cardsType === tp.value ? customApp('menu') : 'lightGray'}\r\n icon={tp.icon}\r\n onClick={() => {\r\n setCardsType(tp.value)\r\n }}\r\n size={'17px'}\r\n style={{ padding: \"0px 3px !important\" }}\r\n transparent\r\n />\r\n <div style={{\r\n backgroundColor: cardsType === tp.value ? customApp(\"menu\", 1) : customApp(\"menu\", 0.5),\r\n fontSize: 9,\r\n color: \"#FFFFFF\",\r\n borderRadius: 11,\r\n width: 22,\r\n height: 22,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n {filteredItems.filter(card => db.cards[card].type === tp.value).length}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n <div\r\n style={{\r\n width: \"calc(100% - 177px)\",\r\n padding: 7,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n }}\r\n >\r\n <GridContainer>\r\n {db.type.filter(tp =>\r\n (cardsType !== 'all'\r\n && tp.value === cardsType\r\n )\r\n || (\r\n cardsType === 'all'\r\n &&\r\n filteredItems\r\n .filter(card =>\r\n db.cards[card].type === tp.value).length > 0\r\n )\r\n ).map((tp, i) => {\r\n return (\r\n <div key={`${tp}-${i}`}>\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={translate(tp.label, 1)}\r\n icon={tp.icon}\r\n color={customApp('menu')}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n {filteredItems\r\n .filter(card => db.cards[card].type === tp.value)\r\n .sort((a, b) => {\r\n if (db.cards[a].name < db.cards[b].name)\r\n return -1\r\n if (db.cards[a].name > db.cards[b].name)\r\n return 1\r\n return 0\r\n })\r\n .map((card, i) => {\r\n return (\r\n <GridItem\r\n key={card}\r\n md={12}\r\n style={{ minWidth: '300px' }}\r\n >\r\n <Card cardId={card} db='cards' showConnectedIn searchText={props.text} expanded={false} onAction={() => { props.onAction() }} />\r\n </GridItem>\r\n )\r\n })}\r\n </GridItem>\r\n </div>\r\n )\r\n })}\r\n </GridContainer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n return {\r\n cards: store.db.cards\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(SearchComponent))","//CORE\r\nimport React from 'react'\r\nimport moment from \"moment-timezone\";\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 Card from \"components/Card\";\r\nimport Icon from \"components/Icon\";\r\nimport Message from \"componentsV3/Timeline/message\";\r\nimport TextField from \"components/TextField\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport HeaderWithIcon from \"components/Header/card\";\r\n\r\n//@MATERIAL\r\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\";\r\nimport Avatar from \"components/Avatar\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n getDate,\r\n Highlighted,\r\n translate,\r\n} from 'functions';\r\n\r\nfunction Component(props) {\r\n const { timeline, functions } = reduxStore.getState()\r\n const { socket } = functions\r\n const { db } = reduxStore.getState()\r\n const [viewMessage, setViewMessage] = React.useState(false)\r\n\r\n const [file, setFile] = React.useState(props.data)\r\n const fileName = file.name.split('.')\r\n let ext = fileName[fileName.length - 1]\r\n\r\n const [edit, setEdit] = React.useState(false)\r\n const [name, setName] = React.useState(fileName[0])\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n if (file.name === 'blob') {\r\n file.name = `${translate('$__coverImage', '*')}.jpg`\r\n ext = 'jpg'\r\n }\r\n\r\n let img = `attachment`\r\n if (reduxStore.getState().db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1).length > 0)\r\n img = reduxStore.getState().db.fileExtensions.filter(a => a.ext.indexOf(ext.toLowerCase()) > -1)[0].icon\r\n || `https://machen.azureedge.net/${file.file}`\r\n\r\n\r\n const update = async (dataUpdate) => {\r\n try {\r\n socket.emit(\"data\", {\r\n module: \"node\",\r\n method: \"put\",\r\n action: \"update\"\r\n }, {\r\n _id: file._id,\r\n ...dataUpdate\r\n }, async () => {\r\n setFile({ ...file, ...dataUpdate })\r\n setEdit(false)\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n let timelineData = {\r\n ...db.cards[file.cardId] && timeline[file.cardId] && timeline[file.cardId][file.timelineId] ? timeline[file.cardId][file.timelineId] : file.message,\r\n }\r\n if (timelineData && !timelineData.message)\r\n timelineData = {\r\n ...timelineData,\r\n message: translate(\"$__onlyAttachment\")\r\n }\r\n\r\n\r\n return (\r\n <div\r\n style={{\r\n width: '100%'\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginBottom: '5px',\r\n cursor: 'pointer',\r\n }}\r\n >\r\n {props.resume ?\r\n <React.Fragment>\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n // justifyContent: 'space-between'\r\n }}\r\n onClick={(e) => {\r\n if (props.openLightBox)\r\n props.openLightBox()\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '33px',\r\n height: '33px',\r\n // marginRight: '7px',\r\n alignItems: 'center',\r\n display: 'flex',\r\n overflow: 'hidden'\r\n }}\r\n >\r\n {typeof img === 'string' && img.indexOf('https') === -1 && img.indexOf('svg') === -1 ?\r\n <Icon icon={img} size='33px' />\r\n :\r\n <img alt=\"MACHEN_IMAGE\" src={img} width='100%' style={{ width: 'auto', height: 'auto', maxHeight: '77%' }} onError={(e) => e.target.src = img} />\r\n }\r\n </div>\r\n\r\n <div style={{\r\n marginLeft: '7px',\r\n width: \"calc(100% - 80px)\",\r\n maxWidth: \"calc(100% - 80px)\",\r\n minWidth: '150px',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n {Highlighted(file.name, props.searchText)}\r\n </div>\r\n {db.users[file.createdBy] &&\r\n <div style={{\r\n position: 'absolute', right: '10px', top: '7px', zIndex: '10'\r\n }}>\r\n <AvatarGroup max={7}>\r\n <Tooltip\r\n title={db.users[file.createdBy].displayName ? db.users[file.createdBy].displayName : db.users[file.createdBy].name}\r\n >\r\n <Avatar\r\n alt={db.users[file.createdBy].displayName ? db.users[file.createdBy].displayName : db.users[file.createdBy].name}\r\n src={`${db.users[file.createdBy].image}`}\r\n style={{ width: '15px', height: '15px' }}\r\n >\r\n {db.users[file.createdBy].name.substr(0, 1)}\r\n </Avatar>\r\n </Tooltip>\r\n </AvatarGroup>\r\n </div>\r\n\r\n }\r\n </div>\r\n {props.showParent &&\r\n (\r\n file.timelineId\r\n || file.message\r\n )\r\n // && viewMessage\r\n &&\r\n (\r\n (\r\n db.cards[file.cardId]\r\n && timeline[file.cardId]\r\n && timeline[file.cardId][file.timelineId]\r\n )\r\n ||\r\n (\r\n file.message\r\n )\r\n )\r\n &&\r\n <div style={{ width: '100%', marginBottom: \"33px\" }} >\r\n <Message\r\n openLightBox={(e) => {\r\n if (props.openLightBox)\r\n props.openLightBox(e)\r\n }}\r\n storie={timelineData}\r\n db={'cards'} nodeId={file.cardId}\r\n />\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n {props.showParent && file.cardId && db.cards[file.cardId] &&\r\n <div style={{ width: '100%', top: \"33px\" }}>\r\n <Card db=\"cards\" cardId={file.cardId} showConnectedIn />\r\n </div>\r\n }\r\n <div style={{ width: \"100%\", height: \"1px\", backgroundColor: \"rgba(0,0,0,0.1)\", marginTop: \"15px\" }}></div>\r\n </React.Fragment>\r\n :\r\n <div style={{\r\n position: \"relative\",\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n padding: '15px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '70px'\r\n }}>\r\n <div style={{\r\n position: 'absolute',\r\n top: '0px',\r\n width: 'calc(100% - 30px)',\r\n borderBottom: `solid 1.5px ${customApp('color')}`,\r\n alignItems: 'center',\r\n display: 'flex',\r\n color: customApp('color'),\r\n }}>\r\n <div\r\n style={{\r\n width: '357px',\r\n textAlign: 'center',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n display: 'flex',\r\n cursor: 'pointer'\r\n }}\r\n onClick={(e) => {\r\n if (props.onClick)\r\n props.onClick()\r\n }}\r\n onDoubleClick={() => {\r\n setEdit(true)\r\n }}\r\n >\r\n {edit ?\r\n <React.Fragment>\r\n <div\r\n style={{ position: 'relative', float: 'left', width: '100%', padding: '7px', display: 'flex', alignItems: 'center' }}>\r\n <div style={{ width: 'calc(100% - 50px)', display: 'flex' }}>\r\n <TextField\r\n label={translate('$__taskTitle')}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setName(d.target.value)\r\n },\r\n onBlur: (d) => {\r\n if (d.target.value === '')\r\n setEdit(!edit)\r\n },\r\n onKeyDown: (e) => {\r\n if (e.keyCode === 13 && name) {\r\n update({\r\n name: `${name}.${ext}`\r\n })\r\n }\r\n if (e.keyCode === 27) {\r\n setEdit(!edit)\r\n setName()\r\n }\r\n }\r\n }}\r\n autoFocus\r\n value={name}\r\n placeholder={translate('$__taskTitlePlaceholder')}\r\n />\r\n </div>\r\n <div style={{ display: 'flex' }}>\r\n <div\r\n onClick={() => update({\r\n name: `${name}.${ext}`\r\n })}\r\n >\r\n <Icon color='green' icon={'save'} title={translate('$__save', '*')} size={props.actionsSize || '25px'} />\r\n </div>\r\n <div\r\n onClick={() => {\r\n setEdit(!edit)\r\n setName('')\r\n }}\r\n >\r\n <Icon color={customApp('medium')} icon={'cancel'} title={translate(\"$__cancel\", \"*\")} size={props.actionsSize || '25px'} />\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n :\r\n <div style={{ width: '100%' }}>\r\n\r\n {file.in && file.in.name &&\r\n <div style={{ display: 'flex', alignItems: \"center\", }}>\r\n {file.in.db === 'User' ?\r\n <Tooltip\r\n title={file.in.name}\r\n >\r\n <Avatar\r\n alt={file.in.name}\r\n src={file.in.image}\r\n style={{ width: '15px', height: '15px' }}\r\n >\r\n {file.in.name}\r\n </Avatar>\r\n </Tooltip>\r\n : <React.Fragment></React.Fragment>}\r\n <HeaderWithIcon\r\n title={file.in.name}\r\n icon={file.in.db === 'User' ? null : (file.in.type && db && db.dataType && db.dataType.filter(a => a.name === file.in.type)[0] && db.dataType.filter(a => a.name === file.in.type)[0].icon) || \"$__topic\"}\r\n color={customApp('medium')}\r\n style={{\r\n padding: '7px',\r\n width: 'calc(100% - 30px)',\r\n textAlign: 'left'\r\n }}\r\n textStyle\r\n />\r\n </div>\r\n }\r\n <div\r\n style={{\r\n width: '100%',\r\n display: \"flex\",\r\n alignItems: 'center',\r\n padding: '0 15px'\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '33px',\r\n marginRight: '7px',\r\n alignItems: 'center',\r\n height: '50px',\r\n display: 'flex',\r\n justifyContent: 'center'\r\n }}\r\n >\r\n {typeof img === 'string' && img.indexOf('https') === -1 && img.indexOf('svg') === -1 ?\r\n <Icon icon={img} size='33px' />\r\n :\r\n <div\r\n style={{\r\n position: 'absolute',\r\n width: '33px',\r\n height: '33px',\r\n margin: '7px',\r\n borderRadius: '50%',\r\n overflow: 'hidden',\r\n backgroundImage: `url(\"${img}\")`,\r\n backgroundPosition: 'center center',\r\n backgroundSize: 'cover'\r\n }}\r\n\r\n >\r\n </div>\r\n }\r\n </div>\r\n {file.name}\r\n </div>\r\n {file.createdBy &&\r\n <div style={{\r\n position: 'relative',\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n color: props.dark ? \"lightgray\" : \"gray\",\r\n fontSize: 10,\r\n marginLeft: '42px',\r\n clear: 'both'\r\n }}>\r\n <Avatar\r\n alt={file.createdBy.name}\r\n src={file.createdBy.image}\r\n style={{ width: '15px', height: '15px' }}\r\n >\r\n {file.createdBy.name}\r\n </Avatar>\r\n <span style={{ marginLeft: 3 }}>\r\n {file.createdBy.name} - ({getDate(file.created_at)})\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div\r\n style={{\r\n width: '130px',\r\n textAlign: 'center',\r\n borderRight: `solid 1.5px ${customApp('color')}`,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n display: 'flex',\r\n fontSize: '12px',\r\n }}\r\n >\r\n {moment(new Date(file.created_at * 1000)).format(\"DD/MM/YYYY HH:mm\")}\r\n </div>\r\n <div\r\n style={{\r\n width: '130px',\r\n borderRight: `solid 1.5px ${customApp('color')}`,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n display: 'flex',\r\n overflow: 'visible'\r\n }}\r\n >\r\n {db.users[file.createdBy] &&\r\n <Tooltip\r\n title={db.users[file.createdBy].name}\r\n >\r\n <React.Fragment>\r\n <Avatar size=\"sm\" src={`${db.users[file.createdBy].image}`} >\r\n {db.users[file.createdBy].name.substr(0, 1)}\r\n </Avatar>\r\n </React.Fragment>\r\n </Tooltip>\r\n }\r\n </div>\r\n <div\r\n style={{\r\n width: '300px',\r\n textAlign: 'left',\r\n borderRight: `solid 1.5px ${customApp('color')}`,\r\n paddingLeft: '15px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n display: 'flex'\r\n }}\r\n >\r\n\r\n </div>\r\n <div\r\n style={{\r\n width: '130px',\r\n textAlign: 'left',\r\n paddingLeft: '15px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n display: 'flex'\r\n }}>\r\n <Tooltip\r\n title={translate('$__showFile')}>\r\n <Icon\r\n onClick={props.openLightBox ? () => {\r\n props.openLightBox()\r\n } : null\r\n }\r\n >\r\n pageview\r\n </Icon>\r\n </Tooltip>\r\n {(file.timelineId || file.message) &&\r\n <Tooltip\r\n title={translate('$__viewMessage')}>\r\n <Icon\r\n size=\"20px\"\r\n onClick={() => {\r\n setViewMessage(!viewMessage)\r\n }}\r\n >feedback</Icon>\r\n </Tooltip>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div >\r\n {\r\n (file.timelineId || file.message)\r\n && viewMessage\r\n &&\r\n (\r\n (\r\n db.cards[file.cardId]\r\n && timeline[file.cardId]\r\n && timeline[file.cardId][file.timelineId]\r\n )\r\n ||\r\n (\r\n file.message\r\n )\r\n )\r\n &&\r\n <div style={{ width: '100%' }} >\r\n <Message\r\n openLightBox={(e) => {\r\n if (props.openLightBox)\r\n props.openLightBox(e)\r\n }}\r\n storie={timelineData}\r\n db={'cards'} nodeId={file.cardId}\r\n />\r\n </div>\r\n }\r\n </div >\r\n )\r\n}\r\nconst mapStateToProps = () => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)\r\n","import React from \"react\";\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 File from \"components/Files/file\";\r\nimport LinearProgress from \"components/Progress/linear\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport HeaderWithIcon from \"components/Header/withIcon\";\r\n\r\n// @MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/search\";\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\nimport apims from \"apims\"\r\n\r\nfunction SearchComponent(props) {\r\n const [lastChange, setLastChange] = React.useState(\"\")\r\n const [loader, setLoader] = React.useState(false)\r\n const [filteredItems, setfilteredItems] = React.useState([]);\r\n const { db } = reduxStore.getState()\r\n const { dataType } = db\r\n\r\n let lightBoxfiles = [];\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n React.useEffect(() => {\r\n if (props.text.length > 1 && props.text !== lastChange) {\r\n setLastChange(props.text)\r\n const timer = setTimeout(() => searchFiles(), 1000);\r\n setLoader(true)\r\n return () => clearTimeout(timer);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.text])\r\n\r\n const searchFiles = async () => {\r\n const res = await apims.get(`/Files_Search/?text=${props.text}`)\r\n if (res && res.data) {\r\n let newFiles = {\r\n ...filteredItems\r\n }\r\n res.data.forEach(file => {\r\n newFiles = {\r\n ...newFiles,\r\n [file.file._id]: {\r\n ...newFiles[file.file._id] || {},\r\n ...file.file,\r\n cardId: file.cardId || null,\r\n createdBy: file.createdBy || null,\r\n user: file.user,\r\n message: file.message,\r\n timelineId: file.timelineId\r\n }\r\n }\r\n })\r\n if (props.onFinish)\r\n props.onFinish(res.data.length)\r\n setfilteredItems(newFiles)\r\n setLoader(false)\r\n }\r\n }\r\n\r\n const openLightBox = (f) => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n open: true,\r\n files: lightBoxfiles,\r\n file: f\r\n })\r\n }\r\n\r\n return (\r\n <div\r\n style={{ width: \"100%\" }}\r\n >\r\n <div style={{ positin: 'relative', width: '100%' }}>\r\n {loader &&\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <LinearProgress />\r\n </div>\r\n }\r\n <GridContainer>\r\n {Object.keys(filteredItems).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n <HeaderWithIcon\r\n title={translate('$__files', 1)}\r\n icon={dataType.filter(a => a.name === 'plan')[0].icon}\r\n color={customApp('menu')}\r\n filterText={props.text}\r\n style={{\r\n padding: '7px'\r\n }}\r\n />\r\n {Object.keys(filteredItems)\r\n .map((file, i) => {\r\n lightBoxfiles.push(filteredItems[file])\r\n return (\r\n <GridItem\r\n key={file}\r\n md={12}\r\n >\r\n <File\r\n data={filteredItems[file]}\r\n searchText={props.text}\r\n resume\r\n showParent\r\n openLightBox={() => {\r\n openLightBox(filteredItems[file]._id)\r\n if (props.onAction)\r\n props.onAction()\r\n }\r\n }\r\n />\r\n </GridItem>\r\n )\r\n })}\r\n </GridItem>\r\n }\r\n </GridContainer>\r\n </div>\r\n </div >\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n return {\r\n store,\r\n ownProps\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(SearchComponent))","\r\nconst adminNavbarLinksStyle = theme => ({\r\n avatar: {\r\n width: \"30px\",\r\n height: \"30px\",\r\n backgroundSize: \"cover\",\r\n borderRadius: \"50%\"\r\n },\r\n component: {\r\n //marginTop: '15px',\r\n //marginBottom: '15px',\r\n zIndex: '10',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n selectedName: {\r\n display: \"inline-flex\", cursor: \"pointer\"\r\n },\r\n selectedNameText: {\r\n textDecoration: \"none\",\r\n fontSize: \"12px\",\r\n fontFamily: \"Soleto\",\r\n },\r\n});\r\n\r\nexport default adminNavbarLinksStyle;\r\n","//REACT\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n//import api from \"api/\";\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\nimport history from \"store/history\"\r\n\r\n//COMPONENTS\r\nimport HtmlTooltip from \"components/Tooltip/html\"\r\nimport Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport MenuList from \"@material-ui/core/MenuList\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Popper from \"@material-ui/core/Popper\";\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n//STYLES\r\nimport headerLinksStyle from \"assets/jss/material-dashboard-pro-react/components/SideBarMenuUser\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions/\";\r\n\r\nfunction HeaderLinks(props) {\r\n const { db, session } = reduxStore.getState();\r\n const { socket } = reduxStore.getState().functions\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n\r\n const handleToggle = i => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === 'Tab') {\r\n event.preventDefault();\r\n setOpen(false);\r\n }\r\n }\r\n\r\n const prevOpen = React.useRef(open);\r\n React.useEffect(() => {\r\n if (prevOpen.current === true && open === false) {\r\n anchorRef.current.focus();\r\n }\r\n\r\n prevOpen.current = open;\r\n }, [open]);\r\n\r\n const logout = async () => {\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"logout\"\r\n }, {},\r\n () => {\r\n\r\n })\r\n\r\n // handleToggle()\r\n localStorage.clear()\r\n setTimeout(() => {\r\n window.location.href = '/login'\r\n }, 500)\r\n };\r\n\r\n const { classes } = props\r\n\r\n const user = {\r\n name: session?.name || null,\r\n _id: session?._id || null,\r\n image: session?.image || null\r\n }\r\n\r\n if (!user || !user.name)\r\n return null\r\n\r\n return (\r\n <div className={classes.component}>\r\n <div className={classes.selectedName} onClick={handleToggle}>\r\n <div\r\n ref={anchorRef}\r\n className={classes.selectedNameText}\r\n style={{\r\n color: customApp('light') || '#FFFFFF',\r\n display: \"flex\",\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}>\r\n <HtmlTooltip title={\r\n <React.Fragment>\r\n {user.name ? user.name : user.name}\r\n </React.Fragment>\r\n } >\r\n <React.Fragment>\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '33px',\r\n height: '33px',\r\n borderRadius: '50%',\r\n border: `solid 1px ${customApp('menu')}`,\r\n }}\r\n >\r\n {!user.image ?\r\n <Icon icon=\"user\" color={customApp(\"menu\")} />\r\n :\r\n <div\r\n style={{\r\n display: 'flex',\r\n width: '90%',\r\n height: '90%',\r\n backgroundImage: `url(\"${user.image}\")`,\r\n backgroundColro: \"lightgray\",\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'center center',\r\n borderRadius: '50%',\r\n }}\r\n ></div>\r\n }\r\n </div>\r\n </React.Fragment>\r\n </HtmlTooltip>\r\n </div>\r\n </div>\r\n <div style={{ zIndex: 10 }}>\r\n <Popper open={open} anchorEl={anchorRef.current} role={undefined} transition disablePortal>\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{ transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <MenuList autoFocusItem={open} id=\"menu-list-grow\" onKeyDown={handleListKeyDown}>\r\n {/* <MenuItem onClick={handleClose}>Profile</MenuItem> */}\r\n <MenuItem onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...db.sideModule,\r\n id: session._id,\r\n activeModule: 'userEdit',\r\n db: 'users',\r\n data: {\r\n type: 'user',\r\n ...db.users[session._id],\r\n }\r\n })\r\n }}>{translate(\"$__myProfile\", 1)}</MenuItem>\r\n <MenuItem onClick={() => {\r\n history.push(\"profile\")\r\n }}>{translate(\"$__profileUser\", 1)}</MenuItem>\r\n <MenuItem onClick={() => logout()}>{translate(\"$__logout\", 1)}</MenuItem>\r\n </MenuList>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </div>\r\n </div>\r\n );\r\n\r\n}\r\n\r\nHeaderLinks.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(headerLinksStyle)(HeaderLinks));","import React, { useState, useEffect, useCallback, useRef, useMemo } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\nimport history from \"store/history\";\r\n\r\n// COMPONENTES\r\nimport ChatNotifications from \"components/Chat/notifications\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport ErrorBoundary from \"components/ErrorBoundary\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Icon from \"components/Icon\";\r\nimport MoreVert from \"components/MoreMenu/\";\r\nimport MyDayNotifications from \"componentsV3/Notifications/myDay\";\r\nimport MyRequireApproval from \"componentsV3/Notifications/requireApproval\";\r\nimport Notifications from \"componentsV3/Notifications\";\r\nimport QuickAdd from \"components/QuickAdd/\";\r\nimport TextField from \"components/TextField\";\r\nimport TimersNotifications from \"components/Timer/notifications\";\r\nimport Favorites from \"componentsV3/Favorites\";\r\n\r\n// @MATERIAL-UI\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Popper from \"@material-ui/core/Popper\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n// DEPENDÊNCIAS\r\nimport SearchCards from \"components/TopSearch/cards\";\r\nimport SearchFiles from \"components/TopSearch/files\";\r\nimport User from \"./User\";\r\n\r\n// STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/search.js\";\r\n\r\n// ROTAS\r\nimport routes from \"routes\";\r\n\r\n// FUNÇÕES\r\nimport { customApp, getAppAccess, translate } from \"functions/\";\r\n\r\nfunction SearchComponent(props) {\r\n const {\r\n expanded,\r\n menuExpand,\r\n loaders,\r\n reduxFunction,\r\n controls,\r\n db,\r\n session,\r\n chat,\r\n } = props;\r\n\r\n // Estados do componente\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n const [cardsLoader, setCardsLoader] = useState(0);\r\n const [filesLoader, setFilesLoader] = useState(0);\r\n const [searchCardsLoading, setSearchCardsLoading] = useState(false);\r\n const [searchFilesLoading, setSearchFilesLoading] = useState(false);\r\n const [cardsStatusSearch, setCardsStatusSearch] = useState(\"asset\");\r\n const [properties, setProperties] = useState({\r\n title: null,\r\n icon: null,\r\n sTitle: null,\r\n sIcon: null,\r\n });\r\n const anchorRef = useRef(null);\r\n\r\n // Extrai informações da URL\r\n const { pathname, hash } = window.location;\r\n const hashParts = useMemo(() => {\r\n const parts = hash.split(\"/\");\r\n parts[0] = parts[0].replace(\"#\", \"\");\r\n return parts;\r\n }, [hash]);\r\n\r\n // Atualiza as propriedades da página com base na rota e dados do redux\r\n useEffect(() => {\r\n const route = routes.find((fil) => fil.path === pathname) || {};\r\n let title = translate(`$__${route.alias}`, 1);\r\n let icon = route.icon;\r\n let sTitle = \"\";\r\n let sIcon = null;\r\n\r\n if (route.alias === \"plan\" && hashParts[0] && db.cards && db.cards[hashParts[0]]) {\r\n title = `${translate(`$__${route.alias}`, 1)}: ${db.cards[hashParts[0]].name}`;\r\n }\r\n if (route.tabs && route.tabs.length > 0) {\r\n const tab = route.tabs.find((fil) => fil.path === hashParts[1]);\r\n if (tab) {\r\n sTitle = translate(`$__${tab.alias}`, 1);\r\n icon = tab.icon;\r\n }\r\n }\r\n setProperties({ title, icon, sTitle, sIcon });\r\n }, [pathname, hashParts, db]);\r\n\r\n // Manipulador de fechamento do popper de busca\r\n const handleClose = useCallback((event) => {\r\n if (event?.target?.className?.indexOf(\"ignoreClickAway\") > -1) return;\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) return;\r\n setTimeout(() => {\r\n setSearchValue(\"\");\r\n setSearchCardsLoading(false);\r\n setSearchFilesLoading(false);\r\n }, 100);\r\n }, []);\r\n\r\n // Manipulador para alterar o valor de busca\r\n const handleInputChange = useCallback((e) => {\r\n setSearchValue(e.target.value);\r\n setSearchCardsLoading(true);\r\n setSearchFilesLoading(true);\r\n }, []);\r\n\r\n // Manipulador para limpar a busca\r\n const handleClearSearch = useCallback(() => {\r\n setSearchValue(\"\");\r\n setSearchCardsLoading(false);\r\n setSearchFilesLoading(false);\r\n }, []);\r\n\r\n const appAccess = getAppAccess();\r\n\r\n // Memoiza as opções do MoreVert para evitar recriação em cada render\r\n const moreVertOptions = useMemo(() => {\r\n const unlockedCount = Object.keys(controls.unlockedPrivates || {}).filter(\r\n (key) => controls.unlockedPrivates[key]\r\n ).length;\r\n\r\n const options = [\r\n ...(appAccess &&\r\n appAccess.user &&\r\n (appAccess.userAdmin || appAccess.userModerate)\r\n ? [\r\n {\r\n name: \"$__usersAndContacts\",\r\n icon: \"account_box\",\r\n onClick: () => history.push(\"c#tab/users\"),\r\n },\r\n {\r\n name: \"$__customersCompaniesAndDivisions\",\r\n icon: \"business\",\r\n onClick: () => history.push(\"c#tab/units\"),\r\n },\r\n ]\r\n : []),\r\n ...(appAccess &&\r\n appAccess.user &&\r\n appAccess.userAdmin &&\r\n appAccess.plan &&\r\n appAccess.planAdmin\r\n ? [\r\n {\r\n name: \"$__forms\",\r\n icon: \"ballot\",\r\n onClick: () => history.push(\"forms\"),\r\n },\r\n ]\r\n : []),\r\n {\r\n name: \"$__support\",\r\n icon: \"help_outline\",\r\n onClick: () => window.open(\"https://support.machen.ai\", \"_blank\"),\r\n },\r\n (session &&\r\n ((session._access && session._access.master) || session.isAdmin)) && {\r\n name: \"$__APPSettings\",\r\n icon: \"engineering\",\r\n onClick: () => window.open(\"/masterAdmin#tab/languages\", \"_self\"),\r\n show: \"hover\",\r\n },\r\n (session && session._id === \"701bbca1-e1e4-4ea0-ada8-30f74ae74894\") && {\r\n name: \"DEV\",\r\n icon: \"code\",\r\n onClick: () => history.push(\"plataformAdministrator\"),\r\n show: \"hover\",\r\n },\r\n ...(!controls.hidePrivate\r\n ? [\r\n {\r\n name: translate(\r\n !controls.lockPrivate\r\n ? `$__unlockMyPrivateActivities`\r\n : `$__lockMyPrivateActivities`,\r\n 1\r\n ),\r\n icon: !controls.lockPrivate ? `lock_open` : `private_connectivity`,\r\n color: controls.lockPrivate ? \"lightgray\" : null,\r\n onClick: () => {\r\n reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...controls,\r\n lockPrivate: !controls.lockPrivate,\r\n ...(!controls.lockPrivate ? { unlockedPrivates: {} } : {}),\r\n });\r\n },\r\n show: \"hover\",\r\n },\r\n ]\r\n : []),\r\n {\r\n name: translate(\r\n !chat.notifications ? `$__chatNotificationsOff` : `$__chatNotificationsActive`,\r\n 1\r\n ),\r\n icon: !chat.notifications ? `notifications_off` : `notifications_active`,\r\n color: !chat.notifications ? \"lightgray\" : \"green\",\r\n onClick: () => {\r\n reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n notifications: !chat.notifications,\r\n });\r\n },\r\n show: \"hover\",\r\n },\r\n ...(unlockedCount > 0\r\n ? [\r\n {\r\n name: translate(`$__lockMyPrivateActivities`, 1),\r\n icon: `private_connectivity`,\r\n color: \"red\",\r\n count: unlockedCount,\r\n onClick: () => {\r\n reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...controls,\r\n unlockedPrivates: unlockedCount,\r\n lockPrivate: false,\r\n });\r\n },\r\n show: \"hover\",\r\n },\r\n ]\r\n : []),\r\n ...(session && session._access && session._access[\"masterAdmin\"] > 0\r\n ? [\r\n {\r\n name: translate(`$__accountSettings`, 1),\r\n icon: `settings_applications`,\r\n color: \"lightgray\",\r\n onClick: () => history.push(\"acc#tab/resume\"),\r\n show: \"hover\",\r\n },\r\n ]\r\n : []),\r\n ];\r\n return options.filter(Boolean);\r\n }, [appAccess, controls, session, chat, reduxFunction]);\r\n\r\n // Memoriza o estilo do container principal para evitar recriações\r\n const topContainerStyle = useMemo(() => ({\r\n position: \"absolute\",\r\n top: \"-4px\",\r\n right: 0,\r\n left: expanded ? 30 : 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n zIndex: \"100 !important\",\r\n }), [expanded]);\r\n\r\n return (\r\n <div style={topContainerStyle} id=\"top_\">\r\n <GridContainer>\r\n <GridItem\r\n xs={10}\r\n sm={4}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n style={{ display: \"flex\", alignItems: \"center\" }}\r\n id=\"top_menuHideShow\"\r\n >\r\n {!expanded && (\r\n <Button style={{ width: \"50px\" }} onClick={menuExpand}>\r\n <Icon\r\n icon=\"menu\"\r\n title=\"$__showMenu\"\r\n size=\"27px\"\r\n color={customApp(\"menu\")}\r\n />\r\n </Button>\r\n )}\r\n <div\r\n id=\"top_pageTitle\"\r\n style={{\r\n color: customApp(\"menu\"),\r\n marginLeft: \"22px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {properties.sTitle\r\n ? `${properties.title} - ${properties.sTitle.toLowerCase() === \"matrix\" ? \"MATRIX SWOT\" : properties.sTitle\r\n }`\r\n : properties.title}\r\n </div>\r\n </GridItem>\r\n <ErrorBoundary>\r\n <GridItem\r\n xs={12}\r\n sm={4}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n zIndex: \"10 !important\",\r\n }}\r\n id=\"top_search\"\r\n >\r\n <div\r\n style={{ position: \"relative\", width: \"calc(100% - 15px)\", zIndex: \"10 !important\" }}\r\n >\r\n <TextField\r\n ref={anchorRef}\r\n label={translate(\"$__search\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"name\"\r\n InputLabelProps={{ shrink: true }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment:\r\n searchValue !== \"\" ? (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"close\" onClick={handleClearSearch} />\r\n </InputAdornment>\r\n ) : null,\r\n onChange: handleInputChange,\r\n }}\r\n value={searchValue}\r\n placeholder={translate(\"$__searchInMachen\")}\r\n />\r\n {searchValue !== \"\" && searchValue.length > 1 && (\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <Popper\r\n open={!!searchValue}\r\n anchorEl={anchorRef.current}\r\n role={undefined}\r\n transition\r\n disablePortal\r\n style={{\r\n position: \"absolute\",\r\n zIndex: 10,\r\n bottom: 0,\r\n left: \"5px\",\r\n right: \"5px\",\r\n width: \"100%\",\r\n minWidth: \"400px\",\r\n maxWidth: \"800px\",\r\n }}\r\n >\r\n {({ TransitionProps }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin: \"center bottom\",\r\n zIndex: \"3\",\r\n maxHeight: \"calc(100vh - 177px)\",\r\n overflowY: \"auto\",\r\n }}\r\n >\r\n <Paper style={{ zIndex: \"3\", boxShadow: \"0 7px 15px rgba(0,0,0,0.33) !important\" }}>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n borderBottom: \"solid 2px rgba(0,0,0,0.22)\",\r\n backgroundColor: \"#f1f1f1\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: cardsStatusSearch === \"asset\" ? \"rgba(0,0,0,0.08)\" : \"\",\r\n padding: \"0 3px\",\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__asset`, \"*\")}\r\n text={translate(`$__asset`, \"*\")}\r\n color={cardsStatusSearch === \"asset\" ? customApp(\"menu\") : \"lightGray\"}\r\n icon=\"play_circle_outline\"\r\n onClick={() => {\r\n setCardsStatusSearch(\"asset\");\r\n setSearchCardsLoading(true);\r\n setSearchFilesLoading(true);\r\n setCardsLoader(0);\r\n setFilesLoader(0);\r\n }}\r\n size=\"17px\"\r\n style={{ padding: \"0px 3px !important\" }}\r\n transparent\r\n />\r\n </div>\r\n <div\r\n style={{\r\n backgroundColor: cardsStatusSearch === \"completed\" ? \"rgba(0,0,0,0.08)\" : \"\",\r\n padding: \"0 3px\",\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__completed`, \"*\")}\r\n text={translate(`$__completed`, \"*\")}\r\n color={cardsStatusSearch === \"completed\" ? customApp(\"menu\") : \"lightGray\"}\r\n icon=\"verified\"\r\n onClick={() => {\r\n setCardsStatusSearch(\"completed\");\r\n setSearchCardsLoading(true);\r\n setSearchFilesLoading(true);\r\n setCardsLoader(0);\r\n setFilesLoader(0);\r\n }}\r\n size=\"17px\"\r\n style={{ padding: \"0px 3px !important\" }}\r\n transparent\r\n />\r\n </div>\r\n <div\r\n style={{\r\n backgroundColor: cardsStatusSearch === \"deleted\" ? \"rgba(0,0,0,0.08)\" : \"\",\r\n padding: \"0 3px\",\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__deleted`, \"*\")}\r\n text={translate(`$__deleted`, \"*\")}\r\n color={cardsStatusSearch === \"deleted\" ? customApp(\"menu\") : \"lightGray\"}\r\n icon=\"delete_forever\"\r\n onClick={() => {\r\n setCardsStatusSearch(\"deleted\");\r\n setSearchCardsLoading(true);\r\n setSearchFilesLoading(true);\r\n setCardsLoader(0);\r\n setFilesLoader(0);\r\n }}\r\n size=\"17px\"\r\n style={{ padding: \"0px 3px !important\" }}\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n {String(cardsLoader) === \"0\" &&\r\n String(filesLoader) === \"0\" &&\r\n !searchCardsLoading &&\r\n !searchFilesLoading ? (\r\n <div\r\n style={{\r\n textAlign: \"center\",\r\n fontSize: \"16px\",\r\n color: \"red\",\r\n marginTop: 33,\r\n marginBottom: 33,\r\n }}\r\n >\r\n {translate(\"$__noResultsFound\")}\r\n </div>\r\n ) : null}\r\n {searchValue && (\r\n <>\r\n <ErrorBoundary>\r\n <SearchCards\r\n text={searchValue}\r\n onFinish={(n) => {\r\n setCardsLoader(n);\r\n setSearchCardsLoading(false);\r\n }}\r\n onAction={() => {\r\n setSearchValue(\"\");\r\n setSearchCardsLoading(false);\r\n setCardsLoader(0);\r\n setFilesLoader(0);\r\n }}\r\n completed={cardsStatusSearch === \"completed\"}\r\n deleted={cardsStatusSearch === \"deleted\"}\r\n />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <SearchFiles\r\n text={searchValue}\r\n onFinish={(n) => {\r\n setFilesLoader(n);\r\n setSearchFilesLoading(false);\r\n }}\r\n onAction={() => {\r\n setSearchValue(\"\");\r\n setCardsLoader(0);\r\n setFilesLoader(0);\r\n }}\r\n />\r\n </ErrorBoundary>\r\n </>\r\n )}\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </ClickAwayListener>\r\n )}\r\n </div>\r\n </GridItem>\r\n </ErrorBoundary>\r\n <GridItem\r\n xs={5}\r\n sm={4}\r\n md={4}\r\n lg={4}\r\n xl={4}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"center\",\r\n marginBottom: \"15px\",\r\n marginTop: \"15px\",\r\n }}\r\n >\r\n <div id=\"top_quickAdd\">\r\n <ErrorBoundary>\r\n <QuickAdd hashs={hashParts} />\r\n </ErrorBoundary>\r\n </div>\r\n <ErrorBoundary>\r\n <ChatNotifications />\r\n </ErrorBoundary>\r\n <div id=\"top_favorites\">\r\n <ErrorBoundary>\r\n <Favorites button />\r\n </ErrorBoundary>\r\n </div>\r\n <div id=\"top_notifications\">\r\n <ErrorBoundary>\r\n <Notifications loader={loaders && loaders.notifications ? true : false} />\r\n </ErrorBoundary>\r\n </div>\r\n <div id=\"top_timers\">\r\n <ErrorBoundary>\r\n <TimersNotifications />\r\n </ErrorBoundary>\r\n </div>\r\n <div id=\"top_requireApproval\">\r\n <ErrorBoundary>\r\n <MyRequireApproval />\r\n </ErrorBoundary>\r\n </div>\r\n <div id=\"top_myDay\">\r\n <ErrorBoundary>\r\n <MyDayNotifications />\r\n </ErrorBoundary>\r\n </div>\r\n <div id=\"top_moreOptions\">\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={\r\n Object.keys(controls.unlockedPrivates || {}).filter(\r\n (key) => controls.unlockedPrivates[key]\r\n ).length\r\n }\r\n color=\"secondary\"\r\n >\r\n <MoreVert\r\n transparent\r\n count={50}\r\n size=\"27px\"\r\n icon=\"settings\"\r\n title={translate(\"$__settings\")}\r\n btColor=\"lightgray\"\r\n options={moreVertOptions}\r\n />\r\n </Badge>\r\n </div>\r\n <div\r\n style={{\r\n width: \"33px\",\r\n height: \"33px\",\r\n marginLeft: \"15px\",\r\n backgroundColor: \"#cccccc\",\r\n minWidth: \"33px\",\r\n borderRadius: \"50%\",\r\n }}\r\n id=\"top_user\"\r\n >\r\n <User />\r\n </div>\r\n </GridItem>\r\n </GridContainer>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n controls: store.controls,\r\n chatNotifications: store.chat.notifications,\r\n db: store.db,\r\n session: store.session,\r\n chat: store.chat,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(SearchComponent));","//FUNCTIONS\r\nimport { customApp } from \"functions\";\r\n\r\nconst styles = theme => ({\r\n root: {\r\n position: 'relative',\r\n width: '100%',\r\n cursor: 'pointer',\r\n },\r\n user: {\r\n display: 'flex',\r\n margin: 'auto',\r\n height: '37px',\r\n alignItems: 'center',\r\n },\r\n userExtended: {\r\n display: 'flex',\r\n height: '37px',\r\n alignItems: 'center',\r\n },\r\n userActive: {\r\n display: 'inherit',\r\n height: '37px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: customApp('color', 0.33),\r\n },\r\n userActiveExtended: {\r\n display: 'inherit',\r\n height: '37px',\r\n alignItems: 'center',\r\n backgroundColor: customApp('color', 0.33),\r\n justifyContent: 'left',\r\n },\r\n name: {\r\n position: 'absolute',\r\n top: '5px',\r\n left: '36px',\r\n right: '0px',\r\n height: '30px',\r\n border: `1px solid ${customApp('color', 0.2)}`,\r\n backgroundColor: '#FFFFFF',\r\n borderRadius: '5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: '22px',\r\n fontWeight: 'bold',\r\n fontSize: '14px',\r\n color: customApp('darkText'),\r\n boxShadow: '-5px 3px 7px 1px rgba(0,0,0,0.05)',\r\n },\r\n lastMessage: {\r\n position: 'absolute',\r\n top: '30px',\r\n left: '36px',\r\n right: '15px',\r\n height: '30px',\r\n border: `1px solid ${customApp('color', 0.2)}`,\r\n backgroundColor: '#FFFFFF',\r\n borderRadius: '5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: '22px',\r\n paddingTop: '3px',\r\n fontSize: '12px',\r\n color: customApp('medium'),\r\n boxShadow: '-5px 3px 7px 1px rgba(0,0,0,0.05)',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n },\r\n lastMessageUnReaded: {\r\n position: 'absolute',\r\n top: '30px',\r\n left: '36px',\r\n right: '15px',\r\n height: '30px',\r\n border: `1px solid ${customApp('color', 0.2)}`,\r\n backgroundColor: '#FFFFFF',\r\n borderRadius: '5px',\r\n display: 'flex',\r\n fontWeight: 'bold',\r\n alignItems: 'center',\r\n paddingLeft: '22px',\r\n paddingTop: '3px',\r\n fontSize: '12px',\r\n color: customApp('medium'),\r\n boxShadow: '-5px 3px 7px 1px rgba(0,0,0,0.05)',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n },\r\n access: {\r\n position: 'absolute',\r\n top: '33px',\r\n left: '45px',\r\n right: '0px',\r\n height: '30px',\r\n border: `1px solid ${customApp('color', 0.2)}`,\r\n borderRadius: '0 0 5px 5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: '16px',\r\n fontSize: '14px',\r\n color: customApp('color'),\r\n boxShadow: '0px 3px 7px 1px rgba(0,0,0,0.05)'\r\n },\r\n accessEditing: {\r\n position: 'absolute',\r\n top: '33px',\r\n left: '45px',\r\n right: '0px',\r\n height: 'auto',\r\n minHeight: '290px',\r\n padding: '7px',\r\n border: `1px solid ${customApp('color', 0.2)}`,\r\n borderRadius: '0 0 5px 5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: '16px',\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n color: customApp('color'),\r\n backgroundColor: '#FFFFFF',\r\n boxShadow: '0px 3px 7px 1px rgba(0,0,0,0.05)',\r\n '& ul': {\r\n fontSize: '12px'\r\n }\r\n },\r\n});\r\n\r\nexport default styles;\r\n","//CORE\r\nimport React from \"react\"\r\nimport { FixedSizeList } from \"react-window\"\r\nimport AutoSizer from \"react-virtualized-auto-sizer\"\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 HtmlTooltip from \"components/Tooltip/html\"\r\nimport UserBadge from \"components/Badge/user\"\r\n\r\n//@MATERIAL\r\nimport Avatar from '@material-ui/core/Avatar'\r\nimport Badge from '@material-ui/core/Badge'\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n\r\n//STYLES\r\nimport styles from \"./chatsStyles.js\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n getAppAccess,\r\n customApp\r\n} from \"functions/\"\r\n\r\nimport {\r\n countUnReadsMessages\r\n} from \"functionsV3/chat\"\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { chat, session, timeline, usersStatus } = props.store\r\n const [listChats, setListChats] = React.useState([])\r\n const expanded = props.expanded ? true : false\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n\r\n\r\n React.useEffect(() => {\r\n let users = { ...reduxStore.getState().db.users }\r\n let chats = {}\r\n const mountChats = async () => {\r\n users = Object.keys(users).filter(a => a !== session._id && users[a].type === 'user')\r\n .map(a => props.store.users[a])\r\n .sort((a, b) => {\r\n if (a.name < b.name) {\r\n return -1\r\n } else if (a.name > b.name) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n\r\n users = users.map(us => {\r\n us.unReadedCount = 0\r\n let myStories = {\r\n // ...timeline[session._id] || {}\r\n }\r\n myStories = Object.keys(myStories).filter(a => myStories[a] && myStories[a].user && myStories[a].user._id === us._id && myStories[a].type === 'comment').map(a => myStories[a])\r\n\r\n let userStories = {\r\n ...props.store.users[us._id] && timeline[us._id] ? props.store.users[us._id] && timeline[us._id] : {}\r\n }\r\n userStories = Object.keys(userStories).filter(a => userStories[a] && userStories[a].type === 'comment').map(a => userStories[a])\r\n let stories = [\r\n ...myStories,\r\n ...userStories\r\n ]\r\n\r\n stories = stories.sort((a, b) => {\r\n if (Math.ceil(a.created_at) < Math.ceil(b.created_at))\r\n return -1\r\n return 1\r\n }).map(a => a)\r\n if (typeof us !== 'boolean') {\r\n chats = {\r\n ...chats,\r\n [us._id]: {\r\n ...props.store.users[us._id],\r\n type: \"user\",\r\n _lastMessage: stories[stories.length - 1] ? stories[stories.length - 1] : null,\r\n unReadedCount: myStories.filter(a => a.user._id !== session._id && a.type === \"comment\" && !a.deleted && (!a.readedBy || (a.readedBy && !a.readedBy[session._id]))).length\r\n }\r\n }\r\n us._lastMessage = stories[stories.length - 1] ? stories[stories.length - 1] : null\r\n us.unReadedCount = myStories.filter(a => a.user._id !== session._id && a.type === \"comment\" && !a.deleted && (!a.readedBy || (a.readedBy && !a.readedBy[session._id]))).length\r\n } else {\r\n us._lastMessage = null\r\n us.unReadedCount = 0\r\n }\r\n return us\r\n })\r\n\r\n let groups = Object.keys(reduxStore.getState().db.cards)\r\n .filter(a =>\r\n reduxStore.getState().db.cards[a].type === 'chatGroup'\r\n && !reduxStore.getState().db.cards[a].deleted\r\n && (\r\n (\r\n reduxStore.getState().db.cards[a]._users\r\n && reduxStore.getState().db.cards[a]._users[session._id]\r\n )\r\n ||\r\n (\r\n !reduxStore.getState().db.cards[a].private\r\n && props.store.adminView\r\n && AppAccess\r\n && (\r\n AppAccess.owner\r\n || AppAccess.admin\r\n )\r\n )\r\n )\r\n )\r\n .map(a => reduxStore.getState().db.cards[a])\r\n\r\n\r\n\r\n if (groups && groups.length > 0)\r\n groups\r\n .filter(fil => {\r\n if (\r\n fil._users\r\n && fil._users[session._id]\r\n )\r\n return true\r\n return false\r\n }\r\n )\r\n .forEach(gr => {\r\n let lastMessage\r\n if (timeline[gr._id] && Object.keys(timeline[gr._id]).length > 0)\r\n lastMessage = Object.keys(timeline[gr._id])\r\n .filter(tm => timeline[gr._id]\r\n && timeline[gr._id][tm]\r\n && timeline[gr._id][tm].type === 'comment'\r\n )\r\n .sort((a, b) => {\r\n if (timeline[gr._id][a]\r\n && timeline[gr._id][b]\r\n && String(timeline[gr._id][a].created_at)\r\n && String(timeline[gr._id][b].created_at)\r\n && parseInt(timeline[gr._id][a].created_at) > parseInt(timeline[gr._id][b].created_at)) {\r\n return -1\r\n } else if (timeline[gr._id][a]\r\n && timeline[gr._id][b]\r\n && String(timeline[gr._id][a].created_at)\r\n && String(timeline[gr._id][b].created_at)\r\n && parseInt(timeline[gr._id][a].created_at) < parseInt(timeline[gr._id][b].created_at)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n )\r\n if (gr\r\n && gr._id\r\n && lastMessage\r\n && lastMessage.length > 0\r\n && timeline[gr._id]\r\n && timeline[gr._id][lastMessage[0]]\r\n && timeline[gr._id][lastMessage[0]].created_at\r\n ) {\r\n chats = {\r\n ...chats,\r\n [gr._id]: {\r\n ...reduxStore.getState().db.cards[gr._id],\r\n type: \"group\",\r\n _lastMessage: timeline[gr._id][lastMessage[0]],\r\n }\r\n }\r\n } else {\r\n chats = {\r\n ...chats,\r\n [gr._id]: {\r\n ...reduxStore.getState().db.cards[gr._id],\r\n type: \"group\",\r\n }\r\n }\r\n }\r\n })\r\n\r\n const newListChats = Object.keys(chats).filter(ch =>\r\n (!reduxStore.getState().db.cards[ch]\r\n ||\r\n (\r\n reduxStore.getState().db.cards[ch]\r\n && !reduxStore.getState().db.cards[ch].deleted\r\n )\r\n ) &&\r\n (\r\n (!props.find || props.find === '')\r\n || (\r\n props.find\r\n && (\r\n chats[ch].name.toLowerCase().indexOf(props.find.toLowerCase()) > -1\r\n ||\r\n (\r\n chats[ch]._parent\r\n && reduxStore.getState().db.users[chats[ch]._parent]\r\n && reduxStore.getState().db.users[chats[ch]._parent].name\r\n && reduxStore.getState().db.users[chats[ch]._parent].name.toLowerCase().indexOf(props.find.toLowerCase()) > -1\r\n )\r\n )\r\n )\r\n )\r\n &&\r\n (\r\n expanded\r\n ||\r\n (\r\n !expanded\r\n && chats[ch]\r\n && chats[ch]._lastMessage\r\n )\r\n )\r\n &&\r\n (\r\n !props.onLine\r\n || (\r\n props.onLine\r\n && usersStatus.users && usersStatus.users[ch]\r\n )\r\n )\r\n ).sort((a, b) => {\r\n let lastMessageA = chats[a]._lastMessage && String(chats[a]._lastMessage.created_at) ? Math.ceil(chats[a]._lastMessage.created_at) : 0\r\n let lastMessageB = chats[b]._lastMessage && String(chats[b]._lastMessage.created_at) ? Math.ceil(chats[b]._lastMessage.created_at) : 0\r\n if (!expanded) {\r\n if (lastMessageA > lastMessageB) {\r\n return -1\r\n } else if (lastMessageA < lastMessageB) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n } else {\r\n if (chats[a].name.toLowerCase() < chats[b].name.toLowerCase())\r\n return -1\r\n if (chats[a].name.toLowerCase() > chats[b].name.toLowerCase())\r\n return 1\r\n return 0\r\n }\r\n }).map((ch, i) => {\r\n let u = chats[ch]\r\n return ({\r\n _id: ch,\r\n name: u.name,\r\n image: u.image || null,\r\n lastMessage: u.lastMessage || null,\r\n deleted: u.deleted || false,\r\n _parent: u._parent || null,\r\n })\r\n })\r\n\r\n setListChats(newListChats)\r\n if (!chat.nodeId && newListChats.length > 0)\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n nodeId: newListChats[0]._id,\r\n })\r\n\r\n }\r\n mountChats()\r\n // eslint-disable-next-line\r\n }, [usersStatus, timeline, props.expanded, props.find, props.onLine, props.chat])\r\n\r\n\r\n const Row = ({ index, style }) => {\r\n let u = listChats[index]\r\n return (\r\n <div style={style}>\r\n <div\r\n className={chat && chat.nodeId === u._id ? expanded ? classes.userActiveExtended : classes.userActive : expanded ? classes.userExtended : classes.user}\r\n style={{\r\n height: 55,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n margin: \"auto\",\r\n cursor: \"pointer\",\r\n ...chat && chat.nodeId === u._id ? {\r\n backgroundColor: \"rgba(250,250,250,0.1)\"\r\n } : {}\r\n }}\r\n onClick={() => {\r\n props.openChat(u._id)\r\n }}\r\n >\r\n <HtmlTooltip\r\n title={(\r\n <React.Fragment>\r\n {u.name\r\n ? u.name\r\n : u.name\r\n ? u.name.split(' ').lenth > 0 ? u.name.split(' ')[0]\r\n : ''\r\n : ''\r\n }\r\n {!u.name && u.name\r\n ? u.name.split(' ').lenth > 0 ? u.name.split(' ')[0]\r\n : ''\r\n : ''\r\n }\r\n </React.Fragment>\r\n )\r\n } >\r\n <div style={{ width: \"100%\" }}>\r\n {!expanded ?\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={countUnReadsMessages(u._id)}\r\n color=\"secondary\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: 0,\r\n width: \"80%\",\r\n marginTop: \"16px\",\r\n }}\r\n >\r\n <UserBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'right',\r\n }}\r\n userId={u._id}\r\n >\r\n <React.Fragment>\r\n <div\r\n style={{\r\n width: 33,\r\n height: 33,\r\n marginTop: \"-10px\",\r\n ...u.deleted ? { border: \"solid 2px red\" } : {},\r\n borderRadius: \"50%\",\r\n backgroundColor: u.image ? \"none\" : \"lightgray\",\r\n backgroundImage: `url(\"${u.image}\")`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center center\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n ><span style={{\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bold\",\r\n letterSpacing: \"-2px !important\"\r\n }}>{!u.image ? `${u.name.substr(0, 1).toUpperCase()}${u.name.split(\" \").length > 1 ? ` ${u.name.split(\" \")[1].substr(0, 1).toUpperCase()}` : ``}` : ``}</span>\r\n </div>\r\n {u._parent &&\r\n props.store.users[u._parent] &&\r\n props.store.users[u._parent].image ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 4,\r\n right: -7,\r\n width: 15,\r\n height: 15,\r\n borderRadius: \"50%\",\r\n backgroundImage: `url(${props.store.users[u._parent].image})`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\"\r\n }}></div>\r\n : <React.Fragment></React.Fragment>}\r\n </React.Fragment>\r\n </UserBadge>\r\n </Badge>\r\n :\r\n <div\r\n style={{\r\n display: 'flex',\r\n width: '100%',\r\n justifyContent: 'left',\r\n alignItems: 'center',\r\n marginTop: \"10px\"\r\n }\r\n }>\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={countUnReadsMessages(u._id)}\r\n color=\"secondary\"\r\n style={{\r\n width: '37px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n // marginTop: '-10px',\r\n }}\r\n >\r\n <UserBadge\r\n overlap=\"circular\"\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'right',\r\n }}\r\n userId={u._id}\r\n >\r\n <React.Fragment>\r\n <Avatar alt={u.displayName ? u.displayName : u.name} src={`${u.image}`}\r\n style={{\r\n width: '29px',\r\n height: '29px',\r\n marginTop: '-10px',\r\n }} />\r\n {u._parent &&\r\n props.store.users[u._parent] &&\r\n props.store.users[u._parent].image ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 4,\r\n right: -7,\r\n width: 15,\r\n height: 15,\r\n borderRadius: \"50%\",\r\n backgroundImage: `url(${props.store.users[u._parent].image})`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\"\r\n }}></div>\r\n : <React.Fragment></React.Fragment>}\r\n </React.Fragment>\r\n </UserBadge>\r\n </Badge>\r\n <div\r\n style={{\r\n fontSize: '14px',\r\n maxWidth: \"calc(100% - 30px)\",\r\n paddingLeft: \"7px\",\r\n color: 'gray',\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\"\r\n }}>\r\n {u.name\r\n ? u.name\r\n : u.name\r\n ? u.name.split(' ').lenth > 0 ? u.name.split(' ')[0]\r\n : ''\r\n : ''\r\n }\r\n {!u.name && u.name\r\n ? u.name.split(' ').lenth > 0 ? u.name.split(' ')[0]\r\n : ''\r\n : ''}\r\n {u._parent && props.store.users[u._parent] ?\r\n <div\r\n style={{\r\n fontSize: 10,\r\n color: \"lightgray\",\r\n marginTop: \"-7px\",\r\n }}>{props.store.users[u._parent].name}</div>\r\n : <React.Fragment></React.Fragment>}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </HtmlTooltip>\r\n </div>\r\n </div>\r\n )\r\n }\r\n return (\r\n <AutoSizer\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\"\r\n }}\r\n >\r\n {({ height, width }) => (\r\n <FixedSizeList\r\n height={height}\r\n itemCount={listChats.length}\r\n itemSize={55}\r\n width={expanded ? 295 : 58}\r\n itemData={listChats}\r\n style={{\r\n height: \"100%\",\r\n }}\r\n >\r\n {Row}\r\n </FixedSizeList>\r\n )}\r\n </AutoSizer>\r\n )\r\n}\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n chat: store.chat,\r\n timeline: store.timeline,\r\n cards: store.db.cards,\r\n users: store.db.users,\r\n adminView: store.db.adminView,\r\n session: store.session,\r\n usersStatus: store.usersStatus\r\n }\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))\r\n","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst styles = (theme) => ({\r\n ...defaultFont,\r\n menu: {\r\n position: \"absolute\",\r\n borderRight: customApp(\"color\"),\r\n background: customApp('ColumnTitleColor'),\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n overflowY: \"auto\",\r\n overflowX: \"hidden\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n // boxShadow: \"inset 4px 0px 3px 0px rgb(0 0 0 / 17%)\",\r\n },\r\n menuExpanded: {\r\n position: \"absolute\",\r\n borderRight: customApp(\"color\"),\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n overflowY: \"auto\",\r\n overflowX: \"hidden\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"baseline\",\r\n paddingLeft: \"15px\",\r\n paddingRight: \"15px\",\r\n boxShadow: \"inset 4px 0px 3px 0px rgb(0 0 0 / 17%)\",\r\n },\r\n button: {\r\n padding: \"7px 0px\",\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n },\r\n buttonColor: {\r\n // position: \"relative\",\r\n // float: \"left\",\r\n padding: \"12px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n backgroundColor: customApp(\"color\"),\r\n alignItems: \"center\",\r\n width: \"-webkit-fill-available\"\r\n },\r\n buttonColorExpanded: {\r\n position: \"relative\",\r\n float: \"left\",\r\n padding: \"12px\",\r\n display: \"flex\",\r\n backgroundColor: customApp(\"color\"),\r\n alignItems: \"center\",\r\n width: \"100%\"\r\n },\r\n separator: {\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n borderTop: `1px solid ${customApp(\"medium\", 0.5)}`,\r\n marginTop: \"15px\",\r\n marginBottom: \"0px\",\r\n height: \"1px\"\r\n }\r\n});\r\n\r\nexport default styles;\r\n","//CORE\r\nimport React from \"react\"\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 Chats from \"components/Chat/chats\"\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport TextField from \"components/TextField/\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp,\r\n} from \"functions/\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/chatMenu2204\"\r\n\r\nfunction Component(props) {\r\n const { chat } = reduxStore.getState()\r\n const [chatList, setChatList] = React.useState('chats')\r\n const [findName, setFindName] = React.useState(\"\")\r\n const [expanded, setExpanded] = React.useState(false)\r\n const useStyles = makeStyles(styles)\r\n const classes = useStyles()\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n React.useEffect(() => {\r\n setChatList('chats')\r\n setExpanded(props.expanded)\r\n }, [props.expanded])\r\n\r\n\r\n const openChat = async (nodeId, db) => {\r\n let chatDb = reduxStore.getState().db.cards[nodeId] ? 'cards' : 'users'\r\n setFindName(\"\")\r\n if (reduxStore.getState().db[chatDb] && reduxStore.getState().db[chatDb][nodeId] && !reduxStore.getState().db[chatDb][nodeId]._loadTimeline) {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n db: db,\r\n nodeId: nodeId,\r\n loading: db === 'users' ? false : true,\r\n })\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...chat,\r\n db: db,\r\n nodeId: nodeId,\r\n loading: false,\r\n })\r\n }\r\n props.subMenuExpanded(false)\r\n setChatList('chats')\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n\r\n <div className={expanded ? classes.menuExpanded : classes.menu} style={{ paddingTop: 5 }}>\r\n {\r\n (\r\n expanded &&\r\n (\r\n chatList === \"internalGroups\"\r\n || chatList === \"externalGroups\"\r\n )\r\n )\r\n &&\r\n <div className={expanded ? classes.buttonColorExpanded : classes.buttonColor} style={{ marginTop: \"-15px\" }}>\r\n <IconButton\r\n text={expanded ? translate(\"$__newGroup\", \"*\") : null}\r\n title={!expanded ? translate(\"$__newGroup\", \"*\") : null}\r\n icon=\"add_box\"\r\n iconColor={\"#FFFFFF\"}\r\n textColor={\"#FFFFFF\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: \"new\",\r\n activeModule: \"cardEdit\",\r\n db: \"cards\",\r\n data: {\r\n type: \"chatGroup\",\r\n status: \"inProgress\",\r\n }\r\n })\r\n }}\r\n />\r\n </div>\r\n }\r\n <div className={classes.button} style={{\r\n display: \"flex\",\r\n height: \"46px\",\r\n marginBottom: \"7px\",\r\n width: \"100%\"\r\n }}>\r\n {expanded ?\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n <TextField\r\n className={classes.noLabelLight}\r\n label={translate(\"$__search\", \"*\")}\r\n variant={\"standard\"}\r\n autoFocus\r\n value={findName}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp(\"colorText\")}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setFindName(e.target.value)\r\n },\r\n }}\r\n />\r\n </div>\r\n :\r\n <IconButton\r\n title={!expanded ? translate(\"$__search\", \"*\") : null}\r\n icon=\"search\"\r\n iconColor={findName !== \"\" ? customApp(\"colorText\") : customApp(\"colorText\")}\r\n textColor={findName !== \"\" ? customApp(\"colorText\") : customApp(\"colorText\")}\r\n onClick={() => {\r\n props.subMenuExpanded(true)\r\n }}\r\n />\r\n }\r\n </div>\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: !expanded ? 40 : 50,\r\n bottom: 7,\r\n overflowY: \"auto\",\r\n overflowX: \"hidden\",\r\n left: expanded ? 7 : 0,\r\n paddingLeft: expanded ? 5 : 0,\r\n right: 0,\r\n paddingTop: 7\r\n }}\r\n >\r\n <Chats\r\n expanded={expanded}\r\n openChat={(nodeId) => openChat(nodeId, \"cards\")}\r\n find={findName}\r\n onLine={props.onLine}\r\n />\r\n </div>\r\n\r\n </div>\r\n </React.Fragment >\r\n )\r\n}\r\n\r\nconst mapStateToProps = () => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Component)","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { translate } from \"functions/\";\r\n\r\nfunction TypingIndicator({ typing = {}, nodeId }) {\r\n const session = useSelector((state) => state.session);\r\n const users = useSelector((state) => state.db.cards?.[nodeId]?._users || {});\r\n\r\n // Função para obter o nome do usuário\r\n const getUserName = (userId) => {\r\n const user = users[userId];\r\n if (!user) return \"\";\r\n const splitName = user.name?.split(\" \") || [];\r\n return `${splitName[0]}${splitName.length > 1 ? ` ${splitName[splitName.length - 1]}` : \"\"}`;\r\n };\r\n\r\n // Renderizar avatares de usuários digitando\r\n const renderTypingAvatars = () =>\r\n Object.keys(typing[nodeId] || {})\r\n .filter((userId) => userId !== session._id && typing[nodeId]?.[userId])\r\n .map((userId) => {\r\n const name = getUserName(userId);\r\n return (\r\n <Tooltip title={name} key={userId}>\r\n <Avatar\r\n style={{ width: 22, height: 22, border: \"none\" }}\r\n alt={name}\r\n src={users[userId]?.image || null}\r\n >\r\n {name.charAt(0)}\r\n </Avatar>\r\n </Tooltip>\r\n );\r\n });\r\n\r\n // Condições para renderizar o indicador de digitação\r\n const isSelfTyping =\r\n nodeId && nodeId !== session._id && typing?.me?.[nodeId];\r\n const isOthersTyping =\r\n nodeId &&\r\n typing[nodeId] &&\r\n Object.keys(typing[nodeId] || {}).some(\r\n (userId) => userId !== session._id && typing[nodeId]?.[userId]\r\n );\r\n\r\n if (isSelfTyping) {\r\n return (\r\n <div style={{ marginLeft: 15, fontSize: 12, color: \"lightgray\", fontWeight: \"normal\" }}>\r\n {translate(\"$__typing\")}...\r\n </div>\r\n );\r\n }\r\n\r\n if (isOthersTyping) {\r\n return (\r\n <div\r\n style={{\r\n marginLeft: 15,\r\n fontSize: 12,\r\n color: \"lightgray\",\r\n fontWeight: \"normal\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {renderTypingAvatars()}\r\n <span style={{ marginLeft: 7 }}>{translate(\"$__typing\")}...</span>\r\n </div>\r\n );\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default TypingIndicator;\r\n","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst styles = (theme) => ({\r\n ...defaultFont,\r\n menu: {\r\n position: 'relative',\r\n borderRight: customApp('color'),\r\n },\r\n menuExpanded: {\r\n position: 'relative',\r\n borderRight: customApp('color'),\r\n },\r\n button: {\r\n position: 'relative', float: 'left', width: '100%', padding: '7px'\r\n },\r\n avatarGroup: {\r\n \"& .MuiAvatar-root\": {\r\n width: \"22px !important\",\r\n height: \"22px !important\"\r\n }\r\n },\r\n buttonColor: {\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% + 20px)',\r\n padding: '20px 12px',\r\n marginLeft: '-12px',\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n backgroundColor: customApp('color')\r\n },\r\n buttonColorExpanded: {\r\n position: 'relative',\r\n float: 'left',\r\n width: 'calc(100% + 20px)',\r\n padding: '20px',\r\n marginLeft: '-12px',\r\n display: \"flex\",\r\n backgroundColor: customApp('color')\r\n },\r\n separator: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n padding: '7px',\r\n borderTop: `1px solid ${customApp('medium', 0.5)}`,\r\n marginTop: '15px',\r\n marginBottom: '0px',\r\n height: '1px'\r\n }\r\n});\r\n\r\nexport default styles;\r\n","//CORE\r\nimport React from \"react\"\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 CustomButton from \"components/Buttons/custom\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\"\r\n\r\nfunction ButtonViewOnline(props) {\r\n const { session } = reduxStore.getState()\r\n const [usersStatus, setUsersStatus] = React.useState(props.usersStatus)\r\n const [onLine, setOnLine] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n setUsersStatus(props.usersStatus)\r\n return () => {\r\n\r\n }\r\n }, [props.usersStatus])\r\n\r\n return (\r\n <React.Fragment>\r\n <CustomButton\r\n id={`chat_menu`}\r\n title={`${translate(`$__showOnlyOnline`, \"*\")} ${Object.keys(usersStatus.users).filter(u => usersStatus.users[u] && u !== session._id).length > 0 ? ` (${Object.keys(usersStatus.users).filter(u => usersStatus.users[u] && u !== session._id).length})` : ``}`}\r\n text={`${translate(`$__showOnlyOnline`, \"*\")} ${Object.keys(usersStatus.users).filter(u => usersStatus.users[u] && u !== session._id).length > 0 ? ` (${Object.keys(usersStatus.users).filter(u => usersStatus.users[u] && u !== session._id).length})` : ``}`}\r\n color={customApp(\"colorText\")}\r\n icon={onLine ? \"toggle_on\" : \"toggle_off\"}\r\n onClick={() => {\r\n setOnLine(a => !a)\r\n if (props.onClick)\r\n props.onClick(!onLine)\r\n }}\r\n size={\"25px\"}\r\n textSize={\"11px\"}\r\n transparent\r\n />\r\n </React.Fragment>\r\n )\r\n}\r\nconst mapStateToProps = (store) => {\r\n return ({\r\n usersStatus: store.usersStatus && store.usersStatus ? store.usersStatus : {},\r\n })\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ButtonViewOnline)","//CORE\r\nimport React from \"react\"\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 CustomButton from \"components/Buttons/custom\"\r\nimport Files from \"components/Files/list\"\r\nimport Menu from \"./menu\"\r\nimport Timeline from \"componentsV3/Timeline\"\r\nimport Typing from \"./Typing\"\r\nimport UserBadge from \"components/Badge/user\"\r\nimport Message from \"componentsV3/Timeline/message\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\"\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n getDate,\r\n translate,\r\n appAlert,\r\n} from \"functions/\"\r\n\r\nimport {\r\n loadUsers\r\n} from \"functions/users\"\r\n\r\nimport {\r\n loadTimeline,\r\n timelineComment,\r\n} from \"functions/chat\"\r\n\r\nimport NotificationAudio from \"assets/sound/notification.mp3\"\r\nimport MentionNotificationAudio from \"assets/sound/mentionNotification.mp3\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/chat.js\"\r\nimport ButtonViewOnline from \"./ButtonViewOnline\"\r\n\r\nconst audio = new Audio(NotificationAudio)\r\nconst audioTask = new Audio(MentionNotificationAudio)\r\n\r\nfunction ChatIndex(props) {\r\n const { nodeId, chatOpen } = props\r\n const { socket } = reduxStore.getState().functions\r\n const [expanded, setExpanded] = React.useState(false)\r\n const [showFiles, setShowFiles] = React.useState(false)\r\n const [onLine, setOnLine] = React.useState(false)\r\n\r\n\r\n const mounted = React.useRef(true)\r\n const socketOn = React.useRef(false)\r\n\r\n const CHAT_STYLE = {\r\n position: \"fixed\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 3000,\r\n backgroundColor: \"rgba(250,250,250,0.7)\",\r\n backdropFilter: \"blur(3px)\",\r\n };\r\n\r\n const CONTAINER_STYLE = (isLargeScreen) => ({\r\n position: \"fixed\",\r\n top: isLargeScreen ? 77 : 50,\r\n left: isLargeScreen ? 77 : 7,\r\n right: isLargeScreen ? 77 : 7,\r\n bottom: isLargeScreen ? 77 : 7,\r\n zIndex: isLargeScreen ? 3 : 6000,\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n borderRadius: \"15px\",\r\n overflow: \"hidden\",\r\n });\r\n\r\n const HEADER_STYLE = {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n height: 40,\r\n background: customApp(\"ColumnTitleColor\"),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n };\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n // Inicializa o ref para timelineTyping no escopo principal\r\n const timelineTyping = React.useRef({});\r\n\r\n React.useEffect(() => {\r\n const state = reduxStore.getState();\r\n const { session } = state;\r\n\r\n // Função auxiliar: verifica se um usuário deve ser carregado\r\n const shouldLoadUser = (data) =>\r\n data.db === \"users\" &&\r\n data.idRel === session._id &&\r\n data.comment &&\r\n data.comment.type === \"comment\" &&\r\n data.comment.user &&\r\n data.comment.user._id &&\r\n !state.db.users[data.comment.user._id];\r\n\r\n // Função auxiliar: verifica se deve reproduzir áudio de notificação\r\n const shouldPlayNotificationAudio = (data) =>\r\n state.chat.notifications &&\r\n (data.comment.idRel === session._id ||\r\n state.db.users[data.comment.idRel] ||\r\n (state.db.cards[data.comment.idRel] &&\r\n state.db.cards[data.comment.idRel].type === \"chatGroup\" &&\r\n state.db.cards[data.comment.idRel]._users[session._id])) &&\r\n state.db.users[data.comment.user._id] &&\r\n data.comment.type === \"comment\" &&\r\n data.comment.user._id !== session._id;\r\n\r\n // Gerenciar eventos de comentários na timeline\r\n const handleTimelineComment = async (data) => {\r\n if (\r\n data.db === \"cards\" &&\r\n data.comment.message.includes(session._id) &&\r\n data.comment.user._id !== session._id\r\n ) {\r\n audioTask.play();\r\n }\r\n\r\n if (shouldLoadUser(data)) {\r\n loadUsers(props, data.comment.user._id);\r\n }\r\n\r\n if (\r\n data.db === \"users\" ||\r\n (data.db !== \"users\" &&\r\n data.comment.type === \"comment\" &&\r\n state.db.cards[data.idRel]?.type === \"chatGroup\")\r\n ) {\r\n const lastDate =\r\n data.filesCount &&\r\n data.files &&\r\n data.files.length === data.filesCount\r\n ? parseInt(data.comment.created_at) - 30\r\n : null;\r\n\r\n if (data.comment.user._id !== session._id) {\r\n verifyMessages(lastDate);\r\n }\r\n }\r\n\r\n timelineComment(props, data);\r\n\r\n if (shouldPlayNotificationAudio(data)) {\r\n audio.play();\r\n\r\n const notification = new Notification(\r\n `${data.comment.user.name} ${translate(\"$__sendedANewMessage\", 1)}`,\r\n {\r\n body: data.comment.message || translate(`$__${data.comment.type}`, 1),\r\n }\r\n );\r\n\r\n notification.onclick = (e) => {\r\n e.preventDefault();\r\n window.focus();\r\n notification.close();\r\n };\r\n\r\n appAlert({\r\n message: translate(\"$__newMessage\", 1),\r\n content: (\r\n <div\r\n style={{ display: \"flex\", cursor: \"pointer\" }}\r\n onClick={(e) => {\r\n openChat(data.comment.user._id, \"users\");\r\n e.stopPropagation();\r\n }}\r\n >\r\n <Message storie={data.comment} noReactions inverted />\r\n </div>\r\n ),\r\n hideiconvariant: true,\r\n variant: \"info\",\r\n persist: false,\r\n horizontal: \"right\",\r\n });\r\n }\r\n };\r\n\r\n // Gerenciar eventos de digitação na timeline\r\n\r\n const handleTimelineTyping = (data) => {\r\n if (timelineTyping.current[data.typingUser]) {\r\n clearTimeout(timelineTyping.current[data.typingUser]);\r\n }\r\n\r\n timelineTyping.current[data.typingUser] = setTimeout(() => {\r\n // Reset typing indicator after timeout\r\n }, 3000);\r\n };\r\n\r\n // Gerenciar eventos de exclusão na timeline\r\n const handleTimelineDeletion = (data) => {\r\n const idRel =\r\n state.timeline[data.idRel]?.[data.id] ? data.idRel : session._id;\r\n\r\n if (state.timeline[idRel]?.[data.id]) {\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n ...state.timeline,\r\n [idRel]: {\r\n ...state.timeline[idRel],\r\n [data.id]: {\r\n ...state.timeline[idRel][data.id],\r\n deleted: true,\r\n ...(data.deletedReason && { deletedReason: data.deletedReason }),\r\n },\r\n },\r\n });\r\n }\r\n };\r\n\r\n // Inicializar listeners do socket\r\n const initializeSocketListeners = () => {\r\n socket.on(\"timeline.COMMENT\", handleTimelineComment);\r\n socket.on(\"timeline.TYPING\", handleTimelineTyping);\r\n socket.on(\"timeline.DEL\", handleTimelineDeletion);\r\n\r\n socket.on(\"stream\", (v) => {\r\n const streamVideo = document.getElementById(\"#streamVideo\");\r\n if (streamVideo) {\r\n streamVideo.attr(\"src\", v);\r\n }\r\n });\r\n };\r\n\r\n // Verificar se o socket está conectado e inicializar\r\n if (!socketOn.current && socket?.connected) {\r\n socketOn.current = true;\r\n initializeSocketListeners();\r\n }\r\n\r\n // Cleanup dos listeners ao desmontar o componente\r\n return () => {\r\n if (socket && socket.connected) {\r\n socket.off(\"timeline.COMMENT\", handleTimelineComment);\r\n socket.off(\"timeline.TYPING\", handleTimelineTyping);\r\n socket.off(\"timeline.DEL\", handleTimelineDeletion);\r\n }\r\n };\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [socket]);\r\n\r\n const verifyMessages = (lastDate = null) => {\r\n loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Layouts/Index/loadData()-Users\"\r\n },\r\n {\r\n ids: [reduxStore.getState().session._id],\r\n db: \"users\",\r\n type: \"comment\",\r\n newUpdates: true,\r\n lastDate\r\n }\r\n )\r\n }\r\n\r\n const openChat = async (nodeId, dbProps) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...reduxStore.getState().chat,\r\n open: true,\r\n db: dbProps,\r\n nodeId: nodeId,\r\n loading: false,\r\n })\r\n }\r\n\r\n if (!chatOpen)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n const closeChat = (force = false) => {\r\n const state = reduxStore.getState();\r\n const isLightBoxOpen = state.lightBox?.open;\r\n const isSideModuleActive = state.sideModule?.id;\r\n const areToastsPresent = document.getElementsByClassName('Toastify__toast').length > 0;\r\n const areForwardMessagesPresent = document.getElementsByClassName('forwardMessage').length > 0;\r\n\r\n // Função auxiliar para verificar se o chat pode ser fechado\r\n const canCloseChat = () => !isLightBoxOpen && !isSideModuleActive;\r\n\r\n // Condição para fechar o chat\r\n if (force || canCloseChat()) {\r\n if (!areToastsPresent && !areForwardMessagesPresent) {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...state.chat,\r\n open: false,\r\n });\r\n }\r\n }\r\n };\r\n\r\n\r\n if (!chatOpen)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n const chatDb = nodeId && reduxStore.getState().db.cards && reduxStore.getState().db.cards[nodeId] ? 'cards' : 'users'\r\n let chatData = reduxStore.getState().db[chatDb][nodeId] ? reduxStore.getState().db[chatDb][nodeId] : null\r\n\r\n\r\n const Sidebar = ({ expanded, setExpanded, setOnLine, onLine }) => (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 40,\r\n left: 0,\r\n bottom: 0,\r\n backgroundColor: \"rgba(246,246,246,1)\",\r\n borderRight: `solid 4px ${customApp(\"color\")}`,\r\n padding: \"7px\",\r\n width: expanded ? \"311px\" : \"60px\",\r\n }}\r\n >\r\n <Menu\r\n closeButton={() => setOnLine(false)}\r\n chat\r\n subMenuExpanded={(a) => {\r\n setExpanded(a);\r\n setOnLine(false);\r\n }}\r\n expanded={expanded}\r\n onLine={onLine}\r\n />\r\n </div>\r\n );\r\n\r\n const TimelineContainer = ({ expanded, showFiles, nodeId }) => (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n left: expanded ? 312 : 55,\r\n top: 40,\r\n right: showFiles && nodeId ? 333 : 0,\r\n bottom: 0,\r\n backgroundColor: \"white\",\r\n }}\r\n >\r\n {nodeId ? (\r\n <Timeline\r\n types={[\"comment\"]}\r\n nodeId={nodeId}\r\n db={reduxStore.getState().db.cards[nodeId] ? \"cards\" : \"users\"}\r\n confirmRead={true}\r\n hideCards\r\n chat\r\n />\r\n ) : (\r\n <div>{translate(\"$__chats\", 1)}</div>\r\n )}\r\n </div>\r\n );\r\n\r\n const FileSection = ({ nodeId }) => (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 40,\r\n right: 0,\r\n bottom: 0,\r\n width: \"333px\",\r\n backgroundColor: \"#f1f3f4\",\r\n zIndex: 100,\r\n boxShadow: \"-4px 0px 7px 3px rgba(0,0,0,0.1)\",\r\n }}\r\n >\r\n <Files nodeId={nodeId} dark={false} />\r\n </div>\r\n );\r\n\r\n const ChatHeader = ({\r\n expanded,\r\n setExpanded,\r\n setOnLine,\r\n nodeId,\r\n chatData,\r\n setShowFiles,\r\n closeChat,\r\n }) => (\r\n <div style={HEADER_STYLE}>\r\n {/* Menu Button */}\r\n <div style={{ position: \"absolute\", left: 13 }}>\r\n <CustomButton\r\n id=\"chat_menu\"\r\n title={translate(\"$__menu\", \"*\")}\r\n color={customApp(\"colorText\")}\r\n icon=\"menu\"\r\n onClick={() => {\r\n setExpanded((a) => !a);\r\n if (expanded) setOnLine(false);\r\n }}\r\n size=\"25px\"\r\n transparent\r\n />\r\n </div>\r\n\r\n {/* Add Group Button */}\r\n {expanded && (\r\n <div style={{ position: \"absolute\", left: 45, color: customApp(\"colorText\") }}>\r\n <CustomButton\r\n id=\"addGroup\"\r\n title={translate(\"$__createChatGroup\", \"*\")}\r\n icon=\"add_circle_outline\"\r\n onClick={() => {\r\n closeChat(true);\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: \"new\",\r\n activeModule: \"cardEdit\",\r\n db: \"cards\",\r\n data: { type: \"chatGroup\", status: \"inProgress\" },\r\n });\r\n }}\r\n size=\"25px\"\r\n transparent\r\n color={customApp(\"colorText\")}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* View Online Button */}\r\n {expanded && (\r\n <div style={{ position: \"absolute\", left: 80 }}>\r\n <ButtonViewOnline onClick={(e) => setOnLine(e)} />\r\n </div>\r\n )}\r\n\r\n {/* User Info */}\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n left: !expanded ? 53 : 320,\r\n right: 80,\r\n color: customApp(\"colorText\"),\r\n fontSize: \"12px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n {nodeId && chatData ? (\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <UserBadge userId={nodeId}>\r\n <Avatar\r\n alt={chatData.displayName || chatData.name}\r\n src={chatData.image || null}\r\n style={{ width: \"30px\", height: \"30px\" }}\r\n />\r\n </UserBadge>\r\n <div style={{ fontSize: \"14px\" }}>\r\n {chatData.name}{\" \"}\r\n <span style={{ marginRight: 10, fontSize: 10, fontWeight: \"normal\" }}>\r\n {reduxStore.getState().usersStatus?.users?.[nodeId]?.status === \"away\"\r\n ? `(${translate(\"$__lastSeeTime\")}: ${getDate(\r\n reduxStore.getState().usersStatus.users[nodeId].updatedAt\r\n )})`\r\n : \"\"}\r\n </span>\r\n </div>\r\n <Typing nodeId={nodeId} />\r\n </div>\r\n ) : (\r\n translate(\"$__chats\", 1)\r\n )}\r\n </div>\r\n\r\n {/* Action Buttons */}\r\n <div style={{ position: \"absolute\", right: 5, display: \"flex\" }}>\r\n {/* File Button */}\r\n {nodeId && (\r\n <CustomButton\r\n id=\"chat_files\"\r\n title={translate(\"$__files\", \"*\")}\r\n color={customApp(\"colorText\")}\r\n icon=\"folder_special\"\r\n onClick={() => setShowFiles((prev) => !prev)}\r\n size=\"25px\"\r\n transparent\r\n />\r\n )}\r\n\r\n {/* Notifications Toggle */}\r\n <CustomButton\r\n id=\"chat_settings\"\r\n title={translate(\r\n reduxStore.getState().chat.notifications\r\n ? \"$__chatNotificationsActive\"\r\n : \"$__chatNotificationsOff\",\r\n 1\r\n )}\r\n color={customApp(\"colorText\")}\r\n icon={\r\n reduxStore.getState().chat.notifications\r\n ? \"notifications_active\"\r\n : \"notifications_off\"\r\n }\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n ...reduxStore.getState().chat,\r\n notifications: !reduxStore.getState().chat.notifications,\r\n });\r\n }}\r\n size=\"25px\"\r\n transparent\r\n />\r\n {reduxStore.getState().chat.nodeId && reduxStore.getState().db.cards[reduxStore.getState().chat.nodeId] ?\r\n <CustomButton\r\n id=\"chat_settings\"\r\n title={translate(\"$__settings\", 1)}\r\n color={customApp(\"colorText\")}\r\n icon={\"settings\"}\r\n onClick={() => {\r\n // return\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: \"cards\",\r\n id: reduxStore.getState().chat.nodeId,\r\n module: \"cardEdit\",\r\n activeModule: \"cardEdit\",\r\n data: reduxStore.getState().db.cards[reduxStore.getState().chat.nodeId],\r\n })\r\n }}\r\n size=\"25px\"\r\n transparent\r\n /> : <></>}\r\n\r\n {/* Close Button */}\r\n <CustomButton\r\n id=\"chat_close\"\r\n title={translate(\"$__close\", \"*\")}\r\n color={customApp(\"colorText\")}\r\n icon=\"close\"\r\n onClick={() => {\r\n closeChat(true);\r\n setOnLine(false);\r\n }}\r\n size=\"25px\"\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <div style={CHAT_STYLE}>\r\n <ClickAwayListener onClickAway={closeChat}>\r\n <div style={CONTAINER_STYLE(window.innerWidth > 600)}>\r\n {/* Header */}\r\n <ChatHeader\r\n expanded={expanded}\r\n setExpanded={setExpanded}\r\n setOnLine={setOnLine}\r\n nodeId={nodeId}\r\n chatData={chatData}\r\n showFiles={showFiles}\r\n setShowFiles={setShowFiles}\r\n closeChat={closeChat}\r\n />\r\n\r\n {/* Sidebar */}\r\n <Sidebar expanded={expanded} setExpanded={setExpanded} setOnLine={setOnLine} onLine={onLine} />\r\n\r\n {/* Timeline */}\r\n <TimelineContainer expanded={expanded} showFiles={showFiles} nodeId={nodeId} />\r\n\r\n {/* File Section */}\r\n {showFiles && nodeId && <FileSection nodeId={nodeId} />}\r\n </div>\r\n </ClickAwayListener>\r\n </div>\r\n );\r\n\r\n}\r\n\r\nconst mapStateToProps = ({ chat }) => ({\r\n nodeId: chat.nodeId,\r\n chatOpen: chat.open,\r\n notifications: chat.notifications\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(ChatIndex))","import React from \"react\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Navigation from \"components/Navigation\"\r\nimport ProgressCircular from \"components/Progress/circular\"\r\n\r\n//@MATERIAL\r\nimport Modal from '@material-ui/core/Modal'\r\n\r\nimport {\r\n updateCardv2,\r\n cardMoveTo,\r\n // cardCopyTo,\r\n getChildrens,\r\n saveCard,\r\n copyCards\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData\"\r\n\r\n\r\nimport {\r\n customApp,\r\n translate,\r\n} from \"functions/\"\r\n\r\n\r\nfunction MoveCards(props) {\r\n const [data, setData] = React.useState({})\r\n const [copyRel, setCopyRel] = React.useState({})\r\n const [duplicateLoader, setDuplicateLoader] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n if (props.selectedCards) {\r\n setData(props.selectedCards)\r\n } else {\r\n setData({})\r\n }\r\n return () => {\r\n setData({})\r\n }\r\n }, [props.selectedCards])\r\n\r\n if (!data || (\r\n data\r\n && data.checkSelectedCards?.length === 0\r\n && data.childrenChecked?.length === 0\r\n ))\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n\r\n const definePermission = (cardType) => {\r\n switch (cardType) {\r\n case 'plan':\r\n return 0;\r\n case 'guideline':\r\n return 1;\r\n case 'objective':\r\n return 2;\r\n case 'goal':\r\n return 3;\r\n case 'iniciative':\r\n return 4;\r\n case 'task':\r\n return 5;\r\n default: return 4\r\n }\r\n }\r\n\r\n const execCards = async (duplicate = false) => {\r\n const typeArr = ['plan', 'guideline', 'objective', 'goal', 'iniciative', 'task']\r\n\r\n if (duplicate && data.checkSelectedCards.length > 0) {\r\n let copyExec = await Promise.all(\r\n data.checkSelectedCards.map(async a => {\r\n let newData = {\r\n ...reduxStore.getState().db.cards[a],\r\n idRel: copyRel._id,\r\n _oldId: a,\r\n _id: null,\r\n name: `${reduxStore.getState().db.cards[a].name} - ${translate(\"$__copy\", '*')}`,\r\n status: \"notStarted\"\r\n }\r\n\r\n let cardReg = await saveCard(props, true, {\r\n ...newData,\r\n _oldId: data._id\r\n }, newData.idRel);\r\n\r\n if (cardReg)\r\n return {\r\n old_id: a,\r\n ...cardReg\r\n }\r\n }\r\n )\r\n )\r\n\r\n if (copyExec && copyExec.length > 0) {\r\n let copyAll = await Promise.all(\r\n copyExec.map(async a => {\r\n let copyResult = await copyCards(a.old_id, a._id, {\r\n copyUsers: true,\r\n copyTimeline: true,\r\n copyTags: true,\r\n childrens: data.childrenChecked\r\n });\r\n if (copyResult) {\r\n loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'childrens', idRel: a._id })\r\n return copyResult\r\n }\r\n }))\r\n if (copyAll) {\r\n console.log(\"CLOSE************************************\")\r\n setTimeout(() => {\r\n setDuplicateLoader(false)\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n selectedCards: {\r\n checkSelectedCards: [],\r\n childrenChecked: [],\r\n },\r\n })\r\n }, 2000)\r\n }\r\n }\r\n return\r\n }\r\n for (let i = 0; i < data.length; i++) {\r\n const card = reduxStore.getState().db.cards[data[i]]\r\n\r\n try {\r\n let newData = {}\r\n\r\n newData = {\r\n cardId: card._id,\r\n newRel: copyRel._id,\r\n oldRel: card._parent,\r\n planId: reduxStore.getState().db.cards[copyRel._id]?._planId ? reduxStore.getState().db.cards[copyRel._id]._planId : reduxStore.getState().db.cards[copyRel._id]?.type === 'plan' ? copyRel._id : null,\r\n }\r\n\r\n\r\n const request = cardMoveTo(props, newData)\r\n\r\n if (request && definePermission(card.type) !== definePermission(copyRel.type) + 1) {\r\n\r\n let newData = {}\r\n let childrens = await getChildrens(card._id)\r\n childrens = (Object.keys(childrens) || [])\r\n const numberOfHousesJumped = definePermission(copyRel.type) + 1 - definePermission(card.type)\r\n\r\n if (childrens.length > 0) {\r\n childrens = childrens.map(async (item) => {\r\n const cardChildren = reduxStore.getState().db.cards[item]\r\n let typeChange = typeArr[definePermission(cardChildren.type) + numberOfHousesJumped]\r\n\r\n if (definePermission(copyRel.type) === 4) {\r\n typeChange = typeArr[4]\r\n }\r\n\r\n if (definePermission(copyRel.type) === 3) {\r\n typeChange = typeArr[4]\r\n }\r\n\r\n if (definePermission(copyRel.type) === 5) {\r\n typeChange = typeArr[5]\r\n }\r\n\r\n return {\r\n _id: item,\r\n type: typeChange\r\n }\r\n })\r\n }\r\n\r\n newData = {\r\n [card._id]: {\r\n ...reduxStore.getState().db.cards[card._id],\r\n _parent: copyRel._id,\r\n _planId: reduxStore.getState().db.cards[copyRel._id]?._planId ? reduxStore.getState().db.cards[copyRel._id]._planId : reduxStore.getState().db.cards[copyRel._id]?.type === 'plan' ? copyRel._id : null,\r\n }\r\n }\r\n\r\n\r\n const resolvedChildrens = await Promise.all(childrens);\r\n\r\n\r\n await updateCardv2(props, [{\r\n _id: card._id,\r\n type: typeArr[definePermission(copyRel.type) + 1]\r\n }, ...resolvedChildrens])\r\n\r\n\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...newData\r\n }\r\n })\r\n\r\n }\r\n if (request) {\r\n let copyResult = true\r\n if (copyResult) {\r\n setTimeout(async () => {\r\n if (i === data.length - 1) {\r\n setDuplicateLoader(false)\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n selectedCards: {\r\n checkSelectedCards: [],\r\n childrenChecked: [],\r\n },\r\n })\r\n }\r\n }, 2000)\r\n }\r\n }\r\n\r\n } catch (e) {\r\n console.log(\"ERROR\", e)\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n return (\r\n <Modal\r\n open={true}\r\n onClose={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n selectedCards: {\r\n checkSelectedCards: [],\r\n childrenChecked: [],\r\n },\r\n })\r\n }\r\n }\r\n aria-labelledby=\"simple-modal-title\"\r\n aria-describedby=\"simple-modal-description\"\r\n >\r\n\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n >\r\n\r\n <div style={{\r\n position: \"relative\",\r\n width: '400px',\r\n backgroundColor: '#FFFFFF',\r\n margin: 'auto',\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n }}>\r\n <div style={{\r\n position: \"relative\",\r\n width: '400px',\r\n backgroundColor: '#FFFFFF',\r\n padding: '9px',\r\n height: \"40px\",\r\n margin: 'auto',\r\n background: customApp('ColumnTitleColor'),\r\n }}>\r\n <div\r\n style={{\r\n fontSize: \"14px\",\r\n color: customApp(\"color\")\r\n }}\r\n >{translate(\"$__send\")}</div>\r\n <div style={{\r\n position: \"absolute\",\r\n right: 5,\r\n top: 5\r\n }}>\r\n <CustomButton\r\n id={`close_duplicate`}\r\n title={translate(`$__close`, \"*\")}\r\n color={customApp(\"color\")}\r\n icon={\"close\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n selectedCards: {\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n },\r\n })\r\n }}\r\n size={\"25px\"}\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n padding: '9px',\r\n }}\r\n >\r\n <Navigation\r\n onSelect={(e) => {\r\n setCopyRel(e)\r\n }}\r\n ignoreCards={data}\r\n ignoreTypes={['chatGroup']}\r\n />\r\n\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"grid\"\r\n }}\r\n >\r\n {!duplicateLoader ?\r\n\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginTop: 40\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__cancel`, 1)}\r\n text={translate(`$__cancel`, 1)}\r\n color={\"lightgray\"}\r\n icon={\"cancel\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n selectedCards: {\r\n checkSelectedCards: [],\r\n childrenChecked: []\r\n },\r\n })\r\n }}\r\n size={\"12px\"}\r\n textSize={\"12px\"}\r\n />\r\n\r\n {Object.keys(copyRel).length > 0 &&\r\n <div>\r\n <CustomButton\r\n title={translate(`$__copy`, 1)}\r\n text={translate(`$__copy`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"content_paste\"}\r\n onClick={() => {\r\n setDuplicateLoader(true)\r\n setTimeout(() => {\r\n execCards(true)\r\n }, 200);\r\n }}\r\n size={\"12px\"}\r\n textSize={\"12px\"}\r\n />\r\n\r\n <CustomButton\r\n title={translate(`$__move`, 1)}\r\n text={translate(`$__move`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"input\"}\r\n onClick={() => {\r\n setDuplicateLoader(true)\r\n setTimeout(() => {\r\n execCards(false)\r\n }, 200);\r\n }}\r\n size={\"12px\"}\r\n textSize={\"12px\"}\r\n />\r\n\r\n </div>}\r\n </div>\r\n :\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n marginTop: 40,\r\n }}\r\n >\r\n <ProgressCircular />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </Modal>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n selectedCards: store.controls.selectedCards,\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(MoveCards)","import React from \"react\"\r\n\r\n//COMPONENTS\r\nimport HeaderWithIcon from \"components/Header/card\"\r\n\r\n//@MATERIAL\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\nimport { translate } from 'functions/'\r\n\r\n\r\nfunction CardActions(props) {\r\n console.log(\"AQUI PRECISA SER CRIADO O PAINEL DE MODELOS DE FLUXOS\")\r\n return (\r\n <Dialog\r\n fullWidth={true}\r\n // onClose={() => setMigrator(false)}\r\n aria-labelledby=\"simple-dialog-title\"\r\n open={props.card.action ? true : false}\r\n >\r\n <div style={{ position: \"relative\", marginLeft: \"10px\", marginTop: '5px', width: \"calc(100% - 10px)\" }}>\r\n <HeaderWithIcon\r\n title={translate(`$__${props.card.action}`, 1)}\r\n icon=\"label\"\r\n onCancel={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n history: `${window.location.pathname}${window.location.hash}`\r\n })\r\n\r\n }}\r\n />\r\n </div>\r\n {/*\r\n <div style={{ color: \"#CCCCCC\", padding: \"15px\" }}>\r\n {\r\n MigratorData._childrens\r\n && !MigratorData._skipGoals\r\n && MigratorData._goals.length > 0\r\n && MigratorData._goals.filter(a => reduxStore.getState().db.cards[a._id] && reduxStore.getState().db.cards[a._id].type === a.type).length > 0\r\n &&\r\n <React.Fragment>\r\n <span style={{ color: 'gray' }}>#NEED_TRANSLATE:: Você possui metas vinculadas aos objetivos/ou diretrizes que deseja migrar. Você deseja transformar essas metas em ações?\r\n <p style={{ color: 'red' }}>Essa ação só pode ser desfeita manualmente</p>\r\n </span>\r\n {MigratorData._goals\r\n .filter(a => reduxStore.getState().db.cards[a._id] && reduxStore.getState().db.cards[a._id].type === a.type)\r\n .sort((a, b) => {\r\n if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'ASC'\r\n && a.name.toLowerCase().trim() < b.name.toLowerCase().trim()\r\n ) {\r\n return -1\r\n } else if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'DESC'\r\n && a.name.toLowerCase().trim() > b.name.toLowerCase().trim()\r\n ) {\r\n return -1\r\n } else if (reduxStore.getState().db.orderByTitle) {\r\n return 0\r\n } else if (!reduxStore.getState().db.orderByTitle && String(a.order) && String(b.order) && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low)) {\r\n return -1\r\n } else {\r\n return 1\r\n }\r\n }\r\n ).map((a, i) =>\r\n <div style={{ width: 'calc(100%)', display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }} key={a._id}>\r\n <Card db=\"cards\" data={a} db='cards' noShadow />\r\n <Button\r\n onClick={() => {\r\n updateCard(props, {\r\n _id: a._id,\r\n type: 'task'\r\n })\r\n }}\r\n >\r\n <Icon\r\n icon=\"change_circle\"\r\n color={customApp('menu')}\r\n title={translate('$__transformInTask')}\r\n />\r\n </Button>\r\n </div>\r\n )\r\n }\r\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"flex-end\", padding: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__skipAll\")}\r\n text={translate(\"$__skipAll\")}\r\n color=\"lightgrey\"\r\n icon={\"skip_next\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipGoals: true\r\n })\r\n }}\r\n />\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__changeAllInTasks\")}\r\n text={translate(\"$__changeAllInTasks\")}\r\n icon={\"change_circle\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n iniMigration('goals')\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipGoals: true\r\n })\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n }\r\n {\r\n MigratorData._childrens\r\n && !MigratorData._skipObjectives\r\n && MigratorData._objectives.length > 0\r\n && MigratorData._objectives\r\n .filter(a => reduxStore.getState().db.cards[a._id] && reduxStore.getState().db.cards[a._id].type === a.type).length > 0\r\n &&\r\n <React.Fragment>\r\n <span style={{ color: 'gray' }}>#NEED_TRANSLATE:: Você possui OBJETIVOS vinculadas aos à diretriz que deseja migrar. Você deseja transformar em metas?\r\n <p style={{ color: 'red' }}>Essa ação só pode ser desfeita manualmente</p>\r\n </span>\r\n {MigratorData._objectives\r\n .filter(a => reduxStore.getState().db.cards[a._id] && reduxStore.getState().db.cards[a._id].type === a.type)\r\n .sort((a, b) => {\r\n if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'ASC'\r\n && a.name.toLowerCase().trim() < b.name.toLowerCase().trim()\r\n ) {\r\n return -1\r\n } else if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'DESC'\r\n && a.name.toLowerCase().trim() > b.name.toLowerCase().trim()\r\n ) {\r\n return -1\r\n } else if (reduxStore.getState().db.orderByTitle) {\r\n return 0\r\n } else if (!reduxStore.getState().db.orderByTitle && String(a.order) && String(b.order) && String(a.order.low) && String(b.order.low) && parseInt(a.order.low) < parseInt(b.order.low)) {\r\n return -1\r\n } else {\r\n return 1\r\n }\r\n }\r\n ).map((a, i) =>\r\n <div style={{ width: 'calc(100%)', display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }} key={a._id}>\r\n <Card db=\"cards\" data={a} noShadow />\r\n <Button\r\n onClick={() => {\r\n updateCard(props, {\r\n _id: a._id,\r\n type: 'goal'\r\n })\r\n }}\r\n >\r\n <Icon\r\n icon=\"change_circle\"\r\n color={customApp('menu')}\r\n title={translate('$__transformInGoal')}\r\n />\r\n </Button>\r\n </div>\r\n )\r\n }\r\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"flex-end\", padding: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__skipAll\")}\r\n text={translate(\"$__skipAll\")}\r\n color=\"lightgrey\"\r\n icon={\"skip_next\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipObjectives: true\r\n })\r\n }}\r\n />\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__changeAllInGoal\")}\r\n text={translate(\"$__changeAllInGoal\")}\r\n icon={\"change_circle\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n iniMigration('objectives')\r\n setMigratorData({\r\n ...MigratorData,\r\n _skipObjectives: true\r\n })\r\n }}\r\n />\r\n </div>\r\n </div>\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__cancel\")}\r\n text={translate(\"$__cancel\")}\r\n icon={\"cancel\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigrator(false)\r\n }}\r\n />\r\n </div>\r\n </React.Fragment>\r\n }\r\n\r\n {(\r\n (\r\n MigratorData\r\n && MigratorData._childrens\r\n && Object.keys(MigratorData._childrens).length > 0\r\n && MigratorData._goals.filter(a => reduxStore.getState().db.cards[a._id] && reduxStore.getState().db.cards[a._id].type === a.type).length === 0\r\n && MigratorData._objectives.filter(a => reduxStore.getState().db.cards[a._id] && reduxStore.getState().db.cards[a._id].type === a.type).length === 0\r\n )\r\n || (\r\n (\r\n MigratorData._skipGoals\r\n && MigratorData._goals.length > 0\r\n )\r\n &&\r\n (\r\n MigratorData._skipObjectives\r\n && MigratorData._objectives.length > 0\r\n )\r\n )\r\n )\r\n &&\r\n <React.Fragment>\r\n <span style={{ color: 'red' }}>#NEED_TRANSLATE:: Clique em salvar para finalizar as migrações.</span>\r\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"flex-end\", padding: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__cancel\")}\r\n text={translate(\"$__cancel\")}\r\n color=\"lightgrey\"\r\n icon={\"close\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n setMigrator(false)\r\n setMigratorData({})\r\n }}\r\n />\r\n <div style={{ marginLeft: \"15px\" }}>\r\n <CustomButton\r\n shadow\r\n title={translate(\"$__save\")}\r\n text={translate(\"$__save\")}\r\n icon={\"done_all\"}\r\n size={\"25px\"}\r\n onClick={() => {\r\n finishMigration()\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n }\r\n </div> */}\r\n </Dialog>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n card: store.card\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CardActions)\r\n","// \r\nimport React from \"react\"\r\nimport MD5 from \"crypto-js/md5\";\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport HeaderWithIcon from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport KanbanBoard from \"components/AgileKanban\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store/\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//FUNCTIONS\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\nimport { translate, customApp } from \"functions\"\r\nimport { loadCardsV2 } from \"functions/loadData\"\r\n\r\n\r\nconst ModalComponent = (props) => {\r\n const { db, session } = reduxStore.getState()\r\n\r\n React.useEffect(() => {\r\n ini()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.board])\r\n\r\n const ini = async () => {\r\n let reqIds = []\r\n\r\n reqIds.push(MD5(JSON.stringify({\r\n cardLoad: 'childrens',\r\n idRel: props.board,\r\n })).toString());\r\n\r\n reqIds.push(MD5(JSON.stringify({\r\n cardLoad: 'childrens',\r\n idRel: props.board,\r\n completed: true,\r\n completedDays: 7\r\n })).toString());\r\n\r\n\r\n loadCardsV2(props, {\r\n cardLoad: 'childrens',\r\n idRel: props.board,\r\n })\r\n loadCardsV2(props, {\r\n cardLoad: 'childrens',\r\n idRel: props.board,\r\n completed: true,\r\n completedDays: 7\r\n })\r\n }\r\n\r\n if (!props.board)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n const data = db.cards[props.board]\r\n const step = data._parent ? db.cards[data._parent] : null\r\n const parent = step && step._parent !== hashs[0] && db.cards[step._parent] && db.cards[step._parent]._users && db.cards[step._parent]._users[session._id] ? db.cards[step._parent] : null\r\n\r\n return (\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backdropFilter: \"blur(3px)\",\r\n zIndex: 1000,\r\n }}>\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n >\r\n\r\n <div style={{\r\n position: \"relative\",\r\n width: 'calc(100% - 100px)',\r\n height: \"83vh\",\r\n backgroundColor: '#FFFFFF',\r\n margin: 'auto',\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n }}>\r\n <div style={{\r\n position: \"relative\",\r\n width: '100%',\r\n backgroundColor: '#FFFFFF',\r\n padding: '9px',\r\n height: \"40px\",\r\n margin: 'auto',\r\n background: customApp('ColumnTitleColor'),\r\n }}>\r\n <div\r\n style={{\r\n fontSize: \"14px\",\r\n color: customApp('colorText'),\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n {parent && parent._id &&\r\n <div style={{\r\n marginRight: 15,\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\"\r\n }}>\r\n <HeaderWithIcon\r\n title={`${parent?.name || translate(\"$__undefinedName\", 1)} `}\r\n searchText={props?.searchText || null}\r\n icon={parent?.icon || (parent.type && db && db.dataType && db.dataType.filter(a => a.name === parent.type)[0] && db.dataType.filter(a => a.name === parent.type)[0].icon) || \"$__topic\"}\r\n iconTitle={`$__${parent.type}`}\r\n color={customApp('colorText')}\r\n backClick={(e) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n board: parent._id,\r\n })\r\n }}\r\n />\r\n <div style={{\r\n marginTop: -5\r\n }}>\r\n <Icon icon=\"navigate_next\" color={customApp('textColor')} />\r\n </div>\r\n </div>\r\n }\r\n <div>\r\n <HeaderWithIcon\r\n title={`${data?.name || translate(\"$__undefinedName\", 1)} `}\r\n searchText={props?.searchText || null}\r\n icon={data?.icon || (data.type && db && db.dataType && db.dataType.filter(a => a.name === data.type)[0] && db.dataType.filter(a => a.name === data.type)[0].icon) || \"$__topic\"}\r\n iconTitle={`$__${data.type}`}\r\n color={customApp('textColor')}\r\n />\r\n </div>\r\n </div>\r\n <div style={{\r\n position: \"absolute\",\r\n right: 5,\r\n top: 5\r\n }}>\r\n <CustomButton\r\n id={`close_kanban`}\r\n title={translate(`$__close`, \"*\")}\r\n color={customApp(\"color\")}\r\n icon={\"close\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n board: null,\r\n })\r\n }}\r\n size={\"25px\"}\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n padding: '9px',\r\n height: \"calc(100% - 50px)\"\r\n }}\r\n >\r\n <ErrorBoundary>\r\n <KanbanBoard\r\n nodeId={props.board}\r\n loaderIds\r\n />\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n </div>\r\n {/* </ClickAwayListener> */}\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n board: store.controls.board\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ModalComponent)","import React from \"react\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport Navigation from \"components/Navigation\"\r\nimport ProgressLinear from \"components/Progress/linear\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField\"\r\n\r\n//@MATERIAL\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\"\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport Modal from '@material-ui/core/Modal'\r\n\r\nimport {\r\n copyCards,\r\n saveCard,\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n customApp,\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData\"\r\n\r\nfunction Card(props) {\r\n const [data, setData] = React.useState({})\r\n const [copyName, setCopyName] = React.useState(data?.name || \"\")\r\n // const [copyModel, setCopyModel] = React.useState(false)\r\n const [copyRel, setCopyRel] = React.useState({})\r\n const [selectTarget, setSelectTarget] = React.useState(false)\r\n const [duplicateLoader, setDuplicateLoader] = React.useState(false)\r\n const [options, setOptions] = React.useState({})\r\n\r\n React.useEffect(() => {\r\n if (props.toCopyMove && reduxStore.getState().db.cards[props.toCopyMove]) {\r\n setData(reduxStore.getState().db.cards[props.toCopyMove])\r\n setCopyName(`${reduxStore.getState().db.cards[props.toCopyMove].name} (${translate(\"$__copy\", '*')})` || \"\")\r\n } else {\r\n setData({})\r\n setCopyName(\"\")\r\n }\r\n return () => {\r\n setData({})\r\n setCopyName(\"\")\r\n }\r\n }, [props.toCopyMove])\r\n\r\n if (JSON.stringify(data) === \"{}\" || !data)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n const duplicateCard = async () => {\r\n setDuplicateLoader(true)\r\n let newData = {}\r\n Object.keys(data).forEach(x => {\r\n if (x.indexOf(\"_\") === -1 && x !== \"created_at\" && x !== \"updated_at\")\r\n newData = {\r\n ...newData,\r\n [x]: data[x]\r\n }\r\n })\r\n newData = {\r\n ...data,\r\n ...newData,\r\n idRel: copyRel && copyRel._id ? copyRel._id : data._parent ? data._parent : null,\r\n name: copyName,\r\n // ...copyModel ? { isModel: true } : {},\r\n status: \"notStarted\"\r\n }\r\n Object.keys(newData).forEach(x => {\r\n if (x.indexOf(\"_\") === 0)\r\n delete newData[x]\r\n if (typeof newData[x] !== \"string\" && typeof newData[x] !== \"boolean\")\r\n delete newData[x]\r\n })\r\n newData._oldId = data._id\r\n\r\n try {\r\n const request = await saveCard(props, true, {\r\n ...newData,\r\n _oldId: data._id\r\n }, newData.idRel);\r\n if (request && request._id) {\r\n let copyResult = await copyCards(data._id, request._id, options);\r\n if (copyResult) {\r\n setTimeout(async () => {\r\n await loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'childrens', idRel: request._id })\r\n await loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'childrens', idRel: data._id })\r\n setOptions({})\r\n setSelectTarget(false)\r\n setDuplicateLoader(false)\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n toCopyMove: null,\r\n })\r\n }, 1000)\r\n }\r\n }\r\n } catch (e) {\r\n console.log(\"ERROR\", e)\r\n }\r\n }\r\n\r\n\r\n const planningTypes = [\"guideline\", \"guidelineD\", \"guidelineR\", \"guidelineC\", \"guidelineE\", \"objective\", \"goal\"]\r\n\r\n return (\r\n <Modal\r\n open={true}\r\n onClose={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n toCopyMove: null,\r\n })\r\n }\r\n }\r\n aria-labelledby=\"simple-modal-title\"\r\n aria-describedby=\"simple-modal-description\"\r\n >\r\n <ClickAwayListener\r\n onClickAway={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n toCopyMove: null,\r\n })\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n >\r\n\r\n <div style={{\r\n position: \"relative\",\r\n width: '400px',\r\n backgroundColor: '#FFFFFF',\r\n margin: 'auto',\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n }}>\r\n <div style={{\r\n position: \"relative\",\r\n width: '400px',\r\n backgroundColor: '#FFFFFF',\r\n padding: '9px',\r\n height: \"40px\",\r\n margin: 'auto',\r\n background: customApp('ColumnTitleColor'),\r\n }}>\r\n <div\r\n style={{\r\n fontSize: \"14px\",\r\n color: customApp(\"color\")\r\n }}\r\n >{translate(\"$__duplicate\")}</div>\r\n <div style={{\r\n position: \"absolute\",\r\n right: 5,\r\n top: 5\r\n }}>\r\n <CustomButton\r\n id={`close_duplicate`}\r\n title={translate(`$__close`, \"*\")}\r\n color={customApp(\"color\")}\r\n icon={\"close\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n toCopyMove: null,\r\n })\r\n }}\r\n size={\"25px\"}\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n padding: '9px',\r\n }}\r\n >\r\n {selectTarget ?\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: \"370px\",\r\n marginBottom: \"15px\"\r\n }}\r\n >\r\n <Navigation\r\n onSelect={(e) => {\r\n setCopyRel(e)\r\n }}\r\n ignoreTypes={['chatGroup']}\r\n />\r\n </div>\r\n :\r\n <div\r\n style={{\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__selectTarget`, 1)}\r\n text={translate(`$__selectTarget`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"assistant_navigation\"}\r\n onClick={() => {\r\n setSelectTarget(true)\r\n }}\r\n size={\"14px\"}\r\n textSize={\"14px\"}\r\n />\r\n </div>\r\n }\r\n\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"grid\"\r\n }}\r\n >\r\n <React.Fragment>\r\n {(\r\n copyRel\r\n && copyRel.type\r\n && planningTypes.indexOf(copyRel.type) > -1\r\n && (\r\n copyRel.type.indexOf(data.type) > -1\r\n ||\r\n data.type.indexOf(copyRel.type) > -1\r\n )\r\n ) ?\r\n <div style={{\r\n color: \"red\",\r\n fontSize: 12,\r\n marginBottom: 15,\r\n textTransform: \"uppercase\",\r\n textAlign: \"center\"\r\n }}>\r\n {translate(`$__youAreDuplicating`)}: {translate(`$__${copyRel.type}`)} {translate(`$__for`)}: {translate(`$__${copyRel.type}`)}.\r\n {translate(`$__thisWillBeTurnedIntoAnActivity`)}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <TextField\r\n label={translate(\"$__copyAs\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"copyAs\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"clear\" onClick={() => {\r\n setCopyName(data.name)\r\n }} />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setCopyName(d.target.value)\r\n },\r\n }}\r\n value={copyName}\r\n placeholder={translate(\"$__copyAs_placeholder\", 1)}\r\n />\r\n {/* <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission={true}\r\n noLimit\r\n multiple\r\n onSelect={(e) => {\r\n setSelectedUsers(e)\r\n }}\r\n selected={selectedUsers}\r\n transparent\r\n /> */}\r\n <fieldset>\r\n <legend>{translate(\"$__options\")}</legend>\r\n <div>\r\n <Switch\r\n checked={options.copyUsers ? true : false}\r\n onClick={(x) => { setOptions({ ...options, copyUsers: options.copyUsers ? false : true }) }}\r\n name=\"copyUsers\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__copyUsersAccess\")}\r\n </div>\r\n <div>\r\n <Switch\r\n checked={options.copyTimeline ? true : false}\r\n onClick={(x) => { setOptions({ ...options, copyTimeline: options.copyTimeline ? false : true }) }}\r\n name=\"copyTimeline\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__copyTimelineIfExists\")}\r\n </div>\r\n <div>\r\n <Switch\r\n checked={options.copyTags ? true : false}\r\n onClick={(x) => { setOptions({ ...options, copyTags: options.copyTags ? false : true }) }}\r\n name=\"copyTags\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__copyTagsIfExists\")}\r\n </div>\r\n {/* <div>\r\n <Switch\r\n checked={copyModel ? true : false}\r\n onClick={(x) => { setCopyModel(!copyModel) }}\r\n name=\"copyModel\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n {translate(\"$__saveAsTemplate\")}\r\n </div> */}\r\n </fieldset>\r\n </React.Fragment>\r\n {!duplicateLoader ?\r\n\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginTop: 40\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__cancel`, 1)}\r\n text={translate(`$__cancel`, 1)}\r\n color={\"lightgray\"}\r\n icon={\"cancel\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n toCopyMove: null,\r\n })\r\n }}\r\n size={\"12px\"}\r\n textSize={\"12px\"}\r\n />\r\n <CustomButton\r\n title={translate(`$__duplicateAllLinkedItems`, 1)}\r\n text={translate(`$__duplicateAllLinkedItems`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"dynamic_feed\"}\r\n onClick={() => {\r\n duplicateCard(true)\r\n }}\r\n size={\"12px\"}\r\n textSize={\"12px\"}\r\n transparent\r\n />\r\n\r\n {/* <CustomButton\r\n title={translate(`$__confirmMoveCard`, 1)}\r\n text={translate(`$__confirmMoveCard`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"dynamic_feed\"}\r\n onClick={() => {\r\n moveCard(true)\r\n }}\r\n size={\"12px\"}\r\n textSize={\"12px\"}\r\n transparent\r\n /> */}\r\n </div>\r\n :\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginTop: 40\r\n }}\r\n >\r\n <ProgressLinear />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ClickAwayListener>\r\n </Modal>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n toCopyMove: store.controls.toCopyMove\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Card)","// \r\nimport React from \"react\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//COMPONENTS\r\nimport CurrencyTextField from 'components/TextField/currency'\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport Navigation from \"components/Navigation\"\r\nimport ProgressLinear from \"components/Progress/linear\"\r\nimport SelectUsers from \"components/User/select\"\r\nimport TextField from \"components/TextField\"\r\nimport TextareaAutosize from 'react-textarea-autosize'\r\nimport FormAnswer from \"componentsV3/Forms/AnswerForm\"\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport Modal from '@material-ui/core/Modal'\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//STYLE\r\nimport { addCard } from \"./functions\"\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions\"\r\n\r\nfunction QuickCardAdd(props) {\r\n const [parentCard, setParentCard] = React.useState({})\r\n const [selectTarget, setSelectTarget] = React.useState(false)\r\n const [loader, setLoader] = React.useState(false)\r\n const [formError, setFormError] = React.useState(null)\r\n const [selectedUsers, setSelectedUsers] = React.useState([reduxStore.getState().session._id])\r\n const [createAnonymously, setCreateAnonymously] = React.useState(false)\r\n const { db } = reduxStore.getState()\r\n const inputRef = React.createRef()\r\n const descriptionRef = React.createRef()\r\n const formsRef = React.useRef({})\r\n const valueRef = React.createRef()\r\n const saveRef = React.useRef({})\r\n\r\n React.useEffect(() => {\r\n if (JSON.stringify(props.addCard) !== \"{}\" && props.addCard._parent && reduxStore.getState().db.cards[props.addCard._parent]) {\r\n let theParentForm = reduxStore.getState().db.cards[props.addCard._parent] || {}\r\n let parentForm = Object.keys(db.cards).filter(a => db.cards[a]._parent === theParentForm._parent && db.cards[a].form).map(a => db.cards[a])[0]\r\n let formSettings = {\r\n shortCutButtonToAdd: parentForm?.shortCutButtonToAdd,\r\n shortCutDescription: parentForm?.shortCutDescription,\r\n shortCutTitle: parentForm?.shortCutTitle,\r\n form: parentForm?.form || {},\r\n }\r\n setParentCard({\r\n ...theParentForm,\r\n form: formSettings.form,\r\n })\r\n } else {\r\n setParentCard({})\r\n setLoader(false)\r\n setSelectTarget(false)\r\n }\r\n return () => {\r\n setParentCard({})\r\n setLoader(false)\r\n setSelectTarget(false)\r\n }\r\n // eslint-disable-next-line\r\n }, [props.addCard])\r\n\r\n const init = () => {\r\n if (parentCard.automationUsers && parentCard.automationUsers !== \"doNotChange\" && parentCard.automationUsers !== \"remove\" && parentCard._users && Object.keys(parentCard._users).length > 0) {\r\n let user = reduxStore.getState().db.users[reduxStore.getState().session._id] || {}\r\n let users = {\r\n ...parentCard.automationUsers === 'add' ? {\r\n [user._id]: {\r\n _id: user._id,\r\n name: user.name,\r\n image: user.image || null\r\n }\r\n } : {},\r\n ...parentCard._users,\r\n }\r\n let newRefUsers = []\r\n Object.keys(users)\r\n .sort((a, b) => {\r\n if (users[a].isResponsible)\r\n return -1\r\n return 1\r\n })\r\n .filter(us => us)\r\n .forEach((us, i) => {\r\n if (us && newRefUsers.indexOf(us) === -1)\r\n newRefUsers.push(us)\r\n })\r\n if (JSON.stringify(newRefUsers) !== JSON.stringify(selectedUsers))\r\n setSelectedUsers(newRefUsers)\r\n }\r\n }\r\n React.useEffect(() => {\r\n init()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [parentCard])\r\n\r\n\r\n\r\n const createCards = async (list) => {\r\n if (formsRef && formsRef.current && formsRef.current.error) {\r\n setFormError(formsRef.current.error)\r\n return\r\n }\r\n let formData = formsRef.current || {}\r\n\r\n if (formData.error)\r\n delete formData.error\r\n\r\n if (Object.keys(formData).length > 0)\r\n formData.formId = parentCard.form\r\n\r\n setLoader(true)\r\n if (saveRef && (!saveRef.current || (saveRef.current && !saveRef.current.loading))) {\r\n saveRef.current = ({\r\n ...saveRef.current, loading: true\r\n })\r\n\r\n\r\n let newData = {\r\n name: inputRef.current.value,\r\n _parent: parentCard._id,\r\n myDay: props.myDay || props.addCard?.initialData?.myDay || props.addCard?.myDay ? true : false,\r\n type: props.addCard?.initialData?.type || props.type || \"task\",\r\n status: props.status ? props.status : \"notStarted\",\r\n users: selectedUsers,\r\n isAnonymous: createAnonymously,\r\n ...formData,\r\n ...list ? { checklist: true } : {},\r\n ...descriptionRef && descriptionRef.current && descriptionRef.current.value ? { description: descriptionRef.current.value } : {},\r\n ...valueRef && valueRef.current && valueRef.current.getValue() ? { value: valueRef.current.getValue() } : {},\r\n ...(parentCard?.childrenAutoTag && parentCard?._tags && parentCard?._tags.length > 0) ? {\r\n _tags: parentCard._tags\r\n } : {},\r\n ...parentCard?.setIcon ? { icon: parentCard?.setIcon } : {},\r\n ...props.addCard?.initialData || {},\r\n }\r\n if (\r\n parentCard\r\n && parentCard.automationDueDateType\r\n && parentCard.automationDueDateType === \"add\"\r\n )\r\n newData = {\r\n ...newData,\r\n startDate: moment(`${moment().format(\"YYYY-MM-DD\")} 00:00:00`).unix(\"X\"),\r\n endDate: moment(`${moment().format(\"YYYY-MM-DD\")} 23:59:59`).add(parentCard?.automationDueDate || 1, \"days\").unix(\"X\")\r\n }\r\n\r\n if (parentCard\r\n && parentCard.automationStatusType\r\n && parentCard.automationStatusType === \"replace\"\r\n )\r\n newData = {\r\n ...newData,\r\n status: parentCard.automationStatus || props.addCard?.initialData?.status || 'notStarted',\r\n ...parentCard.automationStatus && parentCard.automationStatus === 'completed' ? { completed_at: moment().unix('x') } : {},\r\n }\r\n\r\n let result = addCard(newData, props.addCard?.rows || 0, props)\r\n if (result) {\r\n formsRef.current = {}\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...result\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n addCard: {},\r\n })\r\n }\r\n }\r\n\r\n\r\n saveRef.current = ({\r\n ...saveRef.current, loading: false\r\n })\r\n }\r\n\r\n\r\n\r\n if (props.addCard && (JSON.stringify(props.addCard) === \"{}\" || Object.keys(props.addCard).length === 0))\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <Modal\r\n open={true}\r\n onClose={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n addCard: {},\r\n })\r\n }\r\n }\r\n aria-labelledby=\"simple-modal-title\"\r\n aria-describedby=\"simple-modal-description\"\r\n >\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n >\r\n\r\n <div style={{\r\n position: \"relative\",\r\n width: '400px',\r\n backgroundColor: '#FFFFFF',\r\n margin: 'auto',\r\n boxShadow: \"0px 0px 10px 3px rgba(0,0,0,0.2)\",\r\n }}>\r\n <div style={{\r\n position: \"relative\",\r\n width: '400px',\r\n backgroundColor: '#FFFFFF',\r\n padding: '9px',\r\n height: \"40px\",\r\n margin: 'auto',\r\n background: customApp('ColumnTitleColor'),\r\n }}>\r\n <div\r\n style={{\r\n fontSize: \"14px\",\r\n color: customApp('colorText')\r\n }}\r\n >\r\n {parentCard.shortCutTitle ? parentCard.shortCutTitle : translate(\"$__new\")}\r\n </div>\r\n <div style={{\r\n position: \"absolute\",\r\n right: 5,\r\n top: 5,\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <CustomButton\r\n id={`assistant_navigation`}\r\n title={translate(`$__selectTarget`, \"*\")}\r\n color={customApp(\"colorText\")}\r\n icon={\"assistant_navigation\"}\r\n onClick={() => {\r\n setSelectTarget(prev => !prev)\r\n }}\r\n size={\"20px\"}\r\n transparent\r\n />\r\n <CustomButton\r\n id={`close_addCard`}\r\n title={translate(`$__close`, \"*\")}\r\n color={customApp(\"colorText\")}\r\n icon={\"close\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n addCard: {\r\n\r\n },\r\n })\r\n }}\r\n size={\"25px\"}\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n padding: '9px',\r\n }}\r\n >\r\n {selectTarget ?\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: \"370px\",\r\n marginBottom: \"15px\"\r\n }}\r\n >\r\n <Navigation\r\n onSelect={(e) => {\r\n setParentCard(reduxStore.getState().db.cards[e._id])\r\n }}\r\n ignoreTypes={['chatGroup']}\r\n />\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"grid\"\r\n }}\r\n >\r\n <div\r\n // style={{\r\n // position: 'absolute',\r\n // top: 0,\r\n // left: 0,\r\n // bottom: 0,\r\n // right: 0,\r\n // backgroundColor: props.backgroundColor || \"rgba(250,250,250,0.77)\",\r\n // width: '100%',\r\n // padding: '7px',\r\n // display: 'flex',\r\n // alignItems: 'center',\r\n // ...props.styles ? props.styles : {}\r\n // }}\r\n >\r\n <div id=\"addCard_321\" style={{ width: 'calc(100% - 0px)', maxHeight: \"70vh\", overflowY: \"auto\" }}>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: 3\r\n }}\r\n >{parentCard.shortCutTitle ? parentCard.shortCutTitle : props.placeHolder ? props.placeHolder : translate(props.checklist && !props.myDay ? \"$__newSimpleTask\" : \"$__newSubActivity\")}</div>\r\n {props.explain ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n padding: 3,\r\n color: customApp(\"menu\")\r\n }}\r\n >{props.explain}</div>\r\n : <React.Fragment></React.Fragment>}\r\n <TextareaAutosize\r\n ref={inputRef}\r\n style={{\r\n width: \"100%\",\r\n padding: 7,\r\n border: \"none\",\r\n borderBottom: `solid 1px ${customApp(\"color\")}`,\r\n background: \"none\",\r\n resize: \"none\",\r\n fontFamily: \"inherit\",\r\n fontSize: 14,\r\n }}\r\n onKeyDown={(e) => {\r\n const keyCode = e.which || e.keyCode;\r\n if (keyCode === 13 && !e.shiftKey) {\r\n e.preventDefault();\r\n if (\r\n inputRef.current\r\n && inputRef.current.value\r\n && inputRef.current.value.trim().length > 0\r\n )\r\n createCards((((props.checklist || props.addCard?.checklist) && !props.myDay) || props.addCard?.initialData?.checklist) ? true : false)\r\n return\r\n }\r\n if (\r\n keyCode === 13\r\n && e.shiftKey\r\n && inputRef.current\r\n && inputRef.current.value\r\n && inputRef.current.value.trim().length === 0) {\r\n e.preventDefault();\r\n inputRef.current.value = \"\"\r\n return\r\n }\r\n\r\n if (keyCode === 27 && props.onCancel) {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n addCard: {\r\n\r\n },\r\n })\r\n return\r\n }\r\n }}\r\n autoFocus={true}\r\n />\r\n {(\r\n parentCard.requireDescription\r\n ) &&\r\n <TextField\r\n inputRef={descriptionRef}\r\n label={translate(\"$__description\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"description\"\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n multiline: true,\r\n minRows: 3,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"description\" color={\"lightgray\"} />\r\n </InputAdornment>\r\n ),\r\n }}\r\n placeholder={translate(\"$__description\", 1)}\r\n />\r\n }\r\n {parentCard && (\r\n parentCard.type === \"plan\"\r\n || (\r\n parentCard._planId\r\n && db.cards[parentCard._planId]\r\n && db.cards[parentCard._planId].refs\r\n )\r\n ) ?\r\n <fieldset style={{ marginBottom: \"14px\" }}>\r\n <legend>{translate(\"$__references\")}</legend>\r\n <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\r\n <div style={{ width: \"46%\" }}>\r\n <TextField\r\n label={(parentCard._planId && db.cards[parentCard._planId] && db.cards[parentCard._planId].refs && db.cards[parentCard._planId].ref1) || translate(\"$__ref1Title\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"ref1Title\"}\r\n id={\"edit_ref_1\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n formsRef.current = {\r\n ...formsRef.current,\r\n ref1: d.target.value\r\n }\r\n },\r\n }}\r\n // value={data.ref1 || \"\"}\r\n placeholder={(parentCard._planId && db.cards[parentCard._planId] && db.cards[parentCard._planId].refs && db.cards[parentCard._planId].ref1) || translate(\"$__ref1Title_placeholder\", 1)}\r\n />\r\n </div>\r\n <div style={{ width: \"8%\", textAlign: \"center\", justifyContent: \"center\", alignItems: \"center\", fontSize: \"24px\", display: \"flex\", color: customApp(\"menu\") }}>|</div>\r\n <div style={{ width: \"46%\" }}>\r\n <TextField\r\n label={(parentCard._planId && db.cards[parentCard._planId] && db.cards[parentCard._planId].refs && db.cards[parentCard._planId].ref2) || translate(\"$__ref2Title\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"ref2Title\"}\r\n id={\"edit_ref_2\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n formsRef.current = {\r\n ...formsRef.current,\r\n ref2: d.target.value\r\n }\r\n },\r\n }}\r\n // value={data.ref2 || \"\"}\r\n placeholder={(parentCard._planId && db.cards[parentCard._planId] && db.cards[parentCard._planId].refs && db.cards[parentCard._planId].ref2) || translate(\"$__ref2Title_placeholder\", 1)}\r\n />\r\n </div>\r\n </div>\r\n </fieldset>\r\n : <></>}\r\n {parentCard && parentCard.form && reduxStore.getState().forms[parentCard.form] ?\r\n <div\r\n style={{\r\n ...formError ? { border: \"solid 1px red\", padding: 7 } : {}\r\n }}\r\n >\r\n <FormAnswer\r\n formId={parentCard.form}\r\n boardId={parentCard._parent}\r\n onLoad={(requires) => {\r\n\r\n }}\r\n columnChange={(parent) => {\r\n if (parent)\r\n formsRef.current = {\r\n ...formsRef.current,\r\n _parent: parent\r\n }\r\n }}\r\n onChange={(values, error) => {\r\n formsRef.current = {\r\n ...formsRef.current,\r\n ...values,\r\n error\r\n }\r\n setFormError(null)\r\n }}\r\n />\r\n {formError ? <span style={{ color: \"red\" }}>{translate(formError)}</span> : <></>}\r\n </div>\r\n : <></>}\r\n {(\r\n parentCard.requireValue\r\n ) &&\r\n <CurrencyTextField\r\n label={translate(\"$__value\", 1)}\r\n variant=\"standard\"\r\n currencySymbol=\"$\"\r\n outputFormat=\"string\"\r\n inputRef={valueRef}\r\n ref={valueRef}\r\n />\r\n }\r\n {(!parentCard.showInPanel) &&\r\n <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={parentCard}\r\n noLimit\r\n multiple\r\n onSelect={(e) => {\r\n setSelectedUsers(e)\r\n }}\r\n selected={selectedUsers}\r\n transparent\r\n />\r\n }\r\n </div>\r\n {!loader ?\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: \"space-between\",\r\n marginTop: 33,\r\n flexWrap: 'wrap'\r\n }}>\r\n <CustomButton\r\n id={`addModal_cancelButton`}\r\n title={translate(`$__cancel`, 1)}\r\n text={props.placeHolder || translate(`$__cancel`, 1)}\r\n color={customApp(\"medium\")}\r\n icon={\"cancel\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n addCard: {\r\n\r\n },\r\n })\r\n }}\r\n size={\"25px\"}\r\n />\r\n\r\n <div id=\"addCard_441\" style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px'\r\n }}>\r\n {parentCard.allowAnonymous && (\r\n <CustomButton\r\n id={`addCard_anonymousButton`}\r\n title={translate(`$__createAnonymously`, 1)}\r\n text={translate(`$__createAnonymously`, 1)}\r\n color={createAnonymously ? 'orange' : 'grey'}\r\n icon={createAnonymously ? \"visibility_off\" : \"visibility\"}\r\n onClick={() => setCreateAnonymously(!createAnonymously)}\r\n size={\"25px\"}\r\n style={{\r\n border: createAnonymously ? '2px solid orange' : 'none',\r\n boxShadow: createAnonymously ? '0px 0px 5px rgba(255, 165, 0, 0.6)' : 'none',\r\n }}\r\n />\r\n )}\r\n\r\n <CustomButton\r\n id={`sideModule_saveButton`}\r\n title={parentCard.shortCutButtonToAdd ? parentCard.shortCutButtonToAdd : props.placeHolder || translate(`$__save`, 1)}\r\n text={parentCard.shortCutButtonToAdd ? parentCard.shortCutButtonToAdd : props.placeHolder || translate(`$__save`, 1)}\r\n color={'green'}\r\n icon={\"save\"}\r\n onClick={() => {\r\n if (!inputRef.current.value || (\r\n inputRef.current.value\r\n && inputRef.current.value.trim() === \"\"\r\n )) {\r\n inputRef.current.focus()\r\n } else {\r\n createCards((((props.checklist || props.addCard?.checklist) && !props.myDay) || props.addCard?.initialData?.checklist) ? true : false)\r\n }\r\n }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n\r\n </div>\r\n :\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginTop: 40\r\n }}\r\n >\r\n <ProgressLinear />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </Modal>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n addCard: store.controls.addCard\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(QuickCardAdd)","const stepsData = [\r\n {\r\n id: \"top_user\",\r\n tittle: \"$__tour_step1_name\",\r\n text: [\r\n \"$__tour_step1_line1\",\r\n \"$__tour_step1_line2\",\r\n \"$__tour_step1_line3\"\r\n ]\r\n },\r\n {\r\n id: \"chatNotificationsBt\",\r\n tittle: \"$__tour_step2_name\",\r\n text: [\r\n \"$__tour_step2_line1\",\r\n \"$__tour_step2_line2\",\r\n \"$__tour_step2_line3\"\r\n ]\r\n },\r\n {\r\n id: \"sideBar_button_dashboard\",\r\n tittle: \"$__tour_step3_name\",\r\n text: [\r\n \"$__tour_step3_line1\",\r\n \"$__tour_step3_line2\",\r\n \"$__tour_step3_line3\"\r\n ]\r\n },\r\n {\r\n id: \"sideBar_button_brightAndConnected\",\r\n tittle: \"$__tour_step4_name\",\r\n text: [\r\n \"$__tour_step4_line1\",\r\n \"$__tour_step4_line2\",\r\n \"$__tour_step4_line3\"\r\n ]\r\n },\r\n {\r\n id: \"sideBar_button_myTasks\",\r\n tittle: \"$__tour_step5_name\",\r\n text: [\r\n \"$__tour_step5_line1\",\r\n \"$__tour_step5_line2\",\r\n \"$__tour_step5_line3\"\r\n ]\r\n },\r\n {\r\n id: \"sideBar_button_library\",\r\n tittle: \"$__tour_step6_name\",\r\n text: [\r\n \"$__tour_step6_line1\",\r\n \"$__tour_step6_line2\",\r\n \"$__tour_step6_line3\"\r\n ]\r\n },\r\n {\r\n id: \"sideBar_button_tags\",\r\n tittle: \"$__tour_step7_name\",\r\n text: [\r\n \"$__tour_step7_line1\",\r\n \"$__tour_step7_line2\",\r\n \"$__tour_step7_line3\"\r\n ]\r\n },\r\n {\r\n id: \"sideBar_button_calendar\",\r\n tittle: \"$__tour_step8_name\",\r\n text: [\r\n \"$__tour_step8_line1\",\r\n \"$__tour_step8_line2\",\r\n \"$__tour_step8_line3\"\r\n ]\r\n },\r\n {\r\n id: \"sideBar_button_StrategyAndPlans\",\r\n tittle: \"$__tour_step9_name\",\r\n text: [\r\n \"$__tour_step9_line1\",\r\n \"$__tour_step9_line2\",\r\n \"$__tour_step9_line3\"\r\n ],\r\n show: false,\r\n click: true\r\n },\r\n {\r\n id: \"QuickAddBt\",\r\n tittle: \"$__tour_step10_name\",\r\n show: false,\r\n click: true\r\n },\r\n {\r\n id: \"Plantype_67\",\r\n tittle: \"$__tour_step11_name\",\r\n fake: true,\r\n buttonId: \"intro_45\",\r\n handleClose: \"getElements_40\",\r\n click: true,\r\n position: \"left\",\r\n margin: \"-10px\"\r\n },\r\n {\r\n id: \"Plantype_672\",\r\n tittle: \"$__tour_step12_name\",\r\n text: [\r\n \"$__tour_step12_line1\",\r\n \"$__tour_step12_line2\"\r\n ],\r\n fake: true,\r\n handleBack: \"getElements_58\",\r\n handleClose: \"getElements_40\",\r\n buttonId: \"Plantype_110\",\r\n click: true,\r\n position: \"left\",\r\n scale: \"0.9\",\r\n margin: \"-10px\",\r\n change: true,\r\n test: true\r\n },\r\n\r\n];\r\n\r\nconst stepsData2 = [\r\n {\r\n id: 'quick_388',\r\n tittle: \"$__tour_step13_name\",\r\n show: false,\r\n click: true,\r\n wait: true,\r\n position: \"left\",\r\n },\r\n {\r\n id: 'quick_417',\r\n tittle: \"$__tour_step14_name\",\r\n text: [\r\n \"$__tour_step14_line1\",\r\n \"$__tour_step14_line2\",\r\n \"$__tour_step14_line3\"\r\n ],\r\n click: true,\r\n position: 'right'\r\n },\r\n {\r\n id: 'sideBar_subMenu_plan_overview',\r\n tittle: \"$__tour_stepStrategic1_name\",\r\n text: [\r\n \"$__tour_stepStrategic1_line1\",\r\n \"$__tour_stepStrategic1_line2\",\r\n \"$__tour_stepStrategic1_line3\"\r\n ],\r\n show: false,\r\n click: true,\r\n maskValue: 5,\r\n position: 'right'\r\n },\r\n {\r\n id: 'Agilev2_Column_552',\r\n tittle: \"$__tour_stepStrategic2_name\",\r\n click: true,\r\n show: false,\r\n position: 'top',\r\n margin: '0px 0px 50px 0px'\r\n },\r\n {\r\n id: 'addCard_321',\r\n tittle: \"$__tour_stepStrategic3_name\",\r\n click: true,\r\n input: true,\r\n maskValue: 5\r\n },\r\n {\r\n id: 'addCard_441',\r\n tittle: \"$__tour_stepStrategic4_name\",\r\n click: true,\r\n show: false,\r\n maskValue: 0,\r\n last: true\r\n }\r\n];\r\n\r\nconst stepsData3 = [\r\n {\r\n id: 'quick_388',\r\n tittle: \"$__tour_step13_name\",\r\n show: false,\r\n click: true,\r\n wait: true,\r\n position: \"left\",\r\n },\r\n {\r\n id: 'quick_417',\r\n tittle: \"$__tour_step14_name\",\r\n text: [\r\n \"$__tour_step14_line1\",\r\n \"$__tour_step14_line2\",\r\n \"$__tour_step14_line3\"\r\n ],\r\n click: true,\r\n position: 'right'\r\n },\r\n {\r\n id: 'sideBar_subMenu_plan_board',\r\n tittle: \"$__tour_stepFlux1\",\r\n text: [\r\n \"$__tour_stepFlux_line1\",\r\n \"$__tour_stepFlux_line2\",\r\n \"$__tour_stepFlux_line3\"\r\n ],\r\n show: false,\r\n click: true\r\n },\r\n {\r\n id: 'AgileKanbanIndex_256',\r\n tittle: \"$__tour_stepFlux2\",\r\n show: false,\r\n click: true\r\n },\r\n {\r\n id: 'AgileKanbanIndex_282',\r\n tittle: \"$__tour_stepFlux3\",\r\n show: false,\r\n click: true\r\n },\r\n {\r\n id: 'AgileKanbanColumn_304',\r\n tittle: \"$__tour_stepFlux4\",\r\n show: false,\r\n click: true\r\n },\r\n {\r\n id: \"addCard_321\",\r\n tittle: \"$__tour_stepFlux5\",\r\n click: true,\r\n input: true,\r\n maskValue: 5\r\n },\r\n {\r\n id: \"addCard_441\",\r\n tittle: \"$__tour_stepFlux6\",\r\n click: true,\r\n show: false,\r\n maskValue: 0,\r\n last: true\r\n }\r\n]\r\n\r\n// CRIANDO ALIAS\r\n\r\n// $__tour_step1_name\r\n// $__tour_step1\r\n\r\n// tittle: \"Configurações da Conta\",\r\n// text: [\r\n// \"Personalize o seu perfil.\",\r\n// \"Ajuste as suas preferências.\",\r\n// \"Torne a sua conta mais segura.\"\r\n// ]\r\n\r\n// $__tour_step2_name\r\n// $__tour_step2\r\n\r\n// {\r\n// id: \"chatNotificationsBt\",\r\n// tittle: \"Conversas\",\r\n// text: [\r\n// \"Converse diretamente com outros usuários.\",\r\n// \"Crie grupos com diversos membros.\",\r\n// \"Compartilhe e gerencie arquivos com sua equipe.\"\r\n// ]\r\n// },\r\n\r\n// $__tour_step3_name\r\n// $__tour_step3\r\n\r\n// {\r\n// id: \"sideBar_button_dashboard\",\r\n// tittle: \"Painel Inicial\",\r\n// text: [\r\n// \"Acesse seus planos favoritos.\",\r\n// \"Visualize tarefas sugeridas para o seu dia.\",\r\n// \"Confira notícias relevantes para o seu negócio.\"\r\n// ]\r\n// },\r\n\r\n// $__tour_step4_name\r\n// $__tour_step4\r\n\r\n// {\r\n// id: \"sideBar_button_brightAndConnected\",\r\n// tittle: \"BRIGHT & CONNECTED©\",\r\n// text: [\r\n// \"Reúna diversos portais de notícia e assuntos de seu interesse.\",\r\n// \"Salve e compartilhe endereços relevantes.\",\r\n// \"Registre ideias e conteúdos importantes.\"\r\n// ]\r\n// },\r\n\r\n// $__tour_step5_name\r\n// $__tour_step5\r\n\r\n// {\r\n// id: \"sideBar_button_myTasks\",\r\n// tittle: \"Atividades\",\r\n// text: [\r\n// \"Confira todas as suas atividades em um único lugar.\",\r\n// \"Aplique filtros para ter uma visualização personalizada.\",\r\n// \"Atualize suas tarefas de acordo com o progresso delas.\"\r\n// ]\r\n// },\r\n\r\n// $__tour_step6_name\r\n// $__tour_step6\r\n\r\n// {\r\n// id: \"sideBar_button_library\",\r\n// tittle: \"Biblioteca\",\r\n// text: [\r\n// \"Acesse todos os arquivos já compartilhados em um único lugar.\",\r\n// \"Utilize a pesquisa para encontrar arquivos com facilidade.\",\r\n// \"Edite e organize arquivos de forma prática e rápida.\"\r\n// ]\r\n// },\r\n\r\n\r\n// $__tour_step7_name\r\n// $__tour_step7\r\n\r\n// {\r\n// id: \"sideBar_button_tags\",\r\n// tittle: \"Etiquetas\",\r\n// text: [\r\n// \"Crie etiquetas personalizadas para organizar seus conteúdos.\",\r\n// \"Agrupe conteúdos seguindo critérios definidos.\",\r\n// \"Filtre e encontre com facilidade materiais desejados.\"\r\n// ]\r\n// },\r\n\r\n// $__tour_step8_name\r\n// $__tour_step8\r\n\r\n// {\r\n// id: \"sideBar_button_calendar\",\r\n// tittle: \"Calendário\",\r\n// text: [\r\n// \"Visualize suas tarefas detalhadas em um calendário interativo.\",\r\n// \"Atualize qualquer atividade com facilidade.\",\r\n// \"Planeje seus próximos dias sem perder nenhum compromisso.\"\r\n// ]\r\n// },\r\n\r\n// $__tour_step9_name\r\n// $__tour_step9\r\n\r\n// {\r\n// id: \"sideBar_button_StrategyAndPlans\",\r\n// tittle: 'Clique em \" Planos \"',\r\n// text: [\r\n// \"Faça o seu planejamento customizado ou a partir de um modelo.\",\r\n// \"Acesse seus planos por progresso, cliente, privacidade, e muito mais.\",\r\n// \"Salve seus planos como modelos para serem reutilizados.\"\r\n// ],\r\n// show: false,\r\n// click: true\r\n// },\r\n\r\n// $__tour_step10_name\r\n// $__tour_step10\r\n\r\n// {\r\n// id: \"QuickAddBt\",\r\n// tittle: \"Clique em + para criar um novo plano\",\r\n// show: false,\r\n// click: true\r\n// },\r\n\r\n// $__tour_step11_name\r\n// $__tour_step11\r\n\r\n// {\r\n// id: \"Plantype_67\",\r\n// tittle: \"Insira o nome do seu plano e clique em próximo\",\r\n// fake: true,\r\n// buttonId: \"intro_45\",\r\n// handleClose: \"getElements_40\",\r\n// click: true,\r\n// position: \"left\",\r\n// margin: \"-10px\"\r\n// },\r\n\r\n// $__tour_step12_name\r\n// $__tour_step12\r\n\r\n// {\r\n// id: \"Plantype_672\",\r\n// tittle: \"Selecione o tipo do plano\",\r\n// text: [\r\n// \"Escolha o tipo de plano com base nas suas necessidades.\",\r\n// 'Clique em \"Criar\" para avançar para a próxima etapa do processo.'\r\n// ],\r\n// fake: true,\r\n// handleBack: \"getElements_58\",\r\n// handleClose: \"getElements_40\",\r\n// buttonId: \"Plantype_110\",\r\n// click: true,\r\n// position: \"left\",\r\n// scale:\"0.9\",\r\n// margin: \"-10px\",\r\n// change: true,\r\n// test: true\r\n// },\r\n// $__tour_step13_name\r\n// $__tour_step13\r\n\r\n// {\r\n// id: 'quick_388',\r\n// tittle: 'Clique em \"Usuários\"',\r\n// show: false,\r\n// click: true,\r\n// wait: true,\r\n// position: \"left\",\r\n// },\r\n\r\n\r\n// $__tour_step14_name\r\n// $__tour_step14\r\n\r\n// {\r\n// id: 'quick_417',\r\n// tittle: 'Adicionar Usuários',\r\n// text: [\r\n// 'Selecione os usuários que deseja convidar para o plano.',\r\n// 'Atribua responsabilidades para cada usuário participante.',\r\n// 'Remova usuários que devem deixar o plano.'\r\n// ],\r\n// click: true,\r\n// position: 'right'\r\n// },\r\n\r\n// $__tour_stepStrategic1_name\r\n// $__tour_stepStrategic1\r\n\r\n// {\r\n// id: 'sideBar_subMenu_plan_overview',\r\n// tittle: 'Clique em \"Visão Geral\"',\r\n// text: [\r\n// 'Confira todas as atividades criadas no plano.',\r\n// 'Visualize de forma personalizada a partir do sistema \"Kanban\".',\r\n// 'Crie novas atividades e estabeleça vínculos com outras relacionadas.'\r\n// ],\r\n// show: false,\r\n// click: true,\r\n// maskValue: 5,\r\n// position: 'right'\r\n// },\r\n\r\n// $__tour_stepStrategic2_name\r\n// $__tour_stepStrategic2\r\n\r\n// {\r\n// id: 'Agilev2_Column_552',\r\n// tittle: 'Clique em \"+ Adicionar\" para criar uma nova atividade',\r\n// click: true,\r\n// show: false,\r\n// position: 'top',\r\n// margin: '0px 0px 50px 0px'\r\n// },\r\n\r\n// $__tour_stepStrategic3_name\r\n// $__tour_stepStrategic3\r\n\r\n// {\r\n// id: 'addCard_321',\r\n// tittle: 'Escreva o título da sua atividade',\r\n// click: true,\r\n// input: true,\r\n// maskValue: 5\r\n// },\r\n\r\n// $__tour_stepStrategic4_name\r\n// $__tour_stepStrategic4\r\n\r\n// {\r\n// id: 'addCard_441',\r\n// tittle: 'Clique em \"Salvar\" para concluir.',\r\n// click: true,\r\n// show: false,\r\n// maskValue: 0,\r\n// last: true\r\n// }\r\n\r\n\r\n// $__tour_step13_name\r\n// $__tour_step13\r\n\r\n// {\r\n// id: 'quick_388',\r\n// tittle: 'Clique em \"Usuários\"',\r\n// show: false,\r\n// click: true,\r\n// wait: true,\r\n// position: \"left\",\r\n// },\r\n\r\n\r\n// $__tour_step14_name\r\n// $__tour_step14\r\n\r\n// {\r\n// id: 'quick_417',\r\n// tittle: 'Adicionar Usuários',\r\n// text: [\r\n// 'Selecione os usuários que deseja convidar para o plano.',\r\n// 'Atribua responsabilidades para cada usuário participante.',\r\n// 'Remova usuários que devem deixar o plano.'\r\n// ],\r\n// click: true,\r\n// position: 'right'\r\n// },\r\n\r\n\r\n// $__tour_stepFlux1_name\r\n// $__tour_stepFlux1\r\n\r\n// {\r\n// id: 'AgileKanbanIndex_256',\r\n// tittle: 'Clique em adicionar coluna',\r\n// show: false,\r\n// click: true\r\n// },\r\n\r\n// $__tour_stepFlux2_name\r\n// $__tour_stepFlux2\r\n\r\n// {\r\n// id: 'AgileKanbanIndex_282',\r\n// tittle: 'Escreva o título da sua coluna',\r\n// show: false,\r\n// click: true\r\n// },\r\n\r\n// $__tour_stepFlux3_name\r\n// $__tour_stepFlux3\r\n\r\n// {\r\n// id: 'AgileKanbanColumn_304',\r\n// tittle: 'Clique em \"+ Adicionar\" para criar uma nova atividade',\r\n// show: false,\r\n// click: true\r\n// },\r\n\r\n// $__tour_stepFlux4_name\r\n// $__tour_stepFlux4\r\n\r\n// {\r\n// id: \"addCard_321\",\r\n// tittle: 'Escreva o título da sua atividade',\r\n// click: true,\r\n// input: true,\r\n// maskValue: 5\r\n// },\r\n\r\n// $__tour_stepFlux5_name\r\n// $__tour_stepFlux5\r\n\r\n// {\r\n// id: \"addCard_441\",\r\n// tittle: 'Clique em \"Salvar\" para concluir.',\r\n// click: true,\r\n// show: false,\r\n// maskValue: 0,\r\n// last: true\r\n// }\r\n\r\n\r\n\r\nexport { stepsData, stepsData2, stepsData3 };","import React from 'react'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\nimport { translate } from 'functions';\r\n\r\nconst endTour = (props) => {\r\n\r\n const modalStyle = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n display: 'block',\r\n zIndex: 9999\r\n };\r\n\r\n const contentStyle = {\r\n backgroundColor: '#fff',\r\n position: \"relative\",\r\n boxShadow: \"rgba(0, 0, 0, 0.35) 0px 5px 15px\",\r\n margin: '15% auto',\r\n padding: '20px',\r\n border: '1px solid #888',\r\n width: '80%',\r\n TextAlign: \"center\",\r\n borderRadius: \"5px\",\r\n maxWidth: '400px'\r\n };\r\n\r\n const buttonStyle = {\r\n padding: '10px 20px',\r\n backgroundColor: '#2ea44f',\r\n color: '#fff',\r\n borderRadius: '5px',\r\n border: 'none',\r\n marginTop: '30px',\r\n cursor: 'pointer',\r\n boxShadow: \"rgba(0, 0, 0, 0.24) 0px 3px 8px\",\r\n };\r\n\r\n const headingStyle = {\r\n display: \"flex\",\r\n fontSize: '23px',\r\n fontWeight: 'bold',\r\n justifyContent: \"center\"\r\n };\r\n\r\n\r\n const handleEndtour = () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n disabledTour: true\r\n });\r\n }\r\n\r\n return (\r\n <div style={modalStyle}>\r\n <div style={contentStyle}>\r\n <h2 style={headingStyle}>{translate(\"$__tourTitleIntro\")}</h2>\r\n <div style={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <p style={{ width: \"320px\", fontWeight: \"bolder\", textAlign: \"center\", fontSize: \"17px\" }}>\r\n {translate(\"$__endTourDesc\")}\r\n </p>\r\n </div>\r\n <div style={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <button\r\n onClick={() => {\r\n handleEndtour();\r\n props.handleEnd();\r\n }}\r\n style={buttonStyle}\r\n >{translate(\"$__letsStart\")}\r\n </button>\r\n </div>\r\n </div>\r\n </div >\r\n );\r\n}\r\n\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(endTour) ","import React, { useState } from 'react'\r\nimport { customApp, translate } from 'functions';\r\n\r\nconst IntroTour = ({ handleStart, handleEnd }) => {\r\n\r\n const [buttonHover, setButtonHover] = useState(false)\r\n const [buttonHover1, setButtonHover1] = useState(false)\r\n const modalStyle = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n display: 'block',\r\n zIndex: 9999\r\n }\r\n\r\n const contentStyle = {\r\n backgroundColor: '#fff',\r\n position: \"relative\",\r\n boxShadow: \"rgba(0, 0, 0, 0.35) 0px 5px 15px\",\r\n margin: '10% auto',\r\n padding: '20px',\r\n border: '1px solid #888',\r\n width: '80%',\r\n TextAlign: \"center\",\r\n borderRadius: \"5px\",\r\n maxWidth: '400px'\r\n }\r\n\r\n const buttonStyle = {\r\n width: '90%',\r\n height: '50px',\r\n backgroundColor: customApp('menu'),\r\n color: customApp('color'),\r\n fontWeight: \"bold\",\r\n borderRadius: '5px',\r\n filter: buttonHover ? 'brightness(0.90)' : 'brightness(1)',\r\n marginRight: '10px',\r\n cursor: 'pointer',\r\n border: '1px solid grey'\r\n }\r\n\r\n const headingStyle = {\r\n display: \"flex\",\r\n fontSize: '26px',\r\n fontWeight: 'bold',\r\n justifyContent: \"center\"\r\n }\r\n\r\n const primaryButtonStyle = {\r\n ...buttonStyle,\r\n backgroundColor: 'white',\r\n filter: buttonHover1 ? 'brightness(0.98)' : 'brightness(1)',\r\n color: \"black\",\r\n }\r\n\r\n\r\n return (\r\n <div style={modalStyle}>\r\n <div style={contentStyle}>\r\n <div style={{ display: 'flex', flexFlow: \"column\", alignItems: 'center', marginBottom: '20px' }}>\r\n <h2 style={headingStyle}> {translate(\"$__tourTitleIntro\")}</h2>\r\n <p style={{ width: \"240px\", fontWeight: \"bolder\", textAlign: \"center\", fontSize: \"19px\", marginBottom: '30px' }}>\r\n {translate(\"$__tourIntro\")}\r\n </p>\r\n <button onMouseEnter={() => { setButtonHover(true) }}\r\n onMouseLeave={() => { setButtonHover(false) }} onClick={handleStart} style={buttonStyle}>{translate(\"$__letsStart\")}</button>\r\n <div style={{ width: '90%', borderBottom: '1px solid grey', display: 'flex', justifyContent: 'center', marginBottom: '25px', marginTop: '25px', position: 'relative' }}>\r\n <span style={{ top: '-10px', position: 'absolute', backgroundColor: 'white', paddingRight: '10px', paddingLeft: '10px' }}> {translate(\"$__or\")}</span>\r\n </div>\r\n <button onMouseEnter={() => { setButtonHover1(true) }}\r\n onMouseLeave={() => { setButtonHover1(false) }} onClick={handleEnd} style={primaryButtonStyle}><p style={{ marginTop: '10px' }} >{translate(\"$__skipTour\", \"*\")}</p></button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default IntroTour","import React, { useEffect, useState } from 'react'\r\nimport { stepsData, stepsData2, stepsData3 } from './getSteps';\r\nimport Tour from \"reactour\";\r\nimport EndTour from './EndTour';\r\nimport IntroTour from './IntroTour';\r\nimport { customApp, translate } from 'functions';\r\nimport \"./style.css\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\nimport api from \"api\"\r\n\r\nconst ReactTour = () => {\r\n const { session } = reduxStore.getState()\r\n const [stepTour, setStepTour] = useState([])\r\n const [show, setShow] = useState(true)\r\n const [tourData, setTourData] = useState([])\r\n const [currentStep, setCurrentStep] = useState(0)\r\n const [start, setStart] = useState(false)\r\n const [isTourOpen, setIsTourOpen] = useState(true);\r\n const [interaction, setInteraction] = useState(true)\r\n const [mask, setMask] = useState(0);\r\n const [end, setEnd] = useState(false);\r\n const [forceUpdated, setForceUpdated] = useState(\"\")\r\n const [maskClassName, setMaskClassName] = useState('mask');\r\n\r\n const options = React.useRef({})\r\n\r\n useEffect(() => {\r\n if (session.disabledTour && window.location.hostname.indexOf(\"a1b2c\") === -1)\r\n options.current = {\r\n disabledTour: true\r\n }\r\n const checkStrategicElement = document.getElementById(\"sideBar_subMenu_plan_overview\");\r\n const checkFluxElement = document.getElementById(\"sideBar_subMenu_plan_board\");\r\n if (checkStrategicElement) {\r\n setStepTour(stepsData2);\r\n setStart(true);\r\n } else if (checkFluxElement) {\r\n setStepTour(stepsData3);\r\n setStart(true);\r\n } else {\r\n setStepTour(stepsData);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n const StepContent = ({ text, children, tittle }) => {\r\n return (\r\n <div >\r\n <h1 style={{ fontWeight: \"bolder\", fontSize: '22px' }}>{translate(tittle, 1)}</h1>\r\n {text !== undefined && text.map((text, index) => (\r\n <div key={index}>\r\n {console.log(text, translate(text))}\r\n <h1 style={{\r\n fontSize: '18px',\r\n display: \"flex\",\r\n fontWeight: \"bolder\",\r\n marginTop: \"25px\",\r\n color: \"grey\"\r\n }}>{translate(text.trim(), 1)}</h1>\r\n {children}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const checkNextElement = React.useCallback(() => {\r\n\r\n const removeEvent = () => {\r\n const removeEvent = document.getElementById(stepTour[currentStep].id);\r\n removeEvent && removeEvent.removeEventListener('click', checkNextElement);\r\n removeEvent && removeEvent.removeEventListener('change', checkNextElement);\r\n };\r\n\r\n removeEvent();\r\n\r\n const nextElement = document.getElementById(stepTour[currentStep + 1]?.id);\r\n let item = stepTour[currentStep + 1];\r\n if (nextElement) {\r\n processStepTour(item);\r\n setCurrentStep((prev) => prev + 1);\r\n } else {\r\n if (currentStep !== stepTour.length - 1) {\r\n setTimeout(() => {\r\n checkNextElement(currentStep);\r\n }, 300);\r\n } else {\r\n return\r\n }\r\n }\r\n }, [currentStep, stepTour]);\r\n\r\n const handleStepType = () => {\r\n\r\n const checkElementsExistence = () => {\r\n const checkStrategicElement = document.getElementById(\"sideBar_subMenu_plan_overview\");\r\n const checkFluxElement = document.getElementById(\"sideBar_subMenu_plan_board\");\r\n\r\n if (checkStrategicElement) {\r\n setCurrentStep(0);\r\n setStepTour(stepsData2);\r\n clearInterval(checkInterval);\r\n } else if (checkFluxElement) {\r\n setCurrentStep(0);\r\n setStepTour(stepsData3);\r\n clearInterval(checkInterval);\r\n }\r\n };\r\n\r\n const checkInterval = setInterval(checkElementsExistence, 200);\r\n\r\n };\r\n\r\n const checkFirstElement = () => {\r\n if (stepTour.length > 0) {\r\n const firstElement = document.getElementById(stepTour[0].id);\r\n\r\n if (firstElement && currentStep === 0) {\r\n let item = stepTour[currentStep];\r\n processStepTour(item);\r\n\r\n firstElement.addEventListener(\"click\", checkNextElement);\r\n\r\n } else {\r\n setTimeout(() => {\r\n checkFirstElement();\r\n }, 300);\r\n }\r\n }\r\n };\r\n\r\n function processStepTour(item) {\r\n if (typeof item.show !== 'undefined' || typeof item.fake !== 'undefined') {\r\n setShow(false);\r\n } else {\r\n setShow(true);\r\n setMask(0);\r\n }\r\n\r\n if (typeof item.maskValue !== 'undefined') {\r\n setMask(item.maskValue);\r\n }\r\n\r\n if (typeof item.click !== 'undefined') {\r\n setInteraction(false);\r\n }\r\n\r\n }\r\n\r\n const addEvent = () => {\r\n if (stepTour.length > 0) {\r\n const element = document.getElementById(stepTour[currentStep].id);\r\n if (stepTour[currentStep]?.input !== undefined) {\r\n element.addEventListener('change', checkNextElement);\r\n } else {\r\n if (stepTour[currentStep]?.show !== undefined) {\r\n element.addEventListener('click', checkNextElement);\r\n } else if (stepTour[currentStep]?.fake !== undefined) {\r\n const elementButton = document.getElementById(stepTour[currentStep].buttonId);\r\n elementButton && elementButton.addEventListener('click', checkNextElement);\r\n } else {\r\n element.addEventListener('click', checkNextElement);\r\n }\r\n\r\n if (stepTour[currentStep]?.last !== undefined) {\r\n element.addEventListener('click', () => endTour(true));\r\n }\r\n\r\n if (stepTour[currentStep]?.change !== undefined) {\r\n const elementButton = document.getElementById(stepTour[currentStep].buttonId);\r\n elementButton && elementButton.addEventListener('click', handleStepType);\r\n elementButton && elementButton.addEventListener('click', setMaskClassName(\"maskHide\"));\r\n }\r\n\r\n if (stepTour[currentStep]?.handleClose !== undefined) {\r\n const elementButton = document.getElementById(stepTour[currentStep].handleClose);\r\n elementButton && elementButton.addEventListener('click', () => endTour());\r\n }\r\n\r\n\r\n if (stepTour[currentStep]?.handleBack !== undefined) {\r\n const elementButton = document.getElementById(stepTour[currentStep].handleBack);\r\n elementButton && elementButton.addEventListener('click', () => endTour());\r\n }\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (!options.current.disabledTour) {\r\n if (stepTour) {\r\n checkFirstElement();\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [stepTour]);\r\n\r\n useEffect(() => {\r\n if (!options.current.disabledTour) {\r\n if (currentStep === 0) {\r\n return\r\n }\r\n if (currentStep < stepTour.length) {\r\n const actualElement = document.getElementById(stepTour[currentStep].id);\r\n actualElement && addEvent()\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentStep]);\r\n\r\n\r\n\r\n const endTour = (end) => {\r\n setIsTourOpen(false);\r\n end && setEnd(true)\r\n api.post(\"/user/preffers\", {\r\n disabledTour: true\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (!options.current.disabledTour) {\r\n if (currentStep === 0 && stepTour[currentStep]?.id === 'quick_388') {\r\n const handleDelay = () => {\r\n const waitElement = document.getElementById(\"loadBar\");\r\n const interval = setInterval(() => {\r\n if (!document.contains(waitElement)) {\r\n clearInterval(interval);\r\n setTimeout(() => {\r\n setMaskClassName('mask')\r\n setForceUpdated('upd');\r\n }, 900);\r\n }\r\n }, 100);\r\n clearInterval(Interval)\r\n }\r\n const Interval = setInterval(handleDelay, 1000);\r\n\r\n }\r\n\r\n const generateSteps = (data, show, currentStep) => {\r\n\r\n const buttonStyle = {\r\n padding: '10px 20px',\r\n boxShadow: \"rgba(0, 0, 0, 0.24) 0px 3px 8px\",\r\n backgroundColor: customApp('menu'),\r\n color: customApp('color'),\r\n borderRadius: '5px',\r\n border: 'none',\r\n marginRight: '10px',\r\n cursor: 'pointer',\r\n position: \"absolute\",\r\n right: \"20px\",\r\n bottom: \"20px\"\r\n };\r\n\r\n const primaryButtonStyle = {\r\n ...buttonStyle,\r\n boxShadow: \"none\",\r\n backgroundColor: 'transparent',\r\n color: \"black\",\r\n border: \"none\",\r\n right: \"none\",\r\n bottom: \"7px\",\r\n left: \"10px\"\r\n };\r\n\r\n\r\n\r\n\r\n return data.map(({ text, id, tittle, margin, position, scale }) => {\r\n\r\n\r\n return {\r\n selector: '#' + id,\r\n content: (\r\n <>\r\n {currentStep === 0 && maskClassName === 'maskHide' ? null :\r\n <>\r\n <StepContent text={translate(text)} tittle={tittle} />\r\n <div style={{ paddingTop: text ? \"50px\" : \"25px\" }}>\r\n {show && <button id=\"Tour_173\" onClick={() => checkNextElement()} style={buttonStyle}> {translate(\"$__next\")} </button>}\r\n <button\r\n onClick={() => endTour()}\r\n style={primaryButtonStyle}>\r\n <p style={{ borderBottom: \"1px solid black\", marginTop: \"20px\" }}>\r\n {translate(\"$__skipTour\", \"*\")}\r\n </p>\r\n </button>\r\n </div>\r\n </>\r\n }\r\n </>\r\n ),\r\n style: {\r\n fontSize: '12px',\r\n fontWeight: 'bolder',\r\n borderRadius: '5px',\r\n color: '#333',\r\n boxShadow: \"rgba(0, 0, 0, 0.35) 0px 5px 15px\",\r\n fontFamily: 'Helvetica, Arial, sans-serif',\r\n margin: margin ? margin : '10px',\r\n display: (currentStep === 0 && maskClassName === 'maskHide')\r\n || (window.innerWidth < 1480 && currentStep === 11) ? 'none' : 'block'\r\n },\r\n position: position ? position : \"bottom\"\r\n }\r\n });\r\n }\r\n\r\n if (stepTour)\r\n setTourData(generateSteps(stepTour, show, currentStep))\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [stepTour, show, currentStep, maskClassName]);\r\n\r\n\r\n if (options.current.disabledTour)\r\n return (<></>)\r\n\r\n return (\r\n <>\r\n {start ? <Tour\r\n maskClassName={maskClassName}\r\n disableFocusLock={true}\r\n rounded={5}\r\n update={forceUpdated}\r\n disableDotsNavigation={true}\r\n showNavigation={false}\r\n showNumber={false}\r\n disableInteraction={interaction}\r\n closeWithMask={false}\r\n goToStep={currentStep}\r\n steps={tourData}\r\n isOpen={isTourOpen}\r\n showButtons={false}\r\n maskSpace={mask}\r\n onRequestClose={() => endTour()}\r\n /> : <IntroTour\r\n handleEnd={() => {\r\n setStart(true)\r\n endTour()\r\n }}\r\n handleStart={() => setStart(true)} />\r\n }\r\n {end && <EndTour handleEnd={() => {\r\n endTour()\r\n setEnd(false)\r\n }} />}\r\n </>\r\n )\r\n\r\n}\r\n\r\nexport default ReactTour","//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//FUNCTIONS\r\nrequire('dotenv').config()\r\n\r\nconst nodeUpdate = async (props, data) => {\r\n let { db } = reduxStore.getState()\r\n let nodeType = 'cards'\r\n if (db.cards[data._id]) {\r\n nodeType = 'cards'\r\n } else if (db.users[data._id]) {\r\n nodeType = 'users'\r\n }\r\n if (reduxStore.getState().db\r\n && reduxStore.getState().db[nodeType]\r\n && reduxStore.getState().db[nodeType][data._id]\r\n ) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n [nodeType]: {\r\n ...reduxStore.getState().db[nodeType],\r\n [data._id]: {\r\n ...reduxStore.getState().db[nodeType][data._id],\r\n ...data\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport {\r\n nodeUpdate,\r\n}","import {\r\n containerFluid\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst appStyle = theme => ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n backgroundColor: \"rgba(0,0,0,0.66) !important\"\r\n },\r\n wrapper: {\r\n position: \"absolute\",\r\n top: \"70px\",\r\n left: \"0\",\r\n right: \"0\",\r\n bottom: \"0\",\r\n height: \"calc(100vh - 60px)\",\r\n },\r\n mainPanel: {\r\n overflow: \"auto\",\r\n position: \"absolute\",\r\n top: \"0\",\r\n left: \"0\",\r\n right: \"0\",\r\n bottom: \"0\",\r\n maxHeight: \"calc(100vh - 72px)\",\r\n padding: 15\r\n },\r\n content: {\r\n marginTop: \"0px\",\r\n padding: \"15px\",\r\n },\r\n container: {\r\n ...containerFluid,\r\n height: \"-webkit-fill-available\",\r\n overflowY: \"auto\"\r\n },\r\n map: {\r\n marginTop: \"0px\"\r\n },\r\n mainPanelSidebarMini: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: `calc(100% - 0px)`\r\n }\r\n },\r\n});\r\n\r\nexport default appStyle;\r\n","import {\r\n whiteColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst pagesStyle = () => ({\r\n wrapper: {\r\n height: \"auto\",\r\n minHeight: \"100vh\",\r\n position: \"relative\",\r\n top: \"0\"\r\n },\r\n fullPage: {\r\n position: \"relative\",\r\n minHeight: \"100vh\",\r\n display: \"flex !important\",\r\n margin: \"0\",\r\n border: \"0\",\r\n color: whiteColor,\r\n alignItems: \"center\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\",\r\n height: \"100%\",\r\n overflow: \"auto\",\r\n \"& footer\": {\r\n position: \"absolute\",\r\n bottom: \"0\",\r\n width: \"100%\",\r\n border: \"none !important\"\r\n },\r\n \"&:before\": {\r\n backgroundColor: \"rgba(\" + hexToRgb(blackColor) + \", 0.22)\"\r\n },\r\n \"&:before,&:after\": {\r\n display: \"block\",\r\n content: '\"\"',\r\n position: \"absolute\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n top: \"0\",\r\n left: \"0\",\r\n zIndex: \"2\"\r\n }\r\n }\r\n});\r\n\r\nexport default pagesStyle;\r\n","import React\r\n // { useEffect, useRef, useState } \r\n from \"react\"\r\n// import Peer from \"simple-peer\"\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n// import reduxStore from \"store/\"\r\n\r\n// //@MATERIAL\r\n// import Avatar from \"@material-ui/core/Avatar\"\r\n// import Button from \"@material-ui/core/Button\"\r\n// import CustomButton from \"components/Buttons/custom\"\r\n\r\n// import defaultAvatar from \"assets/img/default-avatar.png\"\r\n\r\n\r\n// import { translate } from \"functions/\"\r\n\r\n//STYLES\r\nimport \"./styles.css\"\r\n\r\nfunction MachenPeerCall(props) {\r\n return (<></>)\r\n // const { session } = reduxStore.getState()\r\n // const [me, setMe] = useState(\"\")\r\n // const [idToCall, setIdToCall] = useState(\"\")\r\n // const [stream, setStream] = useState()\r\n // const [receivingCall, setReceivingCall] = useState(false)\r\n // const [callerOn, setCallerOn] = useState(false)\r\n // const [caller, setCaller] = useState(\"\")\r\n // const [callerSignal, setCallerSignal] = useState()\r\n // const [callAccepted, setCallAccepted] = useState(false)\r\n // const [callEnded, setCallEnded] = useState(false)\r\n // const [name, setName] = useState(\"\")\r\n // const [fromData, setFrom] = useState({})\r\n // const myVideo = useRef()\r\n // const userVideo = useRef()\r\n // const connectionRef = useRef()\r\n\r\n // var peerFrom = new Peer({ initiator: true, stream: stream })\r\n // var peerTo = new Peer()\r\n\r\n // useEffect(() => {\r\n // const { socket } = reduxStore.getState().functions\r\n // socket.on(\"callToUser\", (data) => {\r\n // setReceivingCall(true)\r\n // setFrom({ name: data.name, image: data.image })\r\n // setCaller(data.from)\r\n // setIdToCall(data.from)\r\n // setName(data.name || \"\")\r\n // setCallerSignal(data.signal)\r\n // })\r\n\r\n // }, [props.socket?.id])\r\n\r\n // useEffect(() => {\r\n // const { socket } = reduxStore.getState().functions\r\n // socket.on(\"cancelCallToUser\", (data) => {\r\n // if (data?.to === me)\r\n // declineCall()\r\n // })\r\n // }, [caller, me])\r\n\r\n\r\n // useEffect(() => {\r\n // if (props.usersStatus[session._id]?.socketId)\r\n // setMe(props.usersStatus[session._id].socketId)\r\n // if (props.nodeId && props.usersStatus[props.nodeId]?.socketId) {\r\n // setIdToCall(props.usersStatus[props.nodeId].socketId)\r\n // }\r\n // }, [JSON.stringify(props.usersStatus), props.nodeId])\r\n\r\n // const declineCall = () => {\r\n // setReceivingCall(true)\r\n // setFrom({})\r\n // setCaller(\"\")\r\n // setName(\"\")\r\n // setCallerSignal()\r\n // setCallEnded(true)\r\n // setStream(true)\r\n // setStream()\r\n // setReceivingCall(false)\r\n // setCallerOn(false)\r\n // setCaller(\"\")\r\n // setCallerSignal()\r\n // setIdToCall(\"\")\r\n // setCallEnded(false)\r\n // setName(\"\")\r\n // if (stream && stream.getTracks())\r\n // stream.getTracks().forEach(track => track.stop())\r\n // if (connectionRef?.current)\r\n // connectionRef.current.destroy()\r\n // }\r\n\r\n // const leaveCall = (id) => {\r\n // const { socket } = reduxStore.getState().functions\r\n // socket.emit(\"cancelCallToUser\", {\r\n // to: id,\r\n // from: me\r\n // })\r\n // declineCall()\r\n // }\r\n\r\n // const callUser = (id) => {\r\n // navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then((stream) => {\r\n // setStream(stream)\r\n // myVideo.current.srcObject = stream\r\n\r\n // const { socket } = reduxStore.getState().functions\r\n\r\n // const peer = new Peer({\r\n // initiator: true,\r\n // trickle: false,\r\n // stream: stream\r\n // })\r\n\r\n // peer.on(\"signal\", (data) => {\r\n // socket.emit(\"callToUser\", {\r\n // userToCall: id,\r\n // signalData: data,\r\n // from: me,\r\n // name: name,\r\n // image: session.image || {}\r\n // })\r\n // setCallerOn(true)\r\n // })\r\n // peer.on(\"stream\", (stream) => {\r\n // userVideo.current.srcObject = stream\r\n // })\r\n // socket.on(\"callAccepted\", (signal) => {\r\n // setCallAccepted(true)\r\n // peer.signal(signal)\r\n // })\r\n // connectionRef.current = peer\r\n // props.reduxFunction(\"ASYNC\", \"SET_CHAT\", {\r\n // ...reduxStore.getState().chat,\r\n // callId: id,\r\n // })\r\n // })\r\n\r\n // }\r\n\r\n // const answerCall = async () => {\r\n // navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then((stream) => {\r\n // setStream(stream)\r\n // myVideo.current.srcObject = stream\r\n // setCallerOn(true)\r\n // setCallAccepted(true)\r\n\r\n // const { socket } = reduxStore.getState().functions\r\n\r\n // const peer = new Peer({\r\n // initiator: false,\r\n // trickle: false,\r\n // stream: stream\r\n // })\r\n\r\n // peer.on(\"signal\", (data) => {\r\n // socket.emit(\"answerCall\", { signal: data, to: caller })\r\n // })\r\n // peer.on(\"stream\", (streamFrom) => {\r\n // userVideo.current.srcObject = streamFrom\r\n // })\r\n\r\n // peer.signal(callerSignal)\r\n // connectionRef.current = peer\r\n // })\r\n\r\n // }\r\n\r\n\r\n\r\n // return (\r\n // <>\r\n // {!callerOn && receivingCall && !callAccepted ? (\r\n // <div className=\"caller\">\r\n // <div\r\n // style={{ display: \"flex\", alignItems: \"center\" }}>\r\n // <Avatar alt={fromData.name} src={fromData.image || defaultAvatar} />\r\n // <div style={{ marginLeft: 15 }}>{fromData.name || \"NOME\"}</div>\r\n // </div>\r\n // <h1 className={\"callerEffect\"}>{name} is calling...</h1>\r\n // <div style={{\r\n // display: \"flex\",\r\n // alignItems: \"center\"\r\n // }}>\r\n // <Button variant=\"contained\" color=\"primary\" onClick={answerCall}>\r\n // {translate(\"$__answer\", \"*\")}\r\n // </Button>\r\n // <Button\r\n // variant=\"contained\"\r\n // color=\"secondary\"\r\n // onClick={() => { leaveCall(idToCall) }} style={{ marginLeft: 7 }}>\r\n // {translate(\"$__decline\", \"*\")}\r\n // </Button>\r\n // </div>\r\n // </div >\r\n // ) : <></>\r\n // }\r\n // {\r\n // !callerOn && props.nodeId ?\r\n // <>\r\n // <CustomButton\r\n // id={`chat_call`}\r\n // title={translate(`$__call`, \"*\")}\r\n // color={\"#FFFFFF\"}\r\n // icon={\"video_call\"}\r\n // onClick={() => {\r\n // callUser(idToCall)\r\n // }}\r\n // size={\"25px\"}\r\n // transparent\r\n // />\r\n // </> : <></>\r\n // }\r\n // <div className=\"container\" style={{ ...!callerOn ? { display: \"none\" } : {} }} >\r\n // <div className=\"video-container\">\r\n // <div className=\"video-from\">\r\n // {callAccepted && !callEnded ?\r\n // <video playsInline ref={userVideo} autoPlay style={{ width: \"800px\" }} /> :\r\n // <></>}\r\n // </div>\r\n // <div className=\"video-me\">\r\n // {stream && <video playsInline muted ref={myVideo} autoPlay style={{ width: \"150px\" }} />}\r\n // </div>\r\n // <Button\r\n // variant=\"contained\"\r\n // color=\"secondary\"\r\n // onClick={() => { leaveCall(idToCall) }}\r\n // >\r\n // {translate(\"$__endCall\", \"*\")}\r\n // </Button>\r\n // </div>\r\n // </div >\r\n // </>\r\n // )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n usersStatus: store.usersStatus.users,\r\n chat: store.chat,\r\n socket: store.functions.socket\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MachenPeerCall)","import {\r\n container,\r\n defaultFont,\r\n primaryColor,\r\n defaultBoxShadow,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n boxShadow,\r\n drawerWidth,\r\n transition,\r\n whiteColor,\r\n grayColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst pagesHeaderStyle = theme => ({\r\n appBar: {\r\n backgroundColor: \"transparent\",\r\n boxShadow: \"none\",\r\n borderBottom: \"0\",\r\n marginBottom: \"0\",\r\n position: \"absolute\",\r\n width: \"100%\",\r\n paddingTop: \"10px\",\r\n zIndex: \"1029\",\r\n color: grayColor[6],\r\n border: \"0\",\r\n borderRadius: \"3px\",\r\n padding: \"10px 0\",\r\n transition: \"all 150ms ease 0s\",\r\n minHeight: \"50px\",\r\n display: \"block\"\r\n },\r\n container: {\r\n ...container,\r\n minHeight: \"50px\"\r\n },\r\n flex: {\r\n flex: 1\r\n },\r\n title: {\r\n ...defaultFont,\r\n lineHeight: \"30px\",\r\n fontSize: \"18px\",\r\n borderRadius: \"3px\",\r\n textTransform: \"none\",\r\n color: whiteColor,\r\n letterSpacing: \"unset\",\r\n \"&:hover,&:focus\": {\r\n background: \"transparent\",\r\n color: whiteColor\r\n }\r\n },\r\n appResponsive: {\r\n top: \"8px\"\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n list: {\r\n ...defaultFont,\r\n fontSize: \"12px\",\r\n margin: 0,\r\n marginRight: \"-15px\",\r\n paddingLeft: \"0\",\r\n listStyle: \"none\",\r\n color: whiteColor,\r\n paddingTop: \"0\",\r\n paddingBottom: \"0\"\r\n },\r\n listItem: {\r\n float: \"left\",\r\n position: \"relative\",\r\n display: \"block\",\r\n width: \"auto\",\r\n margin: \"0\",\r\n padding: \"0\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n zIndex: \"999\",\r\n width: \"100%\",\r\n paddingRight: \"15px\"\r\n }\r\n },\r\n navLink: {\r\n color: whiteColor,\r\n margin: \"0 5px\",\r\n paddingTop: \"15px\",\r\n paddingBottom: \"15px\",\r\n fontWeight: \"500\",\r\n fontSize: \"12px\",\r\n textTransform: \"uppercase\",\r\n borderRadius: \"3px\",\r\n lineHeight: \"20px\",\r\n position: \"relative\",\r\n display: \"block\",\r\n padding: \"10px 15px\",\r\n textDecoration: \"none\",\r\n \"&:hover,&:focus\": {\r\n color: whiteColor,\r\n background: \"rgba(\" + hexToRgb(grayColor[17]) + \", 0.2)\"\r\n }\r\n },\r\n listItemIcon: {\r\n marginTop: \"-3px\",\r\n top: \"0px\",\r\n position: \"relative\",\r\n marginRight: \"3px\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n verticalAlign: \"middle\",\r\n color: \"inherit\",\r\n display: \"inline-block\"\r\n },\r\n listItemText: {\r\n flex: \"none\",\r\n padding: \"0\",\r\n minWidth: \"0\",\r\n margin: 0,\r\n display: \"inline-block\",\r\n position: \"relative\",\r\n whiteSpace: \"nowrap\"\r\n },\r\n navLinkActive: {\r\n backgroundColor: \"rgba(\" + hexToRgb(whiteColor) + \", 0.1)\"\r\n },\r\n drawerPaper: {\r\n border: \"none\",\r\n bottom: \"0\",\r\n transitionProperty: \"top, bottom, width\",\r\n transitionDuration: \".2s, .2s, .35s\",\r\n transitionTimingFunction: \"linear, linear, ease\",\r\n ...boxShadow,\r\n width: drawerWidth,\r\n ...boxShadow,\r\n position: \"fixed\",\r\n display: \"block\",\r\n top: \"0\",\r\n height: \"100vh\",\r\n right: \"0\",\r\n left: \"auto\",\r\n visibility: \"visible\",\r\n overflowY: \"visible\",\r\n borderTop: \"none\",\r\n textAlign: \"left\",\r\n paddingRight: \"0px\",\r\n paddingLeft: \"0\",\r\n ...transition,\r\n \"&:before,&:after\": {\r\n position: \"absolute\",\r\n zIndex: \"3\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n content: '\"\"',\r\n display: \"block\",\r\n top: \"0\"\r\n },\r\n \"&:after\": {\r\n background: blackColor,\r\n opacity: \".8\"\r\n }\r\n },\r\n sidebarButton: {\r\n \"&,&:hover,&:focus\": {\r\n color: whiteColor\r\n },\r\n top: \"-2px\"\r\n }\r\n});\r\n\r\nexport default pagesHeaderStyle;\r\n","import React from \"react\";\r\nimport cx from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/authNavbarStyle\";\r\n\r\nimport { customApp } from \"functions\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function AuthNavbar(props) {\r\n const classes = useStyles();\r\n const { color } = props;\r\n const appBarClasses = cx({\r\n [\" \" + classes[color]]: color\r\n });\r\n return (\r\n <AppBar position=\"static\" className={classes.appBar + appBarClasses}>\r\n <Toolbar >\r\n <div style={{ display: \"flex\", justifyContent: \"center\", width: \"100%\" }}>\r\n <div style={{ maxWidth: \"222px\" }}>\r\n <img alt=\"MACHEN_IMAGE\" src={customApp(\"customLogo\")}\r\n style={{\r\n width: \"100%\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </Toolbar>\r\n </AppBar>\r\n );\r\n}\r\n\r\nAuthNavbar.propTypes = {\r\n color: PropTypes.oneOf([\"primary\", \"info\", \"success\", \"warning\", \"danger\"]),\r\n brandText: PropTypes.string\r\n};\r\n","// ID_CREATED*************************\r\n\r\nimport React from \"react\"\r\nimport MD5 from \"crypto-js/md5\"\r\nimport cx from \"classnames\"\r\nimport moment from \"moment-timezone\"\r\nimport { Switch, Route, Redirect } from \"react-router-dom\"\r\nimport { ToastContainer } from \"react-toastify\"\r\nimport \"react-toastify/dist/ReactToastify.css\"\r\nimport styled from \"styled-components\"\r\nimport PolicyAndTerms from \"components/PlataformContracts/PolicyAndTerms\"\r\nimport LicensingAgreement from \"components/PlataformContracts/LicensingAgreement\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\nimport Backdrop from \"@material-ui/core/Backdrop\"\r\nimport Hidden from \"@material-ui/core/Hidden\"\r\n\r\n// COMPONENTS\r\nimport Footer from \"components/Footer/Footer\"\r\nimport Icon from \"components/Icon\"\r\nimport LightBox from \"components/LightBox\"\r\nimport LoaderPage from \"components/LoaderPage\"\r\n\r\nimport MiroBoard from \"components/MiroBoard\"\r\nimport SideModule from \"components/SideModule/\"\r\nimport Sidebar from \"components/Sidebar/\"\r\nimport TopHeader from \"components/TopHeader\"\r\nimport Chat from \"components/Chat\"\r\nimport MoveCards from \"components/Quick/MoveCards\"\r\nimport CardActions from \"components/CardActions\"\r\nimport KanbanModal from \"components/AgileKanban/modal\"\r\nimport CopyMove from \"components/Quick/copy_move\"\r\nimport CardAdd from \"components/Quick/addCard\"\r\nimport Tour from \"componentsV3/Tour/Tour\"\r\n\r\n//ROUTES\r\nimport routes from \"routes\"\r\n\r\n//FUNCTIONS\r\nimport apims from \"apims/\"\r\n\r\nimport {\r\n cardAccessDelete,\r\n cardAccessRemove,\r\n cardAccessUpdate,\r\n changeParentId,\r\n columnCards,\r\n dbUpdateCard,\r\n dbUpdateCardSWOT,\r\n dbUpdateCardTimer,\r\n dbUpdateCard_V2,\r\n deleteCard,\r\n deleteColumn,\r\n myDayUpd,\r\n reorderCard,\r\n reorderColumns,\r\n socketUnLinkChildrens,\r\n updateColumnCards,\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n chatReaded,\r\n interact,\r\n loadTimeline,\r\n} from \"functions/chat\"\r\n\r\nimport {\r\n dbUpdateUser,\r\n loadUsersV2\r\n} from \"functions/users\"\r\n\r\nimport {\r\n dbUpdateFeed\r\n} from \"functions/feeds\"\r\n\r\nimport {\r\n appAlert,\r\n languageUPD,\r\n} from \"functions/\"\r\n\r\nimport {\r\n nodeUpdate\r\n} from \"functions/socket\"\r\n\r\nimport {\r\n tagUpdate,\r\n localTagDelete,\r\n localTagUnlink\r\n} from \"functions/tags\"\r\n\r\nimport {\r\n loadCardsV2,\r\n pageLoadCards,\r\n} from \"functions/loadData\"\r\n\r\nimport {\r\n kanbanReorder\r\n} from \"functions/kanban\"\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\nimport history from \"store/history\"\r\n\r\n// SOCKET\r\nimport socketIOClient from \"socket.io-client\"\r\n\r\n//STYLESS\r\nimport stylesAdmin from \"./adminStyle\"\r\nimport stylesLogin from \"./authStyle\"\r\nimport \"perfect-scrollbar/css/perfect-scrollbar.css\"\r\n\r\n//AUDIO\r\nimport { translate, customApp } from \"functions\"\r\nimport Call from \"componentsV3/Call\"\r\nimport AuthNavbar from \"components/Navbars/AuthNavbar\"\r\n\r\nrequire('dotenv').config()\r\n\r\nconst API_WS = process.env.REACT_APP_WS\r\n\r\nfunction SaasHome(props) {\r\n const { ...rest } = props\r\n const { session } = reduxStore.getState()\r\n const [whiteLabel, setWhiteLabel] = React.useState({})\r\n const [auth, setAuth] = React.useState(false)\r\n const [backdropEnabled, setBackdropEnabled] = React.useState(false)\r\n const [loading, setLoading] = React.useState(true)\r\n const [offlineDetected, setOfflineDetected] = React.useState(false)\r\n const [expanded, setExpanded] = React.useState(true)\r\n const [subMenuExpanded, setSubMenuExpanded] = React.useState(false)\r\n\r\n const useStyles = makeStyles(auth ? stylesAdmin : stylesLogin)\r\n const pageLoads = React.useRef({})\r\n\r\n const timeZone = 'America/Sao_Paulo'\r\n // styles\r\n const classes = useStyles()\r\n const wrapper = React.createRef()\r\n const mainPanelClasses =\r\n classes.mainPanel +\r\n \" \" +\r\n cx({\r\n [classes.mainPanelSidebarMini]: true,\r\n [classes.mainPanelWithPerfectScrollbar]:\r\n navigator.platform.indexOf(\"Win\") > -1\r\n })\r\n\r\n const mainPanel = React.createRef()\r\n const connection = React.createRef()\r\n\r\n React.useEffect(() => {\r\n connection.current = {\r\n offline: false\r\n }\r\n const verifyLabel = async (hostname) => {\r\n const wl = await apims.post('/WhiteLabel', { url: hostname })\r\n if (wl) {\r\n if (wl?.data) {\r\n setWhiteLabel(wl.data)\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...session,\r\n custom: {\r\n ...session.custom,\r\n ...wl.data,\r\n }\r\n })\r\n }\r\n verifySession()\r\n }\r\n }\r\n let hostname = window.location.hostname\r\n // let hostname = \"CLIENTEURL.machen.ai\"\r\n hostname = hostname.replace(\".machen.ai\", \"\")\r\n\r\n if (\r\n hostname\r\n && hostname.indexOf('software') === -1\r\n && hostname.indexOf('hom2022') === -1\r\n && hostname.indexOf('localhost') === -1\r\n ) {\r\n verifyLabel(hostname)\r\n } else {\r\n verifySession()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n\r\n React.useEffect(() => {\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n history: `${window.location.pathname}${window.location.hash}`\r\n })\r\n pageDataRequest(Nhashs)\r\n })\r\n\r\n React.useEffect(() => {\r\n let Nhashs = window.location.hash.split(\"/\")\r\n Nhashs[0] = Nhashs[0].replace(\"#\", \"\")\r\n if (auth) {\r\n pageDataRequest(Nhashs)\r\n initCompleted()\r\n init(true)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [auth])\r\n\r\n const init = async (force) => {\r\n connection.current = {\r\n offline: false\r\n }\r\n window.addEventListener(\"dragover\", function (e) {\r\n e.preventDefault()\r\n }, false)\r\n window.addEventListener(\"drop\", function (e) {\r\n e.preventDefault()\r\n }, false)\r\n\r\n var exitTime\r\n var contTime = 0\r\n var interval_id = setInterval(() => {\r\n contTime = contTime + 1\r\n }, 1000)\r\n\r\n var interval_status = setTimeout(() => {\r\n\r\n }, 50000);\r\n\r\n let sessionInterval = setInterval(() => {\r\n verifySession(true)\r\n }, 360000)\r\n\r\n window.addEventListener(\"blur\", () => {\r\n clearInterval(interval_id)\r\n clearInterval(sessionInterval)\r\n interval_id = 0\r\n exitTime = moment().tz(timeZone).unix('X')\r\n interval_status = setTimeout(() => {\r\n setStatus(\"away\")\r\n }, 60000)\r\n\r\n })\r\n window.addEventListener(\"focus\", async (e) => {\r\n if (!connection?.current?.offline) {\r\n verifySession(true)\r\n clearInterval(sessionInterval)\r\n sessionInterval = setInterval(() => {\r\n verifySession(true)\r\n }, 360000)\r\n clearTimeout(interval_status)\r\n if (!interval_id)\r\n interval_id = setInterval(() => {\r\n contTime = contTime + 1\r\n }, 1000)\r\n setStatus(\"online\")\r\n if (exitTime && moment().tz(timeZone).unix('X') - exitTime > 30)\r\n verifyMessages()\r\n }\r\n })\r\n }\r\n\r\n const verifyMessages = (lastDate = null) => {\r\n loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Layouts/Index/loadData()-Users\"\r\n },\r\n {\r\n ids: [reduxStore.getState().session._id],\r\n db: \"users\",\r\n type: \"comment\",\r\n newUpdates: true,\r\n lastDate\r\n }\r\n )\r\n }\r\n\r\n const setStatus = async (status) => {\r\n if (\r\n (status === 'online'\r\n && reduxStore.getState().usersStatus.users\r\n && reduxStore.getState().usersStatus.users[session._id]\r\n && reduxStore.getState().usersStatus.users[session._id].status !== 'online'\r\n )\r\n ||\r\n (status === 'away'\r\n && reduxStore.getState().usersStatus.users\r\n && reduxStore.getState().usersStatus.users[session._id]\r\n && reduxStore.getState().usersStatus.users[session._id].status !== 'away'\r\n )\r\n ) {\r\n const { socket } = reduxStore.getState().functions\r\n socket.emit(\"socketStatus\", {\r\n socketStatus: status\r\n })\r\n }\r\n }\r\n\r\n const verifySession = async (onlyToken, n = 0) => {\r\n if (connection.current && !connection.current.offline) {\r\n if (!onlyToken) {\r\n try {\r\n const token = await apims.post('/VerifySession')\r\n let data = token && token.data && token.data.user && token.data.user.language ? { locale: token.data.user.language } : { all: true }\r\n if (window.location.hash === \"#tab/languages\")\r\n data = { all: true }\r\n const loadLanguages = await apims.post('/M_Languages_V3', data)\r\n\r\n if (loadLanguages) {\r\n let languages = await new Promise((resolve, reject) => {\r\n let result = {}\r\n loadLanguages.data.forEach((l, li) => {\r\n result = {\r\n ...result,\r\n [l.alias.name.toLowerCase()]: {\r\n alias: l.alias.name.toLowerCase(),\r\n locales: l.locales\r\n }\r\n }\r\n if (li + 1 === loadLanguages.data.length)\r\n resolve(result)\r\n })\r\n })\r\n if (token && token.data && token.data.token) {\r\n localStorage.setItem('TOKEN', token.data.token)\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...token.data.user,\r\n ...token?.data?.user?.GlobalData?.custom ? {\r\n custom: {\r\n ...session.custom,\r\n ...JSON.parse(token?.data?.user?.GlobalData?.custom),\r\n custom: token?.data?.user?.GlobalData?.custom,\r\n ...whiteLabel,\r\n }\r\n } : {\r\n\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n users: {\r\n ...token.data.users ? token.data.users : {}\r\n }\r\n })\r\n if (languages && token) {\r\n props.reduxFunction(\"ASYNC\", \"SET_LANGUAGE\", {\r\n ...languages\r\n })\r\n if (!auth || (\r\n auth\r\n && JSON.stringify(auth) !== JSON.stringify(token.data.user)\r\n )) {\r\n if (JSON.stringify(auth) !== JSON.stringify(token.data.user))\r\n setAuth({\r\n ...token.data.user,\r\n })\r\n }\r\n if (!(\"Notification\" in window)) {\r\n console.log('Esse browser não suporta notificações desktop')\r\n } else {\r\n if (Notification.permission !== 'denied') {\r\n await Notification.requestPermission()\r\n }\r\n }\r\n\r\n if (window.location.pathname === '/' || routes.filter(prop => prop.auth && prop.path === window.location.pathname).length === 0)\r\n history.push('/d#tab/resume')\r\n initSocket()\r\n loadData()\r\n return true\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_LANGUAGE\", {\r\n ...languages\r\n })\r\n setAuth(false)\r\n }\r\n } else {\r\n props.reduxFunction(\"ASYNC\", \"SET_LANGUAGE\", {\r\n ...languages\r\n })\r\n if (loading) setLoading(false)\r\n }\r\n }\r\n } catch (err) {\r\n console.log(err)\r\n if (n === 5) {\r\n setOfflineDetected(true)\r\n if (auth) setAuth(false)\r\n if (loading) setLoading(false)\r\n setTimeout(() => {\r\n window.open(\"/login\", \"_self\")\r\n }, 60000)\r\n } else {\r\n verifySession(onlyToken, n + 1)\r\n }\r\n }\r\n } else {\r\n try {\r\n const token = await apims.post('/VerifySession', { ignoreUsers: true })\r\n\r\n let actualTokenUser = reduxStore.getState().session\r\n if (token && token.data && token.data.token) {\r\n localStorage.setItem('TOKEN', token.data.token)\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...token.data.user,\r\n ...token?.data?.user?.GlobalData?.custom ? {\r\n custom: {\r\n ...session.custom,\r\n ...JSON.parse(token?.data?.user?.GlobalData?.custom),\r\n custom: token?.data?.user?.GlobalData?.custom,\r\n ...whiteLabel,\r\n }\r\n } : {\r\n\r\n }\r\n })\r\n const { socket } = reduxStore.getState().functions\r\n\r\n socket.emit(\"socketStatus\", {\r\n socketStatus: \"online\"\r\n })\r\n if (token.data && actualTokenUser && actualTokenUser._id && token.data.user && actualTokenUser._id !== token.data.user._id) {\r\n window.location.reload()\r\n return\r\n }\r\n } else {\r\n localStorage.setItem('TOKEN', null)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_SESSION\")\r\n if (window.location.pathname !== '/login') {\r\n setTimeout(() => {\r\n window.open(\"/login\", \"_self\")\r\n }, 300)\r\n }\r\n }\r\n } catch (err) {\r\n if (n > 5) {\r\n localStorage.setItem('TOKEN', null)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_SESSION\")\r\n if (window.location.pathname !== '/login') {\r\n setTimeout(() => {\r\n window.open(\"/login\", \"_self\")\r\n }, 300)\r\n }\r\n } else {\r\n setTimeout(() => {\r\n verifySession(onlyToken, n + 1)\r\n }, 3000)\r\n }\r\n }\r\n }\r\n } else {\r\n console.log(\"OFFLINE\")\r\n }\r\n }\r\n\r\n const loadData = async () => {\r\n loadUsersV2(props, null, false)\r\n try {\r\n let reqTagsA = await apims.get(`/Tags_List`)\r\n if (reqTagsA && reqTagsA.data) {\r\n reqTagsA.data.forEach(x => {\r\n x._count = parseInt(x._count)\r\n x._countOthers = parseInt(x._countOthers)\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n tag: reqTagsA.data ? reqTagsA.data : []\r\n })\r\n }\r\n } catch (e) {\r\n console.group('Layout-ReqTags::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n }\r\n\r\n\r\n //USERGROUPS\r\n try {\r\n let reqGroups = await apims.get(`/M_User_Group_List`)\r\n if (reqGroups && reqGroups.data) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n userGroup: reqGroups.data ? reqGroups.data : []\r\n })\r\n }\r\n } catch (e) {\r\n console.group('Layout-ReqGrpups::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n }\r\n }\r\n\r\n\r\n const initCompleted = async () => {\r\n // await loadCardsV2(props, { cardLoad: 'chat' })\r\n await loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Layouts/Index/loadData()-Users\"\r\n },\r\n {\r\n ids: [reduxStore.getState().session._id],\r\n db: \"users\",\r\n type: \"comment\",\r\n ini: true,\r\n limit: 1\r\n }\r\n )\r\n }\r\n const pageDataRequest = async (h, r = false) => {\r\n if (auth && window.location.pathname !== '/' && window.location.pathname !== '/login' && props && props.reduxFunction) {\r\n if (pageLoads && pageLoads.current && !pageLoads.current.initialLoader) {\r\n pageLoads.current = {\r\n initialLoader: true\r\n }\r\n let reqForms = await apims.post('/Forms_List')\r\n if (reqForms && reqForms.data && reqForms.data.length > 0) {\r\n let forms = {\r\n\r\n }\r\n reqForms.data.filter(f => f.data._id).forEach(f => {\r\n forms = {\r\n ...forms,\r\n [f.data._id]: {\r\n ...f.data\r\n }\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_FORMS\", {\r\n ...forms\r\n })\r\n }\r\n\r\n await loadCardsV2(props, {\r\n cardLoad: 'notifications',\r\n })\r\n\r\n await loadCardsV2(props, {\r\n cardLoad: 'myDay',\r\n })\r\n\r\n await loadCardsV2(props, {\r\n cardLoad: 'favorites',\r\n })\r\n\r\n await loadCardsV2({ ...props }, {\r\n cardLoad: 'plans'\r\n })\r\n await loadCardsV2({ ...props }, {\r\n cardLoad: 'chat',\r\n ignoreLoader: true\r\n })\r\n await loadCardsV2({ ...props }, {\r\n cardLoad: 'steps',\r\n // ignoreLoader: true\r\n })\r\n await loadCardsV2({ ...props }, {\r\n cardLoad: 'approval',\r\n ignoreLoader: true\r\n })\r\n await loadCardsV2(props, {\r\n cardLoad: 'links',\r\n limit: 9,\r\n skip: 0\r\n })\r\n await loadCardsV2(props, {\r\n cardLoad: 'insights',\r\n limit: 9,\r\n skip: 0\r\n })\r\n }\r\n const request = await pageLoadCards(props)\r\n if (request) {\r\n setLoading(false)\r\n return true\r\n }\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n const initSocket = async () => {\r\n let newSocket = await socketIOClient(API_WS, {\r\n transports: ['websocket', 'polling'],\r\n // query: { token: localStorage.getItem('TOKEN') },\r\n auth: { token: localStorage.getItem('TOKEN') },\r\n })\r\n if (newSocket) {\r\n socketFunctions(newSocket)\r\n props.reduxFunction(\"ASYNC\", \"SET_FUNCTIONS\", {\r\n socket: newSocket\r\n })\r\n\r\n }\r\n return true\r\n }\r\n\r\n const authCallBack = async (d) => {\r\n if (d.fn === 'login') {\r\n localStorage.setItem('TOKEN', d.token)\r\n setTimeout(() => {\r\n window.open(\"/d#tab/resume\", \"_self\")\r\n }, 1000)\r\n } else if (d.fn === 'alert') {\r\n appAlert({\r\n ...d\r\n })\r\n }\r\n }\r\n const getAuthRoutes = routes => {\r\n return routes\r\n .map((prop, key) => {\r\n if (prop.views)\r\n return getAuthRoutes(prop.views)\r\n\r\n let CompRender\r\n CompRender = prop.component\r\n if (!prop.auth && CompRender) {\r\n return (\r\n <Route\r\n\r\n path={prop.path}\r\n component={() => <CompRender callback={(d) => { authCallBack(d) }} />}\r\n key={key}\r\n />\r\n )\r\n }\r\n return null\r\n })\r\n }\r\n\r\n\r\n const getRoutes = (routes) => {\r\n const session = auth\r\n return routes\r\n .filter(prop => {\r\n if (prop.auth && (\r\n !prop.AppAccess\r\n || (\r\n prop\r\n && prop.AppAccess\r\n && session\r\n && session._access\r\n )\r\n )\r\n ) {\r\n let access = !prop.access && !prop.AppAccess ? true : false\r\n\r\n if (prop.access) {\r\n prop.access.forEach(x => {\r\n if (session && session[x])\r\n access = true\r\n })\r\n }\r\n if (prop.AppAccess) {\r\n prop.AppAccess.forEach(x => {\r\n if (session && session._access && session._access[x])\r\n access = true\r\n })\r\n }\r\n if (access)\r\n return true\r\n }\r\n return false\r\n })\r\n .map((prop, key) => {\r\n let CompRender\r\n CompRender = prop.component\r\n return (\r\n prop.views && prop.views.length > 0 && getRoutes(prop.views),\r\n <Route\r\n path={prop.path}\r\n component={() => <div\r\n style={{\r\n ...(expanded && (props.search || prop.subMenu)) ? { position: \"absolute\", left: 48, top: 0, right: 0, bottom: 0, overflow: \"auto\" } : {}\r\n }}>\r\n <ErrorBoundary\r\n info={{\r\n path: \"layouts/index\",\r\n component: \"Sidebar\",\r\n }}\r\n >\r\n <Hidden xsDown>\r\n {expanded &&\r\n <Sidebar\r\n routes={routes}\r\n // blockedMenuItems={[\"StrategyAndPlans\", \"library\"]}\r\n // handleDrawerToggle={handleDrawerToggle}\r\n menuExpand={() => { setExpanded(prev => !prev) }}\r\n subMenu={(props.search || prop.subMenu) ? true : false}\r\n setSubMenuExpanded={(a) => { setSubMenuExpanded(a) }}\r\n subMenuExpanded={(props.search || prop.subMenu) && subMenuExpanded ? true : false}\r\n {...rest}\r\n />\r\n }\r\n </Hidden>\r\n </ErrorBoundary>\r\n <CompRender />\r\n\r\n </div>}\r\n key={key}\r\n expanded={(props.search || prop.subMenu) && expanded ? true : false}\r\n subMenu={(props.search || prop.subMenu) && expanded && subMenuExpanded ? true : false}\r\n />\r\n )\r\n })\r\n }\r\n\r\n /**LOAD DATA */\r\n\r\n const logout = async (sk) => {\r\n localStorage.setItem('TOKEN', null)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_SESSION\")\r\n setTimeout(() => {\r\n window.open(\"/login\", \"_self\")\r\n }, 300)\r\n }\r\n\r\n // const appRoutes = getRoutes(routes)\r\n\r\n const socketFunctions = (socket) => {\r\n //VERSION\r\n socket.on('global', data => {\r\n if (data.fn === 'version') {\r\n appAlert({\r\n message: translate(`$__appNewVersionAvaiable`, 1),\r\n hideiconvariant: true,\r\n variant: 'info',\r\n persist: true,\r\n horizontal: 'right',\r\n confirm: () => {\r\n window.location.reload()\r\n },\r\n // cancelHide: true\r\n })\r\n }\r\n if (data.fn === 'logout') {\r\n logout()\r\n }\r\n if (data.fn === 'reload') {\r\n window.location.reload()\r\n }\r\n })\r\n\r\n //MATRIX\r\n socket.on('SWOT.UPD', data => {\r\n dbUpdateCardSWOT({\r\n ...props,\r\n store: reduxStore.getState(),\r\n _sessionId: session._id,\r\n }, data)\r\n })\r\n\r\n //CARDS\r\n socket.on('copy.LOAD', data => {\r\n // console.log(\"copy.LOAD\", data)\r\n //childrens\r\n loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'childrens', idRel: data._id })\r\n })\r\n socket.on('card.ADD', data => {\r\n if (data._id)\r\n loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'card', idRel: data._id })\r\n })\r\n\r\n\r\n socket.on('card.UPD', data => {\r\n // console.log('card.UPD::627', data)\r\n dbUpdateCard(props, data)\r\n })\r\n\r\n socket.on('card.MYDAY', data => {\r\n myDayUpd(props, data)\r\n })\r\n\r\n socket.on('card.TIMER', data => {\r\n console.log(data)\r\n if (data && data.type && data.type === \"stop\") {\r\n console.log('card.TIMER', data)\r\n dbUpdateCardTimer(props, data)\r\n }\r\n })\r\n\r\n\r\n socket.on('card.UPDATE', data => {\r\n // console.log('card.UPDATE::632', data)\r\n dbUpdateCard_V2(props, data)\r\n })\r\n\r\n\r\n socket.on('card.ACCESS_UPD', async data => {\r\n cardAccessUpdate(props, data)\r\n })\r\n\r\n socket.on('card.ACCESS_DELETE', data => {\r\n cardAccessDelete(props, data)\r\n })\r\n\r\n socket.on('card.ACCESS_REMOVE', data => {\r\n cardAccessRemove(props, data)\r\n })\r\n\r\n socket.on('card.REORDER', data => {\r\n // console.log('card.REORDER::646', data)\r\n reorderCard(props, data)\r\n })\r\n socket.on('card.DELETE', data => {\r\n // console.log('card.DELETE::650', data)\r\n deleteCard(props, data, true)\r\n })\r\n socket.on('card.unlinkChildrens', data => {\r\n // console.log('card.unlinkChildrens::654', data)\r\n socketUnLinkChildrens(props, data)\r\n })\r\n\r\n socket.on('kanban.REORDER', data => {\r\n // console.log(data)\r\n kanbanReorder(props, data)\r\n })\r\n\r\n socket.on('unlinkChildrens', data => {\r\n socketUnLinkChildrens(props, data)\r\n })\r\n\r\n socket.on('card.changeParentId', (data) => {\r\n let loads = reduxStore.getState().sessionLoads.cards.load\r\n let reqMd5 = MD5(`${JSON.stringify({\r\n idRel: data.planId,\r\n cardLoad: 'plan',\r\n })}`).toString()\r\n\r\n loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'plan', idRel: data.planId, force: true })\r\n if\r\n (\r\n Object.keys(loads).length > 0 && !loads[reqMd5]\r\n ) {\r\n loadCardsV2({ ...props, ignoreLoader: true }, { cardLoad: 'plan', idRel: data.planId, force: true })\r\n } else {\r\n }\r\n changeParentId(props, data)\r\n })\r\n\r\n //GENERIC ACTIONS BY NODE\r\n socket.on('node.UPDATE', data => {\r\n // console.log('node.UPDATE::684', data)\r\n nodeUpdate(props, data)\r\n })\r\n\r\n\r\n //COLUMNS\r\n socket.on(`column.UPD`, data => {\r\n // console.log('node.UPD::690', data)\r\n updateColumnCards(props, data)\r\n })\r\n socket.on(`column.DELETE`, data => {\r\n // console.log('column.DELETE::694', data)\r\n deleteColumn(props, data)\r\n })\r\n socket.on(`column.REORDER`, data => {\r\n // console.log('column.REORDER::698', data)\r\n reorderColumns(props, data)\r\n })\r\n socket.on(`column.CARDS`, data => {\r\n // console.log('column.CARDS::702', data)\r\n columnCards(props, data)\r\n })\r\n\r\n\r\n\r\n //USERS\r\n socket.on(`user.UPD`, data => {\r\n dbUpdateUser(props, data)\r\n })\r\n\r\n socket.on('user.CONNECT', data => {\r\n props.reduxFunction(\"ASYNC\", \"SET_USERS_STATUS\", {\r\n users: {\r\n ...reduxStore.getState().usersStatus.users,\r\n [data.user]: {\r\n ...data,\r\n status: data.status,\r\n updatedAt: data.updatedAt,\r\n }\r\n },\r\n })\r\n })\r\n socket.on('user.DISCONNECT', data => {\r\n props.reduxFunction(\"ASYNC\", \"SET_USERS_STATUS\", {\r\n users: {\r\n ...reduxStore.getState().usersStatus.users,\r\n [data.user]: null\r\n },\r\n })\r\n })\r\n socket.on('users.STATUS', data => {\r\n props.reduxFunction(\"ASYNC\", \"SET_USERS_STATUS\", {\r\n ...reduxStore.getState().usersStatus,\r\n users: {\r\n ...data.users\r\n }\r\n })\r\n })\r\n\r\n socket.on(`user.ACCESS`, data => {\r\n // console.log('user.ACCESS::892', data)\r\n dbUpdateUser(props, data)\r\n })\r\n socket.on(\"userGroup.UPD\", data => {\r\n // console.log('userGroup.UPD::896', data)\r\n tagUpdate(props, data, true)\r\n })\r\n\r\n //FEEDS\r\n socket.on(`feed.ADD`, data => {\r\n // console.log('feed.ADD::902', data)\r\n dbUpdateFeed(props, data)\r\n })\r\n\r\n //LANGUAGES\r\n socket.on('language.UPD', data => {\r\n // console.log('LANGUAGE.UPD::908', data)\r\n languageUPD(props, data)\r\n })\r\n\r\n //TAGS\r\n socket.on(\"tag.UPD\", data => {\r\n // console.log('tag.UPD::914', data)\r\n tagUpdate(props, data, true)\r\n })\r\n socket.on(\"tag.DEL\", data => {\r\n // console.log('tag.DEL::918', data)\r\n localTagDelete(props, data, true)\r\n })\r\n\r\n socket.on(\"tag.UNLINK\", data => {\r\n // console.log('tag.UNLINK::923', data)\r\n localTagUnlink(props, data, true)\r\n })\r\n\r\n\r\n //LOGOUT\r\n socket.on(\"logout\", data => {\r\n // console.log('logout::930', data)\r\n if (\r\n data.user === reduxStore.getState().session._id\r\n ) {\r\n logout()\r\n }\r\n })\r\n\r\n //NOTIFICATIONS\r\n socket.on(\"notifications.ADD\", async data => {\r\n // console.log('notifications.ADD::940', data)\r\n if (reduxStore.getState().session._id === data.userId && data.notify) {\r\n props.reduxFunction(\"ASYNC\", \"SET_NOTIFICATIONS\", {\r\n ...reduxStore.getState().notifications,\r\n [data.notify._id]: data.notify,\r\n })\r\n }\r\n })\r\n\r\n\r\n //CHAT\r\n socket.on(\"chat.STATUS\", data => {\r\n\r\n // console.log('chat.STATUS::953', data)\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n users: {\r\n ...reduxStore.getState().db.users,\r\n [data.user]: {\r\n ...reduxStore.getState().db.users[data.user],\r\n chatStatus: data.status\r\n }\r\n }\r\n })\r\n })\r\n socket.on(\"chat.READED\", data => {\r\n\r\n if (reduxStore.getState().db.cards[data.id] || reduxStore.getState().db.users[data.id] || reduxStore.getState().db.users[data.readedBy]) {\r\n chatReaded(props, data)\r\n }\r\n })\r\n socket.on(\"chat.INTERACT\", data => {\r\n // console.log('chat.INTERACT', data)\r\n interact(props, data)\r\n if (reduxStore.getState().db.cards[data.id] || reduxStore.getState().db.users[data.id] || reduxStore.getState().db.users[data.readedBy]) {\r\n }\r\n })\r\n let backdropTimer = setTimeout(() => {\r\n\r\n }, 5000)\r\n socket.on(\"disconnect\", () => {\r\n connection.current = {\r\n offline: true\r\n }\r\n backdropTimer = setTimeout(() => {\r\n setBackdropEnabled(true)\r\n }, 5000)\r\n })\r\n socket.on(\"connect\", () => {\r\n setTimeout(() => {\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"logout\"\r\n },\r\n {\r\n notThis: true\r\n })\r\n }, 2000)\r\n if (connection?.current?.offline) {\r\n connection.current = {\r\n offline: false\r\n }\r\n verifyMessages()\r\n }\r\n verifySession(true)\r\n clearTimeout(backdropTimer)\r\n setBackdropEnabled(false)\r\n })\r\n }\r\n\r\n if (loading) {\r\n return (\r\n <div style={{\r\n position: 'fixed',\r\n top: '0px',\r\n bottom: '0px',\r\n left: '0px',\r\n right: '0px'\r\n }}>\r\n <LoaderPage />\r\n </div>\r\n )\r\n }\r\n\r\n if (offlineDetected && window.location.pathname !== '/offline-detect') {\r\n history.push('offline-detect')\r\n }\r\n\r\n if (!offlineDetected && (window.location.pathname === '/maintenance-mode' || window.location.pathname === '/offline-detect')) {\r\n history.push('login')\r\n }\r\n\r\n return (\r\n <div style={{\r\n position: 'fixed',\r\n top: '0px',\r\n bottom: '0px',\r\n left: auth && expanded ? `calc(161px + ${subMenuExpanded ? `275px` : `0px`})` : '0px',\r\n right: '0px',\r\n }}\r\n onContextMenu={() => {\r\n // console.log('GENERAL MENU')\r\n }}\r\n >\r\n {auth ? (\r\n <React.Fragment>\r\n <div\r\n className={classes.wrapper}\r\n\r\n >\r\n {/* <ErrorBoundary>\r\n <Hidden smUp>\r\n <MobileNav\r\n routes={routes}\r\n handleDrawerToggle={handleDrawerToggle}\r\n menuExpand={() => { setExpanded(prev => !prev) }}\r\n setSubMenuExpanded={(a) => { setSubMenuExpanded(a) }}\r\n subMenuExpanded={subMenuExpanded}\r\n expanded={expanded}\r\n {...rest}\r\n />\r\n </Hidden>\r\n </ErrorBoundary> */}\r\n <div\r\n className={mainPanelClasses}\r\n ref={mainPanel}\r\n id=\"mainPannel\"\r\n >\r\n <div className={classes.container}>\r\n <ErrorBoundary>\r\n <Switch>\r\n {getRoutes(routes)}\r\n <Redirect from=\"/\" to=\"/d#tab/resume\" />\r\n </Switch>\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <Hidden smDown>\r\n <TopHeader menuExpand={() => { setExpanded(prev => !prev) }} expanded={expanded} />\r\n </Hidden>\r\n <ErrorBoundary>\r\n <SideModule />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <LightBox />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <MiroBoard />\r\n </ErrorBoundary>\r\n\r\n {/* <Notifier /> */}\r\n\r\n\r\n <ErrorBoundary>\r\n <Chat expanded={expanded} subMenuExpanded={subMenuExpanded} />\r\n </ErrorBoundary>\r\n {/* <ErrorBoundary>\r\n <Notes />\r\n </ErrorBoundary> */}\r\n <ErrorBoundary>\r\n <CardActions />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <CardAdd />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <CopyMove />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <MoveCards />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <KanbanModal />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <PolicyAndTerms />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <LicensingAgreement />\r\n </ErrorBoundary>\r\n {/* <ErrorBoundary>\r\n <Curso2410 />\r\n </ErrorBoundary> */}\r\n <ErrorBoundary>\r\n <Tour />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <Call />\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <Backdrop open={backdropEnabled} className={classes.backdrop}\r\n style={{\r\n backdropFilter: \"blur(7px) sepia(90%)\",\r\n }}\r\n >\r\n <div style={{\r\n position: 'absolute',\r\n left: '0px',\r\n right: '0px',\r\n top: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#FFFFFF',\r\n fontSize: '33px',\r\n flexDirection: 'column'\r\n }}>\r\n <div style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}>\r\n <Icon color={'ColumnTitleColor'} size=\"77px\">cloud_off</Icon>\r\n </div>\r\n <div style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginTop: '15px'\r\n }}>\r\n {translate('$__noInternetConnection', '*')}\r\n </div>\r\n </div>\r\n </Backdrop>\r\n </ErrorBoundary>\r\n <div>\r\n </div>\r\n </React.Fragment>\r\n ) : (\r\n <div>\r\n <div className={classes.wrapper} ref={wrapper} >\r\n <AuthNavbar />\r\n <div\r\n className={classes.fullPage}\r\n style={{\r\n backgroundImage: `url(\"${whiteLabel?.loginBackground ? whiteLabel.loginBackground : customApp(\"loginBackground\")}\")`,\r\n }}\r\n >\r\n <div\r\n // className={classes.fullPage}\r\n style={\r\n {\r\n backgroundImage: \"url(\" + whiteLabel?.loginBackground ? whiteLabel.loginBackground : customApp(\"loginBackground\") + \")\",\r\n minHeight: \"100vh !important\"\r\n }\r\n }\r\n >\r\n\r\n </div>\r\n <ErrorBoundary>\r\n <Switch>\r\n {getAuthRoutes(routes)}\r\n <Redirect from=\"*\" to={offlineDetected ? '/offline-detect' : '/login'} />\r\n </Switch>\r\n </ErrorBoundary>\r\n <ErrorBoundary>\r\n <Footer white />\r\n </ErrorBoundary>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n <ErrorBoundary>\r\n <StyledContainer pauseOnFocusLoss />\r\n </ErrorBoundary>\r\n </div>\r\n )\r\n}\r\n\r\nconst StyledContainer = styled(ToastContainer)`\r\n&&&.Toastify__toast-container {\r\n min-width:407px !important;\r\n z-index:333333 !important;\r\n}\r\n.Toastify__toast {\r\n z-index::333333 !important;\r\n }\r\n.Toastify__toast-body {\r\n z-index::333333 !important;\r\n }\r\n.Toastify__progress-bar { }\r\n`;\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null,\r\n mapDispatchToProps\r\n)(SaasHome)","import React from \"react\";\r\nimport { Router, Route } from \"react-router-dom\";\r\nimport PropTypes from 'prop-types';\r\n\r\n// REDUX\r\nimport { Provider } from 'react-redux';\r\n\r\nimport Layout from \"layouts/\";\r\n\r\nimport \"assets/scss/material-dashboard-pro-react.scss?v=1.8.0\";\r\n\r\nconst Root = ({ store, history }) => (\r\n <React.StrictMode>\r\n <Provider store={store}>\r\n <Router history={history}>\r\n <Route exact patch=\"/:params\" component={Layout} />\r\n </Router>\r\n </Provider>\r\n </React.StrictMode>\r\n);\r\n\r\nRoot.propTypes = {\r\n store: PropTypes.object.isRequired\r\n};\r\n\r\nexport default Root;\r\n","import React from 'react';\r\nimport { render } from 'react-dom';\r\nimport history from 'store/history';\r\nimport store from 'store/';\r\nimport Root from './root.jsx';\r\n\r\n\r\nrequire('dotenv').config()\r\n\r\nif (window.location.hostname.indexOf('192.168') === -1\r\n && window.location.hostname.indexOf('localhost') === -1\r\n && window.location.hostname.indexOf('hom2022.machen') === -1\r\n && window.location.hostname.indexOf('homologation.machen') === -1\r\n && window.location.hostname.indexOf('a1b2c3d4.machen') === -1\r\n && window.location.hostname.indexOf('sonne.machen') === -1\r\n)\r\n console.log = () => { }\r\n\r\nrender(\r\n <Root store={store} history={history} />,\r\n document.getElementById('root'),\r\n);\r\n","import React from \"react\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon/\"\r\nimport CircularProgress from \"components/Progress/circular\"\r\nimport Tooltip from \"components/Tooltip/html\"\r\n\r\n//@MATERIAL\r\nimport IconButton from \"@material-ui/core/IconButton\"\r\nimport Button from \"@material-ui/core/Button\"\r\nimport Badge from '@material-ui/core/Badge'\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n translate\r\n} from \"functions/\"\r\n\r\nconst useStyles = makeStyles((props) => ({\r\n root: {\r\n \"& .MuiIconButton-root\": {\r\n padding: \"3px\",\r\n fontSize: \"none !important\",\r\n }\r\n },\r\n iconButtonStyleTransaparent: {\r\n padding: \"3px\",\r\n margin: 0,\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(250,250,250,0.2)\"\r\n }\r\n },\r\n iconButtonStyleWhite: {\r\n padding: \"3px !important\",\r\n margin: 0,\r\n backgroundColor: \"#FFFFFF\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(250,250,250,0.9)\"\r\n },\r\n },\r\n shadow: {\r\n boxShadow: \"0 0px 5px rgb(0 0 0 / 20%)\"\r\n },\r\n iconText: {\r\n display: \"flex\",\r\n alignItens: \"center\",\r\n },\r\n iconText_Text: {\r\n marginLeft: \"15px\"\r\n },\r\n badge: {\r\n fontSize: '11px',\r\n whiteSpace: \"nowrap\"\r\n }\r\n}))\r\n\r\nfunction CustomButtom(props, ref) {\r\n const classes = useStyles()\r\n\r\n return (\r\n <div className={classes.root} style={{ ...props.style ? props.style : {} }}>\r\n <Tooltip\r\n title={props.title ? props.title : \"INSERT_BUTTON_TITLE\"}\r\n >\r\n <div style={{ display: \"flex\", alignItems: \"center\", paddingLeft: 7, paddingRight: 7 }}>\r\n {props.text &&\r\n <Button\r\n disabled={props.load ? true : props.disabled ? true : false}\r\n onClick={props.onClick ? (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n props.onClick()\r\n } : null}\r\n {...props.shadow ? {\r\n className: `${!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent} ${classes.shadow}`,\r\n } : {\r\n className: `${!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}`,\r\n }}\r\n {...props.buttonStyle ? { style: props.buttonStyle } : {}}\r\n >\r\n <div className={classes.iconText}>\r\n {props.load ?\r\n <div>\r\n <CircularProgress size={25} style={{ margin: \"auto\", display: \"flex\" }} />\r\n <span style={{ marginLeft: \"15px\", color: \"lightgray\" }}>{props.loadText ? props.loadText : translate(\"$__saving\")}</span>\r\n </div>\r\n :\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n {props.icon ?\r\n <Badge\r\n overlap=\"rectangular\"\r\n badgeContent={props.badgeContent}\r\n classes={{ badge: classes.badge }}\r\n color=\"secondary\"\r\n >\r\n <Icon\r\n usePropagation={props.usePropagation ? true : false}\r\n size={props.size ? props.size : \"22px\"}\r\n color={props.color ? props.color : customApp(\"menu\")}\r\n icon={props.icon ? props.icon : \"help_outline\"} />\r\n </Badge>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <span style={{ ...props.textSize ? { fontSize: props.textSize } : {}, marginLeft: \"5px\", color: props.textColor ? props.textColor : props.color ? props.color : customApp(\"menu\"), whiteSpace: \"nowrap\" }}>{props.text}</span>\r\n </div>\r\n }\r\n\r\n </div>\r\n </Button>\r\n }\r\n {!props.text &&\r\n <IconButton\r\n onClick={props.onClick ? (e) => {\r\n props.onClick()\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n } : null}\r\n className={!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n <Badge\r\n badgeContent={props.badgeContent}\r\n color=\"secondary\"\r\n classes={{ badge: classes.badge }}\r\n overlap=\"rectangular\"\r\n >\r\n <Icon\r\n usePropagation={props.usePropagation ? true : false}\r\n size={props.size ? props.size : \"22px\"}\r\n color={props.color ? props.color : customApp(\"menu\")}\r\n icon={props.icon ? props.icon : \"help_outline\"} />\r\n </Badge>\r\n </IconButton>\r\n }\r\n </div>\r\n </Tooltip>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CustomButtom\r\n","const cropperStyle = () => ({\r\n root: {\r\n\r\n },\r\n viewer: {\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n display: 'flex'\r\n },\r\n image: {\r\n width: '100%',\r\n // backgroundColor: 'rgba(60,60,60)',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover'\r\n },\r\n avatarImage: {\r\n marginTop: '7px',\r\n width: '170px',\r\n height: '170px',\r\n borderRadius: '50%',\r\n boxShadow: '0px 0px 7px 7px rgba(0,0,0,0.2)'\r\n },\r\n addImage: {\r\n width: '100%',\r\n // backgroundColor: 'rgba(60,60,60,0.1)',\r\n padding: '15px',\r\n '&:hover': {\r\n // backgroundColor: 'rgba(60,60,60,0.3)',\r\n }\r\n },\r\n cropper: {\r\n overflow: 'hidden',\r\n '& .cropper-container': {\r\n width: '100% !important',\r\n overflow: 'hidden !important'\r\n }\r\n },\r\n circleCropper: {\r\n overflow: 'hidden',\r\n '& .cropper-container': {\r\n width: '100% !important',\r\n overflow: 'hidden !important'\r\n },\r\n '& .cropper-view-box': {\r\n borderRadius: '50%'\r\n }\r\n },\r\n});\r\n\r\nexport default cropperStyle;\r\n","//CORE\r\nimport React from \"react\";\r\nimport Cropper from \"react-cropper\";\r\nimport Resizer from \"react-image-file-resizer\";\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport HeaderWithIcon from \"components/Header/withIcon\";\r\nimport Icon from \"components/Icon\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\n\r\n//@MATERIAL\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport \"cropperjs/dist/cropper.css\";\r\nimport styles from \"./Cropper.css\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nconst cropper = React.createRef(null);\r\n\r\nfunction Component(props) {\r\n const [CroppedImage, SetCroppedImage] = React.useState(null)\r\n const [ImageCropDialog, SetImageCropDialog] = React.useState(false)\r\n const [ImagetoCrop, SetImagetoCrop] = React.useState(null)\r\n const [files, setFiles] = React.useState([])\r\n const fileInput = React.useRef(null)\r\n const { classes } = props\r\n\r\n React.useEffect(() => {\r\n ini()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.files, props.img])\r\n\r\n const ini = () => {\r\n let ff = files\r\n if (props.files) {\r\n Object.keys(props.files).forEach(f => {\r\n if (ff.filter(fil => fil._id === f).length === 0)\r\n ff.push(props.files[f])\r\n })\r\n setFiles(ff)\r\n }\r\n }\r\n\r\n const handleImageChange = (e) => {\r\n SetImageCropDialog(true)\r\n let reader = new FileReader();\r\n if (e.files[0] != null) {\r\n let file = e.files[0];\r\n reader.onloadend = () => {\r\n SetImagetoCrop(reader.result)\r\n SetImageCropDialog(true)\r\n };\r\n reader.readAsDataURL(file);\r\n } else {\r\n SetImageCropDialog(false)\r\n }\r\n }\r\n\r\n const _crop = async (e) => {\r\n var img = cropper.current.getCroppedCanvas().toDataURL()\r\n SetCroppedImage(img)\r\n SetImagetoCrop(null)\r\n SetImageCropDialog(false)\r\n var nameImg = fileInput.current.files[0].name;\r\n var typeImg = fileInput.current.files[0].type;\r\n var imgResult = await urltoFile(img, nameImg, typeImg);\r\n\r\n try {\r\n const imgResizer = new Promise(resolve => Resizer.imageFileResizer(\r\n imgResult, // Is the file of the image which will resized.\r\n props.maxWidthOrHeight ? props.maxWidthOrHeight : 600, //maxWidth, // Is the maxWidth of the resized new image.\r\n props.maxWidthOrHeight ? props.maxWidthOrHeight : 600, //maxHeight, // Is the maxHeight of the resized new image.\r\n imgResult.type.replace('image/', ''), // compressFormat, // Is the compressFormat of the resized new image.\r\n 50,//quality, // Is the quality of the resized new image.\r\n 0,\r\n (e) => {\r\n resolve(urltoFile(e, nameImg, typeImg))\r\n },\r\n )\r\n )\r\n let response = await imgResizer.then(a => {\r\n return a\r\n })\r\n if (response)\r\n if (props.onChange)\r\n props.onChange(img, response)\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n const urltoFile = (url, filename, mimeType) => {\r\n return fetch(url)\r\n .then(function (res) {\r\n return res.arrayBuffer();\r\n })\r\n .then(function (buf) {\r\n return new File([buf], filename, { type: mimeType });\r\n });\r\n }\r\n\r\n const openLightBox = () => {\r\n if (files && files.length > 0) {\r\n let openFile = files.filter(f => props.img && props.img.indexOf(f.file) > -1)\r\n\r\n if (openFile.length > 0)\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n open: true,\r\n files: openFile,\r\n file: openFile[0]._id\r\n })\r\n }\r\n }\r\n\r\n return (\r\n <div className={classes.root}>\r\n <div\r\n className={classes.viewer}\r\n style={{}}\r\n >\r\n {!CroppedImage && !props.img && props.avatar && props.avatarIcon &&\r\n <div style={{ width: \"100%\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", marginTop: '15px' }}>\r\n <div\r\n style={{\r\n width: \"133px\",\r\n height: \"133px\",\r\n top: \"-4px\",\r\n left: \"-13px\",\r\n borderRadius: '50%',\r\n border: `solid 2px ${customApp('color')}`,\r\n zIndex: '5 !important',\r\n background: props.transparent ? \"none\" : customApp('AvatarBackground'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}\r\n >\r\n <Icon size=\"40px\" color=\"rgba(250,250,250,0.77)\">{props.avatarIcon}</Icon>\r\n </div>\r\n </div>\r\n }\r\n {!props.avatar && (CroppedImage || props.img) ?\r\n <img alt=\"MACHEN_IMAGE\" className={props.avatar ? classes.avatarImage : classes.image} src={`${CroppedImage || props.img}`}\r\n style={{ cursor: \"pointer\" }}\r\n onError={(e) => e.target.src = CroppedImage || props.img} width=\"100%\"\r\n onClick={() => {\r\n openLightBox()\r\n }}\r\n />\r\n : props.avatar && (CroppedImage || props.img) ?\r\n <div\r\n style={{\r\n width: \"133px\",\r\n height: \"133px\",\r\n top: \"-4px\",\r\n left: \"-13px\",\r\n borderRadius: '50%',\r\n border: `solid 2px ${customApp('color')}`,\r\n zIndex: '5 !important',\r\n background: props.transparent ? \"none\" : customApp('AvatarBackground'),\r\n backgroundImage: `url(\"${CroppedImage || props.img}\")`,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center center\",\r\n backgroundSize: \"cover\",\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}\r\n >\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n {props.onChange ?\r\n <React.Fragment>\r\n <div style={{ padding: \"7px\" }} onClick={() => { fileInput.current.click(); }}>\r\n <IconButton text={translate(CroppedImage || props.img ? \"$__changeImage\" : \"$__addImage\", 1)} icon={CroppedImage || props.img ? \"image\" : \"add_a_photo\"} textColor=\"color\" iconColor=\"color\" />\r\n </div>\r\n\r\n <input\r\n type=\"file\"\r\n onChange={(e) => { handleImageChange(e.target) }}\r\n ref={fileInput}\r\n id=\"file-picker\"\r\n name=\"image\"\r\n accept={props.accept || \".jpg,.jpeg,.png,.gif\"}\r\n style={{ display: \"none\" }}\r\n />\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {\r\n props.onDelete && (CroppedImage || props.img) ?\r\n <div style={{ padding: \"7px\" }} onClick={() => { props.onDelete() }}>\r\n <IconButton text={translate(\"$__removeImage\", 1)} icon={\"hide_image\"} textColor=\"color\" iconColor=\"color\" />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n <Dialog fullWidth={true} onClose={() => SetImageCropDialog(false)} aria-labelledby=\"simple-dialog-title\" open={ImageCropDialog}>\r\n <div style={{\r\n position: 'relative',\r\n marginLeft: '10px',\r\n width: 'calc(100% - 10px)',\r\n height: '45px',\r\n display: \"flex\"\r\n }}>\r\n <HeaderWithIcon\r\n title={translate(\"$__cropImage\", 1)}\r\n icon=\"crop\"\r\n onSave={() => { _crop() }}\r\n onCancel={() => { SetImageCropDialog(false) }}\r\n actionsButtons={true}\r\n actionButtonsStyle={{ top: 0, height: 45, display: \"flex\", alignItems: \"center\" }}\r\n />\r\n </div>\r\n <Cropper\r\n className={props.avatar ? classes.circleCropper : classes.cropper}\r\n ref={cropper}\r\n src={ImagetoCrop || null}\r\n style={{ height: '50vh', width: '100%', margin: 'auto', padding: '0px' }}\r\n aspectRatio={props.ignoreAspect ? null : props.aspectRatio ? props.aspectRatio : props.avatar ? 1 : 16 / 9}\r\n guides={!props.noGuides ? true : false}\r\n viewMode={String(props.viewMode) ? props.viewMode : 2}\r\n checkOrientation={props.checkOrientation || false}\r\n />\r\n </Dialog>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = store => ({\r\n store\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Component))","import React from \"react\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nconst styles = {\r\n grid: {\r\n padding: \"0 15px\"\r\n }\r\n};\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function GridItem(props) {\r\n const classes = useStyles();\r\n const { children, className, ...rest } = props;\r\n return (\r\n <Grid item {...rest} className={classes.grid + \" \" + className}>\r\n {children}\r\n </Grid>\r\n );\r\n}\r\n\r\nGridItem.propTypes = {\r\n className: PropTypes.string,\r\n children: PropTypes.node\r\n};\r\n","import React from 'react'\r\nimport DatePicker, { registerLocale } from \"react-datepicker\"\r\nimport pt from \"date-fns/locale/pt\"// the locale you want\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//STYLES\r\nimport \"assets/css/components/react-datepicker.css\";\r\n//APIMS\r\nimport { translate, customApp } from 'functions';\r\n\r\nimport \"./index.css\";\r\n\r\n\r\nfunction DatePickerComponent(props) {\r\n registerLocale(\"pt\", pt); // register it with the name you want\r\n return (\r\n <div style={{\r\n width: '100%',\r\n ...props.horizontal ?\r\n {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }\r\n : {},\r\n ...props.style ? props.style : {},\r\n justifyContent: \"center\"\r\n }}>\r\n <div style={{\r\n ...props.horizontal ? { width: props.onClear ? \"calc(50% - 11px)\" : \"\" } : {}\r\n }}>\r\n <DatePicker\r\n locale=\"pt\"\r\n placeholderText={props.placeholder ? props.placeholder : translate(\"$__pleaseSelectStartDate\")}\r\n selected={props.startDate ? props.startDate : null}\r\n onChange={props.onChangeStartDate ? (x) => {\r\n props.onChangeStartDate(x)\r\n } : null}\r\n selectsStart\r\n startDate={props.startDate ? props.startDate : null}\r\n endDate={props.endDate ? props.endDate : null}\r\n maxDate={!props.range && props.maxDate ? props.maxDate : null}\r\n {...props.type && props.type === \"datetime\" ? {\r\n timeInputLabel: translate(\"$__time\"),\r\n dateFormat: \"dd/MM/yyyy HH:mm\",\r\n showTimeInput: true\r\n } : {\r\n dateFormat: \"dd/MM/yyyy\",\r\n }}\r\n customInput={(<CustomInput />)}\r\n showYearDropdown\r\n />\r\n </div>\r\n {props.range ?\r\n <div\r\n style={{\r\n ...props.horizontal ? { marginLeft: 7, width: props.onClear ? \"calc(50% - 18px)\" : \"calc(50% - 7px)\" } : { marginTop: 7 },\r\n }}\r\n >\r\n <DatePicker\r\n locale=\"pt\"\r\n placeholderText={translate(\"$__pleaseSelectEndDate\")}\r\n selected={props.endDate ? props.endDate : null}\r\n onChange={props.onChangeEndDate ? (x) => {\r\n props.onChangeEndDate(x)\r\n } : null}\r\n selectsEnd\r\n startDate={props.startDate ? props.startDate : null}\r\n endDate={props.endDate ? props.endDate : null}\r\n minDate={props.minDate ? props.minDate : props.range && props.startDate ? props.startDate : null}\r\n {...props.type && props.type === \"datetime\" ? {\r\n timeInputLabel: translate(\"$__time\"),\r\n dateFormat: \"dd/MM/yyyy HH:mm\",\r\n showTimeInput: true\r\n } : {\r\n dateFormat: \"dd/MM/yyyy\",\r\n }}\r\n maxDate={props.maxDate ? props.maxDate : null}\r\n customInput={(<CustomInput />)}\r\n showYearDropdown\r\n // monthsShown={2}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {props.onClear && (props.startDate || props.endDate) ?\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: props.clearButtonPosition ? props.clearButtonPosition : \"center\",\r\n ...props.horizontal ? {\r\n\r\n } : {\r\n paddingTop: 3,\r\n }\r\n }}\r\n >\r\n <CustomButton\r\n color={customApp('lightgray')}\r\n icon={'clear'}\r\n onClick={props.onClear}\r\n size={'15px'}\r\n {...props.horizontal ? {\r\n } : {\r\n\r\n title: translate(`$__clearDate`, '*'),\r\n text: translate(`$__clearDate`, '*')\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nconst CustomInput = React.forwardRef((props, ref) => {\r\n return (\r\n <div style={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n padding: \"7px 7px\",\r\n fontSize: \"12px\",\r\n fontWeight: 400,\r\n lineHeight: 1.5,\r\n color: \"#212529\",\r\n backgroundColor: \"#fff\",\r\n border: \"1px solid #ced4da\",\r\n borderRadius: 3,\r\n transition: 'border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out',\r\n appearance: 'none',\r\n justifyContent: 'space-between'\r\n }}\r\n onClick={props.onClick}\r\n >\r\n <label\r\n onClick={props.onClick}\r\n ref={ref}\r\n style={{ marginRight: 7, whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}\r\n >\r\n {props.value || props.placeholder}\r\n </label>\r\n <Icon\r\n size={\"22px\"}\r\n color={customApp('color')}\r\n icon={'today'}\r\n onClick={props.onClick}\r\n />\r\n </div>\r\n );\r\n});\r\nexport default DatePickerComponent","//REDUX\r\nimport reduxStore from \"store/\"\r\nimport MD5 from \"crypto-js/md5\"\r\n\r\n//FUNCTIONS\r\nimport api from \"api\"\r\nimport apims from \"apims\"\r\nimport { upload } from \"functions/upload.js\"\r\nimport moment from \"moment-timezone\"\r\n\r\nimport { loadCardsV2 } from \"./loadData\"\r\nimport session from \"store/db\"\r\n\r\nimport { removeSeats } from \"./index\"\r\nimport { v4 as uuid } from \"uuid\"\r\n\r\nimport { appAlert, translate } from \"./index\"\r\n\r\n\r\nconst saveCard_V2 = async () => {\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n // console.log(data)\r\n}\r\n\r\nconst saveCard = async (props, close = false, data, idRel = null) => {\r\n\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n let newData = { ...data }\r\n const oldData = newData._id ? { ...reduxStore.getState().db['cards'][newData._id] } : {}\r\n let file = null\r\n\r\n if (newData.order && String(newData.order.low))\r\n newData.order = newData.order.low\r\n\r\n if (newData.type === 'chatGroup' && newData._planId) {\r\n delete newData._planId\r\n delete newData._parent\r\n delete newData.idRel\r\n }\r\n\r\n Object.keys(newData).map(f => {\r\n if (f === 'file') {\r\n file = newData[f]\r\n delete newData.file\r\n }\r\n if ((newData[f] && newData[f].low) || (newData[f] && newData[f].low && String(newData[f].low) === '0'))\r\n newData[f] = newData[f].low\r\n return newData\r\n })\r\n\r\n if (!newData._id || (newData._id && newData._id.length !== 36)) {\r\n if (idRel) {\r\n newData.idRel = idRel\r\n newData._parent = idRel\r\n if (reduxStore.getState().db.cards[idRel]?.type) {\r\n if (reduxStore.getState().db.cards[idRel].type === \"plan\") {\r\n newData._planId = idRel\r\n }\r\n if (reduxStore.getState().db.cards[idRel].type !== \"plan\" && reduxStore.getState().db.cards[idRel]._planId) {\r\n newData._planId = reduxStore.getState().db.cards[idRel]._planId\r\n }\r\n }\r\n // console.log(newData)\r\n } else {\r\n if (window.location.pathname.indexOf('sp') > -1 && !newData._parent)\r\n newData._parent = newData._parent ? newData._parent : hashs[0] ? hashs[0] : null\r\n if (newData._parent)\r\n newData.idRel = idRel ? idRel : newData._parent\r\n if (window.location.pathname.indexOf('sp') > -1 && hashs[0] && hashs[0].length === 36)\r\n newData._planId = hashs[0]\r\n // console.log(newData)\r\n }\r\n\r\n const responseAdd = await addCard(props, {\r\n ...newData,\r\n oldData: oldData,\r\n }, file, close)\r\n return responseAdd\r\n } else {\r\n const responseUPd = await updateCard(props, {\r\n ...newData,\r\n oldData: oldData,\r\n }, file, close)\r\n\r\n //Save ASPECTS\r\n if (newData\r\n && newData.type\r\n && newData.type.indexOf('guideline') > -1\r\n && newData.type !== 'guideline'\r\n && Object.keys(reduxStore.getState().db.cards).filter(a =>\r\n (\r\n reduxStore.getState().db.cards[a]._planId === hashs[0]\r\n || reduxStore.getState().db.cards[a]._parent === hashs[0]\r\n )\r\n && reduxStore.getState().db.cards[a]._selected === true\r\n ).length > 0)\r\n await saveMATRIX(newData._id)\r\n\r\n return responseUPd\r\n }\r\n}\r\n\r\nconst kpiTimerStart = async (props, cardId) => {\r\n const response = await api.post(\"timer/start\", {\r\n idRel: cardId,\r\n startTime: String(moment().unix(\"X\")),\r\n type: \"start\"\r\n })\r\n if (response) {\r\n\r\n dbUpdateCardTimer(props, {\r\n ...response.data,\r\n })\r\n return {\r\n ...response.data,\r\n created_at: String(moment().unix(\"X\"))\r\n }\r\n }\r\n}\r\n\r\nconst kpiTimerStop = async (props, cardId) => {\r\n const response = await api.put(\"timer/stop\", {\r\n idRel: cardId,\r\n })\r\n\r\n if (response) {\r\n return response.data\r\n }\r\n}\r\nconst kpiTimerDelete = async (props, cardId, timerId) => {\r\n const response = await api.delete(`timer/run/${timerId}`, {\r\n idRel: cardId,\r\n })\r\n\r\n let kpiTimer = reduxStore.getState().db.cards[cardId]._kpiTimer\r\n if (kpiTimer[timerId])\r\n delete kpiTimer[timerId]\r\n\r\n if (response) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [cardId]: {\r\n ...reduxStore.getState().db.cards[cardId],\r\n _kpiTimer: kpiTimer\r\n }\r\n }\r\n })\r\n return true\r\n }\r\n}\r\n\r\nconst saveMATRIX = async (props) => {\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n let id = Object.keys(reduxStore.getState().db.cards).filter(a => {\r\n if (\r\n (\r\n reduxStore.getState().db.cards[a]._planId === hashs[0]\r\n || reduxStore.getState().db.cards[a]._parent === hashs[0]\r\n )\r\n && reduxStore.getState().db.cards[a]._selected === true\r\n && reduxStore.getState().db.cards[a].type\r\n && reduxStore.getState().db.cards[a].type.indexOf('guideline') > -1) {\r\n return true\r\n }\r\n return false\r\n })[0]\r\n let aspects = Object.keys(reduxStore.getState().db.cards).filter(a =>\r\n (\r\n reduxStore.getState().db.cards[a]._planId === hashs[0]\r\n || reduxStore.getState().db.cards[a]._parent === hashs[0]\r\n )\r\n && reduxStore.getState().db.cards[a]._selected === true\r\n && reduxStore.getState().db.cards[a].type\r\n && reduxStore.getState().db.cards[a].type.indexOf('guideline') === -1\r\n )\r\n api.put(\"matrix/aspects\", {\r\n _id: id,\r\n _parent: hashs[0],\r\n aspects: aspects\r\n })\r\n if (props && props.reduxFunction)\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [id]: {\r\n ...reduxStore.getState().db.cards[id],\r\n _aspects: aspects\r\n }\r\n }\r\n })\r\n return true\r\n}\r\n\r\nconst addCard = async (props, newData, file, close = false) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n const { session, db } = reduxStore.getState()\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n const response = new Promise(async (resolve, reject) => {\r\n try {\r\n let action = 'add'\r\n if (newData.type === 'myTask' || newData.type === 'chatGroup') {\r\n newData.myTask = true\r\n }\r\n if (!newData.status)\r\n newData.status = \"notStarted\"\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"post\",\r\n action\r\n }, newData, async (response) => {\r\n newData._users = {\r\n [session._id]: {\r\n name: db.users[session._id].name ? db.users[session._id].name : null,\r\n displayName: db.users[session._id].displayName ? db.users[session._id].displayName : null,\r\n image: db.users[session._id].image ? db.users[session._id].image : null,\r\n access: 5,\r\n _id: session._id\r\n }\r\n }\r\n\r\n if (newData.type && newData.type.indexOf('guideline') > -1)\r\n await saveMATRIX(response.id)\r\n\r\n if (newData.myTask)\r\n delete newData.myTask\r\n\r\n newData._loaded = true\r\n newData._loadTimeline = true\r\n if (response.id) {\r\n if (!close)\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: response.id,\r\n data: {\r\n ...reduxStore.getState().sideModule.data,\r\n ...newData,\r\n _id: response.id,\r\n }\r\n })\r\n\r\n newData._id = response.id\r\n\r\n if (parseInt(newData.order) >= 0)\r\n newData.order = { low: newData.order }\r\n\r\n newData = {\r\n ...newData,\r\n ...response.data,\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [newData._id]: {\r\n ...newData,\r\n //_loaded: true,\r\n created_at: moment().tz('America/Sao_Paulo').unix('x'),\r\n updated_at: {\r\n low: moment().tz('America/Sao_Paulo').unix('x')\r\n },\r\n },\r\n }\r\n })\r\n timelineAdd(props, newData._id, {\r\n [response.log._id]: {\r\n ...response.log,\r\n _parent: newData._id,\r\n }\r\n })\r\n if (file) {\r\n updateCard(props, {\r\n ...newData,\r\n }, file, close)\r\n } else if ((hashs[0] === 'tab' && hashs[1] === 'myDay')) {\r\n setMyDay(props, { _id: response.id, userId: session._id, option: true }, {\r\n new: true,\r\n user: session._id,\r\n cardId: newData._id,\r\n cardData: {\r\n ...newData,\r\n },\r\n })\r\n timelineAdd(props, newData._id, {\r\n [response.log._id]: {\r\n ...response.log,\r\n _parent: newData._id,\r\n }\r\n })\r\n }\r\n }\r\n resolve({\r\n ...newData,\r\n //_loaded: true,\r\n created_at: moment().tz('America/Sao_Paulo').unix('x'),\r\n updated_at: {\r\n low: moment().tz('America/Sao_Paulo').unix('x')\r\n },\r\n })\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n })\r\n\r\n const result = await response\r\n return result\r\n}\r\n\r\nconst massUpdate = async (props, data) => {\r\n if (data.ids.length > 0) {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"massUpdate\"\r\n }, data, async (response) => {\r\n let cards = reduxStore.getState().db.cards\r\n data.ids.map(async id => {\r\n cards[id] = {\r\n ...cards[id],\r\n ...data.data,\r\n }\r\n if (response.log)\r\n await timelineAdd(props, id, {\r\n [uuid()]: {\r\n ...response.log,\r\n _parent: [id],\r\n }\r\n })\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().cards,\r\n ...cards,\r\n }\r\n })\r\n })\r\n }\r\n}\r\nconst updateCard = async (props, nData, file) => {\r\n\r\n\r\n let newData = {\r\n ...nData,\r\n }\r\n let imageResult\r\n\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n\r\n if (file) {\r\n imageResult = await upload(newData._id, file)\r\n newData.image = imageResult\r\n }\r\n if (!file || (file && imageResult)) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [newData._id]: {\r\n ...reduxStore.getState().db.cards[newData._id],\r\n ...newData,\r\n _users: {\r\n ...reduxStore.getState().db.cards[newData._id]._users,\r\n }\r\n }\r\n }\r\n })\r\n\r\n Object.keys(newData).forEach(d => {\r\n if (d && d.substr(0, 1) && d.substr(0, 1) !== \"_\" && !isNaN(d.substr(0, 1))) {\r\n newData = {\r\n ...newData,\r\n [`f${d}`]: newData[d]\r\n }\r\n delete newData[d]\r\n }\r\n }\r\n )\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"update220527\"\r\n }, newData, async (response) => {\r\n\r\n if (newData.order && parseInt(newData.order) >= 0)\r\n newData.order = { low: newData.order }\r\n\r\n if (response && response.log && response.log._id)\r\n timelineAdd(props, newData._id, {\r\n [response.log._id]: {\r\n ...response.log,\r\n _parent: [newData._id],\r\n }\r\n })\r\n const { db } = reduxStore.getState()\r\n\r\n if (\r\n newData.type\r\n && newData._id\r\n && newData.type.indexOf('guideline') > -1\r\n && newData.type !== 'guideline'\r\n && Object.keys(db.cards).filter(card =>\r\n db.cards[card]._parent === newData._id\r\n && db.dataType.filter(a => a.name === db.cards[card].type && a.module === 'swot').length > 0\r\n )\r\n ) {\r\n await saveMATRIX(newData._id)\r\n }\r\n })\r\n }\r\n\r\n return true\r\n}\r\n\r\nconst updateCardv2 = async (props, nData, file) => {\r\n return new Promise((resolve, reject) => {\r\n let newCards = {}\r\n\r\n nData.forEach(async element => {\r\n let newData = {\r\n ...element,\r\n }\r\n let imageResult\r\n\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n\r\n if (file) {\r\n imageResult = await upload(newData._id, file)\r\n newData.image = imageResult\r\n }\r\n if (!file || (file && imageResult)) {\r\n\r\n newCards = {\r\n ...newCards,\r\n [newData._id]: {\r\n ...reduxStore.getState().db.cards[newData._id],\r\n ...newData,\r\n _users: {\r\n ...reduxStore.getState().db.cards[newData._id]._users,\r\n }\r\n }\r\n }\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"update220527\"\r\n }, newData, async (response) => {\r\n\r\n if (!response) {\r\n reject(new Error(`error update`));\r\n }\r\n\r\n if (newData.order && parseInt(newData.order) >= 0)\r\n newData.order = { low: newData.order }\r\n\r\n if (response && response.log && response.log._id)\r\n timelineAdd(props, newData._id, {\r\n [response.log._id]: {\r\n ...response.log,\r\n _parent: [newData._id],\r\n }\r\n })\r\n resolve(true);\r\n })\r\n\r\n }\r\n\r\n });\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...newCards\r\n }\r\n })\r\n\r\n\r\n });\r\n}\r\n\r\nconst timelineAdd = (props, nodeId, data) => {\r\n let newTimeline = reduxStore.getState().timeline[nodeId] ? reduxStore.getState().timeline[nodeId] : {}\r\n newTimeline = {\r\n ...newTimeline,\r\n ...data\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n ...reduxStore.getState().timeline,\r\n [nodeId]: newTimeline\r\n })\r\n}\r\n\r\nconst restoreCard = async (props, data) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"restore\"\r\n }, {\r\n _id: data._id,\r\n }, async (response) => {\r\n dbCardsDelete(props, {\r\n cardId: data._id,\r\n }, false)\r\n })\r\n}\r\n\r\nconst deleteCard = async (props, data, onlyRedux, childrensDelete = false) => {\r\n let { db } = reduxStore.getState()\r\n if (!onlyRedux) {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"delete\"\r\n }, {\r\n _id: data._id,\r\n deleted: true,\r\n childrensDelete,\r\n client: db.cards[data._id] && db.cards[data._id].client ? db.cards[data._id].client : db.cards[data._id] && db.cards[data._id]._planId && db.cards[db.cards[data._id]._planId] && db.cards[db.cards[data._id]._planId].client ? db.cards[db.cards[data._id]._planId].client : null\r\n }, async (response) => {\r\n dbCardsDelete(props, {\r\n cardId: data._id,\r\n childrens: childrensDelete\r\n }, true)\r\n })\r\n } else {\r\n dbCardsDelete(props, {\r\n cardId: data._id,\r\n childrens: data.childrensDelete\r\n }, true)\r\n }\r\n}\r\n\r\nconst dbCardsDelete = (props, data, deleted = false) => {\r\n let cards = { ...reduxStore.getState().db.cards }\r\n cards[data.cardId] = {\r\n ...cards[data.cardId],\r\n deleted: deleted,\r\n ...cards[data.cardId] && cards[data.cardId]._selected ? { _selected: false } : {}\r\n }\r\n if (data.childrens) {\r\n let childrens = getChildrens(data.cardId)\r\n Object.keys(childrens).forEach(c => {\r\n cards[c] = {\r\n ...cards[c],\r\n deleted: deleted,\r\n }\r\n })\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...cards\r\n }\r\n })\r\n}\r\nconst dbUpdateCardSWOT = (props, data) => {\r\n if (reduxStore.getState().db.cards[data._id] && !reduxStore.getState().db.cards[data._id]._selected && data && data._selected) {\r\n delete data._selected\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n _aspects: data.aspects,\r\n }\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"preLoader\", {\r\n ...reduxStore.getState().preLoader,\r\n autoSave: true,\r\n })\r\n}\r\nexport const dbUpdateCard = async (props, data) => {\r\n let forceUpdate = {}\r\n let card = await new Promise(async (resolve, reject) => {\r\n if (data && data.cardData && data.cardData._parent && !reduxStore.getState().db.cards[data.cardData._parent]) {\r\n const lp = await loadCardsV2(props, {\r\n idRel: data.cardData._parent,\r\n cardLoad: \"fullCatenation\",\r\n ignoreLoader: true\r\n })\r\n if (lp && lp[data.cardData._parent])\r\n forceUpdate = {\r\n _requireApproval: lp[data.cardData._parent].requireApproval ? true : null\r\n }\r\n } else if (data?.cardData?._parent && reduxStore.getState().db.cards[data.cardData._parent]) {\r\n let cardParent = reduxStore.getState().db.cards[data.cardData._parent]\r\n forceUpdate = {\r\n _requireApproval: !cardParent.requireApproval ? null : true\r\n }\r\n }\r\n if (!reduxStore.getState().db.cards[data.cardId]) {\r\n const loadNewCard = await loadCardsV2(props, {\r\n idRel: data.cardId,\r\n cardLoad: \"fullCatenation\",\r\n ignoreLoader: true\r\n })\r\n if (loadNewCard && loadNewCard.cards && loadNewCard.cards[data.cardId]) {\r\n resolve(loadNewCard.cards[data.cardId])\r\n }\r\n } else {\r\n resolve(reduxStore.getState().db.cards[data.cardId])\r\n }\r\n\r\n })\r\n if (card) {\r\n let newTags = reduxStore.getState().db.tag\r\n if (reduxStore.getState().db.cards && card) {\r\n if (data.cardData && data.cardData._tags && data.cardData._tags.length > 0) {\r\n data.cardData._tags.forEach(tag => {\r\n if (card\r\n && card._tags\r\n && card._tags.filter(fil => fil.value === tag.value).length === 0\r\n )\r\n newTags.filter(fil => fil.value === tag.value).forEach(a => {\r\n a.count = a.count + 1\r\n })\r\n })\r\n }\r\n if (card._tags) {\r\n card._tags.forEach(tag => {\r\n if (data.cardData._tags && data.cardData._tags.filter(fil => fil.value === tag.value).length === 0)\r\n newTags.filter(fil => fil.value === tag.value).forEach(a => {\r\n a.count = a.count - 1\r\n })\r\n })\r\n }\r\n }\r\n\r\n if (\r\n !data.new\r\n ||\r\n (\r\n data.new\r\n && data.user !== session._id\r\n )) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.cardId]: {\r\n ...card ? card : {},\r\n ...data.cardData,\r\n _notifications: reduxStore.getState().db.cards && card && card._notifications ? card._notifications : {\r\n comment: 0,\r\n log: 0,\r\n timer: 0,\r\n kpi: 0\r\n },\r\n createdBy: data.user ? data.user : null,\r\n ...forceUpdate,\r\n }\r\n },\r\n tag: newTags\r\n })\r\n }\r\n }\r\n}\r\n\r\nconst dbUpdateCardTimer = (props, data) => {\r\n\r\n let card = reduxStore.getState().db.cards[data.cardId] || null\r\n if (card) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.cardId]: {\r\n ...card,\r\n _kpiTimer: {\r\n ...data._kpiTimer,\r\n ...data.startTime ? { created_at: data.startTime } : {}\r\n }\r\n }\r\n },\r\n })\r\n }\r\n}\r\n\r\nconst dbUpdateCard_V2 = async (props, data) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id] ? reduxStore.getState().db.cards[data._id] : {},\r\n ...data\r\n }\r\n },\r\n })\r\n}\r\n\r\nconst selectSWOT = async (props, idCard) => {\r\n const { db } = reduxStore.getState()\r\n const { cards } = db\r\n let selectedCard = cards[idCard]\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n let activeCards = {}\r\n\r\n Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && !db.cards[a].deleted\r\n && (\r\n db.cards[a]._planId === hashs[0]\r\n || db.cards[a]._parent === hashs[0]\r\n )\r\n ).forEach(a => {\r\n activeCards = {\r\n ...activeCards,\r\n [a]: db.cards[a]\r\n }\r\n })\r\n\r\n Object.keys(activeCards).forEach(card => {\r\n if (activeCards[card]\r\n && activeCards[card].type\r\n && activeCards[card].type.indexOf('guideline') === -1\r\n && activeCards[card].type.indexOf('objective') === -1\r\n && activeCards[card].type.indexOf('goal') === -1\r\n ) {\r\n activeCards[card] = {\r\n ...activeCards[card],\r\n _selected: false\r\n }\r\n }\r\n })\r\n if (selectedCard && selectedCard._aspects && selectedCard._aspects.length > 0) {\r\n selectedCard._aspects.forEach(as => {\r\n if (activeCards[as])\r\n activeCards[as] = {\r\n ...activeCards[as],\r\n _selected: true\r\n }\r\n })\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...cards,\r\n ...activeCards\r\n }\r\n })\r\n}\r\n\r\nconst updateColumnCards = (props, data) => {\r\n if (reduxStore.getState().db.cards[data._cardColumn]) {\r\n let columnData = {\r\n ...reduxStore.getState().db.cards[data._cardColumn].boards[data._board].columns[data._columnId],\r\n ...data._columnData,\r\n }\r\n let columnOrder = [...reduxStore.getState().db.cards[data._cardColumn].boards[data._board].columnOrder]\r\n if (data._columnsOrder)\r\n columnOrder = data._columnsOrder\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._cardColumn]: {\r\n ...reduxStore.getState().db.cards[data._cardColumn],\r\n boards: {\r\n ...reduxStore.getState().db.cards[data._cardColumn].boards,\r\n [data._board]: {\r\n ...reduxStore.getState().db.cards[data._cardColumn].boards[data._board],\r\n columnOrder,\r\n columns: {\r\n ...reduxStore.getState().db.cards[data._cardColumn].boards[data._board].columns,\r\n [data._columnId]: columnData\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n selectSWOT(props)\r\n}\r\n\r\nconst deleteColumn = (props, data) => {\r\n if (reduxStore.getState().db.cards[data._parent]) {\r\n let columnOrder = [...reduxStore.getState().db.cards[data._parent].boards[data._board].columnOrder]\r\n let columns = { ...reduxStore.getState().db.cards[data._parent].boards[data._board].columns }\r\n\r\n delete columns[data._deleted]\r\n columnOrder.splice(columnOrder.indexOf(data._deleted), 1)\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._parent]: {\r\n ...reduxStore.getState().db.cards[data._parent],\r\n boards: {\r\n ...reduxStore.getState().db.cards[data._parent].boards,\r\n [data._board]: {\r\n ...reduxStore.getState().db.cards[data._parent].boards[data._board],\r\n columnOrder,\r\n columns\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst reorderCard = (props, data) => {\r\n let cards = reduxStore.getState().db.cards\r\n let cardsToReorder = data.cards\r\n if (cardsToReorder && cardsToReorder.length > 0) {\r\n cardsToReorder.forEach((a, i) => {\r\n cards = {\r\n ...cards,\r\n [a]: {\r\n ...cards[a],\r\n order: `${i + 1}`\r\n }\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...cards\r\n }\r\n })\r\n }\r\n return\r\n}\r\n\r\nconst reorderColumns = (props, data) => {\r\n if (reduxStore.getState().db.cards[data._parent]) {\r\n let columnOrder = data._order\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._parent]: {\r\n ...reduxStore.getState().db.cards[data._parent],\r\n boards: {\r\n ...reduxStore.getState().db.cards[data._parent].boards,\r\n [data._board]: {\r\n ...reduxStore.getState().db.cards[data._parent].boards[data._board],\r\n columnOrder,\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n return\r\n}\r\n\r\nconst columnCards = (props, data) => {\r\n const { db } = reduxStore.getState()\r\n const newState = {\r\n [data.cardId]: {\r\n ...db.cards[data.cardId],\r\n boards: {\r\n ...db.cards[data.cardId].boards,\r\n [data.boardId]: {\r\n ...db.cards[data.cardId].boards[data.boardId],\r\n columns: data.columns\r\n }\r\n }\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n ...newState\r\n }\r\n })\r\n return\r\n}\r\n\r\nconst localAddCard = async (props, data, newCard) => {\r\n let createDate = moment().tz('America/Sao_Paulo').unix('x')\r\n\r\n let user = {\r\n ...reduxStore.getState().db.cards[data._id] && reduxStore.getState().db.cards[data._id]._users && reduxStore.getState().db.cards[data._id]._users[data.userId] ? reduxStore.getState().db.cards[data._id]._users[data.userId] : {},\r\n ...newCard && newCard.data && newCard.data._users && newCard.data._users[data.userId] ? newCard.data._users[data.userId] : {},\r\n myDay: !data.checklist && data.option ? createDate : null\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...newCard && newCard.data ? newCard.data : {},\r\n ...reduxStore.getState().db.cards[data._id],\r\n _users: {\r\n ...reduxStore.getState().db.cards[data._id] && reduxStore.getState().db.cards[data._id]._users ? reduxStore.getState().db.cards[data._id]._users : {},\r\n ...newCard && newCard.data && newCard.data._users ? newCard.data._users : {},\r\n [data.userId]: user\r\n },\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst myDayUpd = async (props, data) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n _users: {\r\n ...reduxStore.getState().db.cards[data._id] && reduxStore.getState().db.cards[data._id]._users ? reduxStore.getState().db.cards[data._id]._users : {},\r\n [data.userId]: {\r\n ...reduxStore.getState().db.cards[data._id] && reduxStore.getState().db.cards[data._id]._users && reduxStore.getState().db.cards[data._id]._users[data.userId] ? reduxStore.getState().db.cards[data._id]._users[data.userId] : {},\r\n myDay: data.option ? data.createDate : null,\r\n }\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst setMyDay = async (props, data, newCard) => {\r\n\r\n let createDate = moment().unix('x')\r\n localAddCard(props, data, newCard)\r\n\r\n try {\r\n api.post('/cards/setMyDay', {\r\n ...data,\r\n createDate: createDate\r\n })\r\n\r\n if (reduxStore.getState().sideModule.id && reduxStore.getState().sideModule.id === data._id)\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n data: {\r\n ...reduxStore.getState().sideModule.data ? reduxStore.getState().sideModule.data : {},\r\n _users: {\r\n ...reduxStore.getState().db.cards[data._id] && reduxStore.getState().db.cards[data._id]._users ? reduxStore.getState().db.cards[data._id]._users : {},\r\n [data.userId]: {\r\n ...reduxStore.getState().db.cards[data._id] && reduxStore.getState().db.cards[data._id]._users && reduxStore.getState().db.cards[data._id]._users[data.userId] ? reduxStore.getState().db.cards[data._id]._users[data.userId] : {},\r\n myDay: data.option ? createDate : null\r\n }\r\n }\r\n }\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n}\r\n\r\nconst cardCopyTo = async (props, data) => {\r\n try {\r\n const response = await api.put('/cards/copyTo', {\r\n ...data\r\n })\r\n\r\n if (response) {\r\n changeParentId(props, data)\r\n return true\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n appAlert({\r\n message: `${translate(\"$__tryAgainOrContactSupport\", 1)}. ERROR: cMoveTo->API~887`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: \"right\",\r\n })\r\n }\r\n}\r\n\r\nconst cardMoveTo = async (props, data) => {\r\n\r\n try {\r\n const response = await api.put('/cards/moveTo', {\r\n ...data\r\n })\r\n\r\n if (response) {\r\n changeParentId(props, data)\r\n return true\r\n }\r\n } catch (e) {\r\n console.log(e)\r\n appAlert({\r\n message: `${translate(\"$__tryAgainOrContactSupport\", 1)}. ERROR: cMoveTo->API~887`,\r\n variant: 'error',\r\n persist: false,\r\n horizontal: \"right\",\r\n })\r\n }\r\n}\r\n\r\nconst changeParentId = async (props, data) => {\r\n let cards = reduxStore.getState().db.cards\r\n let changeId = await new Promise(async (resolve, reject) => {\r\n let rcc = await reqChildrenCards(data.cardId)\r\n console.log(rcc)\r\n if (data?.childrens?.length > 0) {\r\n rcc = [...rcc, ...data.childrens]\r\n }\r\n if (rcc && rcc.length > 0) {\r\n rcc.forEach((c, ci) => {\r\n if (cards[c]) {\r\n cards[c] = {\r\n ...cards[c],\r\n _parent: data.newRel,\r\n ...data.planId ? { _planId: data.planId } : {},\r\n }\r\n }\r\n if (ci + 1 === rcc.length)\r\n resolve(true)\r\n })\r\n } else {\r\n resolve(true)\r\n }\r\n\r\n })\r\n\r\n if (changeId) {\r\n if (cards[data.cardId])\r\n cards[data.cardId] = {\r\n ...cards[data.cardId],\r\n _parent: data.newRel,\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n ...cards\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst cardAccessUpdate = async (props, data) => {\r\n // ;.log(data)\r\n if (!reduxStore.getState().db.cards[data.cardId]) {\r\n const loadNewCard = await loadCardsV2(props, {\r\n idRel: data.cardId,\r\n cardLoad: \"fullCatenation\",\r\n ignoreLoader: true\r\n })\r\n if (loadNewCard) {\r\n let users = reduxStore.getState().db.cards[data.cardId] && reduxStore.getState().db.cards[data.cardId]._users ? reduxStore.getState().db.cards[data.cardId]._users : {}\r\n if (data.isResponsible)\r\n Object.keys(users).forEach(u => {\r\n if (u !== data.userId && users[u].isResponsible)\r\n delete users[u].isResponsible\r\n })\r\n\r\n let newCard = reduxStore.getState().db.cards[data.cardId] ? reduxStore.getState().db.cards[data.cardId] : {}\r\n if (loadNewCard && loadNewCard.cards && loadNewCard.cards[data.cardId])\r\n newCard = loadNewCard.cards[data.cardId]\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.cardId]: {\r\n ...newCard,\r\n _users: {\r\n ...users,\r\n [data.userId]: {\r\n ...data.userData ? data.userData : {},\r\n ...reduxStore.getState().db.users && reduxStore.getState().db.users[data.userId] ? reduxStore.getState().db.users[data.userId] : {},\r\n ...newCard && newCard._users && newCard._users[data.userId] ? newCard._users[data.userId] : {},\r\n ...data.isResponsible ? { isResponsible: true } : {},\r\n ...String(data.approvalResponsible) ? { approvalResponsible: data.approvalResponsible } : { approvalResponsible: data.approvalResponsible },\r\n ...data.access ? { access: data.access } : {},\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n } else {\r\n let users = reduxStore.getState().db.cards[data.cardId] && reduxStore.getState().db.cards[data.cardId]._users ? reduxStore.getState().db.cards[data.cardId]._users : {}\r\n if (data.isResponsible)\r\n Object.keys(users).forEach(u => {\r\n if (u !== data.userId && users[u].isResponsible)\r\n delete users[u].isResponsible\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.cardId]: {\r\n ...reduxStore.getState().db.cards[data.cardId] ? reduxStore.getState().db.cards[data.cardId] : {},\r\n _users: {\r\n ...users,\r\n [data.userId]: {\r\n ...reduxStore.getState().db.cards[data.cardId] && reduxStore.getState().db.cards[data.cardId]._users && reduxStore.getState().db.cards[data.cardId]._users[data.userId] ? reduxStore.getState().db.cards[data.cardId]._users[data.userId] : {},\r\n ...users[data.userId] ? users[data.userId] : {},\r\n ...data.userData ? data.userData : {},\r\n ...data.isResponsible ? { isResponsible: true } : {},\r\n ...String(data.approvalResponsible) ? { approvalResponsible: data.approvalResponsible } : { approvalResponsible: data.approvalResponsible },\r\n ...data.access ? { access: data.access } : {},\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst cardAccessDelete = (props, data) => {\r\n if (!reduxStore.getState().db.cards[data.cardId]) {\r\n return true\r\n } else {\r\n let newCard = { ...reduxStore.getState().db.cards[data.cardId] }\r\n if (newCard._users[data.userId])\r\n delete newCard._users[data.userId]\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.cardId]: {\r\n ...newCard,\r\n }\r\n }\r\n })\r\n }\r\n}\r\nconst cardAccessRemove = (props, data) => {\r\n if (!reduxStore.getState().db.cards[data.cardId]) {\r\n return true\r\n } else {\r\n let newCard = { ...reduxStore.getState().db.cards[data.cardId] }\r\n if (data.userIds && data.userIds.length > 0)\r\n data.userIds.forEach(userId => {\r\n if (newCard._users[userId])\r\n delete newCard._users[userId]\r\n })\r\n\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.cardId]: {\r\n ...newCard,\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst unlinkChildrens = async (props, data) => {\r\n try {\r\n api.put(\"cards/unlinkChildrens\", {\r\n cardId: data.cardId,\r\n planId: data._planId\r\n })\r\n // socketUnLinkChildrens(props, {\r\n // cardId: data.cardId,\r\n // planId: data._planId\r\n // })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n return true\r\n}\r\nconst socketUnLinkChildrens = async (props, data) => {\r\n let cards = reduxStore.getState().db.cards\r\n Object.keys(cards).filter(card =>\r\n cards[card]._parent === data.cardId\r\n && cards[card].type !== \"step\"\r\n && (\r\n !cards[card].checklist\r\n ||\r\n (\r\n cards[card].checklist\r\n && cards[card].showCard\r\n )\r\n )).forEach(card => {\r\n cards[card]._parent = data.planId\r\n }\r\n )\r\n if (data.cards && data.cards.length > 0)\r\n data.cards.forEach(cardId => {\r\n if (cards[cardId])\r\n cards[cardId] = {\r\n ...cards[cardId],\r\n _parent: data.planId\r\n }\r\n })\r\n\r\n if (cards && cards[data.cardId])\r\n cards[data.cardId] = {\r\n ...cards[data.cardId],\r\n _parent: data.planId\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: cards\r\n })\r\n}\r\n\r\nconst getCardColor = (data, children) => {\r\n let color = data && data.color ? data.color : null\r\n let parent = data.color && children ? true : false\r\n if (data._parent && reduxStore.getState().db.cards[data._parent]) {\r\n let parentColor = getCardColor(reduxStore.getState().db.cards[data._parent], true)\r\n if (parentColor.color)\r\n return parentColor\r\n }\r\n return {\r\n parent,\r\n color,\r\n parentId: data.color ? data._id : null\r\n }\r\n}\r\nconst getCardParents = (parent) => {\r\n let parents = []\r\n if (parent && reduxStore.getState().db.cards[parent]) {\r\n let req = getCardParents(parent)\r\n req.forEach(x => {\r\n if (parents.indexOf(x) === -1)\r\n parents.push(x)\r\n })\r\n if (parents.indexOf(parent) === -1)\r\n parents.push(parent)\r\n }\r\n return parents\r\n}\r\nconst connectInMount = (parentId) => {\r\n const { db, session } = reduxStore.getState()\r\n let parent = reduxStore.getState().db.cards[parentId]\r\n if (reduxStore.getState().db.cards[parentId]) {\r\n let result = {}\r\n if (\r\n !reduxStore.getState().db.cards[parentId].private\r\n ||\r\n (\r\n reduxStore.getState().db.cards[parentId].private\r\n && reduxStore.getState().db.cards[parentId]._users\r\n && reduxStore.getState().db.cards[parentId]._users[session._id]\r\n )\r\n )\r\n result = {\r\n [parentId]: {\r\n _id: parent._id,\r\n type: parent.type,\r\n name: parent.name,\r\n icon: parent.type && db && db.dataType ? db.dataType.filter(a => a.name === parent.type)[0].icon : \"topic\",\r\n },\r\n }\r\n if (parent._parent) {\r\n result = { ...connectInMount(parent._parent), ...result }\r\n }\r\n return result\r\n } else {\r\n return {}\r\n }\r\n}\r\n\r\nconst linkCard = async (props, data) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"link\"\r\n }, data, async (response) => {\r\n })\r\n}\r\n\r\nconst sortList = (a, b) => {\r\n if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'ASC') {\r\n if (removeSeats(a.name.toLowerCase().trim()) < removeSeats(b.name.toLowerCase().trim()))\r\n return -1\r\n if (removeSeats(a.name.toLowerCase().trim()) > removeSeats(b.name.toLowerCase().trim()))\r\n return 1\r\n return 0\r\n }\r\n if (reduxStore.getState().db.orderByTitle\r\n && reduxStore.getState().db.orderByTitlePosition === 'DESC') {\r\n if (removeSeats(a.name.toLowerCase().trim()) < removeSeats(b.name.toLowerCase().trim()))\r\n return 1\r\n if (removeSeats(a.name.toLowerCase().trim()) > removeSeats(b.name.toLowerCase().trim()))\r\n return -1\r\n return 0\r\n }\r\n if (reduxStore.getState().db.orderByTitle) {\r\n return 0\r\n } else if (\r\n !reduxStore.getState().db.orderByTitle\r\n && a.order\r\n && b.order\r\n && a.order.low\r\n && b.order.low\r\n && String(a.order)\r\n && String(b.order)\r\n && String(a.order.low)\r\n && String(b.order.low)\r\n && parseInt(a.order.low) < parseInt(b.order.low)\r\n ) {\r\n return -1\r\n } else if (\r\n !reduxStore.getState().db.orderByTitle\r\n && a.order\r\n && b.order\r\n && String(a.order)\r\n && String(b.order)\r\n && a.order.low\r\n && b.order.low\r\n && String(a.order.low)\r\n && String(b.order.low)\r\n && parseInt(a.order.low) > parseInt(b.order.low)\r\n ) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n}\r\n\r\nconst getUserAccess = (id) => {\r\n const { db, session } = reduxStore.getState()\r\n let data = { ...db.cards[id] }\r\n if (db.cards[id]) {\r\n let cardAccess = 0\r\n if (data\r\n && data._users\r\n && Object.keys(data._users).length > 0\r\n && data._users[Object.keys(data._users).find(a => a.indexOf(session._id) > -1)]\r\n && data._users[Object.keys(data._users).find(a => a.indexOf(session._id) > -1)].access) {\r\n cardAccess = parseInt(data._users[Object.keys(data._users).find(a => a.indexOf(session._id) > -1)].access)\r\n }\r\n\r\n if (data && data._parent\r\n && db.cards[data._parent]\r\n && db.cards[data._parent]._users\r\n && Object.keys(db.cards[data._parent]._users).length > 0\r\n && db.cards[data._parent]._users[Object.keys(db.cards[data._parent]._users).find(a => a.indexOf(session._id) > -1)]\r\n && db.cards[data._parent]._users[Object.keys(db.cards[data._parent]._users).find(a => a.indexOf(session._id) > -1)].access\r\n && parseInt(db.cards[data._parent]._users[Object.keys(db.cards[data._parent]._users).find(a => a.indexOf(session._id) > -1)].access) > parseInt(cardAccess)\r\n ) {\r\n cardAccess = parseInt(db.cards[data._parent]._users[Object.keys(db.cards[data._parent]._users).find(a => a.indexOf(session._id) > -1)].access)\r\n }\r\n\r\n if (\r\n db.cards[id]._planId\r\n && db.cards[db.cards[id]._planId]\r\n && db.cards[db.cards[id]._planId]._users\r\n && Object.keys(db.cards[db.cards[id]._planId]._users).length > 0\r\n && db.cards[db.cards[id]._planId]._users[Object.keys(db.cards[db.cards[id]._planId]._users).find(a => a.indexOf(session._id) > -1)]\r\n && parseInt(db.cards[db.cards[id]._planId]._users[Object.keys(db.cards[db.cards[id]._planId]._users).find(a => a.indexOf(session._id) > -1)].access) > parseInt(cardAccess)\r\n ) {\r\n cardAccess = parseInt(db.cards[db.cards[id]._planId]._users[Object.keys(db.cards[db.cards[id]._planId]._users).find(a => a.indexOf(session._id) > -1)].access)\r\n }\r\n return cardAccess\r\n }\r\n return 0\r\n}\r\n\r\nconst getUserList = (cardId, options = {}) => {\r\n const { db, session } = reduxStore.getState()\r\n let data = {\r\n ...cardId ? db.cards[cardId] : {}\r\n }\r\n\r\n let userList = {}\r\n\r\n if (options.allPlataform) {\r\n Object.keys(db.users).filter(u => !db.users[u].deleted && db.users[u].type === \"user\").forEach(u => {\r\n let type = \"user\"\r\n if (\r\n !db.users[u]\r\n ||\r\n (\r\n db.users[u]\r\n && db.users[u]._parent\r\n && db.users[db.users[u]._parent]\r\n && db.users[u]._parent !== session.account\r\n )\r\n ) type = \"external\"\r\n\r\n if (\r\n !db.users[u]\r\n ||\r\n (\r\n db.users[u]\r\n && db.users[u]._parent\r\n && !db.users[db.users[u]._parent]\r\n )\r\n ) type = \"consultant\"\r\n\r\n userList = {\r\n ...userList,\r\n [u]: {\r\n ...db.users[u] || {},\r\n _id: u,\r\n type: type,\r\n }\r\n }\r\n })\r\n return userList\r\n }\r\n if (!options?.noInternal)\r\n Object.keys(db.users).filter(u => db.users[u].type === \"user\" && db.users[u]._parent === session._account && !db.users[u].deleted).forEach(u => {\r\n userList = {\r\n ...userList,\r\n [u]: {\r\n ...db.users[u],\r\n _id: u,\r\n type: \"user\",\r\n }\r\n }\r\n })\r\n if (data?.client && db.users[data.client])\r\n Object.keys(db.users).filter(u =>\r\n db.users[u]._parent === data.client\r\n && !db.users[u].deleted\r\n ).forEach(u => {\r\n userList = {\r\n ...userList,\r\n [u]: {\r\n ...db.users[u],\r\n _id: u,\r\n type: \"external\",\r\n ...db.users[u]._parent ? { _parent: db.users[u]._parent } : {},\r\n }\r\n }\r\n })\r\n\r\n if (data?._planId && db.cards[data._planId]?.client && db.users[db.cards[data._planId].client])\r\n Object.keys(db.users).filter(u =>\r\n db.users[u]._parent === db.cards[data._planId]?.client\r\n && !db.users[u].deleted\r\n ).forEach(u => {\r\n userList = {\r\n ...userList,\r\n [u]: {\r\n ...db.users[u],\r\n _id: u,\r\n type: \"external\",\r\n ...db.users[u]._parent ? { _parent: db.users[u]._parent } : {},\r\n }\r\n }\r\n })\r\n if (data?._users)\r\n Object.keys(data._users).forEach(u => {\r\n if (u !== session._id) {\r\n let type = \"user\"\r\n if (\r\n !db.users[u]\r\n ||\r\n (\r\n db.users[u]\r\n && db.users[u]._parent\r\n && db.users[db.users[u]._parent]\r\n && db.users[u]._parent !== session.account\r\n )\r\n ) type = \"external\"\r\n\r\n if (\r\n !db.users[u]\r\n ||\r\n (\r\n db.users[u]\r\n && db.users[u]._parent\r\n && !db.users[db.users[u]._parent]\r\n )\r\n ) type = \"consultant\"\r\n\r\n userList = {\r\n ...userList,\r\n [u]: {\r\n ...data._users[u],\r\n _id: u,\r\n type: type,\r\n ...data._users[u]._parent ? { _parent: data._users[u]._parent } : {}\r\n }\r\n }\r\n }\r\n })\r\n\r\n if (options && !options.onlyCard) {\r\n if (\r\n !options.noPlan\r\n && data._planId\r\n && db.cards[data._planId]?._users[session._id]\r\n ) {\r\n userList = {\r\n ...userList,\r\n ...getUserList(data._planId, { noPlan: true, noInternal: true }),\r\n }\r\n }\r\n if (\r\n data._parent\r\n && db.cards[data._parent]?._users[session._id]\r\n ) {\r\n userList = {\r\n ...userList,\r\n ...getUserList(data._parent, { noPlan: true, noInternal: true }),\r\n }\r\n }\r\n }\r\n if (options?.isArray) {\r\n let result = []\r\n Object.keys(userList).forEach(a => {\r\n if (result.filter(us => us._id === a).length === 0)\r\n result.push(userList[a])\r\n })\r\n return result\r\n }\r\n return userList\r\n}\r\n\r\nconst verifyTemplate = (id, firstId = null) => {\r\n if (id === firstId)\r\n return false\r\n if (!id)\r\n return false\r\n\r\n let isTemplate = false\r\n\r\n let card = reduxStore.getState().db.cards[id] ? reduxStore.getState().db.cards[id] : null\r\n\r\n if (!card)\r\n return false\r\n if (card && card.isTemplate) {\r\n isTemplate = true\r\n } else if (card && card._planId && card._planId !== card._id && reduxStore.getState().db.cards[card._planId]) {\r\n isTemplate = verifyTemplate(card._planId, firstId ? firstId : id)\r\n } else if (card && card._parent && reduxStore.getState().db.cards[card._parent]) {\r\n isTemplate = verifyTemplate(card._parent, firstId ? firstId : id)\r\n }\r\n return isTemplate\r\n}\r\n\r\nconst copyCards = async (from, to, options = {}) => {\r\n const response = new Promise(async (resolve, reject) => {\r\n const apiConn = await api.post('/cards/copy', {\r\n from,\r\n to,\r\n options,\r\n })\r\n if (apiConn)\r\n resolve(true)\r\n })\r\n\r\n const result = await response\r\n return result\r\n}\r\n\r\nconst getChildrens = (id) => {\r\n const { cards } = reduxStore.getState().db\r\n let result = {\r\n [id]: true\r\n }\r\n Object.keys(cards).filter(c => cards[c]._parent === id).map(async (c, ci) => {\r\n let child = getChildrens(c)\r\n if (child) {\r\n result = {\r\n ...result,\r\n ...child,\r\n }\r\n }\r\n })\r\n return result\r\n}\r\n\r\nconst updateCardStatus = async (props, d) => {\r\n let data = props.data && props.data._id ? reduxStore.getState().db.cards[props.data._id] : {}\r\n\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n\r\n let dataUpdate = d\r\n let localUpdate = dataUpdate\r\n if (dataUpdate.status === \"completed\") {\r\n localUpdate = {\r\n ...localUpdate,\r\n completed_at: {\r\n low: moment().unix(\"X\")\r\n }\r\n }\r\n } else {\r\n dataUpdate = {\r\n ...localUpdate,\r\n completed_at: null\r\n }\r\n }\r\n\r\n try {\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"status\"\r\n }, {\r\n _id: data._id,\r\n ...dataUpdate\r\n }, async () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n ...localUpdate,\r\n },\r\n }\r\n })\r\n\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n}\r\n\r\n//2022Ago\r\nexport const updateCardData = async (props, d) => {\r\n let data = props.data && props.data._id ? reduxStore.getState().db.cards[props.data._id] : {}\r\n\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n\r\n let dataUpdate = d\r\n let localUpdate = dataUpdate\r\n if (dataUpdate.status === \"completed\") {\r\n localUpdate = {\r\n ...localUpdate,\r\n completed_at: {\r\n low: moment().unix(\"X\")\r\n }\r\n }\r\n } else if (dataUpdate.status) {\r\n localUpdate = {\r\n ...localUpdate,\r\n completed_at: {\r\n low: null\r\n }\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n ...localUpdate,\r\n },\r\n }\r\n })\r\n try {\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"update220527\"\r\n }, {\r\n _id: data._id,\r\n ...dataUpdate\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n}\r\n\r\n//2023Fev @@@REVIEW_CODE\r\nexport const saveCardData = async (props, d) => {\r\n let data = props.data && props.data._id ? reduxStore.getState().db.cards[props.data._id] : {}\r\n\r\n let dataUpdate = d\r\n let localUpdate = dataUpdate\r\n if (dataUpdate.status === \"completed\") {\r\n localUpdate = {\r\n ...localUpdate,\r\n completed_at: {\r\n low: moment().unix(\"X\")\r\n }\r\n }\r\n } else if (dataUpdate.status) {\r\n localUpdate = {\r\n ...localUpdate,\r\n completed_at: {\r\n low: null\r\n }\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data._id]: {\r\n ...reduxStore.getState().db.cards[data._id],\r\n ...localUpdate,\r\n },\r\n }\r\n })\r\n try {\r\n api.put(\"/cards/update\", dataUpdate)\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n}\r\n\r\nconst reqChildrenCards = async (cardId, status = null, fid) => {\r\n let cards = reduxStore.getState().db.cards\r\n let childrenCards = []\r\n let chields = Object.keys(cards)\r\n .filter(a =>\r\n cards[a]\r\n && cards[a]._parent\r\n && (\r\n cards[a]._parent === cardId\r\n ||\r\n cards[a]._parent === fid\r\n )\r\n && (\r\n !status\r\n ||\r\n (\r\n status === 'completed'\r\n && cards[a].status !== \"completed\"\r\n )\r\n ||\r\n (\r\n status !== 'completed'\r\n && cards[a]._parentCompleted\r\n && cards[a]._parentCompleted.cardId\r\n && (\r\n cards[a]._parentCompleted.cardId === cardId\r\n ||\r\n cards[a]._parentCompleted.cardId === fid\r\n )\r\n )\r\n )\r\n )\r\n if (chields.length > 0) {\r\n let load = await new Promise((resolve, reject) => {\r\n chields.forEach(async (a, ai) => {\r\n let ch = await reqChildrenCards(a, status, cardId)\r\n if (childrenCards.indexOf(a) === -1) {\r\n childrenCards.push(a)\r\n }\r\n if (ch && ch.length > 0) {\r\n ch.forEach((xx, xxi) => {\r\n if (childrenCards.indexOf(xx) === -1) {\r\n childrenCards.push(xx)\r\n }\r\n if (xxi + 1 === ch.length && ai + 1 === chields.length)\r\n resolve(true)\r\n })\r\n } else {\r\n resolve(true)\r\n }\r\n\r\n })\r\n })\r\n if (load) {\r\n return childrenCards\r\n }\r\n } else {\r\n return []\r\n }\r\n}\r\n\r\nconst cardStatus = async (props, parentId, status) => {\r\n let childrens = await reqChildrenCards(parentId, status)\r\n let cards = reduxStore.getState().db.cards\r\n if (childrens && childrens.length > 0)\r\n childrens.forEach(cc => {\r\n cards[cc] = {\r\n ...cards[cc],\r\n status: status,\r\n completed_at: status === 'completed' ? {\r\n low:\r\n moment().unix(\"X\")\r\n } : null,\r\n ...status === 'completed' ? {\r\n _parentCompleted: {\r\n cardId: parentId,\r\n completed_at: {\r\n low: moment().unix(\"X\")\r\n }\r\n }\r\n } : { _parentCompleted: null }\r\n }\r\n })\r\n\r\n cards[parentId] = {\r\n ...cards[parentId],\r\n status: status,\r\n completed_at: status === 'completed' ? {\r\n low:\r\n moment().unix(\"X\")\r\n } : null,\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: cards\r\n })\r\n\r\n}\r\n\r\nconst countNotifications = (nodeId, debug = false, my = false) => {\r\n const { session } = reduxStore.getState()\r\n let notifications = reduxStore.getState().db.cards[nodeId] && reduxStore.getState().db.cards[nodeId]._notifications ? reduxStore.getState().db.cards[nodeId]._notifications : {}\r\n\r\n Object.keys(notifications).map(t => notifications[t] = parseInt(notifications[t]))\r\n let newTotal = 0\r\n\r\n Object.keys(notifications).filter(t => t !== 'total').forEach(t => {\r\n if (\r\n reduxStore.getState().db.cards[nodeId]\r\n && reduxStore.getState().db.cards[nodeId]._users\r\n && reduxStore.getState().db.cards[nodeId]._users[session._id]\r\n && reduxStore.getState().timeline[nodeId]\r\n && parseInt(notifications[t])\r\n < Object.keys(reduxStore.getState().timeline[nodeId]).filter(m =>\r\n reduxStore.getState().timeline[nodeId][m]\r\n && !reduxStore.getState().timeline[nodeId][m].deleted\r\n && reduxStore.getState().timeline[nodeId][m].type\r\n && reduxStore.getState().timeline[nodeId][m].type === t\r\n ).length\r\n ) {\r\n notifications[t] = reduxStore.getState().timeline &&\r\n reduxStore.getState().timeline[nodeId] &&\r\n Object.keys(reduxStore.getState().timeline[nodeId]).length > 0 ?\r\n Object.keys(reduxStore.getState().timeline[nodeId]).filter(tm => {\r\n if (session &&\r\n session._id &&\r\n parseInt(reduxStore.getState().timeline[nodeId][tm].created_at) > 1650666142\r\n && !reduxStore.getState().timeline[nodeId][tm].deleted\r\n && reduxStore.getState().timeline[nodeId][tm].type === t\r\n && reduxStore.getState().timeline[nodeId][tm].user\r\n && reduxStore.getState().timeline[nodeId][tm].user._id !== session._id\r\n &&\r\n (\r\n !reduxStore.getState().timeline[nodeId][tm].readedBy\r\n ||\r\n (\r\n reduxStore.getState().timeline[nodeId][tm].readedBy &&\r\n !reduxStore.getState().timeline[nodeId][tm].readedBy[session._id]\r\n )\r\n )\r\n )\r\n return true\r\n return false\r\n }\r\n ).length : 0\r\n newTotal = newTotal + parseInt(notifications[t])\r\n } else {\r\n notifications[t] = parseInt(notifications[t])\r\n newTotal = newTotal + parseInt(notifications[t])\r\n }\r\n })\r\n\r\n return {\r\n ...notifications,\r\n total: newTotal\r\n }\r\n}\r\n\r\nconst planAccountVerify = (plan) => {\r\n const { session, db } = reduxStore.getState()\r\n if (\r\n plan\r\n && plan.length === 36\r\n && db.cards[plan]\r\n && !db.cards[plan].isTemplate\r\n && (\r\n db.cards[plan]._users\r\n && (\r\n !db.cards[plan]._users[session._id]\r\n && (\r\n db.cards[plan]._account\r\n && db.cards[plan]._account !== MD5(session.account).toString()\r\n )\r\n )\r\n )\r\n )\r\n return false\r\n return true\r\n}\r\n\r\nconst planMyAccountVerify = (plan) => {\r\n const { session, db } = reduxStore.getState()\r\n if (\r\n plan\r\n && plan.length === 36\r\n && db.cards[plan]\r\n && !db.cards[plan].isTemplate\r\n && (\r\n db.cards[plan]._account\r\n && db.cards[plan]._account !== MD5(session.account).toString()\r\n )\r\n )\r\n return false\r\n return true\r\n}\r\n\r\nconst setCompleted = async (props, data) => {\r\n const countChildrens = await apims.post(\"/Card_Count\", { id: data._id })\r\n if (countChildrens && parseInt(countChildrens.data) > 0 && data.status !== 'completed') {\r\n appAlert({\r\n message: translate('$__concludeWithChildrensNotConcludedConfirm', 1),\r\n autoClose: 50000,\r\n buttons: [\r\n {\r\n shadow: true,\r\n title: translate(\"$__concludeAll\"),\r\n text: translate(\"$__concludeAll\"),\r\n color: \"green\",\r\n icon: \"close\",\r\n size: \"25px\",\r\n onClick: () => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: data._id }\r\n }, { status: data.status === 'completed' ? 'inProgress' : 'completed' })\r\n if (countChildrens && parseInt(countChildrens.data) > 0)\r\n cardStatus(props, data._id, data.status === 'completed' ? 'inProgress' : 'completed')\r\n },\r\n style: { marginLeft: 15 }\r\n },\r\n {\r\n shadow: true,\r\n title: translate(\"$__cancel\"),\r\n text: translate(\"$__cancel\"),\r\n color: \"red\",\r\n icon: \"close\",\r\n size: \"25px\",\r\n onClick: () => {\r\n // toast.dismiss(key)\r\n },\r\n style: { marginLeft: 15 }\r\n }],\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n })\r\n } else {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: data._id }\r\n }, { status: data.status === 'completed' ? 'inProgress' : 'completed' })\r\n if (countChildrens && parseInt(countChildrens.data) > 0) {\r\n cardStatus(props, data._id, data.status === 'completed' ? 'inProgress' : 'completed')\r\n }\r\n }\r\n}\r\n\r\nexport const privateVerify = (id) => {\r\n const { session, db } = reduxStore.getState()\r\n const card = db.cards[id] || {}\r\n if (card && card.private && card._users[session._id])\r\n return true\r\n return false\r\n}\r\n\r\nexport const setCompletedStep = async (id) => {\r\n return false\r\n}\r\n\r\nexport const filterCards = (data, search) => {\r\n let filtered = Array.from(data)\r\n const { db } = reduxStore.getState()\r\n\r\n if (search) {\r\n if (search.startDate || search.endDate)\r\n filtered = filtered.filter(fil => {\r\n if (\r\n fil\r\n\r\n && (\r\n (\r\n search.startDate\r\n && fil.startDate\r\n && fil.startDate >= search.startDate\r\n )\r\n && (\r\n search.endDate\r\n && fil.endDate\r\n && fil.endDate <= search.endDate\r\n )\r\n ))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (search.text)\r\n filtered = filtered.filter(fil => {\r\n if (fil && fil.name && fil.name.toLowerCase().indexOf(search.text.toLowerCase()) > -1)\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (search.status)\r\n filtered = filtered.filter(fil => {\r\n if (!fil.status || (fil && fil.status && search.status && search.status[fil.status]))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (search.priority)\r\n filtered = filtered.filter(fil => {\r\n if ((fil && fil.priority && search.priority[fil.priority]) || (search.priority['null'] && !fil.priority))\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (search.users && search.users.length > 0)\r\n filtered = filtered.filter(fil => {\r\n if (fil && fil._users && Object.keys(fil._users).filter(uf => search.users.indexOf(uf) > -1).length > 0)\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (search.responsible && search.responsible.length > 0)\r\n filtered = filtered.filter(fil => {\r\n if (fil && fil._users && Object.keys(fil._users).filter(uf => {\r\n if (\r\n (fil._users[uf].isResponsible\r\n && search.responsible.indexOf(uf) > -1\r\n )\r\n ||\r\n (\r\n search.responsible.indexOf(uf) > -1\r\n && !fil._users[uf].isResponsible\r\n && Object.keys(fil._users).length === 1\r\n )\r\n\r\n ) return true\r\n return false\r\n }).length > 0)\r\n return true\r\n return false\r\n }).map(res => res)\r\n\r\n if (search.units && search.units.length > 0) {\r\n if (search.units.indexOf(\"all\") > -1) {\r\n filtered = filtered.filter(fil => {\r\n if (!fil._planId || (\r\n fil._planId\r\n && db.cards[fil._planId]\r\n && !db.cards[fil._planId].client\r\n ))\r\n return true\r\n return false\r\n }).map(res => res)\r\n } else {\r\n filtered = filtered.filter(fil => {\r\n let result = false\r\n Object.keys(db.cards).filter(plan => {\r\n if (db.cards[plan].client && search.units.indexOf(db.cards[plan].client) > -1)\r\n return true\r\n return false\r\n }).forEach(plan => {\r\n if (fil._planId && fil._planId === db.cards[plan]._id)\r\n result = true\r\n })\r\n return result\r\n }).map(res => res)\r\n }\r\n }\r\n\r\n if (search.groups && search.groups.length > 0) {\r\n if (search.groups.indexOf(\"ALL\") > -1) {\r\n filtered = filtered.filter(fil => {\r\n if (!fil._planId || (\r\n fil._planId\r\n && db.cards[fil._planId]\r\n && !db.cards[fil._planId].client\r\n ))\r\n return true\r\n return false\r\n }).map(res => res)\r\n } else {\r\n filtered = filtered.filter(fil => {\r\n let result = false\r\n Object.keys(db.cards).filter(plan => {\r\n if (db.cards[plan].client && search.groups.indexOf(db.cards[plan].client) > -1)\r\n return true\r\n return false\r\n }).forEach(plan => {\r\n if (fil._planId && fil._planId === db.cards[plan]._id)\r\n result = true\r\n })\r\n return result\r\n }).map(res => res)\r\n }\r\n }\r\n\r\n if (search.plans && search.plans.length > 0) {\r\n filtered = filtered.filter(fil => {\r\n if (search.plans.indexOf(fil._planId) > -1) return true\r\n return false\r\n }).map(res => res)\r\n }\r\n\r\n if (search.tags && search.tags.length > 0) {\r\n filtered = filtered.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag => {\r\n let result = false\r\n search.tags.forEach(tagFilter => {\r\n if (tagFilter.value === tag.value)\r\n result = true\r\n })\r\n return result\r\n }\r\n ).length > 0\r\n ).map(res => res)\r\n }\r\n\r\n if (search && search.tagsByText) {\r\n filtered = filtered.filter(fil =>\r\n fil._tags && fil._tags.length > 0 && fil._tags.filter(tag =>\r\n tag.label\r\n && tag.label.indexOf(search.tagsByText) > -1\r\n ).length > 0\r\n ).map(res => res)\r\n }\r\n\r\n }//FILTER\r\n\r\n return filtered\r\n}\r\n\r\nexport {\r\n cardAccessDelete,\r\n cardAccessRemove,\r\n cardAccessUpdate,\r\n cardCopyTo,\r\n cardMoveTo,\r\n cardStatus,\r\n changeParentId,\r\n columnCards,\r\n connectInMount,\r\n copyCards,\r\n countNotifications,\r\n dbUpdateCardSWOT,\r\n dbUpdateCardTimer,\r\n dbUpdateCard_V2,\r\n deleteCard,\r\n deleteColumn,\r\n getCardColor,\r\n getCardParents,\r\n getChildrens,\r\n getUserAccess,\r\n getUserList,\r\n kpiTimerDelete,\r\n kpiTimerStart,\r\n kpiTimerStop,\r\n linkCard,\r\n localAddCard,\r\n massUpdate,\r\n myDayUpd,\r\n planAccountVerify,\r\n planMyAccountVerify,\r\n reorderCard,\r\n reorderColumns,\r\n restoreCard,\r\n saveCard,\r\n saveCard_V2,\r\n saveMATRIX,\r\n selectSWOT,\r\n setCompleted,\r\n setMyDay,\r\n socketUnLinkChildrens,\r\n sortList,\r\n unlinkChildrens,\r\n updateCard,\r\n updateCardv2,\r\n updateCardStatus,\r\n updateColumnCards,\r\n verifyTemplate,\r\n}","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport Chip from '@material-ui/core/Chip';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nconst CustomChip = withStyles((theme) => ({\r\n root: {\r\n border: 'none',\r\n boxShadow: '0 3px 3px 3px rgba(0,0,0,0.05)',\r\n '& .MuiIcon-root': {\r\n color: 'rgba(250,250,250,0.33)'\r\n },\r\n '& .MuiIcon-root:hover': {\r\n color: 'rgba(250,250,250,0.77)'\r\n },\r\n padding: 0\r\n }\r\n}))(Chip);\r\n\r\nexport default function Component(props) {\r\n const [over, setOver] = React.useState(false)\r\n return (\r\n <CustomChip\r\n style={{\r\n ...props.style ? props.style : {},\r\n ...!over ? {\r\n paddingLeft: 10,\r\n paddingRight: 10\r\n } : {}\r\n }}\r\n deleteIcon={props.deleteIcon ? props.deleteIcon : null}\r\n label={props.label}\r\n onMouseOver={() => { setOver(true) }}\r\n onMouseLeave={() => { setOver(false) }}\r\n onDelete={props.onDelete && over ? () => {\r\n props.onDelete()\r\n } : null}\r\n onClick={props.onClick ? (e) => {\r\n props.onDelete()\r\n } : null}\r\n />\r\n );\r\n}\r\n\r\n\r\n","//@MATERIAL \r\nimport TextField from '@material-ui/core/TextField';\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\n//STYLES\r\nimport {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\nconst Component = withStyles({\r\n root: {\r\n ...defaultFont,\r\n padding: 0,\r\n width: \"100%\",\r\n marginTop: \"7px\",\r\n marginBottom: \"7px\",\r\n '& .invalid': {\r\n borderBottom: 'solid 2px red !important',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n padding: \"11px 11px\",\r\n fontSize: \"12px\",\r\n color: '#FFFFFF',\r\n },\r\n '& label': {\r\n marginTop: \"-10px\",\r\n fontSize: \"12px\",\r\n color: customApp('color'), //customApp\r\n },\r\n '& label.MuiFormLabel-filled': {\r\n color: customApp('color'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : 0\r\n },\r\n '& label.Mui-focused': {\r\n color: customApp('color'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : 0\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: customApp('line'), //customApp\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n },\r\n '& .MuiFilledInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n '& .MuiInputLabel-outlined': {\r\n marginTop: '0px',\r\n // padding: \"15px\",\r\n '&.Mui-focused': {\r\n marginTop: '0px',\r\n },\r\n '&.MuiFormLabel-filled': {\r\n marginTop: '0px',\r\n }\r\n },\r\n '& .MuiInputBase-root': {\r\n marginTop: customApp('fieldVariant') === 'standard' ? 0 : customApp('fieldVariant') === 'filled' ? \"-15px\" : 0,\r\n borderRadius: customApp('fieldRadius'),\r\n color: '#FFFFFF',\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n },\r\n})(TextField);\r\n\r\nexport default Component","//CORE\r\nimport React from \"react\";\r\n\r\n//@MATERIAL\r\nimport Autocomplete from \".\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//COMPONENTS\r\nimport Chip from 'components/Chip';\r\nimport TextField from \"components/TextField\";\r\nimport DarkTextField from \"components/TextField/dark\";\r\nimport ColorPicker from \"components/ColorPicker\";\r\nimport Icon from \"@material-ui/core/Icon\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n textColor,\r\n translate,\r\n customApp,\r\n} from \"functions/\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/TextField\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nfunction Component(props) {\r\n const classes = useStyles();\r\n const [values, setValues] = React.useState([]);\r\n\r\n React.useEffect(() => {\r\n setValues(props.value)\r\n }, [props.value])\r\n\r\n const deleteThis = (dt) => {\r\n let newValues = Array.from(values)\r\n newValues.splice(newValues.findIndex(n => n.value === dt.value), 1)\r\n setValues(newValues)\r\n if (props.onChange)\r\n props.onChange(newValues)\r\n }\r\n\r\n return (\r\n <Autocomplete\r\n className={props.dark ? props.noLabel ? classes.noLabel : classes.labelTop : props.noLabel ? classes.noLabelLight : classes.labelTopLight}\r\n value={values}\r\n options={props.options ? props.options\r\n // .filter(val =>\r\n // props.options.filter(a => a.parent === val.value).length === 0\r\n // )\r\n .sort((a, b) => {\r\n let labelA = `${`${a.parent && props.options.filter(f => f.value === a.parent)[0]?.label.toUpperCase()} ${a?.label.toUpperCase()}` || `${a?.label.toUpperCase()}`}* ${a?.label.toUpperCase()}`\r\n let labelB = `${`${b.parent && props.options.filter(f => f.value === b.parent)[0]?.label.toUpperCase()} ${b?.label.toUpperCase()}` || `${b?.label.toUpperCase()}`}* ${b?.label.toUpperCase()}`\r\n if (labelA < labelB)\r\n return -1\r\n if (labelA > labelB)\r\n return 1\r\n return 0\r\n }) : []}\r\n getOptionLabel={(option) => {\r\n if (option && option.label) {\r\n return translate(option.label, 1)\r\n } else {\r\n return ''\r\n }\r\n }}\r\n filterSelectedOptions={props.filterSelectedOptions ? true : false}\r\n name={`autoComplete_${props.name || ``}`}\r\n style={{ width: \"100%\" }}\r\n multiple={props.multiple || false}\r\n limitTags={props.multiple ? props.limitTags ? props.limitTags : 2 : null}\r\n freeSolo={props.freeSolo || false}\r\n disableClearable={props.disableClearable || false}\r\n disabled={props.disabled}\r\n groupBy={props.groupByParent ? (option) => {\r\n return option.parent || \"noParent\"\r\n } : null}\r\n renderOption={!props.groupByParent ? (option) => {\r\n return (\r\n <div style={{\r\n zIndex: 3000,\r\n ...option.color ?\r\n {\r\n paddingLeft: 7,\r\n borderLeft: `solid 3px ${option.color}`\r\n }\r\n : {},\r\n }}>\r\n {option.label}\r\n </div>\r\n )\r\n } : null}\r\n renderGroup={(params) => {\r\n return (\r\n <li key={params.key}>\r\n {params.group && props.options.filter(a => a.value === params.group).length > 0 ? <div\r\n style={{\r\n fontSize: 10,\r\n color: customApp(\"menu\"),\r\n backgroundColor: params.color || '#b7b7b7',\r\n padding: 3\r\n }}>{props.options.filter(a => a.value === params.group)[0].label}</div> : <React.Fragment></React.Fragment>}\r\n <div\r\n style={{\r\n ...props.options.filter(a => a.value === params.group).length > 0 && props.options.filter(a => a.value === params.group)[0].color ? {\r\n borderLeft: `solid 2px ${props.options.filter(a => a.value === params.group)[0].color}`\r\n } : {}\r\n }}\r\n >{params.children}</div>\r\n </li>\r\n )\r\n }}\r\n renderInput={(params) => {\r\n return (\r\n !props.dark ?\r\n <TextField\r\n {...params}\r\n label={translate(props.placeholder || '$__values', '*')}\r\n variant={'standard'}\r\n InputProps={{\r\n ...params.InputProps,\r\n ...props.InputProps,\r\n }}\r\n />\r\n :\r\n <DarkTextField\r\n {...params}\r\n label={translate(props.placeholder || '$__values', '*')}\r\n variant={'standard'}\r\n InputProps={{\r\n ...params.InputProps,\r\n ...props.InputProps,\r\n }}\r\n />\r\n )\r\n }}\r\n\r\n renderTags={(value, getTagProps) => {\r\n return value.map((option, index) => (\r\n <div key={index}>\r\n {props.colorPicker && option && option.label ?\r\n <ColorPicker\r\n label={option && option.label ? option.label : null}\r\n color={option.color}\r\n _id={option.value}\r\n onChange={(c) => {\r\n let newTag = option\r\n newTag.color = c\r\n if (props.colorPickerCallBack)\r\n props.colorPickerCallBack(newTag)\r\n }}\r\n >\r\n <Chip\r\n label={option && option.label ? option.label : null}\r\n style={{\r\n backgroundColor: option.color || '#b7b7b7',\r\n boxShadow: '0 0 7px 3px rgba(0,0,0,0.05)',\r\n color: textColor(option.color || \"#b7b7b7\", true)\r\n }}\r\n deleteIcon={<Icon\r\n style={{\r\n color: textColor(option.color || \"#b7b7b7\", true),\r\n fontSize: \"20px\"\r\n }}\r\n >delete</Icon>}\r\n onDelete={() => { deleteThis(option) }}\r\n />\r\n </ColorPicker>\r\n : option && option.label ?\r\n <Chip\r\n label={option && option.label ? option.label : null}\r\n style={{\r\n backgroundColor: option.color || '#b7b7b7',\r\n boxShadow: '0 0 7px 3px rgba(0,0,0,0.05)',\r\n color: textColor(option.color || \"#b7b7b7\", true)\r\n }}\r\n deleteIcon={<Icon\r\n style={{\r\n color: textColor(option.color || \"#b7b7b7\", true),\r\n fontSize: \"20px\"\r\n }}\r\n >delete</Icon>}\r\n onDelete={() => { deleteThis(option) }}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n ))\r\n }\r\n }\r\n onChange={\r\n (d, v) => {\r\n if (props.onChange)\r\n props.onChange(v)\r\n let newValues = []\r\n if (props.multiple) {\r\n v.forEach(nv => {\r\n if (nv && nv.label) {\r\n newValues.push(nv)\r\n } else {\r\n newValues.push({\r\n label: nv\r\n })\r\n }\r\n })\r\n setValues(newValues)\r\n } else {\r\n setValues(v)\r\n }\r\n }\r\n }\r\n dbNode={props.dbNode ? props.dbNode : 'tag'}\r\n add={props.add && props.add === true ? true : false}\r\n inNode={props.inNode ? props.inNode : null}\r\n secondaryParent={props.secondaryParent ? props.secondaryParent : null}\r\n ws\r\n api={props.api ? props.api : null}\r\n />\r\n )\r\n}\r\n\r\nexport default Component","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = {\r\n tags: {\r\n ...defaultFont,\r\n position: 'absolute',\r\n width: '100%',\r\n right: '0px',\r\n bottom: '-6px',\r\n userSelect: \"none\",\r\n height: '6px',\r\n marginBottom: '0px',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n overflow: 'hidden',\r\n \"& .tag\": {\r\n width: '15px',\r\n marginRight: '3px',\r\n cursor: 'pointer',\r\n height: '6px',\r\n borderRadius: ' 0px 0px 3px 3px',\r\n }\r\n },\r\n\r\n tagsOver: {\r\n ...defaultFont,\r\n position: 'relative',\r\n width: '100%',\r\n userSelect: \"none\",\r\n marginTop: '5px',\r\n marginBottom: '5px',\r\n height: 'auto',\r\n overflow: 'hidden',\r\n // maxWidth: '77%',\r\n \"& .tag\": {\r\n fontSize: '12px',\r\n padding: '0 5px',\r\n margin: '3px',\r\n borderRadius: ' 5px',\r\n color: customApp('light')\r\n }\r\n }\r\n}\r\n\r\nexport default style;","import styles from \"assets/jss/material-dashboard-pro-react/components/Tags\";\r\nimport React from 'react'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\nimport ColorPicker from \"components/ColorPicker\";\r\n\r\n//@MATERIAL\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate, textColor } from \"functions/\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nfunction CardTags(props) {\r\n const classes = useStyles();\r\n const [ShowOptions, setShowTags] = React.useState(props.showOptions ? true : false)\r\n const [showHiddenButton, setshowHiddenButton] = React.useState(false)\r\n const options = reduxStore.getState().db[props.dbNode ? props.dbNode : 'tag'] || {}\r\n\r\n return (\r\n <React.Fragment>\r\n <div className={(ShowOptions || props.expanded) ? classes.tagsOver : classes.tags}\r\n onClick={\r\n (e) => {\r\n if (props.options && props.options.length > 0 && !ShowOptions) {\r\n setShowTags(true)\r\n }\r\n e.stopPropagation()\r\n }\r\n }\r\n onMouseOver={() => {\r\n setshowHiddenButton(true)\r\n }}\r\n onMouseLeave={() => {\r\n setTimeout(() => {\r\n setshowHiddenButton(false)\r\n }, 500)\r\n }}\r\n\r\n >\r\n {options && options.length > 0 && props.options &&\r\n props.options\r\n .filter(tg => tg.value)\r\n .filter((tg, i) => reduxStore.getState().db.tag.filter(a => a.value === tg.value).length > 0)\r\n .map((tg, i) => {\r\n let t = tg\r\n t = reduxStore.getState().db.tag.filter(a => a.value === tg.value)[0]\r\n let color = options.filter(a => a.value === t.value).length > 0 && options.filter(a => a.value === t.value)[0].color ? options.filter(a => a.value === t.value)[0].color : customApp('medium')\r\n return (\r\n <div\r\n key={i}\r\n className={'tag'}\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n whiteSpace: 'nowrap',\r\n backgroundColor: color,\r\n ...props.rounded ? { borderRadius: \"7px !important\" } : {}\r\n }}\r\n onClick={() => {\r\n if (!props.colorPicker && !props.showOptions)\r\n setShowTags(false)\r\n }}\r\n >\r\n {(!props.showOptions && ShowOptions && props.colorPicker) ?\r\n <ColorPicker\r\n label={t.label}\r\n color={color}\r\n _id={t.value}\r\n onChange={(c) => {\r\n let newTag = t\r\n newTag.color = c\r\n reduxStore.getState().functions.socket.emit('tag.UPD', newTag)\r\n }\r\n }\r\n />\r\n :\r\n (ShowOptions || props.expanded) &&\r\n <div\r\n className={'tag'}\r\n style={{\r\n backgroundColor: color,\r\n color: t.color ? textColor(t.color, true) : '#FFFFFF',\r\n display: \"flex\", alignItems: \"center\",\r\n ...props.rounded ? { borderRadius: \"7px !important\" } : {}\r\n }}\r\n >\r\n {t.parent && reduxStore.getState().db.tag.filter(tt => tt.value === t.parent).length > 0 ?\r\n <div\r\n style={{\r\n fontSize: 8,\r\n marginRight: 3\r\n }}\r\n >{reduxStore.getState().db.tag.filter(tt => tt.value === t.parent)[0].label} / </div>\r\n : <React.Fragment></React.Fragment>}\r\n {t.label}\r\n </div>\r\n }\r\n </div>\r\n )\r\n })}\r\n {!props.showOptions && ShowOptions && !props.expanded && showHiddenButton &&\r\n <div style={{ position: 'absolute', top: '0', right: '0' }}>\r\n <Tooltip\r\n title={translate(`$__hideTags`)}\r\n >\r\n <React.Fragment>\r\n <IconButton\r\n onClick={(e) => {\r\n if (!props.showOptions)\r\n setShowTags(false)\r\n }}\r\n >\r\n <Icon\r\n size={\"22px\"}\r\n color={customApp('medium')}\r\n icon={'visibility_off'}\r\n />\r\n </IconButton>\r\n </React.Fragment>\r\n </Tooltip>\r\n </div>\r\n }\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default CardTags","import React from \"react\";\r\nimport moment from \"moment-timezone\"\r\nimport DataPicker from \"components/DataPicker\"\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 Autocomplete from \"components/AutoComplete/multiple\"\r\nimport Checkbox from 'components/Checkbox'\r\nimport Icon from \"components/Icon\"\r\nimport SelectUsers from \"components/User/select\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField/\"\r\nimport MultInput from \"components/MultInput/input\";\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 FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport FormGroup from '@material-ui/core/FormGroup'\r\nimport InputAdornment from '@material-ui/core/InputAdornment'\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/filter.js\"\r\nimport \"assets/css/components/react-datepicker.css\"\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions/\"\r\n\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nfunction RenderOptions(props) {\r\n const f = props.field\r\n const classes = useStyles()\r\n const {\r\n db,\r\n searchs,\r\n } = reduxStore.getState();\r\n const [searchValues, setSearch] = React.useState({ ...JSON.parse(initialIndicators) })\r\n const [AccordionExpanded, SetAccordionExpanded] = React.useState(null)\r\n const indicators = JSON.parse(initialIndicators)\r\n\r\n React.useEffect(() => {\r\n if (props.onChange) {\r\n let appliedFilters = {}\r\n Object.keys(searchValues).forEach(x => {\r\n if (!indicators[x])\r\n appliedFilters = {\r\n ...appliedFilters,\r\n [x]: searchValues[x]\r\n }\r\n if (indicators[x] && JSON.stringify(initialIndicators[x]) !== JSON.stringify(searchValues[x]))\r\n appliedFilters = {\r\n ...appliedFilters,\r\n [x]: searchValues[x]\r\n }\r\n })\r\n props.onChange(appliedFilters)\r\n }\r\n if (props?.preffers?.searchButton)\r\n return\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [props.nodeId]: {\r\n ...JSON.parse(initialIndicators),\r\n ...searchValues\r\n },\r\n })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchValues])\r\n\r\n React.useEffect(() => {\r\n let newValue = {\r\n ...JSON.parse(initialIndicators),\r\n ...searchs[props.nodeId] || {},\r\n }\r\n if (JSON.stringify(newValue) !== JSON.stringify(searchValues))\r\n setSearch(newValue)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [f])\r\n\r\n React.useEffect(() => {\r\n if (\r\n props.searchs\r\n && !props.searchs[props.nodeId]\r\n ) setSearch(JSON.parse(initialIndicators))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.searchs])\r\n\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n const updateIndicators = (indicator, value) => {\r\n let indicatorValues = searchValues[indicator] || {}\r\n if (value === 'all') {\r\n Object.keys(indicatorValues).forEach(a => {\r\n indicatorValues[a] = true\r\n })\r\n } else {\r\n if (indicatorValues.all)\r\n Object.keys(indicatorValues).forEach(a => {\r\n indicatorValues[a] = false\r\n })\r\n indicatorValues.all = false\r\n }\r\n if (props?.preffers?.unique?.status)\r\n Object.keys(indicatorValues).forEach(a => {\r\n indicatorValues[a] = false\r\n })\r\n\r\n setSearch({\r\n ...searchValues,\r\n [indicator]: {\r\n ...indicatorValues,\r\n [value]: value === 'all' ? true : !indicatorValues[value],\r\n }\r\n })\r\n }\r\n\r\n const indicatorField = (ind) => {\r\n return (\r\n <Accordion style={{ width: \"100%\" }}\r\n expanded={AccordionExpanded === ind ? true : false}\r\n onChange={() => {\r\n SetAccordionExpanded(AccordionExpanded === ind ? null : ind)\r\n }}\r\n >\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\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px', justifyContent: \"space-between\", width: \"100%\", display: \"flex\" }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n }}>\r\n {translate(`$__${ind}`)}\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n }}>\r\n {Object.keys(searchValues[ind])\r\n .filter((a, i) => searchValues[ind][a] && a !== 'all')\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(db.priority.filter(fil => String(fil.value) === String(a))[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: db.priority.filter(fil => String(fil.value) === String(a))[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </AccordionSummary>\r\n <AccordionDetails\r\n style={{ minWidth: '100%' }}\r\n >\r\n <FormGroup style={{ width: \"100%\" }}>\r\n {props?.preffers?.unique[ind] ? <></> :\r\n <FormControlLabel\r\n style={{ minWidth: '100%' }}\r\n control={\r\n <Checkbox\r\n checked={searchValues[ind] && searchValues[ind].all ? true : false}\r\n onChange={() => {\r\n updateIndicators('priority', 'all')\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate('$__allPriorities')}\r\n />\r\n }\r\n {db.priority.map((pr, index) =>\r\n <React.Fragment\r\n key={index}\r\n >\r\n <FormControlLabel\r\n style={{ minWidth: '100%', borderLeft: `3px solid ${pr.color}` }}\r\n control={\r\n <Checkbox\r\n indeterminate={searchValues[ind] && searchValues[ind].all ? true : false}\r\n checked={searchValues[ind] && searchValues[ind][pr.value] ? true : false}\r\n onChange={() => {\r\n updateIndicators(ind, pr.value)\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate(pr.label)}\r\n />\r\n </React.Fragment>\r\n )}\r\n </FormGroup>\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n }\r\n\r\n if (f === \"admin\")\r\n return (\r\n <Switch\r\n checked={\r\n searchValues.admin\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n setSearch({\r\n ...searchValues,\r\n admin: !searchValues.admin\r\n })\r\n }}\r\n name=\"adminView\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n )\r\n if (f === \"text\")\r\n return (\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n <TextField\r\n className={classes.noLabelLight}\r\n label={translate('$__search', '*')}\r\n // variant={'standard'}\r\n autoFocus\r\n value={searchValues.text || \"\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearch({\r\n ...searchValues,\r\n text: e.target.value\r\n })\r\n },\r\n onKeyDown: e => {\r\n // if (String(e.which) === '27')\r\n // setviewSearch(false)\r\n }\r\n }}\r\n />\r\n </div>\r\n )\r\n if (f === \"ref1\")\r\n return (\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n <TextField\r\n className={classes.noLabelLight}\r\n label={props.customTitles?.ref1 || translate('$__ref1', '*')}\r\n autoFocus\r\n value={searchValues.text || \"\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>arrow_right</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearch({\r\n ...searchValues,\r\n ref1: e.target.value\r\n })\r\n },\r\n onKeyDown: e => {\r\n // if (String(e.which) === '27')\r\n // setviewSearch(false)\r\n }\r\n }}\r\n />\r\n </div>\r\n )\r\n if (f === \"ref2\")\r\n return (\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n <TextField\r\n className={classes.noLabelLight}\r\n label={props.customTitles?.ref2 || translate('$__ref2', '*')}\r\n autoFocus\r\n value={searchValues.text || \"\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>turned_in_not</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearch({\r\n ...searchValues,\r\n ref2: e.target.value\r\n })\r\n },\r\n onKeyDown: e => {\r\n // if (String(e.which) === '27')\r\n // setviewSearch(false)\r\n }\r\n }}\r\n />\r\n </div>\r\n )\r\n if (f === \"tagsByText\")\r\n return (\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n <TextField\r\n className={classes.noLabelLight}\r\n label={translate('$__searchTags', '*')}\r\n value={searchValues.tagsByText || \"\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearch({\r\n ...searchValues,\r\n tagsByText: e.target.value\r\n })\r\n },\r\n }}\r\n />\r\n </div>\r\n )\r\n if (f === \"date\")\r\n return (\r\n <React.Fragment>\r\n <DataPicker\r\n type=\"datetime\"\r\n onChangeStartDate={(d) => {\r\n let newData = {\r\n startDate: moment(d).unix('x')\r\n }\r\n if (!reduxStore.getState().searchs[props.nodeId]?.endDate || reduxStore.getState().searchs[props.nodeId].endDate < moment(d).unix('x')) {\r\n newData = {\r\n ...newData,\r\n endDate: moment(`${moment(d).format(\"YYYY-MM-DD\")} 23:59:59`).add(1, 'week').unix('X')\r\n }\r\n }\r\n setSearch({\r\n ...searchValues,\r\n ...newData,\r\n })\r\n }}\r\n onChangeEndDate={(d) => {\r\n setSearch({\r\n ...searchValues,\r\n endDate: moment(d).unix('x'),\r\n })\r\n\r\n }}\r\n range\r\n horizontal\r\n startDate={searchValues?.startDate ? new Date(searchValues.startDate * 1000) : null}\r\n endDate={searchValues?.endDate ? new Date(searchValues.endDate * 1000) : null}\r\n onClear={() => {\r\n setSearch({\r\n ...searchValues,\r\n startDate: null,\r\n endDate: null,\r\n })\r\n }}\r\n />\r\n </React.Fragment>\r\n )\r\n if (f === \"tags\")\r\n return (<Autocomplete\r\n dbNode={'tag'}\r\n options={reduxStore.getState().db.tag}\r\n style={{ width: '100%' }}\r\n name=\"tag\"\r\n ws\r\n multiple\r\n value={searchValues?.tags || []}\r\n placeholder={translate('$__tags')}\r\n onChange={\r\n (v) => {\r\n setSearch({\r\n ...searchValues,\r\n tags: v\r\n })\r\n }\r\n }\r\n />)\r\n if (f === \"status\")\r\n return (\r\n <Accordion\r\n style={{ width: \"100%\", padding: 0 }}\r\n expanded={AccordionExpanded === \"status\" ? true : false}\r\n onChange={() => {\r\n SetAccordionExpanded(AccordionExpanded === `status` ? null : 'status')\r\n }}\r\n >\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\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px', justifyContent: \"space-between\", width: \"100%\", display: \"flex\" }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n }}>\r\n {translate('$__status')}\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n }}>\r\n {searchValues?.status && Object.keys(searchValues.status)\r\n .filter((a, i) => ((searchValues.status[a] || searchValues.status.all) && a !== 'all'))\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(db.status.filter(fil => fil.value === a)[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: db.status.filter(fil => fil.value === a)[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </AccordionSummary>\r\n <AccordionDetails\r\n style={{ minWidth: '100%' }}\r\n >\r\n <FormGroup style={{ width: \"100%\" }}>\r\n <FormControlLabel\r\n style={{ minWidth: '100%' }}\r\n control={\r\n <Checkbox\r\n checked={searchValues.status && searchValues.status.all ? true : false}\r\n onChange={() => {\r\n updateIndicators('status', 'all')\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate('$__allStatus')}\r\n />\r\n {db.status.map((pr, index) =>\r\n <React.Fragment\r\n key={index}\r\n >\r\n <FormControlLabel\r\n style={{ minWidth: '100%' }}\r\n control={\r\n <Checkbox\r\n indeterminate={searchValues.status && searchValues.status.all ? true : false}\r\n checked={searchValues.status && searchValues.status[pr.value] ? true : false}\r\n onChange={() => {\r\n updateIndicators('status', pr.value)\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate(pr.label)}\r\n />\r\n </React.Fragment>\r\n )}\r\n </FormGroup>\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n if (f === \"priority\")\r\n return indicatorField(\"priority\")\r\n if (f === \"complexity\")\r\n return indicatorField(\"complexity\")\r\n if (f === \"risk\")\r\n return indicatorField(\"risk\")\r\n if (f === \"impact\")\r\n return indicatorField(\"impact\")\r\n if (f === \"users\")\r\n return (<div\r\n style={{ marginTop: 5 }}\r\n >\r\n <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={reduxStore.getState().db.cards[props.nodeId] || null}\r\n noLimit\r\n multiple={true}\r\n onSelect={(e) => {\r\n setSearch({\r\n ...searchValues,\r\n users: e\r\n })\r\n }}\r\n selected={searchValues?.users || []}\r\n transparent\r\n {...props?.fieldsProps?.users || {}}\r\n />\r\n </div>)\r\n if (f === \"responsible\")\r\n return (<div\r\n style={{ marginTop: 5 }}\r\n >\r\n <SelectUsers\r\n text={translate(\"$__FilterByResponsible\")}\r\n includeMe\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={reduxStore.getState().db.cards[props.nodeId] || null}\r\n noLimit\r\n multiple={false}\r\n onSelect={(e) => {\r\n setSearch({\r\n ...searchValues,\r\n responsible: e\r\n })\r\n }}\r\n selected={searchValues?.responsible || []}\r\n transparent\r\n {...props?.fieldsProps?.responsible || {}}\r\n />\r\n </div>)\r\n if (f === \"userGroups\")\r\n return (\r\n <MultInput\r\n data={{\r\n values: searchValues.userGroups || [],\r\n }}\r\n options={reduxStore.getState().db.userGroup ? reduxStore.getState().db.userGroup : []}\r\n placeholder={\"$__userGroupPlaceholder\"}\r\n dbNode={\"userGroup\"}\r\n callBack={(v) => {\r\n setSearch({\r\n ...searchValues,\r\n userGroups: v\r\n })\r\n }}\r\n colorPickerCallBack={(res) => {\r\n }}\r\n noAdd\r\n />\r\n )\r\n if (process.env.REACT_APP_PROD === \"true\")\r\n return (<></>)\r\n return (<div style={{ fontSize: 10, color: \"red\" }}>{f} NOT EXISTS</div>)\r\n\r\n\r\n}\r\n\r\nconst initialIndicators = JSON.stringify({\r\n status: {\r\n all: true,\r\n notStarted: true,\r\n awaitAction: true,\r\n paused: true,\r\n inProgress: true,\r\n completed: true,\r\n },\r\n priority: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n risk: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n complexity: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n impact: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n})\r\n\r\n// REACT\r\nconst mapStateToProps = (store) => ({\r\n searchs: store.searchs\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RenderOptions)","import React from \"react\";\r\nimport PropTypes from \"prop-types\"\r\nimport MD5 from \"crypto-js/md5\"\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 CustomButton from \"components/Buttons/custom\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport RenderOptions from \"./RenderOptions\"\r\nimport FormAnswer from \"componentsV3/Forms/AnswerForm\"\r\n\r\n//STYLES\r\nimport \"assets/css/components/react-datepicker.css\"\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions/\"\r\n\r\n\r\nfunction FilterComponent(props) {\r\n const {\r\n searchs,\r\n db\r\n } = reduxStore.getState();\r\n const [viewSearch, setviewSearch] = React.useState(false);\r\n const [form, setForm] = React.useState(null)\r\n const [searchValues, setSearch] = React.useState({ ...JSON.parse(initialIndicators) })\r\n const [searchID, setSearchId] = React.useState(props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString())\r\n\r\n const mounted = React.useRef(true)\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n React.useEffect(() => {\r\n let newValue = {\r\n ...JSON.parse(initialIndicators),\r\n ...searchs[searchID] || {},\r\n }\r\n if (JSON.stringify(newValue) !== JSON.stringify(searchValues) && mounted.current) {\r\n setSearch(newValue)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchID])\r\n\r\n\r\n React.useEffect(() => {\r\n if (props.onChange) {\r\n props.onChange({\r\n ...searchValues || {}\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchValues]);\r\n\r\n React.useEffect(() => {\r\n if (mounted.current) {\r\n setSearchId(props.nodeId ? props.nodeId : MD5(`${window.location.pathname}-${window.location.hash}`).toString())\r\n let parentForm = Object.keys(db.cards).filter(a => db.cards[a]._parent === props.nodeId && db.cards[a].form && !db.cards[a].deleted).map(a => db.cards[a])[0]\r\n if (parentForm && parentForm.form && parentForm.form !== form)\r\n setForm(parentForm.form)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.nodeId])\r\n\r\n const removeFilter = () => {\r\n let removeFilter = {\r\n ...reduxStore.getState().searchs,\r\n }\r\n\r\n if (removeFilter[searchID]) {\r\n delete removeFilter[searchID]\r\n }\r\n\r\n props.reduxFunction(\"IMMEDIATE\", \"SET_SEARCH\", removeFilter)\r\n if (mounted.current)\r\n setSearch({ ...JSON.parse(initialIndicators) })\r\n if (props.onSearch)\r\n props.onSearch()\r\n }\r\n\r\n\r\n let customTitles = {}\r\n\r\n if (\r\n props.nodeId &&\r\n db.cards &&\r\n db.cards[props.nodeId] &&\r\n db.cards[props.nodeId].type === 'plan' &&\r\n db.cards[props.nodeId].refs &&\r\n (\r\n db.cards[props.nodeId].ref1Title\r\n || db.cards[props.nodeId].ref2Title\r\n )\r\n ) {\r\n\r\n customTitles = {\r\n ...customTitles,\r\n ...db.cards[props.nodeId].ref1Title ? {\r\n ref1Title: db.cards[props.nodeId].ref1Title\r\n } : {},\r\n ...db.cards[props.nodeId].ref2Title ? {\r\n ref2Title: db.cards[props.nodeId].ref2Title\r\n } : {},\r\n }\r\n } else if (props.nodeId &&\r\n db.cards &&\r\n db.cards[props.nodeId] &&\r\n db.cards[props.nodeId]._planId &&\r\n db.cards[db.cards[props.nodeId]._planId].refs &&\r\n (\r\n db.cards[db.cards[props.nodeId]._planId].ref1Title\r\n || db.cards[db.cards[props.nodeId]._planId].ref2Title\r\n )\r\n ) {\r\n customTitles = {\r\n ...customTitles,\r\n ...db.cards[db.cards[props.nodeId]._planId].ref1Title ? {\r\n ref1Title: db.cards[db.cards[props.nodeId]._planId].ref1Title\r\n } : {},\r\n ...db.cards[db.cards[props.nodeId]._planId].ref2Title ? {\r\n ref2Title: db.cards[db.cards[props.nodeId]._planId].ref2Title\r\n } : {},\r\n }\r\n }\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null\r\n }\r\n\r\n\r\n return (\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginBottom: 50\r\n }}>\r\n <div\r\n style={{\r\n position: 'relative', width: '100%', padding: '0px', marginBottom: '15px',\r\n }}\r\n >\r\n {props.fields?.map((ff, ffi) => <div key={`${ff}_${ffi}`} style={{ position: \"relative\" }}>\r\n <RenderOptions\r\n nodeId={searchID}\r\n field={ff}\r\n customTitles={customTitles}\r\n onChange={props.onChange ? (appliedFilters) => {\r\n if (mounted.current)\r\n setSearch(s => ({\r\n ...s,\r\n appliedFilters\r\n }))\r\n } : null} /></div>)}\r\n {form ?\r\n <FormAnswer\r\n formId={form}\r\n boardId={props.nodeId}\r\n onChange={(values, error) => {\r\n setSearch(s => ({\r\n ...s,\r\n form: values\r\n }))\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...reduxStore.getState().searchs[searchID] || {},\r\n form: values\r\n },\r\n })\r\n }}\r\n ignoreSteps\r\n />\r\n : <></>\r\n }\r\n {/* FINAL FILTER PARAMETERS */}\r\n {JSON.stringify(searchValues) !== initialIndicators ?\r\n <div\r\n style={{\r\n padding: '5px',\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'flex-end'\r\n }}\r\n onClick={() => { setviewSearch(!viewSearch) }}\r\n >\r\n <IconButton reverse icon={'clear_all'} text={translate(\"$__removeFilter\", \"*\")}\r\n onClick={() => {\r\n removeFilter()\r\n }} />\r\n </div> : <></>}\r\n {props?.preffers?.searchButton ?\r\n <CustomButton\r\n color={customApp('menu')}\r\n icon={'search'}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...JSON.parse(initialIndicators),\r\n ...searchValues\r\n },\r\n })\r\n if (props.onSearch)\r\n props.onSearch()\r\n }}\r\n size={'15px'}\r\n title={`${translate(\"$__search\")}`}\r\n text={`${translate(\"$__search\")}`}\r\n />\r\n : <></>\r\n }\r\n\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst initialIndicators = JSON.stringify({\r\n status: {\r\n all: true,\r\n notStarted: true,\r\n awaitAction: true,\r\n paused: true,\r\n inProgress: true,\r\n completed: true,\r\n },\r\n priority: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n risk: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n complexity: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n impact: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n})\r\n\r\nconst mapStateToProps = (store) => ({\r\n searchs: store.searchs\r\n})\r\n\r\nFilterComponent.propTypes = {\r\n handleDrawerToggle: PropTypes.func,\r\n sidebarMinimize: PropTypes.func\r\n};\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterComponent)","import React from \"react\"\r\n\r\n//@MATERIAL \r\nimport TF from '@material-ui/core/TextField';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\n//STYLES\r\nimport {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst TextField = React.forwardRef((props, ref) => {\r\n const styles = {\r\n root: {\r\n ...defaultFont,\r\n color: customApp('mediumText'),\r\n padding: 0,\r\n width: \"100%\",\r\n marginTop: \"7px\",\r\n marginBottom: \"7px\",\r\n '& .invalid': {\r\n borderBottom: 'solid 2px red !important',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n padding: \"11px 11px\",\r\n fontSize: \"12px\",\r\n },\r\n '& label': {\r\n marginTop: \"-10px\",\r\n fontSize: \"12px\"\r\n },\r\n '& label.MuiFormLabel-filled': {\r\n color: customApp('mediumText'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : 0\r\n },\r\n '& label.Mui-focused': {\r\n color: customApp('mediumText'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : 0\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: (props.linecolor || customApp('line')), //customApp\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: (props.linecolor || customApp('line')), //customApp\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: (props.linecolor || customApp('line')), //customApp\r\n },\r\n },\r\n '& .MuiFilledInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: (props.linecolor || customApp('line')), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n '&::after': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: (props.linecolor || customApp('line')), //customApp\r\n '&::before': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n '&::after': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n },\r\n },\r\n '& .MuiInputLabel-outlined': {\r\n marginTop: '0px',\r\n '&.Mui-focused': {\r\n marginTop: '0px',\r\n },\r\n '&.MuiFormLabel-filled': {\r\n marginTop: '0px',\r\n }\r\n },\r\n '& .MuiInputBase-root': {\r\n marginTop: customApp('fieldVariant') === 'standard' ? 0 : customApp('fieldVariant') === 'filled' ? \"-15px\" : 0,\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: (props.linecolor || customApp('line')), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n '&::after': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: (props.linecolor || customApp('line')), //customApp\r\n '&::before': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n '&::after': {\r\n borderBottomColor: (props.linecolor || customApp('line'))\r\n },\r\n },\r\n },\r\n },\r\n }\r\n const useStyles = makeStyles(styles);\r\n const classes = useStyles();\r\n // if(props.helperText)\r\n return (<TF {...props} ref={ref} className={classes.root} />)\r\n})\r\n\r\nexport default TextField","const styles = {\r\n messagesContainer: {\r\n height: \"100%\",\r\n width: \"100%\",\r\n }\r\n};\r\n\r\nexport default styles;\r\n","// MODULES\r\nimport React from \"react\";\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 { VariableSizeList as List } from \"react-window\";\r\nimport AutoSizer from \"react-virtualized-auto-sizer\";\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\n\r\n//DEPENDENCIES\r\nimport Message from \"./message\"\r\n\r\n// STYLES\r\nimport styles from \"./Messages.css\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n loadTimeline,\r\n chatReaded,\r\n} from \"functions/chat\";\r\n\r\nimport { countUnReadsMessages } from \"functionsV3/chat\"\r\n\r\nconst VirtualListMessages = (props) => {\r\n const { messages: ReqMessages, type, nodeId } = props\r\n const { socket } = reduxStore.getState().functions\r\n\r\n const [messages, setMessages] = React.useState([])\r\n const unReadeds = countUnReadsMessages(nodeId)\r\n\r\n // References\r\n const mounted = React.useRef(true)\r\n const listRef = React.createRef()\r\n const loadRef = React.useRef({\r\n autoScrolling: true\r\n })\r\n const rowHeights = React.useRef({})\r\n const messagesList = React.useRef()\r\n\r\n React.useEffect(() => {\r\n if (JSON.stringify(ReqMessages) !== JSON.stringify(messages)) {\r\n setMessages(ReqMessages)\r\n }\r\n // eslint-disable-next-line \r\n }, [ReqMessages])\r\n\r\n React.useEffect(() => {\r\n loadRef.current = {\r\n ...loadRef.current,\r\n autoScrolling: true\r\n }\r\n if (listRef.current)\r\n scrollToBottom(true)\r\n clearMessages()\r\n return () => {\r\n // mounted.current = false\r\n rowHeights.current = {}\r\n loadRef.current = {\r\n autoScrolling: true\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [nodeId, type])\r\n\r\n\r\n\r\n React.useEffect(() => {\r\n if (parseInt(unReadeds) > 0 && mounted.current && loadRef.current.autoScrolling) {\r\n clearMessages()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [nodeId, type])\r\n\r\n React.useEffect(() => {\r\n if (mounted.current && listRef.current)\r\n scrollToBottom()\r\n // eslint-disable-next-line \r\n }, [messages])\r\n\r\n React.useLayoutEffect(() => {\r\n if (mounted.current && listRef) {\r\n scrollToBottom(true)\r\n }\r\n // eslint-disable-next-line \r\n }, [])\r\n\r\n\r\n React.useEffect(() => {\r\n if (messages.length > 0 && mounted.current) {\r\n if (!loadRef.current?.mounted || (loadRef?.current?.messagesLength && messages.length > loadRef.current.messagesLength)) {\r\n loadRef.current = {\r\n ...loadRef.current,\r\n loading: false,\r\n messagesLength: messages.length,\r\n };\r\n if (!loadRef.current.mounted) {\r\n loadRef.current = {\r\n ...loadRef.current,\r\n mounted: true,\r\n };\r\n }\r\n }\r\n }\r\n if (parseInt(unReadeds) > 0 && mounted.current && loadRef.current.autoScrolling) {\r\n clearMessages()\r\n }\r\n // eslint-disable-next-line \r\n }, [messages]);\r\n\r\n const clearMessages = async () => {\r\n chatReaded(props, {\r\n readedBy: reduxStore.getState().session._id,\r\n id: nodeId,\r\n db: props.db,\r\n type: type\r\n })\r\n\r\n socket.emit(\"data\", {\r\n module: \"chat\",\r\n method: \"put\",\r\n action: \"read\"\r\n }, {\r\n readedBy: reduxStore.getState().session._id,\r\n id: nodeId,\r\n db: props.db,\r\n type: type\r\n })\r\n\r\n\r\n if (reduxStore.getState().chats.unreadeds[nodeId]) {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHATS\", {\r\n ...reduxStore.getState().chats,\r\n unreadeds: {\r\n ...reduxStore.getState().chats.unreadeds,\r\n [nodeId]: 0\r\n }\r\n })\r\n }\r\n loadRef.current = {\r\n ...loadRef.current,\r\n cleanMessages: false\r\n }\r\n\r\n }\r\n\r\n const loadMore = async () => {\r\n const timelineDb = reduxStore.getState().db.users[nodeId] ? `users` : `cards`\r\n let lt = await loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Timeline/Index/scrollFunction()\"\r\n },\r\n {\r\n ids: [nodeId],\r\n db: timelineDb,\r\n type: \"comment\",\r\n limit: true,\r\n skip: messages.length\r\n })\r\n\r\n if (lt) {\r\n scrollToBottom();\r\n let newRef = {\r\n reqMessages: false\r\n };\r\n\r\n if (lt.total < 20)\r\n newRef = { ...newRef, timelineEnd: true };\r\n loadRef.current = {\r\n ...loadRef.current,\r\n ...newRef,\r\n reqMessages: false\r\n };\r\n }\r\n }\r\n\r\n\r\n\r\n function getRowHeight(index) {\r\n const data = messages[index]\r\n return rowHeights.current[data._id] + 11 || 83;\r\n }\r\n\r\n function setRowHeight(index, size) {\r\n rowHeights.current = { ...rowHeights.current, [index]: size };\r\n if (listRef?.current?.resetAfterIndex) {\r\n listRef.current.resetAfterIndex(0);\r\n }\r\n }\r\n\r\n\r\n function Row({ index, style }) {\r\n const data = messages[index]\r\n\r\n if (\r\n !loadRef.current.lastMessage || (\r\n loadRef\r\n && loadRef.current\r\n && loadRef.current.lastMessage\r\n && loadRef.current.lastMessage < data.created_at\r\n )) {\r\n loadRef.current = {\r\n ...loadRef.current,\r\n lastMessage: data.created_at\r\n }\r\n }\r\n\r\n\r\n return (\r\n <div style={style}>\r\n <Message\r\n storie={data}\r\n openLightBox={(e) => {\r\n if (mounted.current)\r\n props.openLightBox(e)\r\n }}\r\n hideCards={props.hideCards ? true : false}\r\n db={props.db}\r\n nodeId={nodeId}\r\n showUserName={reduxStore.getState().db?.cards[nodeId] ? true : false}\r\n onResize={(size) => {\r\n setRowHeight(data._id, size);\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n const scrollToBottom = (force) => {\r\n let item = messages.length - 1\r\n let position = \"end\"\r\n\r\n let currentLength = loadRef.current.length || 0\r\n let visibleStopIndex = loadRef?.current?.visibleStartIndex || 20\r\n\r\n if (force && listRef && listRef.current) {\r\n position = \"end\"\r\n listRef.current.scrollToItem(messages.length, position)\r\n return\r\n }\r\n\r\n if (listRef && listRef.current) {\r\n if (!loadRef.current.autoScrolling) {\r\n position = \"start\"\r\n item = (messages.length - currentLength) + visibleStopIndex + 1\r\n listRef.current.scrollToItem(item < 20 ? 20 : item, position)\r\n } else {\r\n position = \"end\"\r\n listRef.current.scrollToItem(ReqMessages.length, position)\r\n }\r\n return\r\n }\r\n }\r\n\r\n const messagesHeight = () => {\r\n let mh = 0\r\n if (rowHeights.current && Object.keys(rowHeights.current).length)\r\n Object.keys(rowHeights.current).forEach(a => {\r\n mh = mh + rowHeights.current[a] + 11\r\n })\r\n return mh\r\n }\r\n\r\n return (\r\n <div style={styles.messagesContainer}\r\n ref={messagesList}\r\n >\r\n <AutoSizer\r\n style={styles.messagesContainer}\r\n >\r\n {({ height, width }) => (\r\n <List\r\n className=\"List\"\r\n style={{ paddingBottom: 66 }}\r\n height={height}\r\n itemCount={messages.length}\r\n itemSize={getRowHeight}\r\n ref={listRef}\r\n width={width}\r\n onItemsRendered={(e) => {\r\n loadRef.current = {\r\n ...loadRef.current,\r\n ...e,\r\n length: messages.length,\r\n }\r\n }}\r\n overscanCount={33}\r\n onScroll={(e) => {\r\n let messageSpace = messagesList?.current?.offsetHeight || 0\r\n if (mounted.current) {\r\n let newLoadRef = {\r\n ...loadRef.current,\r\n // autoScrolling: false\r\n }\r\n\r\n if (e.scrollDirection === \"backward\") {\r\n if (e.scrollOffset + messageSpace <= (messagesHeight() - 300))\r\n newLoadRef = {\r\n ...newLoadRef,\r\n autoScrolling: false\r\n }\r\n if (!loadRef.current.reqMessages && !loadRef.current.timelineEnd && e.scrollOffset < 100) {\r\n newLoadRef = {\r\n ...newLoadRef,\r\n reqMessages: true\r\n }\r\n loadMore()\r\n }\r\n }\r\n if (e.scrollOffset + messageSpace > (messagesHeight() - 300)) {\r\n newLoadRef = {\r\n ...newLoadRef,\r\n autoScrolling: true\r\n }\r\n if (unReadeds && !loadRef.current.cleanMessages) {\r\n newLoadRef = {\r\n ...newLoadRef,\r\n cleanMessages: true\r\n }\r\n clearMessages()\r\n }\r\n }\r\n loadRef.current = newLoadRef\r\n }\r\n }}\r\n >\r\n {Row}\r\n\r\n </List>\r\n )}\r\n </AutoSizer>\r\n {(parseInt(unReadeds) > 0 && !loadRef.current.autoScrolling) ?\r\n <div\r\n style={{\r\n position: 'absolute',\r\n bottom: '33px',\r\n right: '15px',\r\n width: '33px',\r\n height: '33px',\r\n }}\r\n >\r\n <IconButton\r\n icon=\"arrow_downward\"\r\n iconColor={'red'}\r\n size={'33px'}\r\n onClick={() => {\r\n scrollToBottom(true)\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(VirtualListMessages)","import React from \"react\";\r\n\r\n//REDUX\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as reduxActions from 'store/actions';\r\n\r\n//COMPONENTS\r\nimport LinearProgress from \"components/Progress/linear\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport Message from \"../message\";\r\n\r\n// @MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/search\";\r\n\r\nimport apims from \"apims/\";\r\n\r\nfunction SearchComponent(props) {\r\n const [lastChange, setLastChange] = React.useState(\"\")\r\n const [loader, setLoader] = React.useState(false)\r\n const [filteredItems, setfilteredItems] = React.useState([]);\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n React.useEffect(() => {\r\n if (props.text.length > 1 && props.text !== lastChange) {\r\n setLastChange(props.text)\r\n const timer = setTimeout(() => searchMessages(), 1000);\r\n setLoader(true)\r\n return () => clearTimeout(timer);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.text])\r\n\r\n const searchMessages = async () => {\r\n try {\r\n console.log({\r\n text: props.text.trim(),\r\n nodeId: props.nodeId,\r\n db: props.db,\r\n type: \"comment\"\r\n })\r\n let req = await apims.post(`/M_Timeline_Search`,\r\n {\r\n text: props.text.trim(),\r\n nodeId: props.nodeId,\r\n db: props.db,\r\n type: \"comment\"\r\n }\r\n )\r\n if (req && req.data) {\r\n if (props.onFinish)\r\n props.onFinish()\r\n setfilteredItems(req.data)\r\n setLoader(false)\r\n }\r\n } catch (e) {\r\n console.log(\"/SEARCH/MESSAGES/SearchMessages():::\", e)\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n style={{ width: \"100%\", maxHeight: '70vh' }}\r\n >\r\n <div style={{ positin: 'relative', width: '100%' }}>\r\n {loader &&\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <LinearProgress />\r\n </div>\r\n }\r\n <GridContainer>\r\n {Object.keys(filteredItems).length > 0 &&\r\n <GridItem\r\n xs={12}\r\n sm={12}\r\n md={12}\r\n lg={12}\r\n xl={12}\r\n >\r\n {Object.keys(filteredItems)\r\n .map((message, i) => {\r\n return (\r\n <div\r\n key={message}\r\n style={{ position: \"relative\", float: \"left\", width: 'calc(100% - 20px)', marginLeft: '10px', marginRight: '10px', marginBottom: '22px', clear: 'both' }}\r\n >\r\n <Message\r\n messageClick={props.onAction ? () => {\r\n // props.onAction(filteredItems[message])\r\n } : null}\r\n searchText={props.text.trim()}\r\n storie={filteredItems[message]}\r\n hideCards={props.hideCards ? true : false}\r\n db={props.db}\r\n nodeId={props.nodeId}\r\n />\r\n </div>\r\n )\r\n })}\r\n </GridItem>\r\n }\r\n </GridContainer>\r\n </div>\r\n </div >\r\n );\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\n//EXPORT\r\nexport default connect(null, mapDispatchToProps)(withStyles(styles)(SearchComponent))","import React from \"react\"\r\n\r\n//REDUX\r\nimport { connect } from 'react-redux'\r\nimport { bindActionCreators } from 'redux'\r\nimport * as reduxActions from 'store/actions'\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\nimport TextField from \"components/TextField\"\r\n\r\n//DEPENDENCIES\r\nimport SearchMessages from \"./messages\"\r\n\r\n// @MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/views/search.js\"\r\n\r\n//FUNCTIONS\r\nimport { removeSeats, translate, customApp } from \"functions/\"\r\n\r\n\r\nfunction SearchComponent(props) {\r\n const [searchValue, setSearchValue] = React.useState(\"\")\r\n const [showText, setShowText] = React.useState(false)\r\n const [loader, setLoader] = React.useState(false)\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n // return (<React.Fragment></React.Fragment>)\r\n\r\n\r\n return (\r\n <div style={{\r\n position: 'relative',\r\n zIndex: 10,\r\n padding: 10,\r\n backgroundColor: 'rgba(250,250,250,0.9)',\r\n borderRadius: \"25px\"\r\n }}>\r\n {!showText ?\r\n <CustomButton\r\n title={translate(`$__search`, 1)}\r\n color='grey'\r\n icon={'search'}\r\n onClick={(e) => {\r\n setShowText(prev => !prev)\r\n }}\r\n transparent\r\n />\r\n :\r\n <React.Fragment>\r\n <TextField\r\n label={translate(\"$__searchInChat\")}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"searchInChat\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon={\"close\"} color=\"lightgray\" onClick={() => {\r\n setSearchValue(\"\")\r\n setLoader(false)\r\n setShowText(false)\r\n }\r\n } />\r\n </InputAdornment>\r\n ),\r\n onChange: (d, v) => {\r\n setSearchValue(d.target.value)\r\n setLoader(true)\r\n },\r\n onBlur: () => {\r\n if (searchValue === \"\") {\r\n setSearchValue(\"\")\r\n setLoader(false)\r\n setShowText(false)\r\n }\r\n }\r\n }}\r\n placeholder={translate(\"$__searchInChat\")}\r\n value={removeSeats(searchValue).toLowerCase()}\r\n autoFocus\r\n />\r\n\r\n </React.Fragment>\r\n }\r\n {(searchValue !== \"\" && searchValue.length > 1 && loader) &&\r\n <div style={{ position: \"absolute\", bottom: 0, left: \"7px\", right: \"7px\" }}>\r\n <LinearProgress />\r\n </div>\r\n }\r\n {searchValue !== \"\" && searchValue.length > 1 &&\r\n <div style={{\r\n position: \"absolute\",\r\n top: \"50px\",\r\n right: \"15px\",\r\n backgroundColor: \"#FFFFFF\",\r\n height: \"auto\",\r\n overflow: \"hidden\",\r\n overflowY: \"auto\",\r\n boxShadow: \"0 3px 3px 3px rgba(0,0,0,0.1)\",\r\n maxHeight: \"90vh\",\r\n maxWidth: \"666px\",\r\n zIndex: 2001,\r\n }}>\r\n <SearchMessages\r\n nodeId={props.nodeId}\r\n db={props.db}\r\n text={searchValue}\r\n onFinish={(e) => {\r\n setLoader(false)\r\n }}\r\n onAction={(e) => {\r\n if (props.onAction)\r\n props.onAction(e)\r\n setSearchValue(\"\")\r\n setLoader(false)\r\n setShowText(false)\r\n }}\r\n />\r\n </div>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store, ownProps) => {\r\n return {\r\n store,\r\n ownProps\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n//EXPORT\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(SearchComponent))","import React, { useEffect, useRef } from \"react\";\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 PreLoader from \"components/PreLoader\";\r\n\r\n//DEPENDENCIES\r\nimport Messages from \"./newMessages\";\r\nimport Search from \"./Search\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/timelineStyle\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n loadTimeline,\r\n} from \"functions/chat\";\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nconst MessagesList = (props) => {\r\n const classes = useStyles()\r\n const { session } = reduxStore.getState()\r\n const [preLoader, setPreLoader] = React.useState(false)\r\n\r\n const { timeline } = props\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const type = props.type || 'comment'\r\n\r\n\r\n const componentRef = useRef()\r\n\r\n const data = props.nodeId ? reduxStore.getState().db[`${!props.db ? 'cards' : props.db}`][props.nodeId] : {};\r\n const timelineDb = reduxStore.getState().db.users[props.nodeId] ? `users` : `cards`\r\n\r\n useEffect(() => {\r\n componentRef.current = {\r\n mounted: true\r\n }\r\n\r\n return () => {\r\n if (componentRef && componentRef.current && componentRef.current.mounted)\r\n componentRef.current.mounted = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n let files = [];\r\n\r\n let stories = []\r\n if (reduxStore.getState().db.cards[props.nodeId] && timeline[props.nodeId])\r\n Object.keys(timeline[props.nodeId]).forEach(a => stories.push(timeline[props.nodeId][a]))\r\n\r\n const reqStories = (parent) => {\r\n Object.keys(reduxStore.getState().db.cards).filter(kc =>\r\n reduxStore.getState().db.cards[kc]._parent === parent\r\n && reduxStore.getState().db.cards[kc].kpi_useParent\r\n && reduxStore.getState().db.cards[kc].kpi_type === reduxStore.getState().db.cards[parent].kpi_type)\r\n .forEach(f => {\r\n if (reduxStore.getState().timeline[f])\r\n Object.keys(reduxStore.getState().timeline[f]).filter(x => reduxStore.getState().timeline[f][x].type === 'kpi' && !reduxStore.getState().timeline[f][x].deleted).map(x =>\r\n stories.push(reduxStore.getState().timeline[f][x])\r\n )\r\n reqStories(f)\r\n })\r\n }\r\n\r\n\r\n if (type === 'kpi')\r\n reqStories(props.nodeId)\r\n\r\n if (reduxStore.getState().db.users[props.nodeId]) {\r\n if (timeline && timeline[session._id])\r\n Object.keys(timeline[session._id])\r\n .filter(a =>\r\n timeline[session._id]\r\n && timeline[session._id][a]\r\n && timeline[session._id][a].user\r\n && timeline[session._id][a].user._id === props.nodeId\r\n && stories.filter(s => s._id === a).length === 0\r\n )\r\n .forEach(a => {\r\n stories.push(timeline[session._id][a])\r\n })\r\n\r\n\r\n\r\n if (timeline && timeline[props.nodeId])\r\n Object.keys(timeline[props.nodeId])\r\n .filter(a =>\r\n timeline[props.nodeId]\r\n )\r\n .forEach(a => {\r\n stories.push(timeline[props.nodeId][a])\r\n })\r\n\r\n stories = Object.keys(stories)\r\n .sort((a, b) => {\r\n if (parseInt(stories[a].created_at) < parseInt(stories[b].created_at)) {\r\n return -1\r\n } else if (parseInt(stories[a].created_at) > parseInt(stories[b].created_at)) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .filter(a =>\r\n stories[a].user\r\n && stories[a].user._id\r\n && (\r\n stories[a].user._id === session._id\r\n ||\r\n stories[a].user._id === props.nodeId\r\n )\r\n ).map(a => {\r\n return stories[a]\r\n })\r\n }\r\n\r\n\r\n\r\n if (props.kpi_type)\r\n stories = Object.keys(stories).filter(a =>\r\n (\r\n stories[a].kpi_type === props.kpi_type\r\n )\r\n ||\r\n (\r\n stories[a].reply\r\n )\r\n ).map(a => {\r\n return stories[a]\r\n })\r\n\r\n\r\n let balance = data && data.kpi_ini ? parseFloat(data.kpi_ini) : 0\r\n\r\n React.useEffect(() => {\r\n if (mounted.current) {\r\n const init = async () => {\r\n let type = props.type ? props.type : 'comment'\r\n await loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Timeline/Index/init()\",\r\n force: true\r\n },\r\n {\r\n ids: props.nodeId,\r\n db: timelineDb,\r\n type: type,\r\n ...props.type === \"kpi\" ? {\r\n limit: false,\r\n skip: false,\r\n reqChildrens: true\r\n } : {\r\n limit: true,\r\n skip: stories.filter(fil => fil.type === type).length > 0 ? stories.filter(fil => fil.type === type).length - 1 : 0,\r\n reqChildrens: false\r\n }\r\n }\r\n )\r\n if (mounted.current)\r\n setPreLoader(false)\r\n }\r\n if (mounted.current) {\r\n if (stories.filter(a => a.type === type).length < 10) {\r\n setPreLoader(true)\r\n init()\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [type, props.nodeId])\r\n\r\n if (preLoader)\r\n return (\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 )\r\n\r\n\r\n\r\n const openLightBox = (f) => {\r\n props.reduxFunction(\"ASYNC\", \"LIGHTBOX\", {\r\n open: true,\r\n files: files,\r\n file: f\r\n })\r\n }\r\n\r\n\r\n const renderMessages = Object.keys(stories).length > 0\r\n && Object.keys(stories)\r\n .filter(a => {\r\n if (\r\n (\r\n !stories[a].deleted ||\r\n (\r\n stories[a].deleted &&\r\n stories[a].user &&\r\n stories[a].user._id &&\r\n stories[a].user._id === session._id\r\n )\r\n ) &&\r\n (\r\n (\r\n stories[a].type === type\r\n )\r\n ||\r\n (\r\n stories[a].reply\r\n && Object.keys(stories).filter(fil => stories[fil] && stories[fil]._id === stories[a].reply && stories[fil].type === type).length > 0\r\n )\r\n )\r\n )\r\n return true\r\n return false\r\n })\r\n .sort((a, b) => {\r\n if (stories[a].created_at < stories[b].created_at) {\r\n return -1\r\n } else if (stories[a].created_at > stories[b].created_at) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n ).map((id) => {\r\n let storie = stories[id]\r\n balance = parseFloat(parseFloat(balance) + parseFloat(storie.value))\r\n storie.balance = balance\r\n\r\n if (storie.files && Object.keys(storie.files).length > 0)\r\n Object.keys(storie.files).forEach((id, i) => {\r\n let file = storie.files[id]\r\n files.push(file)\r\n })\r\n\r\n return storie\r\n })\r\n\r\n\r\n return (\r\n <div>\r\n <div\r\n className={classes.timeline}\r\n >\r\n <div\r\n className={props.showHeader ? classes.timelineSimpleWithHeader : classes.timelineSimple\r\n }\r\n style={{ zIndex: 1 }}\r\n >\r\n {renderMessages && renderMessages.length > 0 ?\r\n <Messages\r\n messages={renderMessages}\r\n hideCards={props.hideCards ? true : false}\r\n db={props.db}\r\n type={type}\r\n nodeId={props.nodeId}\r\n openLightBox={(e) => { openLightBox(e) }}\r\n />\r\n : <React.Fragment></React.Fragment>}\r\n <div style={{ clear: 'both' }}></div>\r\n </div>\r\n\r\n {!props.noSearch ?\r\n <div style={{ position: \"absolute\", top: 0, right: 0 }}>\r\n <Search\r\n db={timelineDb}\r\n nodeId={props.nodeId}\r\n onAction={(e) => {\r\n // goToMessage(e._id, true)\r\n }}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}\r\n//REACT\r\nconst mapStateToProps = ({ timeline }, { nodeId }) => {\r\n return {\r\n timeline\r\n }\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(MessagesList)","import React from \"react\";\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 ErrorBoundary from \"components/ErrorBoundary\";\r\n\r\n//DEPENDENCIES\r\nimport SendingMessage from \"./sending\"\r\nimport Messages from \"./messages\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n translate,\r\n} from \"functions/\";\r\n\r\n\r\nconst Timeline = (props) => {\r\n const { nodeId } = props\r\n const { session } = reduxStore.getState()\r\n\r\n\r\n let timelineDb = reduxStore.getState().db.users[nodeId] ? `users` : `cards`\r\n let disabledSending = props.disabledSend ? props.disabledSend : false\r\n\r\n if (nodeId\r\n && props.disabledSend\r\n && (\r\n !reduxStore.getState().db.cards[nodeId]\r\n || (\r\n reduxStore.getState().db.cards[nodeId]\r\n &&\r\n (\r\n reduxStore.getState().db.cards[nodeId].onlyAdminsSendMessages\r\n && (\r\n reduxStore.getState().db.cards[nodeId]._users\r\n && reduxStore.getState().db.cards[nodeId]._users[session._id]\r\n && reduxStore.getState().db.cards[nodeId]._users[session._id].access < 4\r\n )\r\n )\r\n )\r\n )) disabledSending = true\r\n\r\n if (\r\n (timelineDb === 'users'\r\n && reduxStore.getState().db.users\r\n && reduxStore.getState().db.users[nodeId]\r\n && reduxStore.getState().db.users[nodeId].deleted\r\n )\r\n ) disabledSending = true\r\n\r\n return (\r\n <div style={{\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto',\r\n zIndex: 0,\r\n }}>\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: disabledSending ? \"0px\" : \"70px\"\r\n }}>\r\n <ErrorBoundary>\r\n <Messages {...props} />\r\n </ErrorBoundary>\r\n </div>\r\n {!disabledSending ?\r\n <ErrorBoundary>\r\n <SendingMessage\r\n db={!props.db ? 'cards' : props.db}\r\n nodeId={nodeId}\r\n editorStyle={{ padding: '7px' }}\r\n />\r\n </ErrorBoundary>\r\n : reduxStore.getState().db.cards[nodeId] && reduxStore.getState().db.cards[nodeId].type === 'chatGroup' ?\r\n <div style={{\r\n position: \"absolute\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n padding: 15,\r\n backgroundColor: \"linear-gradient(33deg, rgba(250, 250, 250, 1), rgba(240,240,240, 1))\",\r\n justifyContent: \"center\",\r\n fontSize: \"16px\",\r\n fontWeight: \"bold\",\r\n color: customApp(\"menu\")\r\n }}>\r\n {translate(\"$__onlyAdminsCanSendMessages\", 1)}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n );\r\n}\r\n//REACT\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(Timeline)","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nconst useStyles = makeStyles({\r\n grid: {\r\n padding: \"0 15px !important\"\r\n }\r\n});\r\n\r\nconst GridItem = ({ children, className = \"\", ...rest }) => {\r\n const classes = useStyles();\r\n return (\r\n <Grid item {...rest} className={`${classes.grid} ${className}`}>\r\n {children}\r\n </Grid>\r\n );\r\n};\r\n\r\nGridItem.propTypes = {\r\n className: PropTypes.string,\r\n children: PropTypes.node\r\n};\r\n\r\nexport default GridItem;\r\n","const style = {\r\n\r\n};\r\n\r\nexport default style;\r\n","import React from 'react'\r\nimport Icon from 'components/Icon'\r\n\r\nconst TasksPreview = (props) => {\r\n return (\r\n <div style={\r\n {\r\n width: '100%',\r\n backgroundColor: 'white',\r\n height: \"100%\",\r\n display: 'flex',\r\n boxShadow: \"rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px\",\r\n justifyContent: 'center',\r\n }}>\r\n <div style={{ display: \"flex\", justifyContent: 'center', width: '210px', alignSelf: 'center' }}>\r\n <Icon size={40} icon={props.icon ? props.icon : 'close'} style={{ alignSelf: 'center' }}></Icon>\r\n <p style={{ margin: '0px', marginLeft: '10px', alignSelf: 'center', fontSize: '16px', fontWeight: 'bold', color: 'rgba(0, 0, 0, 0.67)' }}>\r\n {props.title ? props.title : \"Visualização não disponivel com filtro de período\"}\r\n </p>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default TasksPreview","import React from \"react\";\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\n// Estilos dos badges\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n}));\r\n\r\nconst StyledBadge = withStyles((theme) => ({\r\n badge: {\r\n backgroundColor: \"#44b700\",\r\n color: \"#44b700\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n \"&::after\": {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n borderRadius: \"50%\",\r\n animation: \"$ripple 1.2s infinite ease-in-out\",\r\n border: \"1px solid currentColor\",\r\n content: '\"\"',\r\n },\r\n },\r\n \"@keyframes ripple\": {\r\n \"0%\": {\r\n transform: \"scale(.8)\",\r\n opacity: 1,\r\n },\r\n \"100%\": {\r\n transform: \"scale(2.4)\",\r\n opacity: 0,\r\n },\r\n },\r\n}))(Badge);\r\n\r\nconst StyledBadgeAway = withStyles((theme) => ({\r\n badge: {\r\n backgroundColor: \"#ffb100\",\r\n color: \"#ffb100\",\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n \"&::after\": {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n borderRadius: \"50%\",\r\n animation: \"$ripple 1.2s infinite ease-in-out\",\r\n border: \"1px solid currentColor\",\r\n content: '\"\"',\r\n },\r\n },\r\n \"@keyframes ripple\": {\r\n \"0%\": {\r\n transform: \"scale(.8)\",\r\n opacity: 1,\r\n },\r\n \"100%\": {\r\n transform: \"scale(2.4)\",\r\n opacity: 0,\r\n },\r\n },\r\n}))(Badge);\r\n\r\n// Componente principal\r\nfunction BadgeAvatars({ userId, anchorOrigin, children }) {\r\n const classes = useStyles();\r\n const status = useSelector(\r\n (state) => state.usersStatus?.users?.[userId]?.status || null\r\n );\r\n\r\n const defaultAnchorOrigin = {\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n };\r\n\r\n const BadgeComponent = status === \"away\" ? StyledBadgeAway : StyledBadge;\r\n\r\n return (\r\n <div className={classes.root}>\r\n <BadgeComponent\r\n overlap=\"circular\"\r\n anchorOrigin={anchorOrigin || defaultAnchorOrigin}\r\n variant={status ? \"dot\" : \"standard\"}\r\n >\r\n {children}\r\n </BadgeComponent>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BadgeAvatars;","//CORE\r\nimport React from \"react\";\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as reduxActions from \"store/actions\";\r\n\r\n//COMPONENTS\r\n//@MATERIAL\r\nimport Autocomplete from \"components/AutoComplete/multiple\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Tags-input\";\r\n\r\nfunction Component(props) {\r\n const [values, setValues] = React.useState(props?.data?.values || [])\r\n\r\n React.useEffect(() => {\r\n if (props?.data?.values) {\r\n let newValues = []\r\n props.data.values.filter(d => d.value).forEach(d => {\r\n newValues.push(d)\r\n })\r\n setValues(newValues)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.data])\r\n\r\n const changeTags = async (v) => {\r\n if (props.callBack)\r\n props.callBack(v)\r\n setValues(v)\r\n }\r\n\r\n return (\r\n <div>\r\n <Autocomplete\r\n dbNode={props.dbNode ? props.dbNode : 'tag'}\r\n secondaryParent={props.secondaryParent ? props.secondaryParent : null}\r\n options={props.options ? props.options : []}\r\n style={{ width: '100%' }}\r\n name={props.name ? props.name : 'multInput'}\r\n ws={!props.noAdd ? true : false}\r\n add\r\n colorPicker\r\n multiple\r\n freeSolo\r\n disableClearable\r\n disabled={props.disabled ? true : false}\r\n value={values}\r\n placeholder={props.placeholder || null}\r\n onChange={\r\n (v) => {\r\n changeTags(v)\r\n }\r\n }\r\n colorPickerCallBack={(res) => {\r\n if (props.colorPickerCallBack)\r\n props.colorPickerCallBack(res)\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store, ownProps) => ({\r\n store, ownProps\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Component));","const initialState = {\r\n tags: [],\r\n userGroups: [],\r\n users: {\r\n userGroup: [],\r\n selected: {}\r\n },\r\n units: {\r\n userGroup: [],\r\n selected: {}\r\n },\r\n clients: {\r\n userGroup: [],\r\n selected: {}\r\n },\r\n groups: {\r\n userGroup: [],\r\n selected: {}\r\n },\r\n plans: {\r\n userGroup: [],\r\n selected: {}\r\n },\r\n sideModuleWindow: false,\r\n clearFilter: false,\r\n text: '',\r\n cards: {\r\n iniDate: null,\r\n endDate: null,\r\n dateStatus: [],\r\n status: {\r\n all: true,\r\n notStarted: true,\r\n awaitAction: true,\r\n paused: true,\r\n inProgress: true,\r\n completed: true,\r\n },\r\n priority: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n risk: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n complexity: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n impact: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n kpiType: [],\r\n iniKpiValue: null,\r\n endKpiValue: null,\r\n },\r\n};\r\n\r\nexport {\r\n initialState\r\n}","import React from \"react\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nconst styles = {\r\n grid: {\r\n margin: \"0\",\r\n width: \"100%\"\r\n // '&:before,&:after':{\r\n // display: 'table',\r\n // content: '\" \"',\r\n // },\r\n // '&:after':{\r\n // clear: 'both',\r\n // }\r\n }\r\n};\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function GridContainer(props) {\r\n const classes = useStyles();\r\n const { children, className, ...rest } = props;\r\n return (\r\n <Grid container {...rest} className={classes.grid + \" \" + className}>\r\n {children}\r\n </Grid>\r\n );\r\n}\r\n\r\nGridContainer.propTypes = {\r\n className: PropTypes.string,\r\n children: PropTypes.node\r\n};\r\n","import React from \"react\";\r\nimport CryptoJS from \"crypto-js\"\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nimport { translate } from \"functions/\"\r\n\r\nimport api from \"api\"\r\n\r\nclass ErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hasError: false,\r\n error: null,\r\n errorInfo: null\r\n };\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n // You can also log the error to an error reporting service\r\n // logErrorToMyService(error, errorInfo);\r\n this.setState({\r\n error: error,\r\n errorInfo: errorInfo\r\n })\r\n\r\n let ErrorData = {\r\n hostname: window.location.hostname,\r\n pathname: window.location.pathname,\r\n hash: window.location.hash,\r\n message: this.props?.message ? `${this.props.message} : ${error.message}` : error.message,\r\n stack: errorInfo.componentStack,\r\n component: errorInfo.componentStack,\r\n }\r\n\r\n console.log({\r\n SUPPORT_ID: CryptoJS.MD5(JSON.stringify(error)).toString(),\r\n error: {\r\n hostname: window.location.hostname,\r\n pathname: window.location.pathname,\r\n hash: window.location.hash,\r\n message: this.props?.message ? `${this.props.message} : ${error.message}` : error.message,\r\n stack: errorInfo.componentStack,\r\n component: errorInfo.componentStack,\r\n }\r\n })\r\n\r\n api.post(\"/ErrorBoundary/add\", {\r\n _id: uuid(),\r\n uid: CryptoJS.MD5(JSON.stringify(ErrorData)).toString(),\r\n origin: \"web\", //web, app, sck, api, tgr\r\n error: ErrorData\r\n })\r\n\r\n\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n return (\r\n <div>\r\n {translate(\"$__ComponentErrorRefreshOrSupportMessage\")}\r\n </div>\r\n )\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;","//CORE\r\nimport React from 'react';\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: customApp('medium'),\r\n },\r\n box: {\r\n width: '70vw',\r\n height: '80vh',\r\n backgroundColor: '#FFFFFF',\r\n boxShadow: '0 0 6px rgba(0,0,0,0.3)',\r\n padding: '30px',\r\n overflowY: 'auto'\r\n },\r\n title: {\r\n fontSize: '20px',\r\n fontWeight: 'bold',\r\n marginBottom: '7px',\r\n },\r\n iconList: {\r\n\r\n },\r\n list: {\r\n position: 'relative',\r\n width: '100%',\r\n float: 'left',\r\n marginBottom: '30px'\r\n },\r\n icon: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '50px',\r\n height: '50px',\r\n\r\n }\r\n}));\r\n\r\nexport default function Component(props) {\r\n const classes = useStyles();\r\n const [showList, setShowList] = React.useState(false);\r\n const [selected, setSelected] = React.useState(props.icon ? props.icon : 'add_photo_alternate')\r\n\r\n React.useEffect(() => {\r\n setSelected(props.icon)\r\n }, [props.icon])\r\n return (\r\n <div style={{\r\n ...props.style ? props.style : {}\r\n }}>\r\n {!showList ?\r\n <Icon\r\n icon={selected}\r\n color={props.color ? props.color : customApp(\"color\")}\r\n size={props.size || '30px'}\r\n onClick={() => {\r\n if (props.onChange)\r\n setShowList(true)\r\n }}\r\n />\r\n :\r\n <Backdrop className={classes.backdrop} open={showList} onClick={() => setShowList(false)}>\r\n <div className={classes.box}>\r\n {iconList && Object.keys(iconList).map((list, i) => (\r\n <div key={i} className={classes.list} >\r\n <div className={classes.title}>{list}</div>\r\n <div className={classes.iconList}>\r\n {iconList[list] && iconList[list].map((icon, index) => (\r\n <div key={index} className={classes.icon}>\r\n <Icon\r\n icon={icon}\r\n size='30px'\r\n color={props.color ? props.color : customApp('color')}\r\n onClick={() => {\r\n setSelected(icon)\r\n setShowList(false)\r\n if (props.callBack)\r\n props.callBack(icon)\r\n if (props.onChange)\r\n props.onChange(icon)\r\n }}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </Backdrop>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\n\r\nconst iconList = {\r\n 'Action': [\r\n '3d_rotation',\r\n 'accessibility',\r\n 'accessibility_new',\r\n 'accessible',\r\n 'accessible_forward',\r\n 'account_balance',\r\n 'account_balance_wallet',\r\n 'account_box',\r\n 'account_circle',\r\n 'add_shopping_cart',\r\n 'addchart',\r\n 'admin_panel_settings',\r\n 'alarm',\r\n 'alarm_add',\r\n 'alarm_off',\r\n 'alarm_on',\r\n 'all_inbox',\r\n 'all_out',\r\n 'analytics',\r\n 'anchor',\r\n 'android',\r\n 'announcement',\r\n 'api',\r\n 'app_blocking',\r\n 'arrow_circle_down',\r\n 'arrow_circle_up',\r\n 'arrow_right_alt',\r\n 'article',\r\n 'aspect_ratio',\r\n 'assessment',\r\n 'view_comfy',\r\n 'view_comfy_ind',\r\n 'view_comfy_late',\r\n 'view_comfy_return',\r\n 'view_comfy_returned',\r\n 'view_comfy_turned_in',\r\n 'autorenew',\r\n 'backup',\r\n 'backup_table',\r\n 'batch_prediction',\r\n 'book',\r\n 'bookmark',\r\n 'bookmark_border',\r\n 'bookmarks',\r\n 'bug_report',\r\n 'build',\r\n 'build_circle',\r\n 'cached',\r\n 'calendar_today',\r\n 'calendar_view_day',\r\n 'camera_enhance',\r\n 'cancel_schedule_send',\r\n 'card_giftcard',\r\n 'card_membership',\r\n 'card_travel',\r\n 'change_history',\r\n 'check_circle',\r\n 'check_circle_outline',\r\n 'chrome_reader_mode',\r\n 'class',\r\n 'close_fullscreen',\r\n 'code',\r\n 'comment_bank',\r\n 'commute',\r\n 'compare_arrows',\r\n 'contact_support',\r\n 'contactless',\r\n 'copyright',\r\n 'credit_card',\r\n 'dashboard',\r\n 'date_range',\r\n 'delete',\r\n 'delete_forever',\r\n 'delete_outline',\r\n 'description',\r\n 'dns',\r\n 'done',\r\n 'done_all',\r\n 'done_outline',\r\n 'donut_large',\r\n 'donut_small',\r\n 'drag_indicator',\r\n 'dynamic_form',\r\n 'eco',\r\n 'eject',\r\n 'euro_symbol',\r\n 'event',\r\n 'event_seat',\r\n 'exit_to_app',\r\n 'explore',\r\n 'explore_off',\r\n 'extension',\r\n 'face',\r\n 'fact_check',\r\n 'favorite',\r\n 'favorite_border',\r\n 'feedback',\r\n 'filter_alt',\r\n 'find_in_page',\r\n 'find_replace',\r\n 'fingerprint',\r\n 'flaky',\r\n 'flight_land',\r\n 'flight_takeoff',\r\n 'flip_to_back',\r\n 'flip_to_front',\r\n 'g_translate',\r\n 'gavel',\r\n 'get_app',\r\n 'gif',\r\n 'grade',\r\n 'grading',\r\n 'group_work',\r\n 'help',\r\n 'help_center',\r\n 'help_outline',\r\n 'highlight_alt',\r\n 'highlight_off',\r\n 'history',\r\n 'history_toggle_off',\r\n 'home',\r\n 'horizontal_split',\r\n 'hourglass_disabled',\r\n 'hourglass_empty',\r\n 'hourglass_full',\r\n 'http',\r\n 'https',\r\n 'important_devices',\r\n 'info',\r\n 'input',\r\n 'integration_instructions',\r\n 'invert_colors',\r\n 'label',\r\n 'label_important',\r\n 'label_off',\r\n 'language',\r\n 'launch',\r\n 'leaderboard',\r\n 'line_style',\r\n 'line_weight',\r\n 'list',\r\n 'lock',\r\n 'lock_open',\r\n 'login',\r\n 'loyalty',\r\n 'markunread_mailbox',\r\n 'maximize',\r\n 'mediation',\r\n 'minimize',\r\n 'model_training',\r\n 'next_plan',\r\n 'not_accessible',\r\n 'not_started',\r\n 'note_add',\r\n 'offline_bolt',\r\n 'offline_pin',\r\n 'online_prediction',\r\n 'opacity',\r\n 'open_in_browser',\r\n 'open_in_full',\r\n 'open_in_new',\r\n 'open_with',\r\n 'outlet',\r\n 'pageview',\r\n 'pan_tool',\r\n 'payment',\r\n 'pending',\r\n 'pending_actions',\r\n 'perm_camera_mic',\r\n 'perm_contact_calendar',\r\n 'perm_data_setting',\r\n 'perm_device_information',\r\n 'perm_identity',\r\n 'perm_media',\r\n 'perm_phone_msg',\r\n 'perm_scan_wifi',\r\n 'pets',\r\n 'picture_in_picture',\r\n 'picture_in_picture_alt',\r\n 'plagiarism',\r\n 'play_for_work',\r\n 'polymer',\r\n 'power_settings_new',\r\n 'pregnant_woman',\r\n 'preview',\r\n 'print',\r\n 'privacy_tip',\r\n 'query_builder',\r\n 'question_answer',\r\n 'quickreply',\r\n 'receipt',\r\n 'record_voice_over',\r\n 'redeem',\r\n 'remove_shopping_cart',\r\n 'reorder',\r\n 'report_problem',\r\n 'restore',\r\n 'restore_from_trash',\r\n 'restore_page',\r\n 'room',\r\n 'rounded_corner',\r\n 'rowing',\r\n 'rule',\r\n 'schedule',\r\n 'search',\r\n 'search_off',\r\n 'settings',\r\n 'settings_applications',\r\n 'settings_backup_restore',\r\n 'settings_bluetooth',\r\n 'settings_brightness',\r\n 'settings_cell',\r\n 'settings_ethernet',\r\n 'settings_input_antenna',\r\n 'settings_input_component',\r\n 'settings_input_composite',\r\n 'settings_input_hdmi',\r\n 'settings_input_svideo',\r\n 'settings_overscan',\r\n 'settings_phone',\r\n 'settings_power',\r\n 'settings_remote',\r\n 'settings_voice',\r\n 'shop',\r\n 'shop_two',\r\n 'shopping_bag',\r\n 'shopping_basket',\r\n 'shopping_cart',\r\n 'smart_button',\r\n 'source',\r\n 'speaker_notes',\r\n 'speaker_notes_off',\r\n 'spellcheck',\r\n 'star_rate',\r\n 'stars',\r\n 'sticky_note_2',\r\n 'store',\r\n 'subject',\r\n 'subtitles_off',\r\n 'supervised_user_circle',\r\n 'supervisor_account',\r\n 'support',\r\n 'swap_horiz',\r\n 'swap_horizontal_circle',\r\n 'swap_vert',\r\n 'swap_vertical_circle',\r\n 'sync_alt',\r\n 'system_update_alt',\r\n 'tab',\r\n 'tab_unselected',\r\n 'table_view',\r\n 'text_rotate_up',\r\n 'text_rotate_vertical',\r\n 'text_rotation_angledown',\r\n 'text_rotation_angleup',\r\n 'text_rotation_down',\r\n 'text_rotation_none',\r\n 'theaters',\r\n 'thumb_down',\r\n 'thumb_up',\r\n 'thumbs_up_down',\r\n 'timeline',\r\n 'toc',\r\n 'today',\r\n 'toll',\r\n 'touch_app',\r\n 'tour',\r\n 'track_changes',\r\n 'translate',\r\n 'trending_down',\r\n 'trending_flat',\r\n 'trending_up',\r\n 'turned_in',\r\n 'turned_in_not',\r\n 'update',\r\n 'upgrade',\r\n 'verified',\r\n 'verified_user',\r\n 'vertical_split',\r\n 'view_agenda',\r\n 'view_array',\r\n 'view_carousel',\r\n 'view_column',\r\n 'view_day',\r\n 'view_headline',\r\n 'view_list',\r\n 'view_module',\r\n 'view_quilt',\r\n 'view_sidebar',\r\n 'view_stream',\r\n 'view_week',\r\n 'visibility',\r\n 'visibility_off',\r\n 'voice_over_off',\r\n 'watch_later',\r\n 'wifi_protected_setup',\r\n 'work',\r\n 'work_off',\r\n 'work_outline',\r\n 'wysiwyg',\r\n 'youtube_searched_for',\r\n 'zoom_in',\r\n 'zoom_out'\r\n ],\r\n 'Alert': [\r\n 'add_alert',\r\n 'auto_delete',\r\n 'error',\r\n 'error_outline',\r\n 'notification_important',\r\n 'warning'\r\n ],\r\n 'Av': [\r\n '4k',\r\n '5g',\r\n 'add_to_queue',\r\n 'airplay',\r\n 'album',\r\n 'art_track',\r\n 'av_timer',\r\n 'branding_watermark',\r\n 'call_to_action',\r\n 'closed_caption',\r\n 'closed_caption_disabled',\r\n 'control_camera',\r\n 'equalizer',\r\n 'explicit',\r\n 'fast_forward',\r\n 'fast_rewind',\r\n 'featured_play_list',\r\n 'featured_video',\r\n 'fiber_dvr',\r\n 'fiber_manual_record',\r\n 'fiber_new',\r\n 'fiber_pin',\r\n 'fiber_smart_record',\r\n 'forward_10',\r\n 'forward_30',\r\n 'forward_5',\r\n 'games',\r\n 'hd',\r\n 'hearing',\r\n 'hearing_disabled',\r\n 'high_quality',\r\n 'library_add',\r\n 'library_add_check',\r\n 'library_books',\r\n 'library_music',\r\n 'loop',\r\n 'mic',\r\n 'mic_none',\r\n 'mic_off',\r\n 'missed_video_call',\r\n 'movie',\r\n 'music_video',\r\n 'new_releases',\r\n 'not_interested',\r\n 'note',\r\n 'pause',\r\n 'pause_circle_filled',\r\n 'pause_circle_outline',\r\n 'play_arrow',\r\n 'play_circle_filled',\r\n 'play_circle_outline',\r\n 'playlist_add',\r\n 'playlist_add_check',\r\n 'playlist_play',\r\n 'queue',\r\n 'queue_music',\r\n 'queue_play_next',\r\n 'radio',\r\n 'recent_actors',\r\n 'remove_from_queue',\r\n 'repeat',\r\n 'repeat_one',\r\n 'replay',\r\n 'replay_10',\r\n 'replay_30',\r\n 'replay_5',\r\n 'shuffle',\r\n 'skip_next',\r\n 'skip_previous',\r\n 'slow_motion_video',\r\n 'snooze',\r\n 'sort_by_alpha',\r\n 'speed',\r\n 'stop',\r\n 'stop_circle',\r\n 'subscriptions',\r\n 'subtitles',\r\n 'surround_sound',\r\n 'video_call',\r\n 'video_label',\r\n 'video_library',\r\n 'video_settings',\r\n 'videocam',\r\n 'videocam_off',\r\n 'volume_down',\r\n 'volume_mute',\r\n 'volume_off',\r\n 'volume_up',\r\n 'web',\r\n 'web_asset'\r\n ],\r\n 'Communication': [\r\n 'add_ic_call',\r\n 'alternate_email',\r\n 'business',\r\n 'call',\r\n 'call_end',\r\n 'call_made',\r\n 'call_merge',\r\n 'call_missed',\r\n 'call_missed_outgoing',\r\n 'call_received',\r\n 'call_split',\r\n 'cancel_presentation',\r\n 'chat',\r\n 'chat_bubble',\r\n 'chat_bubble_outline',\r\n 'clear_all',\r\n 'comment',\r\n 'contact_mail',\r\n 'contact_phone',\r\n 'contacts',\r\n 'desktop_access_disabled',\r\n 'dialer_sip',\r\n 'dialpad',\r\n 'domain_disabled',\r\n 'domain_verification',\r\n 'duo',\r\n 'email',\r\n 'forum',\r\n 'forward_to_inbox',\r\n 'hourglass_bottom',\r\n 'hourglass_top',\r\n 'import_contacts',\r\n 'import_export',\r\n 'invert_colors_off',\r\n 'list_alt',\r\n 'live_help',\r\n 'location_off',\r\n 'location_on',\r\n 'mail_outline',\r\n 'mark_chat_read',\r\n 'mark_chat_unread',\r\n 'mark_email_read',\r\n 'mark_email_unread',\r\n 'message',\r\n 'mobile_screen_share',\r\n 'more_time',\r\n 'nat',\r\n 'no_sim',\r\n 'pause_presentation',\r\n 'person_add_disabled',\r\n 'person_search',\r\n 'phone',\r\n 'phone_disabled',\r\n 'phone_enabled',\r\n 'phonelink_erase',\r\n 'phonelink_lock',\r\n 'phonelink_ring',\r\n 'phonelink_setup',\r\n 'portable_wifi_off',\r\n 'present_to_all',\r\n 'print_disabled',\r\n 'qr_code',\r\n 'qr_code_scanner',\r\n 'read_more',\r\n 'ring_volume',\r\n 'rss_feed',\r\n 'screen_share',\r\n 'sentiment_satisfied_alt',\r\n 'speaker_phone',\r\n 'stay_current_landscape',\r\n 'stay_current_portrait',\r\n 'stay_primary_landscape',\r\n 'stay_primary_portrait',\r\n 'stop_screen_share',\r\n 'swap_calls',\r\n 'textsms',\r\n 'unsubscribe',\r\n 'voicemail',\r\n 'vpn_key',\r\n 'wifi_calling'\r\n ],\r\n 'Content': [\r\n 'add',\r\n 'add_box',\r\n 'add_circle',\r\n 'add_circle_outline',\r\n 'amp_stories',\r\n 'archive',\r\n 'backspace',\r\n 'ballot',\r\n 'biotech',\r\n 'block',\r\n 'calculate',\r\n 'clear',\r\n 'contant_copy',\r\n 'content_cut',\r\n 'content_paste',\r\n 'create',\r\n 'delete_sweep',\r\n 'drafts',\r\n 'dynamic_feed',\r\n 'file_copy',\r\n 'filter_list',\r\n 'flag',\r\n 'font_download',\r\n 'foward',\r\n 'gesture',\r\n 'how_to_reg',\r\n 'how_to_vote',\r\n 'inbox',\r\n 'insights',\r\n 'link',\r\n 'link_off',\r\n 'low_priority',\r\n 'mail',\r\n 'markunread',\r\n 'move_to_inbox',\r\n 'next_week',\r\n 'outlined_flag',\r\n 'policy',\r\n 'push_pin',\r\n 'redo',\r\n 'remove',\r\n 'remove_circle',\r\n 'remove_circle_outline',\r\n 'reply',\r\n 'reply_all',\r\n 'report',\r\n 'report_off',\r\n 'save',\r\n 'save_alt',\r\n 'select_all',\r\n 'send',\r\n 'sort',\r\n 'square_foot',\r\n 'text_format',\r\n 'unarchive',\r\n 'undo',\r\n 'waves',\r\n 'weekend',\r\n 'where_to_vote'\r\n ],\r\n 'Device': [\r\n 'access_alarm',\r\n 'access_time',\r\n 'ad_units',\r\n 'add_alarm',\r\n 'add_to_home_screen',\r\n 'airplanemode_active',\r\n 'airplanemode_inactive',\r\n 'battery_alert',\r\n 'battery_charging_full',\r\n 'battery_full',\r\n 'battery_std',\r\n 'battery_unknown',\r\n 'bluetooth',\r\n 'bluetooth_connected',\r\n 'bluetooth_disabled',\r\n 'bluetooth_searching',\r\n 'brightness_auto',\r\n 'brightness_high',\r\n 'brightness_low',\r\n 'brightness_medium',\r\n 'data_usage',\r\n 'developer_mode',\r\n 'devices',\r\n 'dvr',\r\n 'gps_fixed',\r\n 'gps_not_fixed',\r\n 'gps_off',\r\n 'graphic_eq',\r\n 'location_disabled',\r\n 'location_searching',\r\n 'mobile_friendly',\r\n 'mobile_off',\r\n 'nfc',\r\n 'screen_lock_landscape',\r\n 'screen_lock_portrait',\r\n 'screen_lock_rotation',\r\n 'screen_rotation',\r\n 'sd_storage',\r\n 'settings_system_daydream',\r\n 'signal_cellular_4_bar',\r\n 'signal_cellular_alt',\r\n 'signal_cellular_connected_no_internet_4_bar',\r\n 'signal_cellular_no_sim',\r\n 'signal_cellular_null',\r\n 'signal_cellular_off',\r\n 'signal_wifi_4_bar',\r\n 'signal_wifi_4_bar_lock',\r\n 'signal_wifi_off',\r\n 'storage',\r\n 'usb',\r\n 'wallpaper',\r\n 'widgets',\r\n 'wifi_lock',\r\n 'wifi_tethering',\r\n ],\r\n 'Editor': [\r\n 'add_comment',\r\n 'attach_file',\r\n 'attach_money',\r\n 'bar_chart',\r\n 'border_all',\r\n 'border_bottom',\r\n 'border_clear',\r\n 'border_horizontal',\r\n 'border_inner',\r\n 'border_left',\r\n 'border_outer',\r\n 'border_right',\r\n 'border_style',\r\n 'border_top',\r\n 'border_vertical',\r\n 'bubble_chart',\r\n 'drag_handle',\r\n 'format_align_center',\r\n 'format_align_justify',\r\n 'format_align_left',\r\n 'format_align_right',\r\n 'format_bold',\r\n 'format_clear',\r\n 'format_color_reset',\r\n 'format_indent_decrease',\r\n 'format_indent_increase',\r\n 'format_italic',\r\n 'format_line_spacing',\r\n 'format_list_bulleted',\r\n 'format_list_numbered',\r\n 'format_list_numbered_rtl',\r\n 'format_paint',\r\n 'format_quote',\r\n 'format_shapes',\r\n 'format_size',\r\n 'format_strikethrough',\r\n 'format_textdirection_l_to_r',\r\n 'format_textdirection_r_to_l',\r\n 'format_underlined',\r\n 'functions',\r\n 'height',\r\n 'highlight',\r\n 'horizontal_rule',\r\n 'insert_chart',\r\n 'insert_chart_outlined',\r\n 'insert_comment',\r\n 'insert_drive_file',\r\n 'insert_emoticon',\r\n 'insert_invitation',\r\n 'insert_link',\r\n 'insert_photo',\r\n 'linear_scale',\r\n 'merge_type',\r\n 'mode_comment',\r\n 'monetization_on',\r\n 'money_off',\r\n 'multiline_chart',\r\n 'notes',\r\n 'pie_chart',\r\n 'post_add',\r\n 'publish',\r\n 'scatter_plot',\r\n 'score',\r\n 'short_text',\r\n 'show_chart',\r\n 'space_bar',\r\n 'strikethrough_s',\r\n 'subscript',\r\n 'superscript',\r\n 'table_chart',\r\n 'table_rows',\r\n 'text_fields',\r\n 'title',\r\n 'vertical_align_bottom',\r\n 'vertical_align_center',\r\n 'vertical_align_top',\r\n 'wrap_text'\r\n ],\r\n 'File': [\r\n 'attach_email',\r\n 'attachment',\r\n 'cloud',\r\n 'cloud_circle',\r\n 'cloud_done',\r\n 'cloud_download',\r\n 'cloud_off',\r\n 'cloud_quere',\r\n 'cloud_upload',\r\n 'create_new_folder',\r\n 'folder',\r\n 'folder_open',\r\n 'folder_shared',\r\n 'request_quote',\r\n 'rule_folder',\r\n 'snippet_folder',\r\n 'text_snippet',\r\n 'topic'\r\n ],\r\n 'Hardware': [\r\n 'browser_not_supported',\r\n 'cast',\r\n 'cast_connected',\r\n 'cast_for_education',\r\n 'computer',\r\n 'desktop_mac',\r\n 'desktop_windows',\r\n 'developer_board',\r\n 'device_hub',\r\n 'device_unknown',\r\n 'devices_other',\r\n 'dock',\r\n 'gamepad',\r\n 'headset',\r\n 'headset_mic',\r\n 'keyboard',\r\n 'keyboard_arrow_down',\r\n 'keyboard_arrow_left',\r\n 'keyboard_arrow_right',\r\n 'keyboard_arrow_up',\r\n 'keyboard_backspace',\r\n 'keyboard_capslock',\r\n 'keyboard_hide',\r\n 'keyboard_return',\r\n 'keyboard_tab',\r\n 'keyboard_voice',\r\n 'laptop',\r\n 'laptop_chromebook',\r\n 'laptop_mac',\r\n 'laptop_windows',\r\n 'memory',\r\n 'mouse',\r\n 'phone_android',\r\n 'phone_iphone',\r\n 'phonelink',\r\n 'phonelink_off',\r\n 'point_of_sale',\r\n 'power_input',\r\n 'router',\r\n 'scanner',\r\n 'security',\r\n 'sim_card',\r\n 'smartphone',\r\n 'speaker',\r\n 'speaker_group',\r\n 'tablet',\r\n 'tablet_android',\r\n 'tablet_mac',\r\n 'toys',\r\n 'tv',\r\n 'videogame_asset',\r\n 'watch'\r\n ],\r\n 'Home': [\r\n 'sensor_door',\r\n 'sensor_window'\r\n ],\r\n 'Image': [\r\n 'add_a_photo',\r\n 'add_photo_alternate',\r\n 'add_to_photos',\r\n 'adjust',\r\n 'assistant',\r\n 'assistant_photo',\r\n 'audiotrack',\r\n 'bedtime',\r\n 'blur_circular',\r\n 'blur_linear',\r\n 'blur_off',\r\n 'blur_on',\r\n 'brightness_1',\r\n 'brightness_2',\r\n 'brightness_3',\r\n 'brightness_4',\r\n 'brightness_5',\r\n 'brightness_6',\r\n 'brightness_7',\r\n 'broken_image',\r\n 'brush',\r\n 'burst_mode',\r\n 'camera',\r\n 'camera_alt',\r\n 'camera_front',\r\n 'camera_rear',\r\n 'camera_roll',\r\n 'center_focus_strong',\r\n 'center_focus_weak',\r\n 'collections',\r\n 'collections_bookmark',\r\n 'color_lens',\r\n 'colorize',\r\n 'compare',\r\n 'control_point',\r\n 'control_point_duplicate',\r\n 'crop',\r\n 'crop_16_9',\r\n 'crop_3_2',\r\n 'crop_5_4',\r\n 'crop_7_5',\r\n 'crop_din',\r\n 'crop_free',\r\n 'crop_landscape',\r\n 'crop_original',\r\n 'crop_portrait',\r\n 'crop_rotate',\r\n 'crop_square',\r\n 'dehaze',\r\n 'details',\r\n 'edit',\r\n 'euro',\r\n 'exposure',\r\n 'exposure_neg_1',\r\n 'exposure_neg_2',\r\n 'exposure_plus_1',\r\n 'exposure_plus_2',\r\n 'exposure_zero',\r\n 'filter',\r\n 'filter_1',\r\n 'filter_2',\r\n 'filter_3',\r\n 'filter_4',\r\n 'filter_5',\r\n 'filter_6',\r\n 'filter_7',\r\n 'filter_8',\r\n 'filter_9',\r\n 'filter_9_plus',\r\n 'filter_b_and_w',\r\n 'filter_center_focus',\r\n 'filter_drama',\r\n 'filter_frames',\r\n 'filter_hdr',\r\n 'filter_none',\r\n 'filter_tilt_shift',\r\n 'filter_vintage',\r\n 'flare',\r\n 'flash_auto',\r\n 'flash_off',\r\n 'flash_on',\r\n 'flip',\r\n 'flip_camera_android',\r\n 'flip_camera_ios',\r\n 'gradient',\r\n 'grain',\r\n 'grid_off',\r\n 'grid_on',\r\n 'hdr_off',\r\n 'hdr_on',\r\n 'hdr_strong',\r\n 'hdr_weak',\r\n 'healing',\r\n 'image',\r\n 'image_aspect_ratio',\r\n 'image_not_supported',\r\n 'image_search',\r\n 'iso',\r\n 'landscape',\r\n 'leak_add',\r\n 'leak_remove',\r\n 'lens',\r\n 'linked_camera',\r\n 'looks',\r\n 'looks_3',\r\n 'looks_4',\r\n 'looks_5',\r\n 'looks_6',\r\n 'looks_one',\r\n 'looks_two',\r\n 'loupe',\r\n 'monochrome_photos',\r\n 'motion_photos_on',\r\n 'motion_photos_paused',\r\n 'movie_creation',\r\n 'movie_filter',\r\n 'music_note',\r\n 'music_off',\r\n 'nature',\r\n 'nature_people',\r\n 'navigate_before',\r\n 'navigate_next',\r\n 'palette',\r\n 'panorama',\r\n 'panorama_fish_eye',\r\n 'panorama_horizontal',\r\n 'panorama_vertical',\r\n 'panorama_wide_angle',\r\n 'photo',\r\n 'photo_album',\r\n 'photo_camera',\r\n 'photo_filter',\r\n 'photo_library',\r\n 'photo_size_select_actual',\r\n 'photo_size_select_large',\r\n 'photo_size_select_small',\r\n 'picture_as_pdf',\r\n 'portrait',\r\n 'receipt_long',\r\n 'remove_red_eye',\r\n 'rotate_90_degrees_ccw',\r\n 'rotate_left',\r\n 'rotate_right',\r\n 'shutter_speed',\r\n 'slideshow',\r\n 'straighten',\r\n 'style',\r\n 'switch_camera',\r\n 'switch_video',\r\n 'tag_faces',\r\n 'texture',\r\n 'timelapse',\r\n 'timer',\r\n 'timer_10',\r\n 'timer_3',\r\n 'timer_off',\r\n 'tonality',\r\n 'transform',\r\n 'tune',\r\n 'view_comfy',\r\n 'view_compact',\r\n 'vignette',\r\n 'wb_auto',\r\n 'wb_cloudy',\r\n 'wb_incandescent',\r\n 'wb_iridescent',\r\n 'wb_sunny'\r\n ],\r\n 'Maps': [\r\n '360',\r\n 'add_business',\r\n 'add_location',\r\n 'add_location_alt',\r\n 'add_road',\r\n 'agriculture',\r\n 'alt_route',\r\n 'atm',\r\n 'beenhere',\r\n 'bike_scooter',\r\n 'category',\r\n 'cleaning_services',\r\n 'compass_calibration',\r\n 'departure_board',\r\n 'design_services',\r\n 'directions',\r\n 'directions_bike',\r\n 'directions_boat',\r\n 'directions_bus',\r\n 'directions_car',\r\n 'directions_railway',\r\n 'directions_run',\r\n 'directions_subway',\r\n 'directions_transit',\r\n 'directions_walk',\r\n 'edit_attributes',\r\n 'edit_location',\r\n 'edit_road',\r\n 'electric_bike',\r\n 'electric_car',\r\n 'electric_moped',\r\n 'electric_scooter',\r\n 'electrical_services',\r\n 'ev_station',\r\n 'fastfood',\r\n 'flight',\r\n 'handyman',\r\n 'home_repair_service',\r\n 'hotel',\r\n 'hvac',\r\n 'layers',\r\n 'layers_clear',\r\n 'local_activity',\r\n 'local_airport',\r\n 'local_atm',\r\n 'local_bar',\r\n 'local_cafe',\r\n 'local_car_wash',\r\n 'local_convenience_store',\r\n 'local_dining',\r\n 'local_drink',\r\n 'local_fire_department',\r\n 'local_florist',\r\n 'local_gas_station',\r\n 'local_grocery_store',\r\n 'local_hospital',\r\n 'local_hotel',\r\n 'local_laundry_service',\r\n 'local_library',\r\n 'local_mall',\r\n 'local_movies',\r\n 'local_offer',\r\n 'local_parking',\r\n 'local_pharmacy',\r\n 'local_phone',\r\n 'local_pizza',\r\n 'local_play',\r\n 'local_police',\r\n 'local_post_office',\r\n 'local_printshop',\r\n 'local_see',\r\n 'local_shipping',\r\n 'local_taxi',\r\n 'map',\r\n 'maps_ugc',\r\n 'medical_services',\r\n 'menu_book',\r\n 'miscellaneous_services',\r\n 'money',\r\n 'moped',\r\n 'multiple_stop',\r\n 'museum',\r\n 'my_location',\r\n 'navigation',\r\n 'near_me',\r\n 'near_me_disabled',\r\n 'no_meals',\r\n 'no_transfer',\r\n 'not_listed_location',\r\n 'pedal_bike',\r\n 'person_pin',\r\n 'person_pin_circle',\r\n 'pest_control',\r\n 'pest_control_rodent',\r\n 'pin_drop',\r\n 'place',\r\n 'plumbing',\r\n 'rate_review',\r\n 'restaurant',\r\n 'restaurant_menu',\r\n 'run_circle',\r\n 'satellite',\r\n 'set_meal',\r\n 'store_mall_directory',\r\n 'streetview',\r\n 'subway',\r\n 'terrain',\r\n 'traffic',\r\n 'train',\r\n 'tram',\r\n 'transfer_within_a_station',\r\n 'transit_enterexit',\r\n 'trip_origin',\r\n 'two_wheeler',\r\n 'wine_bar',\r\n 'wrong_location',\r\n 'zoom_out_map'\r\n ],\r\n 'Navigation': [\r\n 'app_settings_alt',\r\n 'apps',\r\n 'arrow_back',\r\n 'arrow_back_ios',\r\n 'arrow_downward',\r\n 'arrow_drop_down',\r\n 'arrow_drop_down_circle',\r\n 'arrow_drop_up',\r\n 'arrow_forward',\r\n 'arrow_forward_ios',\r\n 'arrow_left',\r\n 'arrow_right',\r\n 'arrow_upward',\r\n 'campaign',\r\n 'cancel',\r\n 'check',\r\n 'chevron_left',\r\n 'chevron_right',\r\n 'close',\r\n 'double_arrow',\r\n 'east',\r\n 'expand_less',\r\n 'expand_more',\r\n 'first_page',\r\n 'fullscreen',\r\n 'fullscreen_exit',\r\n 'home_work',\r\n 'last_page',\r\n 'legend_toggle',\r\n 'menu',\r\n 'menu_open',\r\n 'more_horiz',\r\n 'more_vert',\r\n 'north',\r\n 'north_east',\r\n 'north_west',\r\n 'payments',\r\n 'refresh',\r\n 'south',\r\n 'south_east',\r\n 'south_west',\r\n 'subdirectory_arrow_left',\r\n 'subdirectory_arrow_right',\r\n 'switch_left',\r\n 'switch_right',\r\n 'unfold_less',\r\n 'unfold_more',\r\n 'west'\r\n ],\r\n 'Notification': [\r\n 'account_tree',\r\n 'adb',\r\n 'airline_seat_flat',\r\n 'airline_seat_flat_angled',\r\n 'airline_seat_individual_suite',\r\n 'airline_seat_legroom_extra',\r\n 'airline_seat_legroom_normal',\r\n 'airline_seat_legroom_reduced',\r\n 'airline_seat_recline_extra',\r\n 'airline_seat_recline_normal',\r\n 'bluetooth_audio',\r\n 'confirmation_number',\r\n 'directions_off',\r\n 'disc_full',\r\n 'drive_eta',\r\n 'enhanced_encryption',\r\n 'event_available',\r\n 'event_busy',\r\n 'event_note',\r\n 'folder_special',\r\n 'live_tv',\r\n 'mms',\r\n 'more',\r\n 'network_check',\r\n 'network_locked',\r\n 'no_encryption',\r\n 'ondemand_video',\r\n 'personal_video',\r\n 'phone_bluetooth_speaker',\r\n 'phone_callback',\r\n 'phone_forwarded',\r\n 'phone_in_talk',\r\n 'phone_locked',\r\n 'phone_missed',\r\n 'phone_paused',\r\n 'power',\r\n 'power_off',\r\n 'priority_high',\r\n 'sd_card',\r\n 'sms',\r\n 'sms_failed',\r\n 'support_agent',\r\n 'sync',\r\n 'sync_disabled',\r\n 'sync_problem',\r\n 'system_update',\r\n 'tap_and_play',\r\n 'time_to_leave',\r\n 'tv_off',\r\n 'vibration',\r\n 'voice_chat',\r\n 'vpn_lock',\r\n 'wc',\r\n 'wifi',\r\n 'wifi_off',\r\n ],\r\n 'Places': [\r\n 'ac_unit',\r\n 'airport_shuttle',\r\n 'all_inclusive',\r\n 'apartment',\r\n 'baby_changing_station',\r\n 'backpack',\r\n 'bathtub',\r\n 'beach_access',\r\n 'bento',\r\n 'business_center',\r\n 'carpenter',\r\n 'casino',\r\n 'charging_station',\r\n 'checkroom',\r\n 'child_care',\r\n 'child_friendly',\r\n 'corporate_fare',\r\n 'countertops',\r\n 'do_not_step',\r\n 'do_not_touch',\r\n 'dry',\r\n 'elevator',\r\n 'escalator',\r\n 'escalator_warning',\r\n 'family_restroom',\r\n 'fence',\r\n 'fire_extinguisher',\r\n 'fitness_center',\r\n 'food_bank',\r\n 'foundation',\r\n 'free_breakfast',\r\n 'golf_course',\r\n 'grass',\r\n 'hot_tub',\r\n 'house',\r\n 'house_siding',\r\n 'kitchen',\r\n 'meeting_room',\r\n 'microwave',\r\n 'night_shelter',\r\n 'no_cell',\r\n 'no_drinks',\r\n 'no_flash',\r\n 'no_food',\r\n 'no_meeting_room',\r\n 'no_photography',\r\n 'no_stroller',\r\n 'pool',\r\n 'rice_bowl',\r\n 'roofing',\r\n 'room_preferences',\r\n 'room_service',\r\n 'rv_hookup',\r\n 'smoke_free',\r\n 'smoking_rooms',\r\n 'soap',\r\n 'spa',\r\n 'sports_bar',\r\n 'stairs',\r\n 'storefront',\r\n 'stroller',\r\n 'tapas',\r\n 'tty',\r\n 'umbrella',\r\n 'wash',\r\n 'water_damage',\r\n 'wheelchair_pickup'\r\n ],\r\n 'Social': [\r\n '6_ft_apart',\r\n 'architecture',\r\n 'book_online',\r\n 'cake',\r\n 'clean_hands',\r\n 'connect_without_contact',\r\n 'construction',\r\n 'coronavirus',\r\n 'deck',\r\n 'domain',\r\n 'elderly',\r\n 'emoji_emotions',\r\n 'emoji_events',\r\n 'emoji_flags',\r\n 'emoji_food_beverage',\r\n 'emoji_nature',\r\n 'emoji_objects',\r\n 'emoji_people',\r\n 'emoji_symbols',\r\n 'emoji_transportation',\r\n 'engineering',\r\n 'fireplace',\r\n 'follow_the_signs',\r\n 'group',\r\n 'group_add',\r\n 'history_edu',\r\n 'king_bed',\r\n 'leave_bags_at_home',\r\n 'location_city',\r\n 'masks',\r\n 'military_tech',\r\n 'mood',\r\n 'mood_bad',\r\n 'nights_stay',\r\n 'notifications',\r\n 'notifications_active',\r\n 'notifications_none',\r\n 'notifications_off',\r\n 'notifications_paused',\r\n 'outdoor_grill',\r\n 'pages',\r\n 'party_mode',\r\n 'people',\r\n 'people_alt',\r\n 'people_outline',\r\n 'person',\r\n 'person_add',\r\n 'person_add_alt_1',\r\n 'person_outline',\r\n 'person_remove',\r\n 'plus_one',\r\n 'poll',\r\n 'psychology',\r\n 'public',\r\n 'public_off',\r\n 'reduce_capacity',\r\n 'sanitizer',\r\n 'school',\r\n 'science',\r\n 'self_improvement',\r\n 'sentiment_dissatisfied',\r\n 'sentiment_satisfied',\r\n 'sentiment_very_dissatisfied',\r\n 'sentiment_very_satisfied',\r\n 'share',\r\n 'sick',\r\n 'single_bed',\r\n 'sports',\r\n 'sports_baseball',\r\n 'sports_basketball',\r\n 'sports_cricket',\r\n 'sports_esports',\r\n 'sports_football',\r\n 'sports_golf',\r\n 'sports_handball',\r\n 'sports_hockey',\r\n 'sports_kabaddi',\r\n 'sports_mma',\r\n 'sports_motorsports',\r\n 'sports_rugby',\r\n 'sports_soccer',\r\n 'sports_tennis',\r\n 'sports_volleyball',\r\n 'thumb_down_alt',\r\n 'thumb_up_alt',\r\n 'whatshot'\r\n ],\r\n 'Toggle': [\r\n 'check_box',\r\n 'check_box_outline_blank',\r\n 'indeterminate_check_box',\r\n 'radio_button_checked',\r\n 'radio_button_unchecked',\r\n 'star',\r\n 'star_border',\r\n 'star_half',\r\n 'star_outline',\r\n 'toggle_off',\r\n 'toggle_on'\r\n ]\r\n}","import React from \"react\";\r\nimport { SketchPicker } from \"react-color\";\r\n\r\n//@MATERIAL\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n textColor,\r\n} from \"functions/\";\r\n\r\nimport api from \"api/\";\r\n\r\nfunction Comp(props) {\r\n const [open, setOpen] = React.useState(false);\r\n const [color, setColor] = React.useState(props.color ? props.color : \"rgba(200,200,200,1)\")\r\n\r\n const anchorRef = React.useRef(null)\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n if (props.onClose)\r\n props.onClose()\r\n };\r\n\r\n const saveColor = async (color) => {\r\n if (props.onChange)\r\n props.onChange(color)\r\n setOpen(!open)\r\n\r\n if (props._id)\r\n await api.put(\"node/update\", {\r\n _id: props._id,\r\n color: color\r\n })\r\n }\r\n\r\n return (\r\n <div className={\"cardColorPicker\"} style={{\r\n ...props.style ? props.style : {},\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }}\r\n onDrag={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n onDragStart={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n onDragEnter={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n onDragCapture={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n onDragEnterCapture={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n onDragOver={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n >\r\n {props.children ?\r\n <div\r\n ref={anchorRef}\r\n style={{\r\n margin: 3,\r\n cursor: 'pointer',\r\n }}\r\n onClick={(e) => {\r\n setOpen(op => !op)\r\n // e.preventDefault()\r\n // e.stopPropagation()\r\n }}\r\n >\r\n <div\r\n onClick={(e) => {\r\n // e.preventDefault()\r\n // e.stopPropagation()\r\n }}\r\n >\r\n {props.children}\r\n </div>\r\n </div>\r\n :\r\n <div\r\n ref={anchorRef}\r\n style={{\r\n ...props.label ? {\r\n borderRadius: 7,\r\n padding: 7,\r\n color: color ? textColor(color, true) : '#FFFFFF',\r\n fontSize: 12\r\n } : {\r\n width: props.size ? props.size : 21,\r\n height: props.size ? props.size : 21,\r\n },\r\n margin: 3,\r\n backgroundColor: color,\r\n borderRadius: props.size ? props.size : 21,\r\n cursor: 'pointer',\r\n }}\r\n onClick={() => {\r\n setOpen(op => !op)\r\n }}\r\n >\r\n {props.label ? props.label : ``}\r\n </div>\r\n }\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n role={undefined}\r\n transition\r\n disablePortal={props.disablePortal ? true : false}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin: 'right center',\r\n }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <div style={{\r\n position: \"relative\",\r\n backgroundColor: \"#FFFFFF\",\r\n boxShadow: \"0px 0px 10px 5px rgba(0,0,0,0.17)\",\r\n borderRadius: 7,\r\n }} onClick={(e) => {\r\n e.stopPropagation()\r\n }}>\r\n <div style={{ position: \"relative\", width: \"100%\", display: \"flex\", marginTop: \"-5px\", justifyContent: \"end\" }}>\r\n <CustomButton\r\n title={translate(\"$__cancel\", 1)}\r\n color={'lightgrey'}\r\n icon={'close'}\r\n onClick={() => {\r\n setColor(props.color ? props.color : 'rgba(200,200,200,1)')\r\n setOpen(!open)\r\n }}\r\n size={'30px'}\r\n />\r\n {props.color ?\r\n <CustomButton\r\n title={translate(\"$__removeColor\", 1)}\r\n color={'red'}\r\n icon={'format_color_reset'}\r\n onClick={() => { saveColor(null) }}\r\n size={'30px'}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <CustomButton\r\n title={translate(\"$__saveColor\", 1)}\r\n color={'green'}\r\n icon={'save'}\r\n onClick={() => { saveColor(color) }}\r\n size={'30px'}\r\n />\r\n </div>\r\n <SketchPicker\r\n color={color}\r\n onChange={(newColor, event) => {\r\n setColor(`rgba(${newColor.rgb.r}, ${newColor.rgb.g}, ${newColor.rgb.b}, ${newColor.rgb.a})`)\r\n event.stopPropagation()\r\n }}\r\n disableAlpha\r\n />\r\n <div style={{ clear: 'both' }}></div>\r\n </div>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </div>\r\n )\r\n}\r\nexport default Comp;\r\n","import React from \"react\"\r\nimport Chartist from \"chartist\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\nimport KpiDescription from \"components/KPI/dataSave\"\r\nimport SelectUsers from \"components/User/select\"\r\nimport TextField from \"components/TextField\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\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\r\n//FUNCTIONS\r\nimport { translate, customApp, appAlert, formatNumber } from \"functions/\"\r\nimport { kpiTimerStart, kpiTimerStop } from \"functions/cards\"\r\n\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/KPI_change.js\"\r\n\r\nimport {\r\n model\r\n} from \"variables/charts\"\r\nimport \"assets/css/components/chart.css\"\r\nimport ErrorBoundary from \"components/ErrorBoundary\"\r\n\r\nrequire(\"chartist-plugin-tooltips\")\r\n\r\nconst TimerComponent = (props) => {\r\n const { classes } = props\r\n const { db, session } = reduxStore.getState()\r\n const { cards } = db\r\n const [reqSave, setReqSave] = React.useState(false)\r\n const [started, setStart] = React.useState(false)\r\n const [timer, setTimer] = React.useState({})\r\n const { data } = props\r\n const [cardsWithKpi, setCardsWithKpi] = React.useState([])\r\n const [startDate, setStartDate] = React.useState(moment(new Date()).tz('America/Sao_Paulo').format('YYYY-MM-DDT06:00'))\r\n const [endDate, setEndDate] = React.useState(moment(new Date()).tz('America/Sao_Paulo').format('YYYY-MM-DDT07:00'))\r\n const [manualTime, setManualTime] = React.useState(false)\r\n const [manualMinuteEntry, setManualMinuteEntry] = React.useState(0)\r\n const [manualHourEntry, setManualHourEntry] = React.useState(1)\r\n\r\n const mounted = React.useRef(true)\r\n\r\n let timerFunction\r\n let kpi_ini = data.kpi_type === \"time\" && data.kpi_ini ? parseFloat(data.kpi_ini) : 0\r\n let kpi_fin = data.kpi_type === \"time\" && data.kpi_fin ? parseFloat(data.kpi_fin) : 0\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n\r\n React.useEffect(() => {\r\n if (timerFunction) clearTimeout(timerFunction)\r\n verifyTimer()\r\n childrenCards(props.data._id)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [started])\r\n\r\n\r\n React.useEffect(() => {\r\n if (timerFunction) clearTimeout(timerFunction)\r\n verifyTimer()\r\n childrenCards(props.data._id)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [JSON.stringify(props.card[props.data._id])])\r\n\r\n //Filter all Children Cards with KPI = kpi_useParent\r\n let kpiCards = [props.data._id]\r\n const childrenCards = (cardId, children) => {\r\n let chields = Object.keys(cards)\r\n .filter(a => cards[a].kpi_useParent && cards[a]._parent === cardId)\r\n if (chields.length > 0) {\r\n chields.forEach(a => {\r\n childrenCards(a, true)\r\n kpiCards.push(a)\r\n setCardsWithKpi(Array.from(new Set(kpiCards)))\r\n })\r\n } else if (!children) {\r\n setCardsWithKpi(kpiCards)\r\n }\r\n return chields\r\n }\r\n const verifyTimer = () => {\r\n // TIMER NÃO ESTÁ ATUALIZANDO QUANDO DA PLAY OU STOP DENTRO DO CARD\r\n let newData = { ...reduxStore.getState().db.cards[props.data._id] }\r\n if (newData && newData._kpiTimer && Object.keys(newData._kpiTimer).filter(a => newData._kpiTimer[a].userId === session._id).length > 0) {\r\n let timer = { ...newData._kpiTimer[Object.keys(newData._kpiTimer).filter(a => newData._kpiTimer[a].userId === session._id)[0]] }\r\n timer.diff = moment().tz('America/Sao_Paulo').unix('x') - timer.created_at\r\n if (timer && timer.updated_at)\r\n timer.diff = parseInt(timer.updated_at) - parseInt(timer.created_at)\r\n calcTimer(timer, timer.updated_at ? true : false)\r\n } else {\r\n setReqSave(false)\r\n setTimer({})\r\n setStart(false)\r\n }\r\n if (Object.keys(timer).length === 0 && props.manualAdd) {\r\n setTimer({\r\n created_at: moment(startDate).tz('America/Sao_Paulo').unix('X'),\r\n updated_at: moment(endDate).tz('America/Sao_Paulo').unix('X')\r\n })\r\n calcTimer({\r\n created_at: moment(startDate).tz('America/Sao_Paulo').unix('X'),\r\n updated_at: moment(endDate).tz('America/Sao_Paulo').unix('X')\r\n }, timer.updated_at ? true : false)\r\n }\r\n }\r\n\r\n const calcTimer = (d, kill, ignoreManual = false) => {\r\n\r\n let newData = { ...d }\r\n let iniTimer = false\r\n\r\n let diff\r\n\r\n\r\n if (newData.diff) {\r\n diff = parseInt(newData.diff)\r\n } else {\r\n diff = parseInt(d.updated_at - d.created_at)\r\n if (d.updated_at - d.created_at < 0)\r\n diff = null\r\n }\r\n if (!diff && !manualTime) {\r\n newData.diffText = translate(\"$__theEndMustBeGreaterThanTheBeginning\")\r\n } else if (diff < 60) {\r\n newData.diffText = `${newData.diff} ${translate('$__seconds', 1)}`\r\n if (!ignoreManual)\r\n setManualHourEntry(0)\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 if (minutes < 60) {\r\n } else {\r\n\r\n }\r\n let seconds = diff > 0 ? diff : 0\r\n newData.diffText = `${hours} hora${hours > 1 ? 's' : ''} ${minutes} ${translate('$__minutes', 1)} ${seconds} ${translate('$__seconds', 1)}`\r\n if (!ignoreManual) {\r\n setManualHourEntry(hours)\r\n setManualMinuteEntry(minutes)\r\n }\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 newData.diffText = `${minutes} ${translate('$__minutes', 1)} ${seconds} ${translate('$__seconds', 1)}`\r\n if (!ignoreManual) {\r\n setManualHourEntry(0)\r\n setManualMinuteEntry(minutes)\r\n }\r\n }\r\n setTimer({ ...timer, ...newData })\r\n\r\n if (d.updated_at) {\r\n newData.diff = parseInt(d.updated_at) - parseInt(d.created_at)\r\n if (!reqSave) setReqSave(true)\r\n } else {\r\n newData.diff = moment().tz('America/Sao_Paulo').unix('x') - parseInt(d.created_at)\r\n if (!started) {\r\n setStart(true)\r\n iniTimer = true\r\n }\r\n }\r\n\r\n if (!kill && !d.updated_at && iniTimer) {\r\n timerFunction = setTimeout(() => { verifyTimer() }, 1000)\r\n }\r\n }\r\n\r\n if (!data)\r\n return (null)\r\n\r\n const startTimer = async () => {\r\n const response = await kpiTimerStart(props, data._id)\r\n if (response) {\r\n console.log(response)\r\n calcTimer(response)\r\n setStart(true)\r\n }\r\n }\r\n const stopTimer = async () => {\r\n setStart(false)\r\n const response = await kpiTimerStop(props, data._id)\r\n if (response) {\r\n setTimer({\r\n ...timer,\r\n ...response\r\n })\r\n }\r\n }\r\n\r\n let kpiChart = {\r\n ...model\r\n }\r\n\r\n let series = []\r\n let labels = []\r\n\r\n let kpi_flow = {}\r\n cardsWithKpi.forEach(a => {\r\n kpi_flow = {\r\n ...kpi_flow,\r\n ...db.cards[a]._timeline || {}\r\n }\r\n })\r\n\r\n\r\n kpi_flow = Object.keys(kpi_flow).filter(a => kpi_flow[a].type === 'kpi').map(a => kpi_flow[a])\r\n\r\n let kpi_total = data.kpi_type !== 'time' ? parseFloat(kpi_ini) : 0\r\n let percent100 = parseFloat(kpi_ini) - parseFloat(kpi_fin)\r\n if (percent100 < 0) percent100 = percent100 * -1\r\n\r\n if (kpi_flow && Object.keys(kpi_flow).length > 0) {\r\n Object.keys(kpi_flow).sort((a, b) => {\r\n if (kpi_flow[a].created_at < kpi_flow[b].created_at)\r\n return -1\r\n return 1\r\n }).forEach((a, i) => {\r\n kpi_total = parseFloat(kpi_total) + parseFloat(kpi_flow[a].value)\r\n series.push({\r\n meta: kpi_flow[a].value,\r\n total: kpi_total,\r\n value: parseFloat(kpi_ini) > parseFloat(kpi_fin) ? 100 - Math.floor((kpi_total * 100) / percent100) : Math.floor((kpi_total * 100) / percent100)\r\n })\r\n labels.push(i + 1)\r\n if (i + 1 === Object.keys(kpi_flow).length)\r\n kpiChart = {\r\n ...kpiChart,\r\n data: {\r\n labels: labels,\r\n series: [[...series]]\r\n },\r\n options: {\r\n //fullWidth: true,\r\n ...kpiChart.options,\r\n low: 0,\r\n high: 100,\r\n plugins: [Chartist.plugins.tooltip({\r\n tooltipFnc: function (meta, value) {\r\n return (\r\n `${meta > 0 ? '+' : ''}` +\r\n formatNumber(meta, data.kpi_type === 'time' ? 'number' : data.kpi_type) + '<br>' + formatNumber(value, 'percent')\r\n )\r\n }\r\n })],\r\n axisX: {\r\n showGrid: false,\r\n },\r\n axisY: {\r\n showGrid: false,\r\n },\r\n onlyInteger: true,\r\n },\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n let sumKpi = kpi_ini < kpi_fin ? kpi_fin - kpi_ini : kpi_ini - kpi_fin\r\n\r\n\r\n if (kpi_flow && Object.keys(kpi_flow).length > 0) {\r\n Object.keys(kpi_flow).forEach(a => {\r\n sumKpi = parseFloat(sumKpi) + parseFloat(kpi_flow[a].value)\r\n })\r\n }\r\n\r\n\r\n let percentKpi = Math.ceil(kpi_ini < kpi_fin ? kpi_fin - kpi_ini : kpi_ini - kpi_fin)\r\n percentKpi = ((Math.ceil(sumKpi) * 100) / percentKpi) - 100\r\n if (percentKpi < 0)\r\n percentKpi = percentKpi * -1\r\n\r\n\r\n if (!props.data)\r\n return (<div>NO DATA RECEIVED</div>)\r\n\r\n return (\r\n <div className={classes.root}>\r\n <fieldset>\r\n <legend\r\n style={\r\n {\r\n color: customApp('color')\r\n }\r\n }>\r\n {!props.manualAdd ? translate('$__timer', 1) : translate('$__timerLog', 1)}\r\n </legend>\r\n {props.manualAdd &&\r\n <React.Fragment>\r\n {!manualTime ?\r\n <React.Fragment>\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='schedule' />\r\n <TextField\r\n label={translate('$__initialDate', 1)}\r\n variant={customApp('fieldVariant', 1)}\r\n name=\"startDate\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='datetime-local'\r\n inputProps={{\r\n max: endDate,\r\n autoComplete: 'start-date',\r\n onChange: (d) => {\r\n if (moment(d.target.value).isValid()) {\r\n setStartDate(d.target.value)\r\n calcTimer({\r\n ...timer,\r\n created_at: moment(d.target.value).tz('America/Sao_Paulo').unix('X')\r\n }, true)\r\n }\r\n },\r\n }}\r\n value={startDate}\r\n />\r\n </div>\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='watch_later' />\r\n <TextField\r\n label={translate('$__finalDate', 1)}\r\n variant={customApp('fieldVariant', 1)}\r\n name=\"endDate\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='datetime-local'\r\n inputProps={{\r\n min: startDate,\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n if (moment(d.target.value).isValid()) {\r\n setEndDate(d.target.value)\r\n calcTimer({\r\n ...timer,\r\n updated_at: moment(d.target.value).tz('America/Sao_Paulo').unix('X')\r\n }, true)\r\n }\r\n },\r\n }}\r\n value={endDate}\r\n />\r\n </div>\r\n\r\n </React.Fragment>\r\n :\r\n <React.Fragment>\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='schedule' />\r\n <TextField\r\n label={translate('$__initialDate', 1)}\r\n variant={customApp('fieldVariant', 1)}\r\n name=\"startDate\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='date'\r\n inputProps={{\r\n max: moment().format(\"YYYY-MM-DD\"),\r\n autoComplete: 'start-date',\r\n onChange: (d) => {\r\n if (moment(d.target.value).isValid()) {\r\n setStartDate(d.target.value)\r\n }\r\n let diffCalc = timer.updated_at - timer.created_at\r\n calcTimer({\r\n ...timer,\r\n created_at: moment(`${d.target.value} 00:00:00`).unix('X'),\r\n updated_at: moment(`${d.target.value} 00:00:00`).unix('X') + diffCalc\r\n }, true, true)\r\n },\r\n }}\r\n value={startDate}\r\n />\r\n </div>\r\n </React.Fragment>\r\n }\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='more_time' />\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <TextField\r\n label={translate('$__hours', 1)}\r\n variant={customApp('fieldVariant', 1)}\r\n name=\"hours\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='number'\r\n inputProps={{\r\n min: 0,\r\n autoComplete: 'hours',\r\n onChange: (d) => {\r\n setManualHourEntry(d.target.value)\r\n setManualTime(true)\r\n if (startDate.indexOf(\"T\") > -1)\r\n setStartDate(startDate.substring(0, 10))\r\n\r\n calcTimer({\r\n ...timer,\r\n created_at: moment(`${startDate.substring(0, 10)} 00:00:00`).unix('X'),\r\n updated_at: moment(`${startDate.substring(0, 10)} 00:00:00`).unix('X') + (d.target.value * 60 * 60) + (manualMinuteEntry * 60)\r\n }, true, true)\r\n }\r\n }\r\n }\r\n value={manualHourEntry}\r\n style={{\r\n paddingLeft: 7,\r\n paddingRight: 7\r\n }}\r\n />\r\n <TextField\r\n label={translate('$__minutes', 1)}\r\n variant={customApp('fieldVariant', 1)}\r\n name=\"minutes\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n type='number'\r\n inputProps={{\r\n min: 0,\r\n max: 59,\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setManualMinuteEntry(d.target.value)\r\n setManualTime(true)\r\n if (startDate.indexOf(\"T\") > -1)\r\n setStartDate(startDate.substring(0, 10))\r\n calcTimer({\r\n ...timer,\r\n created_at: moment(`${startDate.substring(0, 10)} 00:00:00`).unix('X'),\r\n updated_at: moment(`${startDate.substring(0, 10)} 00:00:00`).unix('X') + (manualHourEntry * 60 * 60) + (d.target.value * 60)\r\n }, true, true)\r\n }\r\n }\r\n }\r\n value={manualMinuteEntry}\r\n style={{\r\n paddingLeft: 7,\r\n paddingRight: 7\r\n }}\r\n />\r\n <CustomButton\r\n title={translate(\"$__reset\", 1)}\r\n icon={\"update_disabled\"}\r\n color={customApp(\"menu\")}\r\n onClick={() => {\r\n setManualTime(false)\r\n setStartDate(`${startDate} 00:00:00`)\r\n }\r\n }\r\n size={\"17px\"}\r\n style={{\r\n marginLeft: 3,\r\n marginRight: 3,\r\n backgroundColor: \"rgba(0,0,0,0.05)\",\r\n padding: 3\r\n }}\r\n transparent\r\n />\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n\r\n\r\n </div>\r\n {timer && timer.diffText &&\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='hourglass_full' />\r\n <div className='text'>{timer.diffText}</div>\r\n </div>\r\n }\r\n {parseInt(db.cards[data._id]._users[session._id].access) >= 3 ?\r\n <ErrorBoundary>\r\n <SelectUsers\r\n includeMe\r\n data={db.cards[data._id]}\r\n avatarSize=\"33px\"\r\n permission={props.permission}\r\n noLimit\r\n multiple\r\n onSelect={(e) => {\r\n calcTimer({\r\n ...timer,\r\n to: e\r\n }, true)\r\n }}\r\n />\r\n </ErrorBoundary>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </React.Fragment>\r\n }\r\n\r\n {!reqSave && !props.manualAdd ?\r\n <div className={classes.time}>\r\n {!started ?\r\n <React.Fragment>\r\n {kpi_fin && kpi_total ?\r\n <div className={classes.timeInfo}>\r\n <Icon color={(kpi_fin * 60) < kpi_total ? 'red' : 'color'} icon='schedule' />\r\n <div className='text'\r\n style={{\r\n color: (kpi_fin * 60) < kpi_total ? 'red' : 'grey'\r\n }}\r\n >{translate('$__timeLeft', 1)}\r\n : {((kpi_fin * 60) - kpi_total) > -60 && ((kpi_fin * 60) - kpi_total) < 60 ? `${((kpi_fin * 60) - kpi_total)} ${translate('$__seconds', 1)} `\r\n : `${Math.trunc(((kpi_fin * 60) - kpi_total) / 60)} ${translate('$__minutes', 1)} ${((kpi_fin * 60) - kpi_total) - (Math.trunc(((kpi_fin * 60) - kpi_total) / 60) * 60)} ${translate('$__seconds', 1)} `}\r\n </div>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div className={classes.timeInfo}>\r\n <Icon color='color'\r\n onClick={() => {\r\n startTimer()\r\n }} title={translate(\"$__playRegisterLogWork\")}>play_circle_outline</Icon>\r\n <span style={{ marginLeft: 7, color: customApp(\"color\") }}>{translate(\"$__startStopWatch\")}</span>\r\n {/* {kpi_fin && kpi_total ?\r\n <div className='text'>\r\n {kpi_total < 60 ? `${kpi_total} ${translate('$__seconds', 1)} `\r\n : `${Math.trunc(kpi_total / 60)} ${translate('$__minutes', 1)} ${kpi_total - (Math.trunc(kpi_total / 60) * 60)} ${translate('$__seconds', 1)} `}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n } */}\r\n </div>\r\n </React.Fragment>\r\n :\r\n <div className={classes.timeInfo}>\r\n <Icon color='color'\r\n onClick={() => {\r\n appAlert({\r\n message: translate('$__confirmStopTimer', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n stopTimer()\r\n }\r\n })\r\n }}>pause_circle_filled</Icon>\r\n <div className='text'>{timer.diffText}</div>\r\n </div>\r\n }\r\n </div>\r\n :\r\n <div>\r\n {!props.manualAdd\r\n && timer\r\n && timer.created_at\r\n && timer.updated_at\r\n && timer.diffText\r\n && moment(timer.created_at * 1000).isValid() &&\r\n <React.Fragment>\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='schedule' />\r\n <div className='text'>{moment(timer.created_at * 1000).tz('America/Sao_Paulo').format('DD/MM/YYYY HH:mm:ss')}</div>\r\n </div>\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='watch_later' />\r\n <div className='text'>{moment(timer.updated_at * 1000).tz('America/Sao_Paulo').format('DD/MM/YYYY HH:mm:ss')}</div>\r\n </div>\r\n <div className={classes.timeInfo}>\r\n <Icon color='color' icon='hourglass_full' />\r\n <div className='text'>{timer.diffText}</div>\r\n </div>\r\n </React.Fragment>\r\n }\r\n {timer.created_at < timer.updated_at ?\r\n <ErrorBoundary>\r\n <KpiDescription\r\n manualAdd={props.manualAdd ? true : false}\r\n data={data}\r\n timer={timer}\r\n manualEntry={manualTime}\r\n callBack={() => {\r\n setReqSave(false)\r\n if (props.callBack)\r\n props.callBack()\r\n }}\r\n />\r\n </ErrorBoundary>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n }\r\n </fieldset>\r\n </div >\r\n )\r\n}\r\n//REACT\r\nconst mapStateToProps = (store, props) => ({\r\n card: store.db.cards\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(TimerComponent))","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = {\r\n containerNoShadow: {\r\n ...defaultFont,\r\n position: 'relative',\r\n border: `0.5px solid ${customApp('light')}`,\r\n borderRadius: '2px',\r\n backgroundColor: '#FFFFFF',\r\n padding: '3px',\r\n minWidth: '150px',\r\n display: 'flow-root',\r\n },\r\n container: {\r\n ...defaultFont,\r\n position: 'relative',\r\n border: `0.5px solid ${customApp('light')}`,\r\n borderRadius: '2px',\r\n backgroundColor: '#FFFFFF',\r\n padding: '3px',\r\n minWidth: '150px',\r\n display: 'flow-root',\r\n boxShadow: '0px 0px 10px rgba(0,0,0,0.1)',\r\n },\r\n parent: {\r\n width: '100%',\r\n padding: '0 5px',\r\n '& .title': {\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n textTransform: 'uppercase'\r\n },\r\n '& .info': {\r\n marginTop: '-8px',\r\n color: customApp('color'),\r\n fontWeight: '500',\r\n //display: 'flex',\r\n alignItems: 'center',\r\n }\r\n },\r\n infos: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n height: 'auto',\r\n display: 'block',\r\n },\r\n indicators: {\r\n position: 'relative',\r\n float: 'left',\r\n height: 'auto',\r\n // display: 'flex',\r\n zIndex: '0 !important'\r\n },\r\n indicatorsIcon: {\r\n position: 'relative',\r\n float: 'left',\r\n margin: '0px 0px',\r\n '& MuiBadge-badge': {\r\n position: 'relative',\r\n float: 'left',\r\n //zIndex: '30 !important'\r\n }\r\n },\r\n image: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n maxWidth: '100%',\r\n display: 'none',\r\n },\r\n imagePreview: {\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n paddingTop: '48%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%'\r\n },\r\n imagePreviewList: {\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'relative',\r\n float: 'left',\r\n width: \"100%\",\r\n paddingTop: \"48%\",\r\n '@media screen and (max-width: 800px)': {\r\n width: '100%'\r\n }\r\n },\r\n PreLoader: {\r\n top: 'calc(50% - 25px)',\r\n left: 'calc(50% - 25px)',\r\n position: 'absolute',\r\n },\r\n description: {\r\n position: 'relative',\r\n float: 'left',\r\n padding: '5px',\r\n minHeight: '75px',\r\n width: '100%',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipses'\r\n },\r\n dates: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n padding: '0 5px',\r\n marginRight: '15px',\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n display: 'flex',\r\n },\r\n lateDates: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n padding: '0 5px',\r\n marginRight: '15px',\r\n color: 'red',\r\n fontSize: '10px',\r\n display: 'flex',\r\n },\r\n dateInfo: {\r\n marginRight: '15px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n usersContent: {\r\n minHeight: '20px',\r\n minWidth: '40px',\r\n zIndex: '0 !important'\r\n },\r\n users: {\r\n position: 'absolute',\r\n bottom: '0px',\r\n right: '2px',\r\n fontSize: '10px',\r\n '& .MuiAvatarGroup-root': {\r\n justifyContent: 'flex-end',\r\n },\r\n '& .MuiAvatar-root': {\r\n width: '25px',\r\n height: '25px',\r\n fontSize: '10px',\r\n }\r\n }\r\n};\r\n\r\nexport default style;\r\n","import React, { useState } from 'react'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions/\"\r\n\r\nconst AnswerForm = (props) => {\r\n const { db } = reduxStore.getState()\r\n const [values, setValues] = useState(props.values || {})\r\n const [column, setColumn] = useState(null)\r\n const [columns, setColumns] = useState([])\r\n\r\n React.useEffect(() => {\r\n let Columns = []\r\n if (reduxStore.getState().forms[props.formId].boardColumns)\r\n Object.keys(db.cards).filter(card => db.cards[card]._parent === props.boardId && db.cards[card].type === \"step\" && !db.cards[card].deleted).sort((cardA, cardB) => {\r\n let refA = `A${db.cards[cardA].step}`\r\n let refB = `A${db.cards[cardB].step}`\r\n if (refA > refB)\r\n return 1\r\n if (refA < refB)\r\n return -1\r\n return 0\r\n }).forEach((card, index) => {\r\n if (index === 0 && card)\r\n setColumn(card)\r\n Columns.push(card)\r\n })\r\n setColumns(Columns)\r\n // eslint-disable-next-line\r\n }, [props.boardId])\r\n\r\n React.useEffect(() => {\r\n let newValues = {}\r\n if (props.values && Object.keys(props.values).length > 0) {\r\n Object.keys(props.values).forEach(d => {\r\n newValues = {\r\n ...newValues,\r\n [d.substr(0, 1) !== \"f\" ? `f${d}` : d]: props.values[d]\r\n }\r\n })\r\n setValues(newValues)\r\n }\r\n }, [props.values])\r\n\r\n // React.useEffect(() => {\r\n // if (props.resetValues)\r\n // setValues({})\r\n // }, [props.resetValues])\r\n\r\n React.useEffect(() => {\r\n if (props.onChange)\r\n props.onChange(values, verifyForm())\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [values])\r\n\r\n React.useEffect(() => {\r\n if (props.columnChange && column)\r\n props.columnChange(column)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [column])\r\n\r\n React.useLayoutEffect(() => {\r\n if (props.onChange)\r\n props.onChange(values, verifyForm())\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n let form = JSON.parse(reduxStore.getState().forms[props.formId].elements) || []\r\n if (form.length > 0)\r\n form.forEach((dd, di) => {\r\n if (dd.id.substr(0, 1) !== \"f\") form[di].id = `f${dd.id}`\r\n })\r\n\r\n const verifyForm = (e) => {\r\n let result\r\n form.forEach((element) => {\r\n if (\r\n element.required\r\n && (\r\n (\r\n !element.depends\r\n &&\r\n (\r\n !values[element.id]\r\n || (\r\n values[element.id]\r\n && typeof values[element.id] === 'undefined'\r\n )\r\n )\r\n )\r\n || (\r\n element.depends\r\n && element.dependsOn\r\n && (\r\n !values[element.id]\r\n &&\r\n (\r\n values[element.dependsOn]\r\n &&\r\n (\r\n (\r\n typeof element.dependsValue === \"object\"\r\n && element.dependsValue.filter(a => values[element.dependsOn].indexOf(a) > -1).length > 0\r\n )\r\n ||\r\n (\r\n typeof element.dependsValue !== \"object\"\r\n && values[element.dependsOn] === element.dependsValue\r\n )\r\n )\r\n )\r\n )\r\n )\r\n )\r\n ) {\r\n result = `${translate(\"$_fillAllRequiredAsks\")}`\r\n }\r\n })\r\n return result || null\r\n }\r\n const handleCheckboxChange = (fieldId, value) => {\r\n if (values[fieldId]) {\r\n if (values[fieldId].includes(value)) {\r\n setValues({ ...values, [fieldId]: values[fieldId].filter(item => item !== value) });\r\n } else {\r\n setValues({ ...values, [fieldId]: [...values[fieldId], value] });\r\n }\r\n } else {\r\n setValues({ ...values, [fieldId]: [value] });\r\n }\r\n };\r\n\r\n\r\n\r\n return (<div\r\n style={{\r\n width: \"100%\",\r\n ...props.style ? props.style : {}\r\n }}>\r\n {form?.map((element, index) => (\r\n ((!element.depends) ||\r\n (\r\n element.depends\r\n && (\r\n (\r\n Array.isArray(element.dependsValue)\r\n && JSON.stringify(values[element.dependsOn]) === JSON.stringify(element.dependsValue)\r\n )\r\n ||\r\n (\r\n !Array.isArray(element.dependsValue)\r\n && values[element.dependsOn] === element.dependsValue\r\n )\r\n )\r\n )\r\n ) ?\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '20px',\r\n alignItems: 'center',\r\n marginBottom: '10px',\r\n width: '100%',\r\n }}\r\n key={`item_${element.id}_${index}`}\r\n >\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n }}>\r\n <label htmlFor={element.id} style={{\r\n marginBottom: '5px',\r\n }}>{element.name}{element.required ? '*' : null}:</label>\r\n {\r\n element.type === 'radio' || element.type === 'checkbox' ?\r\n element?.items.map((item, index) => (\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n gap: '5px',\r\n margin: '3px 0px',\r\n }}\r\n key={`op_${element.id}_${item}`}\r\n onClick={(e) => {\r\n if (element.type === 'radio') {\r\n setValues({ ...values, [element.id]: item })\r\n }\r\n if (element.type === 'checkbox') {\r\n handleCheckboxChange(element.id, item)\r\n }\r\n }}\r\n >\r\n <div\r\n style={{\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <input\r\n id={`op_${element.id}_${item}`}\r\n name={`op_${element.id}`}\r\n type={element.type}\r\n required={element.required ? true : false}\r\n {...element.type === 'radio' ? { checked: !(!values[element.id] || values[element.id] !== item) } : {}}\r\n {...element.type === 'checkbox' ? { checked: values && values[element.id] && values[element.id].length > 0 && values[element.id].indexOf(item) > -1 ? true : false } : {}}\r\n {...props.disabled ? { disabled: true } : {}}\r\n onClick={(e) => {\r\n if (element.type === 'radio') {\r\n setValues({ ...values, [element.id]: item })\r\n }\r\n if (element.type === 'checkbox') {\r\n handleCheckboxChange(element.id, item)\r\n }\r\n }}\r\n />\r\n <label htmlFor={`op_${element.id}_${item}`} style={{ color: '#aaa' }}>{item}</label>\r\n </div>\r\n </div>\r\n )) :\r\n element.type === 'textarea' ?\r\n <textarea rows={4}\r\n id={element.id}\r\n required={element.required ? true : false}\r\n style={{\r\n borderRadius: '5px',\r\n width: '100%',\r\n height: 'auto',\r\n resize: 'none',\r\n padding: '10px 5px',\r\n border: '1px solid rgb(150,150,150)',\r\n\r\n }}\r\n onChange={(e) => setValues({ ...values, [element.id]: e.target.value })}\r\n value={values[element.id] || \"\"}\r\n {...props.disabled ? { disabled: true } : {}}\r\n ></textarea>\r\n :\r\n <input\r\n type={element.type}\r\n id={element.id}\r\n required={element.required ? true : false}\r\n style={{\r\n borderRadius: '5px',\r\n width: '100%',\r\n height: 'auto',\r\n resize: 'none',\r\n padding: '10px 5px',\r\n border: '1px solid rgb(150,150,150)',\r\n\r\n }}\r\n value={values[element.id] || \"\"}\r\n onChange={(e) => setValues({ ...values, [element.id]: e.target.value })}\r\n {...props.disabled ? { disabled: true } : {}}\r\n />\r\n }\r\n </div>\r\n </div> : null))}\r\n {!props.ignoreSteps &&\r\n reduxStore.getState().forms[props.formId].boardColumns && columns && column && columns.length > 0 ?\r\n <div style={{ position: 'relative', width: \"100%\" }}>\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n width: \"100%\",\r\n fontWeight: \"bold\",\r\n marginBottom: 5,\r\n marginTop: 5\r\n }}>{translate(\"$__step\", \"*\")}</div>\r\n {columns.map((card, index) =>\r\n <div style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n width: \"100%\",\r\n gap: '5px',\r\n margin: '3px 0px',\r\n }}\r\n key={`col_${card}_${index}`}\r\n onClick={(e) => {\r\n setColumn(card)\r\n }}\r\n >\r\n <div\r\n style={{\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <input\r\n id={`col_${card}_${index}`}\r\n name={`column`}\r\n type={'radio'}\r\n required={true}\r\n checked={column === card ? true : false}\r\n onClick={(e) => {\r\n setColumn(card)\r\n }}\r\n />\r\n <label htmlFor={`col_${card}_${index}`} style={{ color: '#aaa' }}>{db.cards[card].name}</label>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n : <>\r\n </>\r\n }\r\n </div>)\r\n}\r\n\r\nexport default AnswerForm","const defaultState = {\r\n notifications: [],\r\n};\r\n\r\nexport default (state = defaultState, action) => {\r\n switch (action.type) {\r\n case 'NEW_ALERT':\r\n return {\r\n ...state,\r\n notifications: [\r\n ...state.notifications,\r\n {\r\n key: action.value.options.key,\r\n ...action.value,\r\n },\r\n ],\r\n };\r\n\r\n case 'CLOSE_ALERT':\r\n return {\r\n ...state,\r\n notifications: state.notifications.map(notification => (\r\n (action.dismissAll || notification.key === action.value)\r\n ? { ...notification, dismissed: true }\r\n : { ...notification }\r\n )),\r\n };\r\n\r\n case 'REMOVE_ALERT':\r\n return {\r\n ...state,\r\n notifications: state.notifications.filter(\r\n notification => notification.key !== action.value,\r\n ),\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","const initialState = {\r\n copy: [],\r\n selected: [],\r\n action: null\r\n}\r\n\r\nconst card = (state = initialState, data) => {\r\n if (data.action === 'SET_CARD' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'CLEAR_CARD') {\r\n return {\r\n ...initialState\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default card;","const cards = (state = {}, data) => {\r\n if (data.action === 'SET_CARDS' && data.value) {\r\n return {\r\n ...data.value,\r\n }\r\n }\r\n return state\r\n}\r\n\r\nexport default cards;","const initialState = {\r\n open: false,\r\n nodeId: null,\r\n activeChats: [],\r\n activeModule: 'users',\r\n groups: {},\r\n notifications: true,\r\n}\r\n\r\nconst sideModule = (state = initialState, data) => {\r\n if (data.action === 'SET_CHAT' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'CLOSE_CHAT') {\r\n return {\r\n ...initialState\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default sideModule;","const initialState = {\r\n timelines: {},\r\n unreadeds: {},\r\n drafts: {}\r\n}\r\n\r\nconst sideModule = (state = initialState, data) => {\r\n if (data.action === 'SET_CHATS' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'CLEAR_CHATS') {\r\n return {\r\n ...initialState\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default sideModule;","const initialState = {\r\n sideModuleWindow: false,\r\n period: '$__last7Days',\r\n users: {},\r\n showDeleted: false,\r\n hidePrivate: false,\r\n lockPrivate: false,\r\n unlockedPrivates: 0,\r\n board: null,\r\n toCopyMove: null,\r\n selectedCards: {\r\n checkSelectedCards: [],\r\n childrenChecked: [],\r\n },\r\n addCard: {},\r\n importUsers: false,\r\n agileOrderBy: \"name\",\r\n agileOrderDesc: \"DESC\",\r\n};\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SET_CONTROL' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'RESET_CONTROLS') {\r\n return {\r\n ...state,\r\n }\r\n\r\n } else {\r\n return state\r\n }\r\n};\r\n\r\nexport default session;","const initialState = {\r\n socket: {}\r\n}\r\n\r\nconst socket = (state = initialState, data) => {\r\n if (data.action === 'SET_FUNCTIONS' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default socket;","const forms = (state = {}, data) => {\r\n if (data.action === 'SET_FORMS' && data.value) {\r\n return {\r\n ...data.value,\r\n }\r\n }\r\n return state\r\n}\r\n\r\nexport default forms;","const initialState = {};\r\n\r\nconst languages = (state = initialState, data) => {\r\n if (data.action === 'SET_LANGUAGE' && data.value) {\r\n return data.value\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default languages;","const initialState = {\r\n open: false,\r\n miro: false,\r\n files: [],\r\n file: 0\r\n}\r\n\r\nconst sideModule = (state = initialState, data) => {\r\n if (data.action === 'LIGHTBOX' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'LIGHTBOX_CLOSE') {\r\n return {\r\n ...initialState\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default sideModule;","const initialState = {\r\n total: 0,\r\n lastNotification: 0,\r\n firstNotification: 0,\r\n}\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SET_NOTIFICATIONS' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default session;","/**\r\n * @createDate 2019-07-02 v:1.0\r\n * @author Cristofer Marinho\r\n * @param {fullScreen} @Boolean\r\n * @param {text} // Info text loader @String\r\n * @param {type} // default|progressBar|\r\n *\r\n * Used in:\r\n * /layouts/d \r\n */\r\n\r\nconst initialState = {\r\n fullScreen: true,\r\n visible: true,\r\n callBack: null,\r\n autoSave: false,\r\n cards: true,\r\n\r\n};\r\n\r\nconst preLoader = (state = initialState, data) => {\r\n if (data.action === 'preLoader' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else {\r\n return state\r\n }\r\n}\r\n\r\nexport default preLoader","import { initialState } from \"./search-initialState\";\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SEARCH' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n }\r\n if (data.action === 'SEARCH_CLEAR') {\r\n return initialState\r\n }\r\n return state\r\n}\r\n\r\nexport default session;","import logoMachen from \"assets/img/logoMachen.svg\"\r\nimport login from \"assets/img/fundoLogin.jpg\"\r\n\r\nconst initialState = {\r\n custom: {\r\n ColumnTitleColor: `linear-gradient(90deg, rgba(67,18,102,1) 0%, rgba(90,35,130,1) 100%)`,\r\n customLogo: logoMachen,\r\n loginBackground: login,\r\n linearProgress: `linear-gradient(90deg, rgba(90,35,130,0) 0%, rgba(67,18,102,1) 30%, rgba(67,18,102,1) 70%, rgba(90,35,130,0) 100%)`,\r\n AvatarBackground: \"radial-gradient(rgba(114,47,162,1) 0%, rgba(67,18,102,1) 100%)\",\r\n AvatarIconColor: \"#FFFFFF\",\r\n active: 'rgb(192,178,131)',\r\n color: 'rgb(192,178,131)',\r\n colorText: 'rgb(192,178,131)',\r\n dark: 'rgb(8,27,49)',\r\n darkText: 'rgb(8,27,49)',\r\n disabled: 'rgb(200,200,200)',\r\n fieldRadius: '3px',\r\n fieldVariant: 'standard', //filled, outlined, standard\r\n light: '#FFFFFF',\r\n lightText: '#FFFFFF',\r\n line: 'rgb(192,178,131)',\r\n locale: 'pt-BR',\r\n subMenuColor: 'linear-gradient(90deg, rgba(233,233,233,1) 0%, rgba(237,237,237,1) 100%)',\r\n subMenuTextColor: 'rgb(125,125,125)',\r\n subMenuTextColorActive: 'rgb(192,178,131)',\r\n medium: 'rgb(125,125,125)',\r\n mediumText: 'rgb(150,150,150)',\r\n menu: 'rgb(67,18,102)',\r\n menuColor: `linear-gradient(90deg, rgba(67,18,102,1) 0%, rgba(90,35,130,1) 100%)`,\r\n menuButtonColor: 'rgb(192,178,131)',\r\n timelineMyMessage: '#ebe3f1'\r\n },\r\n cards: {\r\n load: [],\r\n adminViewLoader: false,\r\n adminView: false,\r\n loaded: false,\r\n expanded: false,\r\n hide: {\r\n image: false,\r\n description: false,\r\n dates: false,\r\n kpi: false,\r\n kpiChart: false,\r\n kpiChange: false,\r\n }\r\n },\r\n timeline: {\r\n load: []\r\n },\r\n sideModuleWindow: false,\r\n dashboard: {\r\n period: '$__last7Days'\r\n },\r\n period: '$__last7Days',\r\n users: {},\r\n showDeleted: false,\r\n showPrivate: false,\r\n disabledTour: false,\r\n};\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SET_SESSION' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'CLEAR_SESSION') {\r\n return {\r\n ...state,\r\n }\r\n\r\n } else {\r\n return state\r\n }\r\n};\r\n\r\nexport default session;","const initialState = {\r\n cards: {\r\n load: {},\r\n },\r\n timeline: {\r\n load: {}\r\n },\r\n};\r\n\r\nconst sessionLoads = (state = initialState, data) => {\r\n if (data.action === 'SET_SESSION_LOADS' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'CLEAR_SESSION_LOADS') {\r\n return {\r\n ...state,\r\n }\r\n\r\n } else {\r\n return state\r\n }\r\n};\r\n\r\nexport default sessionLoads;","const initialState = {\r\n module: null,\r\n activeModule: 'cardEdit',\r\n reqSave: false,\r\n window: false, //popup || expanded || false\r\n id: null,\r\n data: {},\r\n}\r\n\r\nconst sideModule = (state = initialState, data) => {\r\n if (data.action === 'SET_MODULE' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'CLEAR_MODULE') {\r\n return {\r\n ...initialState\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default sideModule;","const initialState = {}\r\n\r\nconst sideModule = (state = initialState, data) => {\r\n if (data.action === 'SET_TIMELINE' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else {\r\n return state\r\n }\r\n};\r\n\r\nexport default sideModule;","const initialState = {}\r\n\r\nconst sideModule = (state = initialState, data) => {\r\n if (data.action === 'SET_TIMELINE_LOADER' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else {\r\n return state\r\n }\r\n};\r\n\r\nexport default sideModule;","const initialState = {\r\n cards: {},\r\n timeline: {}\r\n}\r\n\r\nconst toLoad = (state = initialState, data) => {\r\n if (data.action === 'TO_LOAD' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else {\r\n return state\r\n }\r\n};\r\n\r\nexport default toLoad;","const initialState = {\r\n users: {},\r\n};\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SET_USERS_STATUS' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n } else if (data.action === 'CLEAR_USERS_STATUS') {\r\n return {\r\n ...state,\r\n }\r\n\r\n } else {\r\n return state\r\n }\r\n};\r\n\r\nexport default session;","const initialState = {\r\n typing: {}\r\n}\r\n\r\nconst sideModule = (state = initialState, data) => {\r\n if (data.action === 'SET_TYPING' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n }\r\n if (data.action === 'RESET_TYPING') {\r\n return {\r\n ...initialState\r\n }\r\n }\r\n return state\r\n};\r\n\r\nexport default sideModule;","const initialState = {\r\n\r\n}\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SET_SEARCH' && data.value) {\r\n return {\r\n ...data.value,\r\n }\r\n }\r\n return state\r\n}\r\n\r\nexport default session;","const initialState = {\r\n\r\n}\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SET_OVERVIEW_NAV' && data.value) {\r\n return {\r\n ...data.value,\r\n }\r\n }\r\n return state\r\n}\r\n\r\nexport default session;","import { takeLatest, takeEvery, put, call, all } from 'redux-saga/effects'; //, select, delay\r\n\r\nfunction callBackFn(fn) {\r\n if (fn.next) {\r\n fn.next()\r\n }\r\n return true\r\n}\r\n\r\nfunction* generate(data) {\r\n yield put({ type: data.action, value: data.value })\r\n yield call(callBackFn, data)\r\n}\r\n\r\n\r\nexport default function* saga() {\r\n yield all([\r\n takeLatest(\"ASYNC\", generate),\r\n takeEvery(\"IMMEDIATE\", generate),\r\n ])\r\n}","import { legacy_createStore as createStore, combineReducers, applyMiddleware } from \"redux\"\r\nimport createSagaMiddleware from \"redux-saga\"\r\nimport { routerMiddleware } from \"react-router-redux\"\r\nimport history from \"store/history\"\r\n\r\n//REDUCERS\r\nimport alert from \"./alert\"\r\nimport card from \"./card\"\r\nimport cards from \"./cards\"\r\nimport chat from \"./chat\"\r\nimport chats from \"./chats\"\r\nimport controls from \"./controls\"\r\nimport db from \"./db\"\r\nimport functions from \"./functions\"\r\nimport forms from \"./forms\"\r\nimport languages from \"./languages\"\r\nimport lightBox from \"./lightBox\"\r\nimport notifications from \"./notifications\"\r\nimport preLoader from \"./preLoader\"\r\nimport search from \"./search\"\r\nimport session from \"./session\"\r\nimport sessionLoads from \"./sessionLoads\"\r\nimport sideModule from \"./sideModule\"\r\nimport timeline from \"./timeline\"\r\nimport timelineLoader from \"./timelinesLoader\"\r\nimport toLoad from \"./toLoad\"\r\nimport usersStatus from \"./usersStatus\"\r\nimport chatTyping from \"./chatTyping\"\r\nimport searchs from \"./searchs\"\r\nimport overviewNav from \"./overviewNavigations\"\r\n\r\n//SAGA\r\nimport rootSaga from \"./sagas\"\r\n\r\nconst sagaMiddleware = createSagaMiddleware()\r\n\r\nconst store = createStore(\r\n combineReducers({\r\n alert,\r\n card,\r\n cards,\r\n chat,\r\n chatTyping,\r\n chats,\r\n controls,\r\n db,\r\n functions,\r\n languages,\r\n lightBox,\r\n notifications,\r\n overviewNav,\r\n preLoader,\r\n search,\r\n searchs,\r\n session,\r\n sessionLoads,\r\n sideModule,\r\n timeline,\r\n timelineLoader,\r\n toLoad,\r\n usersStatus,\r\n forms,\r\n }),\r\n applyMiddleware(sagaMiddleware, routerMiddleware(history))\r\n)\r\n\r\nsagaMiddleware.run(rootSaga)\r\n\r\nexport default store\r\n","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = {\r\n container: {\r\n ...defaultFont,\r\n position: 'relative',\r\n border: `0.5px solid ${customApp('light')}`,\r\n borderRadius: '2px',\r\n backgroundColor: '#FFFFFF',\r\n boxShadow: '0px 0px 10px rgba(0,0,0,0.1)',\r\n padding: '3px',\r\n minWidth: '150px',\r\n display: 'flow-root',\r\n },\r\n cardContainer: {\r\n ...defaultFont,\r\n position: 'relative',\r\n minWidth: '150px',\r\n display: 'flow-root',\r\n },\r\n parent: {\r\n width: '100%',\r\n padding: '0 5px',\r\n '& .title': {\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n textTransform: 'uppercase'\r\n },\r\n '& .info': {\r\n marginTop: '-8px',\r\n color: customApp('color'),\r\n fontWeight: '500',\r\n //display: 'flex',\r\n alignItems: 'center',\r\n }\r\n },\r\n infos: {\r\n position: 'absolute',\r\n float: 'left',\r\n width: '100%',\r\n height: 'auto',\r\n display: 'block',\r\n },\r\n description: {\r\n position: 'relative',\r\n float: 'left',\r\n padding: '5px',\r\n width: '100%',\r\n overflow: 'hidden'\r\n },\r\n dates: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n padding: '0 5px',\r\n marginRight: '15px',\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n display: 'flex',\r\n },\r\n dateInfo: {\r\n marginRight: '15px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n usersContent: {\r\n position: 'relative',\r\n minHeight: '20px',\r\n minWidth: '40px',\r\n float: 'right'\r\n },\r\n users: {\r\n position: 'absolute',\r\n bottom: '7px',\r\n right: '2px',\r\n fontSize: '10px',\r\n '& .MuiAvatarGroup-root': {\r\n justifyContent: 'flex-end',\r\n },\r\n '& .MuiAvatar-root': {\r\n width: '25px',\r\n height: '25px',\r\n fontSize: '10px',\r\n }\r\n }\r\n};\r\n\r\nexport default style;\r\n","import React from \"react\"\r\nimport styled from \"styled-components\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Card from \"components/Card\"\r\nimport Icon from \"components/Icon\"\r\nimport TextField from \"components/TextField\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/CardSimple.js\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, appAlert, getDate } from \"functions/\"\r\n\r\n//FUNCTIONS\r\nimport { updateCardData, setCompleted } from \"functions/cards\"\r\n\r\nimport { action } from \"functions/kanban\"\r\n\r\n\r\n\r\n\r\n\r\nfunction Component(props) {\r\n const { classes } = props\r\n const { db } = reduxStore.getState()\r\n\r\n let data = props.data && props.data._id ? reduxStore.getState().db.cards[props.data._id] : {}\r\n\r\n const [name, setName] = React.useState(data.name ? data.name : \"\")\r\n const [edit, setEdit] = React.useState(false)\r\n const [over, setOver] = React.useState(false)\r\n\r\n const update = async (d) => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: data._id }\r\n }, d)\r\n setEdit(false)\r\n }\r\n\r\n const deleteThis = async () => {\r\n appAlert({\r\n message: translate(\"$__confirmDeleteThisFullDescription\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n update({ deleted: true })\r\n }\r\n })\r\n }\r\n\r\n return (\r\n <Container\r\n {...props.provided && props.provided.draggableProps}\r\n {...props.key ? { key: props.key } : {}}\r\n ref={props.provided && props.provided.innerRef}\r\n isDragging={props.snapshot && props.snapshot.isDragging}\r\n isDragDisable={data.isDragDisable || props.isDragDisable || false}\r\n inLine={props.inLine}\r\n selectable={props.showSelected}\r\n selected={data._selected}\r\n priority={data.priority ? db.priority.filter(a => String(a.value) === String(data.priority))[0].color : null}\r\n locked={props.locked || false}\r\n className={!props.showCard ? classes.container : classes.cardContainer}\r\n >\r\n <div\r\n {...props.provided && props.provided.dragHandleProps}\r\n >\r\n {edit ?\r\n <React.Fragment>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <div style={{\r\n width: \"calc(100% - 50px)\",\r\n display: \"flex\"\r\n }}\r\n >\r\n <TextField\r\n label={translate(\"$__taskTitle\")}\r\n variant={customApp(\"fieldVariant\")}\r\n name={\"name\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => {\r\n setName(d.target.value)\r\n },\r\n onBlur: (d) => {\r\n if (d.target.value === \"\")\r\n setEdit(!edit)\r\n },\r\n onKeyDown: (e) => {\r\n if (e.keyCode === 13 && name) {\r\n update({\r\n name\r\n })\r\n }\r\n if (e.keyCode === 27) {\r\n setEdit(!edit)\r\n setName()\r\n }\r\n }\r\n }}\r\n autoFocus\r\n value={name}\r\n placeholder={translate(\"$__taskTitlePlaceholder\")}\r\n />\r\n </div>\r\n <div style={{ display: \"flex\" }}>\r\n <div\r\n onClick={() => update({\r\n name\r\n })}\r\n >\r\n <Icon color=\"green\" icon={\"save\"} title={translate(\"$__save\", \"*\")} size={props.actionsSize || \"25px\"} />\r\n </div>\r\n <div\r\n onClick={() => {\r\n setEdit(!edit)\r\n setName(\"\")\r\n }}\r\n >\r\n <Icon color={customApp(\"medium\")} icon={\"cancel\"} title={translate(\"$__cancel\", \"*\")} size={props.actionsSize || \"25px\"} />\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n :\r\n <div\r\n style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}\r\n onMouseOver={() => {\r\n setOver(true)\r\n }}\r\n onMouseLeave={() => {\r\n setOver(false)\r\n }}\r\n >\r\n\r\n <div style={{ width: \"100%\", padding: \"0px 7px\", wordBreak: \"break-word\" }}\r\n onDoubleClick={() => { setEdit(!edit) }}\r\n {...props.provided ? { provided: props.provided } : {}}\r\n {...props.snapshot ? { snapshot: props.snapshot } : {}}\r\n >\r\n {props.showCard ?\r\n <Card db=\"cards\"\r\n cardId={props.data._id}\r\n viewTimer\r\n viewAllName\r\n />\r\n :\r\n data.name ? data.name : translate(\"$__new\", 1)\r\n }\r\n </div >\r\n {data.status === \"completed\" && !props.showCard ?\r\n <div\r\n style={{ position: \"absolute\", top: 0, bottom: 0, left: 0, right: 0, backgroundColor: \"rgba(0,0,0,0.05)\", display: \"flex\", alignItems: \"center\" }}\r\n >\r\n <div style={{ position: \"absolute\", top: \"50%\", marginLeft: 15, height: 1, width: \"calc(100% - 50px)\", backgroundColor: \"rgba(0,0,0,0.1)\" }}>\r\n </div>\r\n {data.completed_at ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 33,\r\n top: \"calc(50% - 15px)\",\r\n fontSize: 10,\r\n textAlign: \"right\",\r\n backgroundColor: \"#f1f1f1\",\r\n paddingLeft: 7\r\n }}\r\n >{getDate(data.completed_at)}</div>\r\n : <React.Fragment></React.Fragment>}\r\n\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {(over && props.permission && !props.noDelete && (!props.showCard || (!props.dragStatus && props.showCard))) &&\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <CustomButton\r\n title={translate(\"$__undoConclude\", 1)}\r\n color={\"lightgrey\"}\r\n icon={\"delete_forever\"}\r\n onClick={() => deleteThis()}\r\n transparent\r\n />\r\n {data.checklist ?\r\n <CustomButton\r\n title={translate(\"$__turnIntoActivity\", 1)}\r\n color={\"lightgrey\"}\r\n icon={\"change_circle\"}\r\n onClick={() => {\r\n appAlert({\r\n message: translate(\"$__confirmTurnIntoActivity\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n update({\r\n checklist: null\r\n })\r\n }\r\n })\r\n\r\n }\r\n\r\n }\r\n transparent\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n }\r\n {(!props.showCard || (!props.dragStatus && props.showCard)) &&\r\n <CustomButton\r\n title={data.status !== \"completed\" ? translate(\"$__conclude\", 1) : translate(\"$__undoConclude\", 1)}\r\n color={data.status !== \"completed\" ? \"lightgrey\" : \"grey\"}\r\n icon={data.status !== \"completed\" ? \"radio_button_unchecked\" : \"check_circle\"}\r\n onClick={() => {\r\n // console.log(data)\r\n if (data._hasStep) {\r\n action({\r\n ...props,\r\n nodeId: data._id,\r\n })\r\n } else {\r\n // console.log('setCompleted')\r\n setCompleted(props, data)\r\n }\r\n }}\r\n transparent\r\n />\r\n }\r\n </div>\r\n }\r\n </div>\r\n {props.locked ?\r\n <div style={{\r\n position: \"absolute\",\r\n backgroundColor: \"rgba(233,233,233,0.88)\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n <div style={{\r\n display: \"flex\"\r\n }}>\r\n <Icon color=\"lightgray\" icon=\"lock\" size={\"22px\"} />\r\n </div>\r\n\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n </Container >\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n${props =>\r\n props.selectable && props.selected ? `\r\n opacity:1`\r\n : props.selectable ? `\r\n opacity:0.5`\r\n : ``\r\n }\r\n${props =>\r\n props.locked ?\r\n `cursor:no-drop !important`\r\n : `cursor:pointer`\r\n }\r\n${props =>\r\n props.priority && !props.showCard ? ``\r\n // `border-left:5px solid ${props.priority}`\r\n : ``\r\n }\r\n${props =>\r\n !props.selectable && props.selected ?\r\n `border-bottom:solid 5px ${customApp(\"color\")}`\r\n : ``\r\n }\r\n${props =>\r\n props.isDragDisable\r\n ? \"\"\r\n : props.isDragging\r\n ? `\r\n opacity:0.88\r\n max-width:320px`\r\n : ``\r\n }\r\n${props =>\r\n props.inLine ?\r\n `position:relative\r\n float:left\r\n margin:1px\r\n width:calc(20% - 7px)\r\n // maxWidth:320px\r\n `\r\n : `\r\n width:calc(100%) !important\r\n margin:1px 0px 1px 0px\r\n `\r\n }\r\n width:calc(100%) !important\r\n`\r\n\r\n//REACT\r\nconst mapStateToProps = () => ({})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Component))","// CORE\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\r\nimport moment from \"moment-timezone\";\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 CustomButton from \"components/Buttons/custom\";\r\nimport SimpleCard from \"./Card\";\r\nimport Switch from \"components/Switch\";\r\n\r\n// @MATERIAL\r\nimport CustomIconButton from \"components/CustomButtons/IconButton\";\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\nimport { updateCardData } from \"functions/cards\";\r\n\r\nconst Container = styled.div`\r\n background-color: none;\r\n ${props =>\r\n props.isDragDisable\r\n ? \"\"\r\n : props.isDragging\r\n ? `opacity:0.88`\r\n : ``\r\n }\r\n`;\r\n\r\nfunction CheckList(props) {\r\n // Desestruturação das props\r\n const {\r\n myDay,\r\n checklist,\r\n noChecklist,\r\n nodeId,\r\n permission,\r\n showProgress,\r\n reduxFunction,\r\n noDelete,\r\n showCard\r\n } = props;\r\n\r\n // Obtendo dados do Redux Store\r\n const { db, session } = reduxStore.getState();\r\n const { socket } = reduxStore.getState().functions;\r\n\r\n // Estados locais\r\n const [dragStatus, setDragStatus] = React.useState(false);\r\n const [showCompleted, setShowCompleted] = React.useState(false);\r\n const today = moment().tz(\"America/Sao_Paulo\").format(\"YYYY/MM/DD\");\r\n\r\n // Processamento da URL para hash\r\n let hashs = window.location.hash.split(\"/\");\r\n hashs[0] = hashs[0].replace(\"#\", \"\");\r\n if (hashs[0].length !== 36) {\r\n hashs[0] = null;\r\n }\r\n\r\n // Obter objeto \"parent\" do estado, se disponível\r\n let parent = {};\r\n if (reduxStore.getState().db[props.db] && reduxStore.getState().db[props.db][nodeId]) {\r\n parent = reduxStore.getState().db[props.db][nodeId];\r\n }\r\n\r\n // Filtrar os cards (tasksCards) conforme as condições\r\n const tasksCards = Object.keys(db.cards)\r\n .filter(cardKey => {\r\n const card = db.cards[cardKey];\r\n if (\r\n !myDay &&\r\n (!checklist || (checklist && card.checklist)) &&\r\n card.type !== \"step\" &&\r\n (\r\n (!noChecklist && card && !card.deleted && card._parent === nodeId) ||\r\n (noChecklist && !card.deleted && card._parent === nodeId)\r\n )\r\n ) {\r\n return true;\r\n }\r\n if (\r\n myDay &&\r\n (!checklist || (checklist && card.checklist)) &&\r\n card._users &&\r\n card._users[session._id] &&\r\n card._users[session._id].myDay &&\r\n moment(new Date(card._users[session._id].myDay * 1000))\r\n .tz(\"America/Sao_Paulo\")\r\n .format(\"YYYY/MM/DD\") === today &&\r\n card &&\r\n !card.deleted\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n .sort((a, b) => {\r\n const cardA = db.cards[a];\r\n const cardB = db.cards[b];\r\n let orderA = cardA && cardA.order && !cardA.order.low\r\n ? parseInt(cardA.order)\r\n : cardA.order && cardA.order.low\r\n ? parseInt(cardA.order.low)\r\n : 0;\r\n let orderB = cardB && cardB.order && !cardB.order.low\r\n ? parseInt(cardB.order)\r\n : cardB.order && cardB.order.low\r\n ? parseInt(cardB.order.low)\r\n : 0;\r\n if (orderA < orderB) return -1;\r\n if (orderA > orderB) return 1;\r\n return 0;\r\n })\r\n .map(card => card);\r\n\r\n // Helper para aguardar com Promise (mantém a funcionalidade original)\r\n const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));\r\n\r\n const onDragEnd = async result => {\r\n setDragStatus(false);\r\n const { destination, source, draggableId } = result;\r\n\r\n if (!destination) return false;\r\n if (destination.droppableId === source.droppableId && destination.id === source.index)\r\n return false;\r\n\r\n let itemOrderIds = Array.from(\r\n tasksCards\r\n .filter(cardKey => {\r\n const card = db.cards[cardKey];\r\n return card.status !== \"completed\" && (!checklist || (checklist && card.checklist));\r\n })\r\n .sort((a, b) => {\r\n const cardA = db.cards[a];\r\n const cardB = db.cards[b];\r\n let orderA = cardA.order || 0;\r\n if (String(cardA.order.low)) orderA = parseInt(cardA.order.low);\r\n let orderB = cardB.order || 0;\r\n if (String(cardB.order.low)) orderB = parseInt(cardB.order.low);\r\n if (orderA < orderB) return -1;\r\n if (orderA > orderB) return 1;\r\n return 0;\r\n })\r\n .map(card => card)\r\n );\r\n\r\n itemOrderIds.splice(source.index, 1);\r\n await wait(500);\r\n itemOrderIds.splice(destination.index, 0, draggableId);\r\n await wait(500);\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"put\",\r\n action: \"reorder\"\r\n }, {\r\n cards: itemOrderIds\r\n });\r\n\r\n let newCards = { ...db.cards };\r\n let reorderAwait = await new Promise((resolve, reject) => {\r\n itemOrderIds.forEach((cardId, i) => {\r\n newCards = {\r\n ...newCards,\r\n [cardId]: {\r\n ...newCards[cardId],\r\n order: `${i + 1}`\r\n }\r\n };\r\n if (i + 1 === itemOrderIds.length) resolve(true);\r\n });\r\n });\r\n if (reorderAwait) {\r\n reduxFunction(\"IMMEDIATE\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n ...newCards\r\n }\r\n });\r\n }\r\n return;\r\n };\r\n\r\n const onDragStart = async result => {\r\n setDragStatus(true);\r\n };\r\n\r\n const onDragUpdate = async result => { };\r\n\r\n // Ordena os cards abertos (não completados)\r\n let openCards = tasksCards\r\n .filter(cardKey => db.cards[cardKey].status !== \"completed\")\r\n .sort((a, b) => {\r\n const cardA = db.cards[a];\r\n const cardB = db.cards[b];\r\n let orderA = cardA && cardA.order && !cardA.order.low\r\n ? parseInt(cardA.order)\r\n : cardA.order && cardA.order.low\r\n ? parseInt(cardA.order.low)\r\n : 0;\r\n let orderB = cardB && cardB.order && !cardB.order.low\r\n ? parseInt(cardB.order)\r\n : cardB.order && cardB.order.low\r\n ? parseInt(cardB.order.low)\r\n : 0;\r\n if (orderA < orderB) return -1;\r\n if (orderA > orderB) return 1;\r\n return 0;\r\n });\r\n\r\n // Verifica se há board existente\r\n const hasBoard = Object.keys(db.cards).filter(cardKey => {\r\n const card = db.cards[cardKey];\r\n return card._parent === nodeId && !card.deleted && card.type === \"step\";\r\n }).length > 0;\r\n\r\n return (\r\n <div style={{ width: \"100%\" }} onClick={(e) => e.stopPropagation()}>\r\n {permission ? (\r\n <>\r\n <div\r\n style={{\r\n width: \"96%\",\r\n position: \"relative\",\r\n margin: \"2%\",\r\n padding: \"3px 10px\",\r\n border: \"solid 1px rgba(0,0,0,0.1)\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n flexDirection: \"column\"\r\n }}\r\n >\r\n <div style={{ width: \"100%\", color: \"lightgray\", textAlign: \"center\", padding: 3 }}>\r\n {translate(hasBoard ? \"$__thisActivitieHasABoardExplain\" : \"$__createActivitieABoardExplain\")}\r\n </div>\r\n <CustomButton\r\n title={translate(hasBoard ? \"$__openThisBoard\" : \"$__createNewBoard\")}\r\n text={translate(hasBoard ? \"$__openThisBoard\" : \"$__createNewBoard\")}\r\n color={customApp(\"menu\")}\r\n textColor={customApp(\"menu\")}\r\n icon={\"schema\"}\r\n onClick={() => {\r\n reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n board: nodeId\r\n });\r\n reduxFunction(\"ASYNC\", \"CLEAR_MODULE\");\r\n }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n position: \"relative\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"3px 10px\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <div style={{ marginRight: 15 }}>\r\n {translate(\"$__requireConcludedByStep\")}\r\n </div>\r\n <Switch\r\n checked={parent.listStepLock ? true : false}\r\n onChange={() => {\r\n updateCardData(\r\n {\r\n ...props,\r\n data: { _id: parent._id }\r\n },\r\n {\r\n listStepLock: parent.listStepLock ? false : true\r\n }\r\n );\r\n }}\r\n name=\"listStepLock\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n </div>\r\n </>\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {showProgress && tasksCards.length > 0 ? (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 7,\r\n bottom: 0,\r\n fontSize: 9,\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bold\"\r\n }}\r\n >\r\n {tasksCards.filter(cardKey => db.cards[cardKey].status === \"completed\").length}/\r\n <span style={{ fontWeight: \"normal\" }}>\r\n {tasksCards.length}\r\n </span>\r\n </div>\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: 5,\r\n backgroundColor: \"lightGray\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n backgroundColor: customApp(\"menu\"),\r\n width: `${(100 / tasksCards.length) * tasksCards.filter(cardKey => db.cards[cardKey].status === \"completed\").length}%`\r\n }}\r\n ></div>\r\n </div>\r\n </div>\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {tasksCards.filter(cardKey => db.cards[cardKey].status !== \"completed\").length > 0 ? (\r\n <DragDropContext onDragEnd={onDragEnd} onDragStart={onDragStart} onDragUpdate={onDragUpdate}>\r\n <Droppable droppableId={`Drop_tasks`} type=\"column\" direction={\"vertical\"}>\r\n {(provided, snapshot) => (\r\n <Container\r\n ref={provided.innerRef}\r\n {...provided.droppableProps}\r\n isDragging={snapshot.isDraggingOver}\r\n >\r\n {openCards.map((cardKey, index) => (\r\n <Draggable draggableId={cardKey} index={index} key={`${cardKey}${index}`}>\r\n {(provided, snapshot) => (\r\n <SimpleCard\r\n dragStatus={dragStatus}\r\n provided={provided}\r\n snapshot={snapshot}\r\n data={db.cards[cardKey]}\r\n db={\"cards\"}\r\n selectable\r\n noDelete={noDelete ? noDelete : false}\r\n showCard={\r\n (!db.cards[cardKey].checklist ||\r\n (db.cards[cardKey].checklist &&\r\n (showCard || db.cards[cardKey].showCard)))\r\n ? true\r\n : false\r\n }\r\n permission={permission}\r\n locked={\r\n parent.listStepLock &&\r\n index > 0 &&\r\n db.cards[openCards[index - 1]].status !== \"completed\"\r\n }\r\n />\r\n )}\r\n </Draggable>\r\n ))}\r\n {provided.placeholder}\r\n </Container>\r\n )}\r\n </Droppable>\r\n </DragDropContext>\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {(permission || myDay) && (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n float: \"right\",\r\n width: \"100%\",\r\n padding: \"7px\",\r\n display: \"flex\",\r\n alignContent: \"flex-end\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n {/* <div> */}\r\n <CustomIconButton\r\n // reverse\r\n text={translate(\"$__new\", \"*\")}\r\n icon=\"add_box\"\r\n iconColor={customApp(\"color\")}\r\n onClick={() => {\r\n reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n myDay: myDay ? true : false,\r\n addCard: {\r\n myDay: myDay ? true : false,\r\n _parent: parent?._id || null,\r\n rows: tasksCards.length,\r\n type:\r\n parent &&\r\n parent.type &&\r\n parent.type.indexOf(\"guideline\") > -1\r\n ? \"objective\"\r\n : parent?.type === \"objective\"\r\n ? \"goal\"\r\n : parent?.type === \"goal\"\r\n ? \"task\"\r\n : \"task\"\r\n }\r\n });\r\n }}\r\n style={{ padding: 7 }}\r\n />\r\n {!myDay ? (\r\n <CustomIconButton\r\n // reverse\r\n text={translate(\"$__newSimpleTask\", \"*\")}\r\n icon=\"playlist_add\"\r\n iconColor={customApp(\"medium\")}\r\n onClick={() => {\r\n reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n myDay: myDay || false,\r\n checklist: true,\r\n addCard: {\r\n _parent: parent._id,\r\n rows: tasksCards.length,\r\n type:\r\n parent.type.indexOf(\"guideline\") > -1\r\n ? \"objective\"\r\n : parent.type === \"objective\"\r\n ? \"goal\"\r\n : parent.type === \"goal\"\r\n ? \"task\"\r\n : \"task\",\r\n checklist: true\r\n }\r\n });\r\n }}\r\n style={{ padding: 7 }}\r\n />\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n </div>\r\n )}\r\n\r\n {tasksCards.filter(cardKey => db.cards[cardKey].status === \"completed\").length > 0 ? (\r\n <div\r\n style={{\r\n width: \"96%\",\r\n position: \"relative\",\r\n margin: \"2%\",\r\n padding: \"3px 10px\",\r\n border: \"solid 1px rgba(0,0,0,0.1)\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n flexDirection: \"column\"\r\n }}\r\n >\r\n <CustomButton\r\n title={`${translate(showCompleted ? \"$__hideCompletedActivities\" : \"$__showCompletedActivities\")} - (${tasksCards.filter(cardKey => db.cards[cardKey].status === \"completed\").length})`}\r\n text={`${translate(showCompleted ? \"$__hideCompletedActivities\" : \"$__showCompletedActivities\")} - (${tasksCards.filter(cardKey => db.cards[cardKey].status === \"completed\").length})`}\r\n color={customApp(\"menu\")}\r\n textColor={customApp(\"menu\")}\r\n icon={\"done_all\"}\r\n onClick={() => {\r\n setShowCompleted(prev => !prev);\r\n }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {showCompleted && tasksCards.filter(cardKey => db.cards[cardKey].status === \"completed\").length > 0 ? (\r\n <>\r\n {tasksCards\r\n .filter(cardKey => db.cards[cardKey].status === \"completed\")\r\n .sort((a, b) => {\r\n const cardA = db.cards[a];\r\n const cardB = db.cards[b];\r\n let dataA = 0;\r\n let dataB = 0;\r\n if (cardA.completed_at && cardA.completed_at.low)\r\n dataA = parseInt(cardA.completed_at.low);\r\n if (cardB.completed_at && cardB.completed_at.low)\r\n dataB = parseInt(cardB.completed_at.low);\r\n if (dataA > dataB) return -1;\r\n if (dataA < dataB) return 1;\r\n return 0;\r\n })\r\n .map((cardKey, index) => (\r\n <div key={`${cardKey}${index}`}>\r\n <SimpleCard\r\n dragStatus={dragStatus}\r\n data={db.cards[cardKey]}\r\n db={\"cards\"}\r\n selectable\r\n noDelete={noDelete ? noDelete : false}\r\n showCard={\r\n (!db.cards[cardKey].checklist ||\r\n (db.cards[cardKey].checklist &&\r\n (showCard || db.cards[cardKey].showCard)))\r\n ? true\r\n : false\r\n }\r\n permission={permission}\r\n locked={\r\n parent.listStepLock &&\r\n index > 0 &&\r\n openCards[index - 1] &&\r\n db.cards[openCards[index - 1]] &&\r\n db.cards[openCards[index - 1]].status !== \"completed\"\r\n }\r\n />\r\n </div>\r\n ))}\r\n </>\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = store => ({\r\n cards: store.db.cards,\r\n});\r\nconst mapDispatchToProps = dispatch => bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CheckList);","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = {\r\n containerNoShadow: {\r\n ...defaultFont,\r\n position: 'relative',\r\n border: `0.5px solid ${customApp('light')}`,\r\n borderRadius: '2px',\r\n backgroundColor: '#FFFFFF',\r\n padding: '3px',\r\n // minWidth: '150px',\r\n display: 'flow-root',\r\n },\r\n container: {\r\n ...defaultFont,\r\n position: 'relative',\r\n border: `0.5px solid ${customApp('light')}`,\r\n borderRadius: '2px',\r\n backgroundColor: '#FFFFFF',\r\n padding: '3px',\r\n // minWidth: '150px',\r\n display: 'flow-root',\r\n boxShadow: '0px 0px 10px rgba(0,0,0,0.1)',\r\n },\r\n parent: {\r\n width: '100%',\r\n padding: '0 5px',\r\n '& .title': {\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n textTransform: 'uppercase'\r\n },\r\n '& .info': {\r\n marginTop: '-8px',\r\n color: customApp('color'),\r\n fontWeight: '500',\r\n //display: 'flex',\r\n alignItems: 'center',\r\n }\r\n },\r\n infos: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n height: 'auto',\r\n display: 'block',\r\n },\r\n indicators: {\r\n position: 'relative',\r\n float: 'left',\r\n height: 'auto',\r\n // display: 'flex',\r\n zIndex: '0 !important'\r\n },\r\n indicatorsIcon: {\r\n position: 'relative',\r\n float: 'left',\r\n margin: '0px 0px',\r\n '& MuiBadge-badge': {\r\n position: 'relative',\r\n float: 'left',\r\n //zIndex: '30 !important'\r\n }\r\n },\r\n image: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n maxWidth: '100%',\r\n display: 'none',\r\n },\r\n imagePreview: {\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n paddingTop: '48%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%'\r\n },\r\n imagePreviewList: {\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'relative',\r\n float: 'left',\r\n width: \"100%\",\r\n paddingTop: \"48%\",\r\n '@media screen and (max-width: 800px)': {\r\n width: '100%'\r\n }\r\n },\r\n PreLoader: {\r\n top: 'calc(50% - 25px)',\r\n left: 'calc(50% - 25px)',\r\n position: 'absolute',\r\n },\r\n description: {\r\n position: 'relative',\r\n float: 'left',\r\n padding: '5px',\r\n minHeight: '75px',\r\n width: '100%',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipses'\r\n },\r\n dates: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n padding: '0 5px',\r\n marginRight: '15px',\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n display: 'flex',\r\n },\r\n lateDates: {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n marginTop: '7px',\r\n padding: '0 5px',\r\n marginRight: '15px',\r\n color: 'red',\r\n fontSize: '10px',\r\n display: 'flex',\r\n },\r\n dateInfo: {\r\n marginRight: '15px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n usersContent: {\r\n minHeight: '20px',\r\n minWidth: '40px',\r\n zIndex: '0 !important'\r\n },\r\n users: {\r\n position: 'absolute',\r\n bottom: '0px',\r\n right: '2px',\r\n fontSize: '10px',\r\n '& .MuiAvatarGroup-root': {\r\n justifyContent: 'flex-end',\r\n },\r\n '& .MuiAvatar-root': {\r\n width: '25px',\r\n height: '25px',\r\n fontSize: '10px',\r\n }\r\n }\r\n};\r\n\r\nexport default style;\r\n","import React from \"react\"\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\n\r\n\r\nimport {\r\n customApp,\r\n} from \"functions/\"\r\n\r\n//STYLES\r\nimport styles from \"./Card.css.js\"\r\n\r\n\r\nfunction FakeCardExpanded(props) {\r\n const { classes } = props\r\n return (\r\n <div>\r\n <div\r\n className={classes.infos}\r\n >\r\n <div\r\n className={classes.imagePreview}\r\n style={{\r\n background: props.backgroundColor ? props.backgroundColor : customApp('AvatarBackground'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n <div style={{ marginTop: `calc(-48% - 10px)`, display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n <Icon icon={\"lock\"} size=\"39px\" color={props.avatarIconColor ? props.avatarIconColor : customApp('AvatarIconColor')} />\r\n </div>\r\n </div>\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\n//REACT\r\nexport default withStyles(styles)(FakeCardExpanded)","import axios from \"axios\";\r\n\r\n/**\r\n * Create base url for requisition api\r\n */\r\n\r\nconst api = axios.create({\r\n baseURL: process.env.REACT_APP_WS\r\n});\r\n\r\naxios.defaults.withCredentials = true;\r\n/**\r\n * intecept verbs http to verify token\r\n */\r\napi.interceptors.request.use(async config => {\r\n const token = localStorage.getItem('TOKEN');\r\n if (token) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n config.headers.Accept = \"application/json;charset=UTF-8;application/x-www-form-urlencoded\";\r\n }\r\n return config;\r\n});\r\n\r\napi.interceptors.response.use(\r\n async data => {\r\n return Promise.resolve(data);\r\n }\r\n ,\r\n error => {\r\n const response = Promise.reject(error.response);\r\n if (error && error.response && error.response.status && error.response.status === 401 && window.location.pathname !== '/login' && window.location.pathname !== '/register' && window.location.pathname !== '/activate') {\r\n // console.log(error.response.status)\r\n localStorage.setItem('TOKEN', null)\r\n localStorage.clear();\r\n window.open('/login', '_self')\r\n }\r\n return response\r\n }\r\n);\r\n\r\n/**\r\n * Export api\r\n */\r\nexport default api;","import React from \"react\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Checkbox from \"components/Checkbox\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icon from \"components/Icon\"\r\nimport TextField from \"components/TextField\";\r\n\r\n//DEPENDENCIES\r\nimport List from \"./avatarList\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport AvatarGroup from \"@material-ui/lab/AvatarGroup\"\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\"\r\nimport Grow from \"@material-ui/core/Grow\"\r\nimport Button from \"@material-ui/core/Button\"\r\nimport MenuItem from \"@material-ui/core/MenuItem\"\r\nimport MenuList from \"@material-ui/core/MenuList\"\r\nimport Paper from \"@material-ui/core/Paper\"\r\nimport Popper from \"@material-ui/core/Popper\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n getUserList,\r\n getUserAccess\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n appAlert,\r\n customApp,\r\n getAppAccess,\r\n translate,\r\n} from \"functions/\"\r\n\r\nimport {\r\n cardsAccess,\r\n isResponsible as setResponsible,\r\n userParam as setUserParam,\r\n} from \"functions/users\"\r\n\r\nimport api from \"api/\"\r\nimport { setMyDay } from \"functions/cards\"\r\n\r\nconst useStyles = makeStyles((props) => ({\r\n iconButtonStyleTransaparent: {\r\n margin: 0,\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(250,250,250,0.9)\"\r\n },\r\n \"& .MuiAvatarGroup-avatar\": {\r\n border: 'none',\r\n zIndex: 0,\r\n borderRadius: \"50%\"\r\n }\r\n },\r\n iconButtonStyleWhite: {\r\n margin: 0,\r\n backgroundColor: \"#FFFFFF\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(250,250,250,0.9)\"\r\n },\r\n \"& .MuiAvatarGroup-avatar\": {\r\n border: 'none',\r\n zIndex: 0,\r\n borderRadius: \"50%\"\r\n }\r\n },\r\n}))\r\n\r\nfunction Comp(props) {\r\n const classes = useStyles()\r\n const anchorRef = React.useRef(null)\r\n const { db, session } = reduxStore.getState()\r\n const [data, setData] = React.useState(db.cards[props._id] || {})\r\n const [open, setOpen] = React.useState(!props.open ? false : true)\r\n const [removeUsers, setRemoveUsers] = React.useState([])\r\n const [myDayUsers, setMyDayUsers] = React.useState([])\r\n const [searchValue, setSearchValue] = React.useState(\"\")\r\n const [search, setSearch] = React.useState(false)\r\n const [selectToMyDay, setSelectToMyDay] = React.useState(false)\r\n const [userList, setUserList] = React.useState(getUserList(data._id))\r\n\r\n React.useEffect(() => {\r\n setUserList(getUserList(data._id))\r\n return () => {\r\n\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.users])\r\n\r\n\r\n React.useEffect(() => {\r\n if (db.cards[props._id] && JSON.stringify(db.cards[props._id]) !== JSON.stringify(data)) {\r\n setData(db.cards[props._id])\r\n setUserList(getUserList(data._id))\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards])\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(data._id)\r\n\r\n let admin = false\r\n if (CardAccess > 3)\r\n admin = true\r\n\r\n if (!admin && AppAccess.plan && AppAccess.planAdmin)\r\n admin = true\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace(\"#\", \"\")\r\n\r\n const handleClose = (event) => {\r\n setOpen(false)\r\n setSelectToMyDay(false)\r\n setMyDayUsers([])\r\n }\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === \"Tab\") {\r\n event.preventDefault()\r\n setOpen(false)\r\n }\r\n }\r\n\r\n const selectUser = async (id, acc) => {\r\n let access = 1\r\n if (data && data.type === 'plan')\r\n access = 3\r\n\r\n if (!acc) {\r\n if (\r\n data._planId\r\n && db.cards[data._planId]\r\n && db.cards[data._planId]._users\r\n && db.cards[data._planId]._users[id]\r\n && db.cards[data._planId]._users[id].access\r\n ) {\r\n if (data._parent\r\n && db.cards[data._parent]\r\n && db.cards[data._parent]._users\r\n && db.cards[data._parent]._users[id]\r\n && db.cards[data._parent]._users[id].access\r\n && parseInt(db.cards[data._parent]._users[id].access) > parseInt(db.cards[data._planId]._users[id].access)\r\n ) {\r\n access = parseInt(db.cards[data._parent]._users[id].access)\r\n } else {\r\n access = parseInt(db.cards[data._planId]._users[id].access)\r\n }\r\n }\r\n } else {\r\n access = acc\r\n }\r\n const noNotification = data && data._users && data._users[id] ? true : false\r\n await cardsAccess(props, id, access, data._id, noNotification)\r\n }\r\n\r\n const deleteAccessUser = async (userId) => {\r\n api.put(`cards/removeAccess/`, {\r\n cardId: data._id,\r\n userIds: removeUsers\r\n })\r\n setRemoveUsers([])\r\n }\r\n\r\n const sendToDay = async () => {\r\n myDayUsers.forEach(s => {\r\n setMyDay(props, {\r\n _id: data._id,\r\n userId: s,\r\n option: true\r\n })\r\n })\r\n setSelectToMyDay(false)\r\n }\r\n\r\n\r\n const validateUser = (pr) => {\r\n let usersToRemove = Array.from(removeUsers)\r\n if (data._users[pr] && usersToRemove.indexOf(pr) === -1) {\r\n usersToRemove.push(pr)\r\n setRemoveUsers(usersToRemove)\r\n // setCountRemove(usersToRemove.length)\r\n } else if (data._users[pr] && usersToRemove.indexOf(pr) > -1) {\r\n usersToRemove.splice(usersToRemove.indexOf(pr), 1)\r\n setRemoveUsers(usersToRemove)\r\n // setCountRemove(usersToRemove.length)\r\n } else if (!data._users[pr]) {\r\n\r\n selectUser(pr)\r\n }\r\n }\r\n\r\n const GroupMenuItem = (({ data }) => {\r\n return (\r\n <MenuItem >\r\n {data.label}\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n </div>\r\n\r\n </MenuItem>\r\n )\r\n })\r\n\r\n const UserMenuItem = ({ pr }) => {\r\n let userPermission = false\r\n if (props.permission)\r\n userPermission = true\r\n let myDay = false\r\n if (data._users && data._users[pr] && data._users[pr].myDay\r\n && data._users[pr].myDay\r\n && moment(parseInt(data._users[pr].myDay) * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") === moment(new Date()).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n ) {\r\n myDay = true\r\n }\r\n let isResponsible = Object.keys(userList).length > 1 && userList[pr] && userList[pr].isResponsible ? true : false\r\n let customDefine = props.customDefine && props.customDefine.name && Object.keys(userList).length > 1 && userList[pr] && userList[pr][props.customDefine.name] ? true : false\r\n let user = userList[pr] ? userList[pr] : data._users[pr]\r\n return (\r\n <MenuItem\r\n onClick={userPermission ? () => {\r\n } : null}\r\n disabled={!userPermission}\r\n >\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n ...!userPermission ? { cursor: \"pointer\" } : {}\r\n }}>\r\n <div\r\n style={{\r\n width: \"33px\",\r\n height: \"33px\",\r\n borderRadius: \"50%\",\r\n ...!props.customDefine ? {\r\n border: isResponsible ? `3px deepskyblue solid` : myDay ? `2px #ff8800 solid` : `none`,\r\n } : {\r\n border: customDefine ? `3px green solid` : `none`,\r\n },\r\n backgroundImage: user.image ? `url(\"${user.image}\")` : `null`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center center\",\r\n backgroundColor: \"lightgray\",\r\n textAlign: \"center\",\r\n marginRight: 7\r\n }}\r\n src={user.image || null} >\r\n {!user.image && user && user.name ? user.name.substr(0, 1) : \"\"}\r\n </div>\r\n {user.name || user.name}\r\n <div style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n {!props.customDefine && data._users[pr] && !data._users[pr].isResponsible && admin ?\r\n <CustomButton\r\n title={translate(`$__defineAsResponsible`, 1)}\r\n color={\"lightGray\"}\r\n icon={\"admin_panel_settings\"}\r\n onClick={() => {\r\n appAlert({\r\n message: translate('$__confirmSetAsResponsibleCard', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'left',\r\n confirm: () => {\r\n setResponsible(props, {\r\n cardId: data._id,\r\n userId: pr\r\n })\r\n }\r\n })\r\n }}\r\n size={\"25px\"}\r\n />\r\n\r\n : <React.Fragment></React.Fragment>}\r\n\r\n {props.customDefine && data._users[pr] && admin ?\r\n <CustomButton\r\n title={translate(!data._users[pr][props.customDefine.name] ? `$__defineAs${props.customDefine.name}` : `$__removeThe${props.customDefine.name}`, 1)}\r\n color={!data._users[pr][props.customDefine.name] ? \"lightgray\" : \"green\"}\r\n icon={(props.customDefine && props.customDefine.icon) || \"check\"}\r\n onClick={() => {\r\n appAlert({\r\n message: translate(!data._users[pr][props.customDefine.name] ? `$__confirmSetAs${props.customDefine.name}` : `$__confirmUnSetAs${props.customDefine.name}`, 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'left',\r\n confirm: () => {\r\n setUserParam(props, {\r\n cardId: data._id,\r\n userId: pr,\r\n param: props.customDefine.name,\r\n on: !data._users[pr][props.customDefine.name] ? true : false\r\n })\r\n }\r\n })\r\n }}\r\n size={\"25px\"}\r\n />\r\n\r\n : <React.Fragment></React.Fragment>}\r\n {!props.customDefine ?\r\n <Checkbox\r\n {...selectToMyDay ? {\r\n checked: myDay || myDayUsers.indexOf(pr) > -1 ? true : false\r\n } : {\r\n checked: data._users[pr] ? true : false\r\n }}\r\n disabled={selectToMyDay && myDay ? true : false}\r\n onClick={userPermission ? () => {\r\n if (!selectToMyDay) {\r\n validateUser(pr)\r\n } else {\r\n let mdu = Array.from(myDayUsers)\r\n if (mdu.indexOf(pr) === -1) {\r\n mdu.push(pr)\r\n } else if (mdu.indexOf(pr) > -1) {\r\n mdu.splice(mdu.indexOf(pr), 1)\r\n }\r\n setMyDayUsers(mdu)\r\n }\r\n } : null}\r\n color=\"default\"\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n {removeUsers.indexOf(pr) > -1 &&\r\n <div style={{\r\n height: \"2px\",\r\n width: \"100%\",\r\n backgroundColor: \"red\",\r\n position: \"absolute\",\r\n top: \"50%\"\r\n }}>\r\n\r\n </div>\r\n }\r\n </div>\r\n </MenuItem>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n id=\"quickUser\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}>\r\n <Button\r\n ref={anchorRef}\r\n aria-controls={open ? \"menu-list-grow\" : undefined}\r\n aria-haspopup=\"true\"\r\n id=\"quick_388\"\r\n aria-label=\"menu\"\r\n onClick={(e) => {\r\n if (\r\n (\r\n props.permission\r\n )\r\n ||\r\n (\r\n data && data._users && data._users[session._id] && data._users[session._id].access && parseInt(data._users[session._id].access) > 3\r\n )\r\n ) {\r\n setOpen((prevOpen) => !prevOpen)\r\n e.stopPropagation()\r\n }\r\n }}\r\n className={!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n <List\r\n data={data || {}}\r\n {...props && props.customDefine ? { customDefine: props.customDefine } : {}}\r\n />\r\n </Button>\r\n <Popper\r\n open={open}\r\n anchorEl={anchorRef.current}\r\n // role={undefined}\r\n transition\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{ transformOrigin: placement === \"bottom\" ? \"center top\" : \"center bottom\", maxHeight: \"333px\", minHeight: \"50px\", overflowY: \"auto\" }}\r\n id=\"quick_417\"\r\n >\r\n <Paper>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n paddingBottom: ((removeUsers && removeUsers.length > 0) || (myDayUsers && myDayUsers.length > 0)) ? \"50px\" : 0,\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }}\r\n >\r\n <ClickAwayListener\r\n onClickAway={() => {\r\n handleClose()\r\n }}>\r\n <div>\r\n {search &&\r\n <div style={{\r\n position: \"relative\",\r\n marginTop: 15,\r\n width: \"100%\",\r\n padding: \"4px 15px\",\r\n fontSize: \"16px\",\r\n color: \"lightGray\"\r\n }}>\r\n <TextField\r\n id={`quickUser_Search`}\r\n label={translate('$__searchByName', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'fullName'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"end\"\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => {\r\n setSearchValue(\"\")\r\n setSearch(false)\r\n }}>\r\n <Icon icon='close' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setSearchValue(d.target.value)\r\n },\r\n onBlur: (d) => {\r\n\r\n }\r\n }}\r\n value={searchValue}\r\n placeholder={translate('$__searchByName', 1)}\r\n autoFocus\r\n />\r\n </div>\r\n }\r\n <MenuList autoFocusItem={open} id=\"menu-list-grow\" onKeyDown={handleListKeyDown}>\r\n {selectToMyDay ?\r\n <div style={{ position: \"relative\", overflow: \"auto\" }}>\r\n <MenuItem\r\n disabled\r\n >{translate(\"$__selectUsersToMyDay\", \"*\")}</MenuItem>\r\n {Object.keys(data._users)\r\n .filter(a =>\r\n a !== session._id\r\n\r\n )\r\n .sort((a, b) => {\r\n if (data._users[a]?.name && data._users[b]?.name && data._users[a].name.toLowerCase() < data._users[b].name.toLowerCase())\r\n return -1\r\n else if (data._users[a]?.name && data._users[b]?.name && data._users[a].name.toLowerCase() > data._users[b].name.toLowerCase())\r\n return 1\r\n return 0\r\n }).map(pr => <UserMenuItem pr={pr} key={pr} />)}\r\n </div>\r\n :\r\n <div>\r\n {props.types && props.types.indexOf(\"teams\") > -1 ?\r\n <React.Fragment>\r\n <MenuItem\r\n disabled\r\n >{translate(\"$__usersGroups\", \"*\")}</MenuItem>\r\n {reduxStore.getState().db.userGroup.map(group => {\r\n return (\r\n <GroupMenuItem data={group} key={group.value} />\r\n )\r\n })}\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>}\r\n <MenuItem\r\n disabled\r\n >{translate(\"$__users\", \"*\")}</MenuItem>\r\n {Object.keys(userList).filter(a => {\r\n if (\r\n (!searchValue ||\r\n (\r\n searchValue &&\r\n userList[a].name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n ))\r\n && userList[a].type === \"user\"\r\n && !userList[a].deleted\r\n && !userList[a]._parent\r\n && (\r\n !props.customDefine\r\n ||\r\n (props.customDefine\r\n && data._users[a]\r\n )\r\n )\r\n ) return true\r\n return false\r\n }).sort((a, b) => {\r\n let nameA = db.cards[props._id]._users[a] ? `A${userList[a].name}` : `W${userList[a].name}`\r\n let nameB = db.cards[props._id]._users[b] ? `A${userList[b].name}` : `W${userList[b].name}`\r\n if (nameA < nameB)\r\n return -1\r\n else if (nameA > nameB)\r\n return 1\r\n return 0\r\n }).map(pr =>\r\n userList && userList[pr] && userList[pr]._id &&\r\n <UserMenuItem pr={pr} key={pr} />\r\n )}\r\n {\r\n Object.keys(userList).filter(a => {\r\n if (\r\n (!searchValue ||\r\n (\r\n searchValue &&\r\n userList[a].name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n ))\r\n && userList[a].type === \"external\"\r\n && !userList[a].deleted\r\n && (\r\n !props.customDefine\r\n ||\r\n (props.customDefine\r\n && data._users[a]\r\n )\r\n )\r\n ) return true\r\n return false\r\n }).length > 0 &&\r\n <MenuItem\r\n disabled\r\n >{translate(\"$__UnityUsers\", \"*\")}</MenuItem>\r\n }\r\n {Object.keys(userList).filter(a => (\r\n (!searchValue ||\r\n (\r\n searchValue &&\r\n userList[a].name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n ))\r\n && userList[a].type === \"external\"\r\n && !userList[a].deleted\r\n && (\r\n !props.customDefine\r\n ||\r\n (props.customDefine\r\n && data._users[a]\r\n )\r\n )\r\n )).sort((a, b) => {\r\n if (userList[a].name < userList[b].name)\r\n return -1\r\n else if (userList[a].name > userList[b].name)\r\n return 1\r\n return 0\r\n }).map(pr =>\r\n userList && userList[pr] && userList[pr]._id &&\r\n <UserMenuItem pr={pr} key={pr} />\r\n )}\r\n {\r\n Object.keys(userList).filter(a => {\r\n if (\r\n (!searchValue ||\r\n (\r\n searchValue &&\r\n userList[a].name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n ))\r\n &&\r\n userList[a].type === \"consultant\"\r\n && !userList[a].deleted\r\n && (\r\n !props.customDefine\r\n ||\r\n (props.customDefine\r\n && data._users[a]\r\n )\r\n )\r\n ) return true\r\n return false\r\n }).length > 0 &&\r\n <MenuItem\r\n disabled\r\n >{translate(\"$__planningUsers\", \"*\")}</MenuItem>\r\n }\r\n {Object.keys(userList).filter(a => {\r\n if (\r\n (!searchValue ||\r\n (\r\n searchValue &&\r\n userList[a].name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1\r\n ))\r\n &&\r\n userList[a].type === \"consultant\"\r\n && !userList[a].deleted\r\n && (\r\n !props.customDefine\r\n ||\r\n (props.customDefine\r\n && data._users[a]\r\n )\r\n )\r\n ) return true\r\n return false\r\n }).sort((a, b) => {\r\n if (userList[a].name < userList[b].name)\r\n return -1\r\n else if (userList[a].name > userList[b].name)\r\n return 1\r\n return 0\r\n })\r\n .filter(pr => userList && userList[pr] && userList[pr]._id)\r\n .map(pr =>\r\n <UserMenuItem pr={pr} key={pr} />\r\n )}\r\n </div>\r\n }\r\n </MenuList>\r\n {(!search && !selectToMyDay) ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 15,\r\n top: 10,\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__searchUser`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"search\"}\r\n onClick={() => { setSearch(true) }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {(!props.customDefine && !search && !selectToMyDay && admin) ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 45,\r\n top: 10,\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__sendToMyDay`, 1)}\r\n color={'orange'}\r\n icon={\"schedule_send\"}\r\n onClick={() => { setSelectToMyDay(true) }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n : selectToMyDay ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 15,\r\n top: 10,\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(`$__back`, 1)}\r\n color={customApp(\"menu\")}\r\n icon={\"arrow_back\"}\r\n onClick={() => { setSelectToMyDay(false) }}\r\n size={\"25px\"}\r\n />\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </ClickAwayListener>\r\n </div>\r\n {removeUsers && removeUsers.length > 0 &&\r\n <div style={{\r\n position: \"absolute\",\r\n bottom: \"0px\",\r\n padding: \"7px\",\r\n backgroundColor: \"red\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n color: \"#FFFFFF\",\r\n alignItems: \"center\",\r\n zIndex: 10\r\n }}\r\n onClick={(e => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n })}\r\n >\r\n {translate(\"$__confirmSelectedUsersRemove\")}\r\n <CustomButton\r\n title={translate(`$__remove`, 1)}\r\n color=\"#FFFFFF\"\r\n icon={\"delete_forever\"}\r\n onClick={() => {\r\n deleteAccessUser()\r\n }}\r\n size={\"25px\"}\r\n transparent\r\n />\r\n </div>\r\n }\r\n {selectToMyDay && myDayUsers && myDayUsers.length > 0 &&\r\n <div style={{\r\n position: \"absolute\",\r\n bottom: \"0px\",\r\n padding: \"7px\",\r\n backgroundColor: \"orange\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n color: \"#FFFFFF\",\r\n alignItems: \"center\",\r\n }}\r\n onClick={(e => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n })}\r\n >\r\n <AvatarGroup\r\n style={{\r\n flexWrap: \"wrap\"\r\n }}\r\n >\r\n {myDayUsers\r\n .map((a, i) => {\r\n if (a && reduxStore.getState().db.users[a]) {\r\n return (\r\n <Tooltip\r\n title={reduxStore.getState().db.users[a].name}\r\n key={a}\r\n >\r\n <Avatar\r\n alt={reduxStore.getState().db.users[a].name}\r\n src={reduxStore.getState().db.users[a].image || null}\r\n style={{\r\n width: \"23px\",\r\n height: \"23px\"\r\n }}>\r\n {reduxStore.getState().db.users[a].name.substr(0, 1)}\r\n </Avatar>\r\n </Tooltip>\r\n )\r\n } else {\r\n return (<React.Fragment></React.Fragment>)\r\n }\r\n })}\r\n </AvatarGroup>\r\n <CustomButton\r\n title={translate(`$__sendToMyDay`, 1)}\r\n color=\"#FFFFFF\"\r\n icon={\"schedule_send\"}\r\n onClick={() => {\r\n sendToDay()\r\n }}\r\n size={\"25px\"}\r\n transparent\r\n />\r\n </div>\r\n }\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store) => {\r\n return ({\r\n cards: store.db.cards,\r\n users: store.db.users\r\n })\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Comp)","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst buttonStyle = {\r\n button: {\r\n ...defaultFont,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n cursor: \"pointer\",\r\n // width: 'fit-content',\r\n userSelect: \"none\",\r\n \"&$reverse\": {},\r\n },\r\n buttonText: {\r\n ...defaultFont,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n // marginLeft: \"7px\",\r\n cursor: \"pointer\",\r\n width: 'fit-content',\r\n userSelect: \"none\",\r\n \"&$reverse\": {},\r\n \"& :hover\": {\r\n //backgroundColor: 'rgba(0,0,0,0.1)'\r\n }\r\n },\r\n reverse: {\r\n flexDirection: \"row-reverse\",\r\n },\r\n iconButton: {\r\n width: \"21px\",\r\n height: \"21px\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n borderRadius: \"10%\",\r\n },\r\n icon: {\r\n fontSize: \"21px\"\r\n },\r\n onlyIcon: {\r\n fontSize: \"21px\"\r\n },\r\n text: {\r\n marginLeft: \"7px\",\r\n marginRight: \"7px\"\r\n }\r\n};\r\n\r\nexport default buttonStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\n// material-ui components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport BadgeIcon from \"components/Icon/Badge\";\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/iconButtonStyle\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\"\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst RegularButton = ((props) => {\r\n const classes = useStyles();\r\n const { text } = props;\r\n const btnClasses = classNames({\r\n [classes.button]: true,\r\n [classes.reverse]: props.reverse ? true : false,\r\n });\r\n\r\n const btnClassesText = classNames({\r\n [classes.buttonText]: true,\r\n [classes.reverse]: props.reverse ? true : false,\r\n });\r\n return (\r\n <div className={props.text ? btnClassesText : btnClasses} onClick={() => props.onClick ? props.onClick() : null}\r\n style={{\r\n ...props.style\r\n }}\r\n >\r\n <div\r\n className={classes.iconButton}\r\n style={{\r\n color: props.iconColor ? customApp(props.iconColor) : customApp('color'),\r\n backgroundColor: props.iconBackground ? customApp(props.iconBackground) : 'none',\r\n }}>{\r\n props.icon ?\r\n <BadgeIcon\r\n className={props.iconBackground ? classes.icon : classes.onlyIcon}\r\n size={props.size ? props.size : null}\r\n icon={props.icon} color={props.iconColor}\r\n title={props.title || null}\r\n onClick={() => props.onClick ? props.onClick() : null}\r\n style={{\r\n ...props.style ? props.style : {}\r\n }}\r\n />\r\n :\r\n <BadgeIcon\r\n className={props.iconBackground ? classes.icon : classes.onlyIcon}\r\n icon={'stop_circle'}\r\n color={props.iconColor}\r\n title={props.title || null}\r\n onClick={() => props.onClick ? props.onClick() : null}\r\n style={{\r\n ...props.style ? props.style : {}\r\n }}\r\n />\r\n }\r\n </div>\r\n {text &&\r\n <div className={classes.text} style={{ color: props.textColor ? customApp(props.textColor) : customApp('medium') }}>{text}</div>\r\n }\r\n </div>\r\n );\r\n});\r\n\r\nexport default RegularButton;\r\n","import { createBrowserHistory } from \"history\";\r\n\r\nconst history = createBrowserHistory();\r\n\r\nexport default history;\r\n","import React from \"react\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\n\r\n\r\nimport {\r\n translate,\r\n} from \"functions/\"\r\n\r\n\r\nfunction AvatarList(props) {\r\n const { data } = props\r\n\r\n if (!(data && data._users && Object.keys(data._users).length > 0))\r\n return (<></>)\r\n\r\n const users = data._users ? data._users : {}\r\n\r\n return (\r\n <div>\r\n {users && Object.keys(users).length > 0 && Object.keys(users)\r\n .filter(u =>\r\n String(u) !== \"null\"\r\n && (\r\n !props.customDefine\r\n ||\r\n (\r\n props.customDefine\r\n && props.customDefine.name\r\n && users[u]\r\n && users[u][props.customDefine.name]\r\n )\r\n )\r\n ).length === 0 ?\r\n translate(\"$__selectUsers\")\r\n :\r\n <div\r\n style={{\r\n display: \"flex\"\r\n }}\r\n >\r\n {Object\r\n .keys(users)\r\n .filter(u =>\r\n String(u) !== \"null\"\r\n && (\r\n !props.customDefine\r\n ||\r\n (\r\n props\r\n && props.customDefine\r\n && props.customDefine.name\r\n && users\r\n && users[u]\r\n && users[u][props.customDefine.name]\r\n )\r\n )\r\n )\r\n .sort((a, b) => {\r\n if (users[a].isResponsible)\r\n return -1\r\n if (users[b].isResponsible)\r\n return 1\r\n if (users[a].name < users[b].name)\r\n return -1\r\n if (users[a].name > users[b].name)\r\n return 1\r\n return 0\r\n })\r\n .filter((a, i) => {\r\n let limit = props.noLimit ? 7 : props.limit ? props.limit : 7\r\n if (i <= limit)\r\n if (users[a] && users[a].name)\r\n return true\r\n return false\r\n })\r\n .map((a, i) => {\r\n let myDay = false\r\n let isResponsible = Object.keys(users).length > 1 && users[a].isResponsible ? true : false\r\n let customDefine = props.customDefine && props.customDefine.name ? Object.keys(users).length > 1 && users[a][props.customDefine.name] ? true : false : false\r\n if (users[a].myDay\r\n && users[a].myDay\r\n && moment(parseInt(users[a].myDay) * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") === moment(new Date()).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n ) {\r\n myDay = true\r\n }\r\n let limit = props.noLimit ? 7 : props.limit ? props.limit : 7\r\n if (i < limit) {\r\n return (\r\n <div key={a} style={{ marginLeft: -7, position: \"relative\" }}>\r\n <Tooltip\r\n title={`${users[a].name}${myDay ? ` (${translate(\"$__inMyDay\")})` : ``}`}\r\n key={a}\r\n >\r\n <div\r\n overlap=\"circular\"\r\n alt={users[a].name}\r\n src={users[a].image || null}\r\n style={{\r\n width: myDay || isResponsible ? '30px' : props.avatarSize ? props.avatarSize : \"24px\",\r\n height: myDay || isResponsible ? '30px' : props.avatarSize ? props.avatarSize : \"24px\",\r\n borderRadius: \"50%\",\r\n ...!props.customDefine ? {\r\n border: isResponsible ? `3px deepskyblue solid` : myDay ? `2px #ff8800 solid` : `none`,\r\n } : {\r\n border: customDefine ? props.customDefine.avatarBorder || `3px green solid` : `none`,\r\n },\r\n backgroundImage: users[a].image ? `url(\"${users[a].image}\")` : `null`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center center\",\r\n backgroundColor: \"lightgray\",\r\n textAlign: \"center\",\r\n }}>\r\n {!users[a].image ? users[a].name.substr(0, 1) : ``}\r\n </div>\r\n </Tooltip>\r\n {myDay &&\r\n <div style={{\r\n position: \"absolute\",\r\n backgroundColor: \"#ff8800\",\r\n width: \"14px\",\r\n height: \"14px\",\r\n borderRadius: \"14px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n right: \"7px\",\r\n bottom: 0,\r\n }}>\r\n <Icon icon={\"hourglass_top\"} size=\"10px\" color=\"#FFFFFF\" />\r\n </div>\r\n }\r\n </div>\r\n )\r\n } else if (i === limit) {\r\n let count = Object.keys(users).length - limit\r\n return (\r\n <Tooltip\r\n title={(\r\n <ul style={{ listingStyle: \"none\", padding: 0 }}>\r\n {Object.keys(users)\r\n .sort((a, b) => {\r\n if (users[a].isResponsible)\r\n return -1\r\n if (users[b].isResponsible)\r\n return 1\r\n if (users[a].name < users[b].name)\r\n return -1\r\n if (users[a].name > users[b].name)\r\n return 1\r\n return 0\r\n })\r\n .filter((aa, aai) => {\r\n if (aai >= limit &&\r\n users[aa] &&\r\n users[aa].name\r\n ) return true\r\n return false\r\n })\r\n .map((aa, aai) => {\r\n return (\r\n <li key={aa} style={{ display: \"flex\", alignItems: \"center\" }}>\r\n <Avatar\r\n overlap=\"circular\"\r\n alt={users[aa].name}\r\n src={users[aa].image || null}\r\n style={{\r\n width: props.avatarSize ? props.avatarSize : \"22px\",\r\n height: props.avatarSize ? props.avatarSize : \"22px\",\r\n border: users[aa].isResponsible ? `3px deepskyblue solid` : users[aa].myDay ? `2px #ff8800 solid` : `none`,\r\n ...!props.customDefine ? {\r\n border: users[aa].isResponsible ? `3px deepskyblue solid` : users[aa].myDay ? `2px #ff8800 solid` : `none`,\r\n } : {\r\n border: users[aa][props.customDefine.name] ? `3px green solid` : `none`,\r\n },\r\n marginRight: 7\r\n }}>\r\n {users[aa].name.substr(0, 1)}\r\n </Avatar>{users[aa].name}\r\n </li>)\r\n })}\r\n </ul>\r\n )}\r\n key={i}\r\n >\r\n <Avatar style={{\r\n width: props.avatarSize ? props.avatarSize : 27,\r\n height: props.avatarSize ? props.avatarSize : 27,\r\n border: 'none'\r\n }} alt={`+${count}`} >\r\n <span style={{ fontSize: 10 }}>{`+${count}`}</span>\r\n </Avatar>\r\n </Tooltip>\r\n )\r\n }\r\n return (<></>)\r\n })}\r\n </div>\r\n }\r\n\r\n </div>\r\n )\r\n}\r\n\r\nexport default AvatarList","const style = theme => {\r\n return ({\r\n root: {\r\n position: 'relative',\r\n },\r\n timeInfo: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'grey',\r\n width: 'calc(100% - 15px)',\r\n position: 'relative',\r\n float: 'left',\r\n marginBottom: '7px',\r\n '& .text': {\r\n marginLeft: '7px',\r\n }\r\n },\r\n dataSave: {\r\n padding: '7px'\r\n },\r\n fieldSet: {\r\n padding: '7px',\r\n width: 'calc(100% - 50px)'\r\n },\r\n progress: {\r\n //width: 'calc(100% - 50px)',\r\n },\r\n progressPercentage: {\r\n //width: '45px',\r\n }\r\n })\r\n}\r\n\r\nexport default style;","import React from \"react\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store\"\r\n\r\n//COMPONENTS\r\nimport Badge from \"components/Icon/Badge\"\r\n\r\n//FUNCTIONS\r\nimport {\r\n customApp,\r\n getAppAccess,\r\n translate,\r\n} from \"functions/\"\r\nimport {\r\n connectInMount,\r\n getUserAccess,\r\n planAccountVerify,\r\n} from \"functions/cards\"\r\n\r\nexport default function ConnectedIn(props) {\r\n const { db, session } = reduxStore.getState()\r\n const connectedIn = connectInMount(props.id)\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n if (Object.keys(connectedIn).length === 0)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n const returnConnections = Object.keys(connectedIn)\r\n .filter((a, i) => connectedIn[a].icon && connectedIn[a].type && connectedIn[a].name)\r\n .map((a, i) => {\r\n let connectedCardAccess = getUserAccess(a)\r\n return (\r\n <div style={{ marginRight: '10px', width: '100%' }} key={i}>\r\n <div style={{ display: 'flex', cursor: 'pointer' }}\r\n onClick={\r\n (props.open\r\n && (\r\n (\r\n (\r\n (AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n &&\r\n (\r\n db.cards[connectedIn[a]._id].type !== 'plan'\r\n || (\r\n db.cards[connectedIn[a]._id].type === 'plan'\r\n && planAccountVerify(connectedIn[a]._id)\r\n )\r\n )\r\n )\r\n || connectedCardAccess >= 1\r\n ) &&\r\n (\r\n !db.cards[connectedIn[a]._id].private ||\r\n (\r\n db.cards[connectedIn[a]._id].private &&\r\n db.cards[connectedIn[a]._id]._users &&\r\n db.cards[connectedIn[a]._id]._users[session._id]\r\n )\r\n )\r\n )\r\n )\r\n ? (e) => {\r\n props.open(connectedIn[a]._id)\r\n e.stopPropagation()\r\n } : null}\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n icon={connectedIn[a].icon}\r\n title={`${translate(`$__${connectedIn[a].type}`, '*')}: ${connectedIn[a].name}`}\r\n size=\"16px\"\r\n color={customApp(\"color\")}\r\n />\r\n <span style={{ marginLeft: '5px' }}>\r\n {connectedIn[a].name}\r\n </span>\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n }\r\n )\r\n return (\r\n <div style={{ width: 'calc(100% - 5px)' }} onClick={(e) => { e.stopPropagation() }}>\r\n {props.showLegend ?\r\n <fieldset style={{ marginBottom: '14px', width: '100%' }}>\r\n <legend>{translate(props.legend || '$__connectedIn', 1)}</legend>\r\n {returnConnections}\r\n </fieldset>\r\n : returnConnections\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n )\r\n}","const icons = {\r\n instruction: {},\r\n picture: {},\r\n};\r\n\r\nexport default icons;\r\n","import {\r\n defaultFont,\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nimport textField from \"./TextField.js\"\r\n\r\nimport { customApp } from \"functions/\";\r\n\r\nconst headerStyle = () => ({\r\n ...textField,\r\n appBar: {\r\n boxShadow: \"none\",\r\n borderBottom: \"0\",\r\n marginBottom: \"0\",\r\n position: \"fixed\",\r\n width: \"100%\",\r\n zIndex: \"100\",\r\n color: '#FFFFFF',\r\n border: \"0\",\r\n minHeight: \"0px\",\r\n display: \"flex\",\r\n height: \"50px\",\r\n justifyContent: \"center\",\r\n userSelect: 'none',\r\n },\r\n container: {\r\n //minHeight: \"30px\"\r\n },\r\n separator: {\r\n position: \"absolute\",\r\n left: \"0px\",\r\n right: \"0px\",\r\n bottom: \"-2px\",\r\n height: \"2px\",\r\n backgroundColor: customApp('line')\r\n },\r\n search: {\r\n position: \"absolute\",\r\n left: \"62px\",\r\n right: \"0px\",\r\n //paddingLeft: '70px',\r\n bottom: \"-35px\",\r\n height: \"33px\",\r\n boxShadow: \"0 3px 3px rgba(0,0,0,0.33)\",\r\n display: \"block\",\r\n padding: \"0 15px\",\r\n zIndex: 1,\r\n backgroundColor: customApp('menu'),\r\n \"& .selectedCard\": {\r\n position: 'relative',\r\n float: 'left',\r\n width: '250px',\r\n height: '33px',\r\n display: 'flex !important',\r\n alignItems: 'center'\r\n }\r\n },\r\n searchMobile: {\r\n position: \"absolute\",\r\n left: \"0px\",\r\n right: \"0px\",\r\n paddingLeft: '15px',\r\n bottom: \"-35px\",\r\n height: \"33px\",\r\n boxShadow: \"0 3px 3px rgba(0,0,0,0.33)\",\r\n display: \"block\",\r\n padding: \"0 15px\",\r\n backgroundColor: customApp('menu'),\r\n \"& .selectedCard\": {\r\n position: 'relative',\r\n float: 'left',\r\n width: '250px',\r\n height: '33px',\r\n display: 'flex !important',\r\n alignItems: 'center'\r\n }\r\n },\r\n flex: {\r\n flex: 1\r\n },\r\n title: {\r\n ...defaultFont,\r\n lineHeight: \"30px\",\r\n fontSize: \"18px\",\r\n borderRadius: \"3px\",\r\n textTransform: \"none\",\r\n color: \"inherit\",\r\n paddingTop: \"0.625rem\",\r\n paddingBottom: \"0.625rem\",\r\n margin: \"0 !important\",\r\n letterSpacing: \"unset\",\r\n \"&:hover,&:focus\": {\r\n background: \"transparent\"\r\n }\r\n },\r\n logo: {\r\n position: \"fixed\",\r\n padding: \"7px 0px\",\r\n margin: \"0\",\r\n display: \"flex\",\r\n zIndex: \"4\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n },\r\n logoMini: {\r\n transition: \"all 300ms linear\",\r\n opacity: 1,\r\n textAlign: \"center\",\r\n width: \"40px\",\r\n maxHeight: \"40px\",\r\n marginLeft: \"10px\",\r\n marginRight: \"8px\",\r\n color: \"inherit\",\r\n },\r\n logoImg: {\r\n width: \"100%\",\r\n },\r\n logoNormal: {\r\n ...defaultFont,\r\n margin: \"auto\",\r\n transition: \"all 300ms linear\",\r\n opacity: \"1\",\r\n transform: \"translate3d(0px, 0, 0)\",\r\n textTransform: \"uppercase\",\r\n fontSize: \"18px\",\r\n whiteSpace: \"nowrap\",\r\n fontWeight: \"400\",\r\n overflow: \"hidden\",\r\n color: `${customApp('light')} !important`,\r\n \"&,&:hover,&:focus\": {\r\n color: \"inherit\"\r\n }\r\n },\r\n page: {\r\n position: 'relative',\r\n color: customApp('line'), fontSize: '16px',\r\n textTransform: 'uppercase',\r\n cursor: 'pointer',\r\n '& a': {\r\n color: '#FFFFFF'\r\n }\r\n },\r\n pageLink: {\r\n position: 'relative',\r\n float: 'left',\r\n color: customApp('light'),\r\n margin: '7px',\r\n fontSize: '14px',\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n '&:hover': {\r\n fontWeight: 'bold'\r\n },\r\n '& a': {\r\n color: '#FFFFFF'\r\n }\r\n },\r\n pageLinkActive: {\r\n color: customApp('line'),\r\n margin: '7px',\r\n fontSize: '14px',\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n fontWeight: 'bold',\r\n },\r\n activeArrow: {\r\n position: 'absolute',\r\n left: 'calc(50% - 11px)',\r\n bottom: '-23px',\r\n transform: 'rotate(-90deg)'\r\n }\r\n});\r\n\r\nexport default headerStyle;\r\n","import React from 'react'\r\n\r\n//COMPONENTS \r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport Icon from 'components/Icon'\r\nimport QuickUsers from \"components/User/quick\"\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\n\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\nimport history from 'store/history'\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, getAppAccess } from \"functions\"\r\nimport { getUserAccess } from \"functions/cards\"\r\n\r\nconst AboutPlan = ({\r\n reduxFunction,\r\n cards,\r\n styles,\r\n preview,\r\n edit,\r\n handleRemoveObject,\r\n id\r\n}) => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { session } = reduxStore.getState()\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(hashs[0])\r\n\r\n return (\r\n <div style={{ width: \"100%\", height: '100%', overflow: 'hidden' }}>\r\n {!preview && <UiCard style={{ marginTop: '0', height: '100%' }}>\r\n {edit ?\r\n <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', ...styles }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: styles.color ? styles.color : 'rgba(0, 0, 0, 0.67)', ...styles }}>blur_on</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7.5px', alignSelf: 'center', fontWeight: 'bold', marginTop: '1px', color: styles.color ? styles.color : 'rgba(0, 0, 0, 0.67)', ...styles }}>{translate(`$__planResume`, 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={() => handleRemoveObject(id)} style={{ height: '25px', color: styles.color ? 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: styles.color ? 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> : <HeaderWithMenu\r\n title={translate(`$__planResume`, 1)}\r\n icon={'blur_on'}\r\n color={styles.color ? styles.color : 'rgba(0, 0, 0, 0.67)'}\r\n style={{\r\n background: styles.backgroundColor ? styles.backgroundColor : 'white',\r\n padding: '12.8px',\r\n borderRadius: '5px 5px 0px 0px ',\r\n fontWeight: 'normal',\r\n borderBottom: '1px solid #D3D3D3'\r\n }}\r\n moreButton\r\n optionsProps={{ transparent: true, btColor: styles.color ? styles.color : 'rgba(0, 0, 0, 0.67)' }}\r\n options={((CardAccess && parseInt(CardAccess) > 3) || AppAccess.owner || AppAccess.planAdmin || AppAccess.planEdit || AppAccess.planModerate) ? [\r\n {\r\n name: \"$__edit\",\r\n icon: \"edit\",\r\n onClick: () => {\r\n reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: 'cards',\r\n id: hashs[0],\r\n module: \"cardEdit\",\r\n activeModule: 'cardEdit',\r\n data: cards[hashs[0]],\r\n });\r\n },\r\n }\r\n ] : []}\r\n actionButtonsStyle={{\r\n top: '-9px !important'\r\n }}\r\n\r\n />\r\n }\r\n <UiCardBody>\r\n <div >\r\n <div style={{ width: '100%', color: customApp('menu') }}><span style={{ fontWeight: 'bold' }}>{translate('$__name', 1)}:</span> {cards[hashs[0]]?.name}</div>\r\n <div style={{ width: '100%', color: customApp('menu') }}><span style={{ fontWeight: 'bold' }}>{translate('$__description', 1)}:</span> {cards[hashs[0]]?.description}</div>\r\n {!cards[hashs[0]]?.isTemplate && cards[hashs[0]] && cards[hashs[0]]?._users &&\r\n <React.Fragment>\r\n <div style={{ width: '100%', marginTop: '15px', color: customApp('menu'), fontWeight: 'bold' }}>{translate('$__users', '*')}:</div>\r\n <QuickUsers _id={hashs[0]} noLimit avatarSize=\"33px\"\r\n permission={true}\r\n />\r\n </React.Fragment>\r\n }\r\n </div>\r\n {(session.account === \"7806912b-4c7d-4f4f-b9e0-b93fc8f08776\") ?\r\n <CustomButton\r\n color={customApp('menu')}\r\n icon={'monitoring'}\r\n onClick={() => {\r\n history.push(`sp#${hashs[0]}/statistics`)\r\n }}\r\n size={'15px'}\r\n title={`${translate(\"$__tagsStatistics\")}`}\r\n text={`${translate(\"$__tagsStatistics\")}`}\r\n />\r\n : <></>}\r\n </UiCardBody>\r\n </UiCard>}\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n cards: store.db.cards\r\n}\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)(AboutPlan);\r\n","import React, { useEffect, useState, useRef } from 'react'\r\n\r\n//COMPONENTS\r\nimport Legend from '../Legend';\r\nimport { ResponsiveBar } from '@nivo/bar'\r\nimport Header from 'components/Dashboards/Header'\r\nimport './Loader.css';\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from 'functions';\r\nimport Icon from 'components/Icon';\r\n\r\n\r\nconst Barchart = (props) => {\r\n\r\n const keysLabel = useRef([])\r\n const { db } = reduxStore.getState()\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [filter, setFilter] = useState({\r\n index: 0,\r\n showQuantity: 10,\r\n number: 10,\r\n finalIndex: 10\r\n })\r\n const [data, setData] = useState({})\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n useEffect(() => {\r\n if (Object.keys(props.filter).length > 0) {\r\n setFilter({ ...filter, ...props.filter })\r\n }\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...filter,\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.filter, props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let usersUsed = {}\r\n if (props.planCards && !props.load) {\r\n Object.keys(props.planCards).length > 0 && Object.keys(props.planCards).filter((fil) => !db.cards[fil].deleted).forEach(cardId => {\r\n\r\n Object.keys(db.cards[cardId]?._users).forEach(u => {\r\n let usersFilter = filter?.users?.length > 0 ? filter.users.includes(db.cards[cardId]?._users[u]._id) : true\r\n\r\n\r\n if (usersFilter) {\r\n if (!usersUsed[u]) {\r\n usersUsed = {\r\n ...usersUsed,\r\n [u]: {\r\n ...usersUsed[u],\r\n [db.cards[cardId].status]: 0,\r\n \"allTask\": 0,\r\n \"user\": db.cards[cardId]?._users[u].name.match(/\\b(\\w)/g).join(''),\r\n \"id\": u,\r\n \"image\": db.cards[cardId]?._users[u].image,\r\n \"name\": db.cards[cardId]?._users[u].name\r\n }\r\n }\r\n }\r\n\r\n\r\n // if (db.cards[cardId]?._users[u].isResponsible) {\r\n let lastDateCard =\r\n db.cards[cardId].completed_at?.low\r\n || db.cards[cardId].completed_at\r\n || db.cards[cardId].updated_at?.low\r\n || db.cards[cardId].updated_at\r\n || db.cards[cardId].created_at?.low\r\n || db.cards[cardId].created_at\r\n\r\n let dateCard = moment(lastDateCard * 1000).format(\"YYYYMMDD\");\r\n let startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000).format(\"YYYYMMDD\") :\r\n (filter.startDate ? moment(filter.startDate * 1000).format(\"YYYYMMDD\") : moment().subtract(1, 'month').format(\"YYYYMMDD\"));\r\n\r\n let endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000).format(\"YYYYMMDD\") :\r\n (filter.endDate ? moment(filter.endDate * 1000).format(\"YYYYMMDD\") : moment().format(\"YYYYMMDD\"))\r\n\r\n if (parseInt(dateCard) >= parseInt(startDate) && parseInt(dateCard) <= parseInt(endDate)) {\r\n let newColor = db.status.filter(fil => fil.value === db.cards[cardId].status)[0].color\r\n if (filter?.colorsArr) {\r\n filter.colorsArr.forEach((item) => {\r\n if (item.label === db.cards[cardId].status) {\r\n newColor = item.color;\r\n }\r\n });\r\n }\r\n if (db.cards[cardId].type !== 'step')\r\n usersUsed = {\r\n ...usersUsed,\r\n [u]: {\r\n ...usersUsed[u],\r\n [db.cards[cardId].status]: usersUsed[u]?.[db.cards[cardId].status] ? usersUsed[u]?.[db.cards[cardId].status] + 1 : 1,\r\n \"allTask\": usersUsed[u]?.[\"allTask\"] ? usersUsed[u]?.[\"allTask\"] + 1 : 1,\r\n [db.cards[cardId].status + 'Color']: newColor\r\n }\r\n }\r\n const newLabel = {\r\n label: db.cards[cardId].status,\r\n color: newColor\r\n }\r\n if (!keysLabel.current.some(item => item.label === newLabel.label))\r\n keysLabel.current = [...keysLabel.current, newLabel]\r\n }\r\n }\r\n // }\r\n }\r\n )\r\n })\r\n if (data !== usersUsed) {\r\n setData(usersUsed)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.load, filter, dashFilterChart]);\r\n\r\n const getNames = (userID) => {\r\n let name = \"\"\r\n Object.values(data).forEach((item) => {\r\n if (item.id === userID) {\r\n name = item?.name.match(/\\b(\\w)/g).join('')\r\n }\r\n })\r\n return name\r\n }\r\n\r\n let startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000).format(\"DD/MM/YYYY\") :\r\n (filter.startDate ? moment(filter.startDate * 1000).format(\"DD/MM/YYYY\") : moment().subtract(1, 'month').format(\"DD/MM/YYYY\"));\r\n\r\n let endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000).format(\"DD/MM/YYYY\") :\r\n (filter.endDate ? moment(filter.endDate * 1000).format(\"DD/MM/YYYY\") : moment().format(\"DD/MM/YYYY\"))\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'visible' }}>\r\n <Header\r\n handleSetSelected={(value) => {\r\n setFilter({ ...filter, ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n filterConfig={{ filterSelect: Object.keys(data).length > 0 && Object.values(data).length }}\r\n tittle={translate(\"$__\" + props.tittle)}\r\n icon={props.icon}\r\n styles={props.styles}\r\n indicators={filter && filter}\r\n datafilter={true}\r\n handleRemoveObject={() => props.handleRemoveObject(props.id)}\r\n edit={props.edit}\r\n handleSetoption={(value) => {\r\n setFilter({ ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{}} >\r\n </div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n {(!props.load && inViewport) && <div style={{ position: 'absolute', right: '2%', top: '2%', padding: '5px', display: 'flex', zIndex: '9', justifyContent: 'center', alignContent: 'center' }}>\r\n <div style={{ marginTop: '2px', marginRight: '4px' }}>\r\n {startDate + ' ~ '}\r\n {endDate + ' -- '}\r\n {filter.showQuantity < Object.keys(data).length ? filter.showQuantity + \"/\" : Object.keys(data).length + \"/\"}\r\n {Object.keys(data).length > 0 && <span>{Object.keys(data).length}</span>}\r\n </div>\r\n <Icon>person</Icon>\r\n </div>}\r\n {(filter.index !== 0) &&\r\n <Icon\r\n onClick={() =>\r\n setFilter(\r\n {\r\n ...filter,\r\n index: filter.index - 1,\r\n finalIndex: filter.finalIndex - 1\r\n })\r\n }\r\n style={\r\n {\r\n position: 'absolute',\r\n zIndex: '999',\r\n top: '48%',\r\n left: '10px'\r\n }}>\r\n arrow_back_ios\r\n </Icon>\r\n }\r\n {(Object.keys(data).length !== filter.index + filter.number && Object.keys(data).length > filter.showQuantity) && <Icon onClick={() => setFilter({ ...filter, index: filter.index + 1, finalIndex: filter.finalIndex + 1 })} style={{ position: 'absolute', zIndex: '999', top: '48%', right: '10px' }}>arrow_forward_ios</Icon>}\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter', backgroundColor: '#f5f5f5' }}>\r\n {(Object.keys(data).length > 0 && (!props.load && inViewport)) ?\r\n <div className='component' style={{ width: '100%', height: '100%' }}>\r\n <ResponsiveBar\r\n data={Object.values(data).sort(function (a, b) {\r\n if (a[\"allTask\"] > b[\"allTask\"]) {\r\n return -1;\r\n }\r\n if (a[\"allTask\"] < b[\"allTask\"]) {\r\n return 1;\r\n }\r\n return 0;\r\n }).slice(filter.index, filter.finalIndex)}\r\n keys={[\r\n 'inProgress',\r\n 'completed',\r\n 'notStarted',\r\n 'paused',\r\n 'awaitAction'\r\n ]} // data\r\n colors={({ id, data }) => data[`${id}Color`]}\r\n tooltip={point => {\r\n\r\n return <div style={{\r\n fontSize: '12px',\r\n width: '200px',\r\n marginBottom: '10px',\r\n zIndex: '99999'\r\n }}>\r\n <div style={{ display: 'flex', marginLeft: '5px', marginTop: '10px', textOverflow: 'ellipsis', overflow: 'hidden' }}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n width: '40px',\r\n height: '32px',\r\n backgroundImage: `url(\"${point.data.image}\")`,\r\n backgroundColro: \"lightgray\",\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'center center',\r\n borderRadius: '50%',\r\n alignSelf: 'center'\r\n }}\r\n ></div>\r\n <p style={{ margin: '0px', marginLeft: '12px', fontSize: '20px', alignSelf: 'center', width: '100%', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>{point.data.name}</p>\r\n </div>\r\n <div style={{ borderBottom: '1px solid #d1d1cf', marginTop: '10px' }}></div>\r\n <div style={{ width: \"100%\", fontSize: '18px', padding: '10px', marginBottom: '5px', marginTop: '4px' }}>\r\n {Object.entries(point.data).map(([key, val] = Object.entries(point.data)) => {\r\n if ([\r\n 'inProgress',\r\n 'completed',\r\n 'notStarted',\r\n 'paused',\r\n 'awaitAction'\r\n ].includes(key)) {\r\n let color = ''\r\n switch (key) {\r\n case 'inProgress': color = \"#011E41\"; break;\r\n case 'completed': color = \"#5A7F71\"; break;\r\n case 'notStarted': color = \"#929497\"; break;\r\n case 'paused': color = \"#EBA900\"; break;\r\n case 'awaitAction': color = \"pink\"; break;\r\n default: color = 'white'\r\n }\r\n if (filter.colorsArr)\r\n filter.colorsArr.forEach((item) => {\r\n if (item.label === key)\r\n color = item.color\r\n })\r\n return <div style={{ display: 'flex', marginBottom: '8px' }} key={key}>\r\n <div style={{ borderRadius: '50%', backgroundColor: color, height: '20px', width: '20px', alignSelf: 'center', marginRight: '10px' }}> </div>\r\n <div style={{ marginLeft: '14x' }}> {translate(\"$__\" + key)} : <span style={{ fontWeight: 'bolder' }}>{val}</span></div>\r\n </div>\r\n } else return null\r\n })}\r\n\r\n </div>\r\n </div>;\r\n }}\r\n indexBy={\"id\"} //data\r\n margin={{ top: 40, right: 20, bottom: 30, left: 40 }}\r\n padding={0.3}\r\n valueScale={{ type: 'linear' }}\r\n indexScale={{ type: 'band', round: false }}\r\n enableLabel={false}\r\n yScale={{\r\n max: 100,\r\n }}\r\n minValue={0}\r\n theme={{\r\n fontSize: '14px',\r\n color: 'white',\r\n background: '#f5f5f5',\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n fill: 'rgba(0, 0, 0, 0.50)',\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n }\r\n },\r\n }}\r\n\r\n fill={[\r\n {\r\n match: {\r\n id: 'fries'\r\n },\r\n id: 'dots'\r\n },\r\n {\r\n match: {\r\n id: 'sandwich'\r\n },\r\n id: 'lines'\r\n }\r\n ]}\r\n borderColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 1.6\r\n ]\r\n ]\r\n }}\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: 32,\r\n format: (v) => getNames(v),\r\n } : null}\r\n axisLeft={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: -40\r\n } : null}\r\n role=\"application\"\r\n /> </div> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={filter?.colorsArr}\r\n />\r\n </div>\r\n </div >\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Barchart\r\n","import React, { useEffect, useRef, useState } from 'react'\r\n\r\n//COMPONENTS\r\nimport { ResponsiveLine } from '@nivo/line'\r\nimport Legend from '../Legend'\r\nimport Header from 'components/Dashboards/Header'\r\nimport './Loader.css';\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\nimport Preview from '../Preview/TasksPreview';\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from 'functions'\r\n\r\nconst TaskDoneByTime = (props) => {\r\n\r\n const { db } = reduxStore.getState()\r\n const [data, setData] = useState({})\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const higherValue = useRef(0)\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n const fakeDataWall = [\r\n {\r\n \"x\": \"\",\r\n \"y\": 0\r\n },\r\n {\r\n \"x\": \" \",\r\n \"y\": 0\r\n },\r\n ]\r\n useEffect(() => {\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let timeTasks = {}\r\n let lateTasks = {}\r\n const getWeek = () => {\r\n let weekStart = moment().startOf('week');\r\n for (let i = 1; i < 7; i++) {\r\n let dateCard = moment(weekStart).add(i, 'days').format(\"YYYYMMDD\");\r\n timeTasks = {\r\n ...timeTasks,\r\n \"id\": \"now\",\r\n \"data\": {\r\n ...timeTasks[\"data\"],\r\n [dateCard]: {\r\n \"x\": translate('$__' + moment(dateCard).format('dddd')),\r\n \"y\": 0\r\n }\r\n }\r\n }\r\n lateTasks = {\r\n ...lateTasks,\r\n \"id\": \"past\",\r\n \"data\": {\r\n ...lateTasks[\"data\"],\r\n [dateCard]: {\r\n \"x\": translate('$__' + moment(dateCard).format('dddd')),\r\n \"y\": 0\r\n },\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n getWeek()\r\n if (props.planCards) {\r\n Object.keys(props.planCards).length > 0 && Object.keys(props.planCards).forEach(cardId => {\r\n let lastDateCard =\r\n db.cards[cardId].completed_at?.low\r\n || db.cards[cardId].completed_at\r\n || db.cards[cardId].updated_at?.low\r\n || db.cards[cardId].updated_at\r\n || db.cards[cardId].created_at?.low\r\n || db.cards[cardId].created_at\r\n let dateCard = moment(lastDateCard * 1000).format(\"YYYYMMDD\")\r\n let startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate).format(\"YYYYMMDD\") : moment().startOf('week').add(1, 'day').format(\"YYYYMMDD\");\r\n let endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate).format(\"YYYYMMDD\") : moment().endOf('week').format(\"YYYYMMDD\");\r\n let startDateLast = moment().subtract(1, 'weeks').startOf('week').add(1, 'day').format(\"YYYYMMDD\");\r\n let endDateLast = moment().subtract(1, 'weeks').endOf('week').format(\"YYYYMMDD\");\r\n if ((dateCard >= startDate) && (dateCard <= endDate)) {\r\n timeTasks = {\r\n ...timeTasks,\r\n \"id\": \"now\",\r\n \"data\": {\r\n ...timeTasks[\"data\"],\r\n [dateCard]: {\r\n \"x\": translate('$__' + moment(dateCard).format('dddd')),\r\n \"y\": timeTasks?.[\"data\"]?.[dateCard]?.[\"y\"] ? timeTasks?.[\"data\"]?.[dateCard]?.[\"y\"] + 1 : 1\r\n }\r\n }\r\n }\r\n }\r\n if ((dateCard >= startDateLast) && (dateCard <= endDateLast)) {\r\n let lastDateCard = moment(dateCard).add(1, 'week').format(\"YYYYMMDD\");\r\n\r\n lateTasks = {\r\n ...lateTasks,\r\n \"id\": \"past\",\r\n \"data\": {\r\n ...lateTasks[\"data\"],\r\n [lastDateCard]: {\r\n \"x\": translate('$__' + moment(dateCard).format('dddd')),\r\n \"y\": lateTasks?.[\"data\"]?.[lastDateCard]?.[\"y\"] ? lateTasks?.[\"data\"]?.[lastDateCard]?.[\"y\"] + 1 : 1\r\n },\r\n\r\n }\r\n }\r\n }\r\n\r\n })\r\n\r\n\r\n\r\n if (timeTasks[\"data\"]) {\r\n timeTasks = {\r\n ...timeTasks,\r\n \"data\": [fakeDataWall[0], ...Object.values(timeTasks[\"data\"]), fakeDataWall[1]]\r\n }\r\n if (Object.keys(timeTasks).length > 0) {\r\n timeTasks = [timeTasks]\r\n }\r\n\r\n timeTasks.forEach((item) => {\r\n\r\n item[\"data\"].forEach(date => {\r\n if (date[\"y\"] > higherValue.current) {\r\n higherValue.current = date[\"y\"]\r\n }\r\n })\r\n })\r\n }\r\n\r\n\r\n if (lateTasks[\"data\"]) {\r\n lateTasks = {\r\n ...lateTasks,\r\n \"data\": [fakeDataWall[0], ...Object.values(lateTasks[\"data\"]), fakeDataWall[1]]\r\n }\r\n if (Object.keys(lateTasks).length > 0) {\r\n timeTasks = [...timeTasks, lateTasks]\r\n }\r\n\r\n timeTasks.forEach((item) => {\r\n item[\"data\"].forEach(date => {\r\n if (date[\"y\"] > higherValue.current) {\r\n higherValue.current = date[\"y\"]\r\n }\r\n })\r\n })\r\n }\r\n setData(timeTasks)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, dashFilterChart]);\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column', overflow: 'hidden' }}>\r\n <Header styles={props.styles} tittle={translate(\"$__\" + props.tittle)} icon={props.icon} edit={props.edit} id={props.id} handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%', }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto' }}>\r\n {!dashFilterChart?.startDate ? <div className='component' style={{ position: 'absolute', width: '100%', height: '100%', marginBottom: '25px', backgroundColor: '#f5f5f5' }}>\r\n {(data.length > 0 && (!props.load && inViewport)) ?\r\n <ResponsiveLine\r\n data={data}\r\n responsive={true}\r\n margin={{ top: 20, right: -15, bottom: 50, left: 30 }}\r\n xScale={{ type: 'point' }}\r\n yScale={{\r\n type: 'linear',\r\n min: 'auto',\r\n max: higherValue.current + (higherValue.current / 2),\r\n stacked: false,\r\n reverse: false\r\n }}\r\n yFormat=\" >-.2f\"\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={{\r\n tickSize: 5,\r\n tickPadding: 15,\r\n tickRotation: 0,\r\n\r\n }}\r\n axisLeft={{\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n format: (v) => v % 1 === 0 ? v : ''\r\n }}\r\n enableGridX={true}\r\n enableGridY={true}\r\n lineWidth={0.5}\r\n pointSize={1}\r\n pointColor={{ theme: 'background' }}\r\n pointBorderWidth={0}\r\n enableArea={true}\r\n areaBaselineValue={0}\r\n pointBorderColor={{ from: 'serieColor' }}\r\n pointLabelYOffset={0}\r\n useMesh={true}\r\n curve={'catmullRom'}\r\n colors={['rgba(36, 170, 219, 0.8)', 'rgba(82, 82, 82, 0.4)']}\r\n theme={{\r\n fontSize: '14px',\r\n color: 'white',\r\n background: '#f5f5f5',\r\n grid: {\r\n \"line\": {\r\n \"stroke\": \"#e8e6e6\",\r\n \"strokeWidth\": 1\r\n }\r\n },\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n fill: 'rgba(0, 0, 0, 0.50)',\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n }\r\n\r\n },\r\n }}\r\n /> : <div style={{ wdith: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n <div style={{ width: '98%', backgroundColor: '#f5f5f5', height: '18px', position: 'absolute', bottom: '30px', left: '40px', }}></div>\r\n </div> : <Preview />}\r\n </div>\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend legend={[\r\n {\r\n id: translate('$__lastWeek'),\r\n color: '#525252',\r\n number: '',\r\n key: 1\r\n },\r\n {\r\n id: translate('$__thisWeek'),\r\n color: '#24acdc',\r\n number: '',\r\n key: 2\r\n },\r\n\r\n ]} />\r\n </div>\r\n </div>\r\n )\r\n }\r\n </ViewportChecker >\r\n </div >\r\n )\r\n}\r\n\r\nexport default TaskDoneByTime","import React from 'react'\r\n\r\n//COMPONENTS\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport Timeline from \"componentsV3/Timeline\"\r\nimport Icon from 'components/Icon'\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions\"\r\nimport { countNotifications } from \"functions/cards\"\r\n\r\n\r\nconst TimeLine = (props) => {\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const [timelineParams, setTimelineParams] = React.useState({\r\n type: 'comment',\r\n disabledSend: false\r\n })\r\n let notifications = countNotifications(hashs[0])\r\n\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div style={{ height: '100%', overflow: 'hidden' }}>\r\n <UiCard style={{ marginTop: '0', height: '100%' }}>\r\n {props.edit ? <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '17px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', marginTop: '1px' }}>blur_on</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', marginTop: '2px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', fontSize: '16px' }}>{translate(`$__timeline`, 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', position: 'absolute', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', 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(`$__timeline`, 1)}\r\n icon={'blur_on'}\r\n color={props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)'}\r\n style={{\r\n background: props.styles.backgroundColor ? props.styles.backgroundColor : 'white',\r\n padding: '10px',\r\n borderRadius: '5px 5px 0px 0px ',\r\n fontWeight: 'normal',\r\n borderBottom: '1px solid #D3D3D3'\r\n }}\r\n\r\n // moreButton\r\n // optionsProps={{ transparent: true, btColor: customApp('color') }}\r\n customButtons={[\r\n {\r\n name: \"$__timeline\",\r\n icon: \"timeline\",\r\n actionsSize: '22px',\r\n count: notifications.comment,\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n onClick: () => {\r\n setTimelineParams({\r\n type: 'comment',\r\n disabledSend: false\r\n })\r\n },\r\n },\r\n {\r\n name: \"$__log\",\r\n icon: \"history\",\r\n actionsSize: '22px',\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n count: notifications.log,\r\n onClick: () => {\r\n setTimelineParams({\r\n type: 'log',\r\n disabledSend: true\r\n })\r\n },\r\n },\r\n {\r\n name: \"$__timer\",\r\n icon: \"timer\",\r\n actionsSize: '22px',\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n count: notifications.timer,\r\n onClick: () => {\r\n setTimelineParams({\r\n type: 'timer',\r\n disabledSend: true\r\n })\r\n },\r\n },\r\n {\r\n name: \"$__kpi\",\r\n icon: \"analytics\",\r\n actionsSize: '22px',\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n count: notifications.kpi,\r\n onClick: () => {\r\n setTimelineParams({\r\n type: 'kpi',\r\n disabledSend: true\r\n })\r\n },\r\n }\r\n ]}\r\n actionButtonsStyle={{\r\n top: '-9px !important'\r\n }}\r\n\r\n />}\r\n {inViewport && <UiCardBody>\r\n <Timeline {...{\r\n nodeId: hashs[0],\r\n db: 'cards',\r\n loadTimeline: true,\r\n ...timelineParams,\r\n }} />\r\n </UiCardBody>}\r\n </UiCard>\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default TimeLine","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\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(720, \"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 const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState([])\r\n\r\n const totalSecondsRef = useRef(0)\r\n const usersRef = useRef({})\r\n const colorSelectRef = useRef(0)\r\n const similarColorsRef = useRef({})\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 useEffect(() => {\r\n let newData = {}\r\n if (Object.keys(props.filter).length > 0) {\r\n newData = {\r\n ...newData,\r\n tagsColors: props?.filter?.tagsColors,\r\n mainColorTags: props?.filter?.mainColorTags\r\n }\r\n }\r\n if (Object.keys(props?.dashboardConfig).length > 0) {\r\n newData = {\r\n ...newData,\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr,\r\n }\r\n }\r\n setDashFilterChart(newData)\r\n\r\n }, [props.dashboardConfig, props.filter]);\r\n\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 function generateSimilarColors(color, tag, last) {\r\n\r\n let newColor = props?.dashboardConfig?.colorsArr?.[colorSelectRef.current]?.color;\r\n let result = '#';\r\n\r\n let adjustmentFactor = 0.5;\r\n\r\n for (let i = 1; i < newColor.length; i += 2) {\r\n let temp = parseInt(newColor.slice(i, i + 2), 16);\r\n temp = Math.round(temp + adjustmentFactor * (255 - temp));\r\n result += temp.toString(16).padStart(2, '0');\r\n }\r\n\r\n\r\n if (dashFilterChart?.tagsColors && dashFilterChart?.tagsColors?.mainColor === color) {\r\n similarColorsRef.current = dashFilterChart?.tagsColors\r\n } else if (!similarColorsRef.current?.[tag] || newColor !== similarColorsRef.current?.mainColor) {\r\n similarColorsRef.current = {\r\n ...similarColorsRef.current,\r\n [tag]: {\r\n color: result,\r\n name: tag\r\n }\r\n }\r\n }\r\n\r\n\r\n if (last) {\r\n similarColorsRef.current = {\r\n ...similarColorsRef.current,\r\n mainColor: props?.dashboardConfig?.colorsArr[0]?.color,\r\n }\r\n if (!dashFilterChart?.tagsColors || dashFilterChart?.tagsColors?.mainColor !== props?.dashboardConfig?.colorsArr[0]?.color) {\r\n props.handleSetTags({\r\n tagsColors: similarColorsRef.current,\r\n id: props.id,\r\n mainColor: props?.dashboardConfig?.colorsArr[0]?.color\r\n })\r\n }\r\n }\r\n\r\n\r\n if (Object.values(similarColorsRef.current).length > 0) {\r\n Object.values(similarColorsRef.current).forEach((item) => {\r\n if (item.name === tag) {\r\n result = item.color\r\n }\r\n })\r\n }\r\n\r\n return result;\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 totalSecondsRef.current = 0\r\n let totalSeconds = 0\r\n colorSelectRef.current = 0\r\n\r\n Object.keys(cards).filter(a => {\r\n\r\n let lastDateCard =\r\n db.cards[a].completed_at?.low\r\n || db.cards[a].completed_at\r\n || db.cards[a].updated_at?.low\r\n || db.cards[a].updated_at\r\n || db.cards[a].created_at?.low\r\n || db.cards[a].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return timeline[a]\r\n && (\r\n Object.keys(timeline[a]).filter(tm => timeline[a][tm].type === \"timer\").length > 0\r\n )\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\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 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 || (\r\n timeline[a][ts]._toUser\r\n &&\r\n (\r\n Object.keys(timeline[a][ts]._toUser).length === 0\r\n || (\r\n Object.keys(timeline[a][ts]._toUser).length === 1\r\n && timeline[a][ts]._toUser[userId]\r\n )\r\n )\r\n )\r\n )\r\n )\r\n )\r\n || (\r\n timeline[a][ts]._toUser\r\n && Object.keys(timeline[a][ts]._toUser).length > 1\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, dashFilterChart]);\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\r\n useEffect(() => {\r\n let newData = [\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, index) => {\r\n if (colorSelectRef.current < 5) {\r\n colorSelectRef.current = colorSelectRef.current + 1\r\n } else {\r\n colorSelectRef.current = 1\r\n }\r\n return {\r\n id: timeSheetData[ts].name,\r\n label: timeSheetData[ts].name,\r\n value: timeSheetData[ts].totalTimer,\r\n color: props?.dashboardConfig?.colorsArr?.[0]?.color && generateSimilarColors(props?.dashboardConfig?.colorsArr?.[0]?.color, timeSheetData[ts].name,\r\n index === Object.keys(timeSheetData).length - 1),\r\n textMini: timeSheetData[ts].timerText,\r\n }\r\n }\r\n )\r\n ]\r\n setData(newData)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dashFilterChart, props.dashboardConfig, props.filter, timeSheetData]);\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' }}>\r\n {(props.edit && inViewport) ? <div style={{ width: '100%', height: '52px', display: 'flex', borderBottom: '1px solid #D3D3D3', minHeight: '50px', 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 minHeight: '50px',\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={data}\r\n valueFormat={value => {\r\n convertSecondsToText(value, true)\r\n return convertSecondsToText(value)\r\n }}\r\n enableArcLabels={false}\r\n colors={props.dashboardConfig?.colorsArr?.[0]?.color ?\r\n { datum: 'data.color' } :\r\n { scheme: \"purpleRed_green\" }\r\n }\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 style={{ overflow: \"scroll\" }}>\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);","import React, { useEffect } from \"react\"\r\nimport moment from \"moment-timezone\"\r\nimport styled from \"styled-components\"\r\nimport MD5 from \"crypto-js/md5\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport history from \"store/history\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Badge from \"components/Icon/Badge\"\r\nimport CardTags from \"components/Tags/Card\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport HeaderWithIcon from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport IconButton from \"components/CustomButtons/IconButton\"\r\nimport QuickUsersList from \"components/User/avatarList\"\r\nimport Timer from \"components/Timer/timer\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\n\r\n//DEPENDENCIES\r\nimport FakeExpanded from \"./fakeCardExpanded\"\r\nimport CardExpanded from \"./cardExpanded\"\r\nimport UseTemplate from \"./useTemplate\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Card.js\"\r\n\r\n//FUNCTIONS\r\nimport apims from \"apims\"\r\n\r\nimport {\r\n cardStatus,\r\n deleteCard,\r\n getCardColor,\r\n getUserAccess,\r\n kpiTimerStart,\r\n restoreCard,\r\n saveMATRIX,\r\n selectSWOT,\r\n setMyDay,\r\n updateCard,\r\n updateCardStatus,\r\n} from \"functions/cards\"\r\n\r\nimport {\r\n action\r\n} from \"functions/kanban\"\r\n\r\nimport {\r\n Highlighted,\r\n appAlert,\r\n customApp,\r\n favoriteNode,\r\n getAppAccess,\r\n getDate,\r\n translate,\r\n} from \"functions/\"\r\n\r\nfunction Card(props) {\r\n const classes = useStyles()\r\n const { db, session } = reduxStore.getState()\r\n const data = props.cardId && db.cards[props.cardId] ? db.cards[props.cardId] : props.data?._id && db.cards[props.data?._id] ? db.cards[props.data._id] : {}\r\n const [isExpanded, setExpanded] = React.useState(false)\r\n const [globalExpanded, setGlobalExpanded] = React.useState(props.cardsExpanded)\r\n const [useTemplate, setUseTemplate] = React.useState(false)\r\n const [showMoreButton, setShowMoreButton] = React.useState(false)\r\n const [showPrivateCard, setShowPrivateCard] = React.useState(!props.unlockedPrivates[data._id] ? false : true)\r\n const [cardColor, setCardColor] = React.useState(props.cardColorPicker ? getCardColor(data) : {})\r\n const [combine, setCombine] = React.useState(false)\r\n const [search, setSearch] = React.useState({})\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n const searchID = MD5(`${window.location.pathname}-${window.location.hash}`).toString()\r\n const cRef = React.createRef();\r\n\r\n const sizeRef = React.useRef(0)\r\n\r\n const onResize = () => {\r\n if (props.onResize && cRef && cRef.current && cRef.current.clientHeight) {\r\n let newSize = cRef.current.clientHeight\r\n if (props.separator)\r\n newSize = newSize + 55\r\n if (sizeRef.current !== newSize) {\r\n // if (data.name === \"Coffe\")\r\n // console.log(newSize)\r\n sizeRef.current = newSize\r\n // setTimeout(() => {\r\n props.onResize(newSize, isExpanded)\r\n\r\n // }, 10)\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (cRef.current && mounted.current) {\r\n onResize()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isExpanded, props.manualExpanded, combine]);\r\n\r\n useEffect(() => {\r\n if (props.onResize && cRef && cRef.current) {\r\n const _config = { attributes: true, childList: true, subtree: true };\r\n const _observer = new MutationObserver(() => {\r\n onResize()\r\n });\r\n _observer.observe(cRef.current, _config);\r\n\r\n return () => {\r\n _observer.disconnect()\r\n }\r\n }\r\n // eslint-disable-next-line\r\n }, [cRef])\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (searchID && props.searchs && props.searchs[searchID] && JSON.stringify(props.searchs[searchID]) !== JSON.stringify(search))\r\n if (mounted.current)\r\n setSearch(props.searchs[searchID])\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.searchs])\r\n\r\n useEffect(() => {\r\n if (props?.snapshot?.combineTargetFor)\r\n if (mounted.current)\r\n setCombine(true)\r\n if (!props?.snapshot?.combineTargetFor && combine)\r\n if (mounted.current)\r\n setCombine(false)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props?.snapshot?.combineTargetFor])\r\n\r\n\r\n React.useEffect(() => {\r\n if (props.unlockedPrivates && props.unlockedPrivates[data._id])\r\n if (mounted.current)\r\n setShowPrivateCard(true)\r\n if (props.unlockedPrivates && !props.unlockedPrivates[data._id])\r\n if (mounted.current)\r\n setShowPrivateCard(false)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.unlockedPrivates])\r\n\r\n React.useEffect(() => {\r\n if (mounted.current)\r\n setGlobalExpanded(props.cardsExpanded)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cardsExpanded])\r\n\r\n React.useEffect(() => {\r\n if (props.onExpand && mounted.current)\r\n props.onExpand(globalExpanded)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [globalExpanded])\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n\r\n React.useEffect(() => {\r\n if (mounted.current && props.cardColorPicker && hashs && hashs[1] === 'overview')\r\n setCardColor(getCardColor(data))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.cards])\r\n\r\n\r\n\r\n if (!data)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n let AppAccess = getAppAccess()\r\n let CardAccess = getUserAccess(data._id)\r\n\r\n\r\n\r\n if (!data || !data || !data._id)\r\n return null\r\n\r\n\r\n const selectable = Object.keys(db.cards)\r\n .filter(a =>\r\n db.cards[a]\r\n && db.cards[a]._selected === true\r\n && db.cards[a].type\r\n && db.cards[a].type.indexOf(\"guideline\") > -1\r\n ).length > 0\r\n && hashs\r\n && hashs[1] && hashs[1] === \"matrix\"\r\n && db.dataType.filter(fil => fil.name === data.type)[0].module === \"swot\"\r\n ? true\r\n : false\r\n\r\n const selectThis = async () => {\r\n let selectedType = data.type.indexOf(\"guideline\") > -1 ? \"guideline\" : data.type === \"objective\" ? \"objective\" : data.type === \"goal\" ? \"goal\" : \"action\"\r\n let selectedCards = {\r\n ...reduxStore.getState().searchs[searchID]?.selectedCards || {},\r\n }\r\n if (hashs[1] !== \"matrix\") {\r\n if (selectedCards && selectedCards[selectedType] && selectedCards[selectedType] === data._id) {\r\n if (selectedType === 'guideline') {\r\n delete selectedCards.guideline\r\n delete selectedCards.objective\r\n delete selectedCards.goal\r\n delete selectedCards.action\r\n }\r\n if (selectedType === 'objective') {\r\n delete selectedCards.objective\r\n delete selectedCards.goal\r\n delete selectedCards.action\r\n }\r\n if (selectedType === 'goal') {\r\n delete selectedCards.goal\r\n delete selectedCards.action\r\n }\r\n if (selectedType === 'action') {\r\n delete selectedCards.action\r\n delete selectedCards[selectedType]\r\n }\r\n } else {\r\n selectedCards = {\r\n ...selectedCards,\r\n [data.type.indexOf(\"guideline\") > -1 ? \"guideline\" : data.type === \"objective\" ? \"objective\" : data.type === \"goal\" ? \"goal\" : \"action\"]: data._id\r\n }\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...reduxStore.getState().searchs[searchID] || {},\r\n selectedCards: selectedCards\r\n },\r\n })\r\n }\r\n\r\n if (!selectable && hashs[1] !== \"matrix\") {\r\n selectThisV2()\r\n return\r\n }\r\n let activeCards = {}\r\n Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && !db.cards[a].deleted\r\n && (\r\n db.cards[a]._planId === hashs[0]\r\n || db.cards[a]._parent === hashs[0]\r\n )\r\n ).forEach(a => {\r\n activeCards = {\r\n ...activeCards,\r\n [a]: db.cards[a]\r\n }\r\n })\r\n let cards = { ...db.cards }\r\n let selected = data._selected ? false : true\r\n if (db.dataType.filter(fil => fil.name === data.type)[0].module !== \"swot\") {\r\n Object.keys(activeCards)\r\n .filter(a => activeCards[a]._id !== data._id && activeCards[a].type && activeCards[a].type === data.type)\r\n .forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n }\r\n if (data.type.indexOf(\"guideline\") > -1) {\r\n Object.keys(activeCards).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n }\r\n if (data.type.indexOf(\"objective\") > -1) {\r\n Object.keys(activeCards).filter(a => activeCards[a].type === \"goal\").forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...cards,\r\n ...activeCards,\r\n [data._id]: {\r\n ...db.cards[data._id],\r\n ...activeCards[data._id],\r\n _selected: selected\r\n }\r\n }\r\n })\r\n if (db.dataType.filter(a => a.name === data.type)[0].module === \"swot\") {\r\n saveMATRIX(props)\r\n }\r\n if (selected && db.dataType.filter(a => a.name === data.type)[0].module === \"matrix\") {\r\n selectSWOT(props, data._id)\r\n }\r\n }\r\n\r\n const selectThisV2 = async () => {\r\n let activeCards = {}\r\n\r\n Object.keys(db.cards).filter(a =>\r\n db.cards[a]\r\n && !db.cards[a].deleted\r\n && (\r\n db.cards[a]._planId === hashs[0]\r\n || db.cards[a]._parent === hashs[0]\r\n )\r\n ).forEach(a => {\r\n activeCards = {\r\n ...activeCards,\r\n [a]: db.cards[a]\r\n }\r\n })\r\n\r\n let cards = { ...db.cards }\r\n let selected = data._selected ? false : true\r\n\r\n if (db.dataType.filter(fil => fil.name === data.type)[0].module !== \"swot\") {\r\n Object.keys(activeCards).filter(a => activeCards[a]._id !== data._id && activeCards[a].type && activeCards[a].type === data.type).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n }\r\n\r\n if (data.type.indexOf(\"guideline\") > -1) {\r\n Object.keys(activeCards).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n } else if (data.type.indexOf(\"objective\") > -1) {\r\n Object.keys(activeCards).filter(a => activeCards[a].type.indexOf('objective') === -1 || activeCards[a].type.indexOf('guideline') === -1).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n } else if (data.type.indexOf(\"goal\") > -1) {\r\n Object.keys(activeCards).filter(a => activeCards[a].type.indexOf('goal') === -1 || activeCards[a].type.indexOf('objective') === -1 || activeCards[a].type.indexOf('guideline') === -1).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n } else {\r\n Object.keys(activeCards).forEach(a => {\r\n if (activeCards[a]._selected)\r\n activeCards[a]._selected = false\r\n })\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...cards,\r\n ...activeCards,\r\n [data._id]: {\r\n ...db.cards[data._id],\r\n ...activeCards[data._id],\r\n _selected: selected\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n const openSideModule = async (module = \"cardEdit\") => {\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n db: props.db,\r\n id: data._id,\r\n module: \"cardEdit\",\r\n activeModule: module,\r\n data: data,\r\n })\r\n }\r\n\r\n const setCompleted = async (ignoreStep = false) => {\r\n //Executa Automação\r\n if (data._hasStep && !ignoreStep) {\r\n action({\r\n ...props,\r\n nodeId: data._id,\r\n })\r\n }\r\n\r\n //Conclui atividade\r\n if (!data._hasStep || ignoreStep) {\r\n const countChildrens = await apims.post(\"/Card_Count\", { id: data._id })\r\n if (parseInt(countChildrens.data) > 0) {\r\n appAlert({\r\n message: translate('$__concludeWithChildrensNotConcludedConfirm', 1),\r\n autoClose: 50000,\r\n buttons: [\r\n {\r\n shadow: true,\r\n title: translate(\"$__concludeAll\"),\r\n text: translate(\"$__concludeAll\"),\r\n color: \"green\",\r\n icon: \"close\",\r\n size: \"25px\",\r\n onClick: () => {\r\n updateCardStatus(\r\n {\r\n ...props,\r\n data: { _id: data._id }\r\n }, { status: data.status === 'completed' ? 'inProgress' : 'completed' })\r\n if (countChildrens && parseInt(countChildrens.data) > 0)\r\n cardStatus(props, data._id, data.status === 'completed' ? 'inProgress' : 'completed')\r\n },\r\n style: { marginLeft: 15 }\r\n },\r\n {\r\n shadow: true,\r\n title: translate(\"$__cancel\"),\r\n text: translate(\"$__cancel\"),\r\n color: \"red\",\r\n icon: \"close\",\r\n size: \"25px\",\r\n onClick: () => {\r\n // toast.dismiss(key)\r\n },\r\n style: { marginLeft: 15 }\r\n }],\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n })\r\n } else {\r\n updateCardStatus(\r\n {\r\n ...props,\r\n data: { _id: data._id }\r\n }, { status: data.status === 'completed' ? 'inProgress' : 'completed' })\r\n if (countChildrens && parseInt(countChildrens.data) > 0)\r\n cardStatus(props, data._id, data.status === 'completed' ? 'inProgress' : 'completed')\r\n }\r\n }\r\n }\r\n\r\n const openPlan = async (id) => {\r\n if (\r\n parseInt(CardAccess) > 2\r\n ||\r\n (AppAccess.owner\r\n ||\r\n (\r\n AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n ) {\r\n if (!data.planType || data.planType === \"strategic\" || data.planType === \"flow\") {\r\n history.push(`sp#${id}/overview`)//#CORRECT\r\n } else {\r\n history.push(`sp#${id}/board`)//#CORRECT\r\n }\r\n } else {\r\n openSideModule(\"timeline\")\r\n }\r\n }\r\n\r\n const deleteThis = async () => {\r\n appAlert({\r\n message: translate(\"$__confirmDeleteThis\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n // deleteNode(props, { _id: data._id })\r\n deleteCard(props, { _id: data._id }, false)\r\n if (!props.directDeletion)\r\n props.reduxFunction(\"ASYNC\", \"CLEAR_MODULE\")\r\n }\r\n })\r\n }\r\n const restoreThis = async () => {\r\n appAlert({\r\n message: translate(\"$__confirmRestoreThis\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n restoreCard(props, { _id: data._id })\r\n }\r\n })\r\n }\r\n\r\n\r\n const cardClick = () => {\r\n if (data._requireApproval\r\n && (\r\n (\r\n db.cards[data._id]._parent\r\n && db.cards[db.cards[data._id]._parent]\r\n &&\r\n (\r\n !db.cards[db.cards[data._id]._parent]._users[session._id]\r\n || (\r\n db.cards[db.cards[data._id]._parent]._users[session._id]\r\n && !db.cards[db.cards[data._id]._parent]._users[session._id].approvalResponsible\r\n )\r\n )\r\n )\r\n &&\r\n (\r\n data\r\n && data._users\r\n && Object.keys(data._users).length === 1\r\n && !data._users[session._id]\r\n )\r\n )\r\n ) return\r\n if (props.disabled)\r\n return\r\n if (props.selectable) {\r\n selectThis()\r\n } else if (!props.onClick && ((!props.locked && props.showSelected && selectable) || props.selectable)) {\r\n selectThis()\r\n } else if (props.onClick && !props.selectable && !props.locked) {\r\n props.onClick()\r\n } else if (!props.locked && !props.onlyOption && data.type === 'plan') {\r\n openPlan(data._id)\r\n } else if (!props.locked) {\r\n openSideModule()\r\n }\r\n if (props.onOpen)\r\n props.onOpen()\r\n }\r\n\r\n const expanded = props.noExpanded ? false : isExpanded || (!props.notGlobalExpanded && (props.manualExpanded || props.expanded || data._expanded || props.cardsExpanded ? true : false))\r\n\r\n let permission = (\r\n (\r\n AppAccess\r\n &&\r\n (AppAccess.owner\r\n ||\r\n (\r\n AppAccess.plan\r\n && (\r\n AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n CardAccess > 2\r\n )\r\n )\r\n ? true : false\r\n\r\n const openContextMenu = () => {\r\n // console.log('OPENNNNNN')\r\n }\r\n\r\n //MYDAY\r\n let myDay = { button: false, date: null }\r\n if (data && data._users\r\n && Object.keys(data._users).filter(fil => fil === session._id).length > 0\r\n && db.dataType.filter(c => c.name === data.type).length > 0\r\n && db.dataType.filter(c => c.name === data.type)[0].modules.indexOf(\"myDay\") > -1) {\r\n if (data._users[Object.keys(data._users).filter(fil => fil === session._id)[0]].myDay) {\r\n myDay = {\r\n button: true,\r\n date: data._users[Object.keys(data._users).filter(fil => fil === session._id)[0]].myDay\r\n }\r\n } else {\r\n myDay = {\r\n button: true,\r\n date: null\r\n }\r\n }\r\n } else {\r\n myDay = {\r\n button: false,\r\n date: null\r\n }\r\n }\r\n if (data && data.private && (\r\n !data._users\r\n || (\r\n data._users\r\n && !data._users[session._id]\r\n )\r\n ))\r\n return (<div ref={cRef}></div>)\r\n\r\n if (useTemplate) {\r\n return (\r\n <UseTemplate cardId={data._id}\r\n toTemplate={!data.isTemplate ? true : false}\r\n onComplete={() => {\r\n if (mounted.current)\r\n setUseTemplate(false)\r\n }} />\r\n )\r\n }\r\n\r\n let locked = false\r\n\r\n let headerData = {\r\n title: data?.name || translate(\"$__new\", 1),\r\n icon: data?.icon || (data.type && db && db.dataType && db.dataType.filter(a => a.name === data.type)[0] && db.dataType.filter(a => a.name === data.type)[0].icon) || \"$__topic\",\r\n iconTitle: `$__${data.type}`,\r\n }\r\n\r\n if (\r\n (data._planId && db.cards[data._planId]?.customColumns)\r\n && (data.type.indexOf(\"guideline\") > -1 || data.type.indexOf(\"objective\") || data.type.indexOf(\"goal\"))\r\n ) {\r\n let columnData = JSON.parse(db.cards[data._planId].customColumns)\r\n // if ()\r\n // headerData = {\r\n // ...headerData,\r\n\r\n // }\r\n let filType = data.type.indexOf('guideline') > -1 ? `guideline` : data.type\r\n if (columnData[`${filType}s`])\r\n headerData = {\r\n ...headerData,\r\n ...columnData[`${filType}s`].name ? { iconTitle: columnData[`${filType}s`].name } : {},\r\n ...columnData[`${filType}s`].icon ? { icon: columnData[`${filType}s`].icon } : {}\r\n }\r\n }\r\n\r\n return (\r\n <Container\r\n ref={cRef}\r\n separator={props.separator || false}\r\n plan={expanded && data.type === 'plan' ? true : false}\r\n isDragging={(props.snapshot && props.snapshot.isDragging) || null}\r\n isDragDisable={data.isDragDisable || props.isDragDisable || false}\r\n inLine={data.type !== \"plan\" && props.inLine ? true : false}\r\n className={!props.noShadow ? classes.container : classes.containerNoShadow}\r\n selectable={props.showSelected}\r\n selected={hashs[1] === \"matrix\" && reduxStore.getState().db.cards[data._id]._selected ? true : search && search.selectedCards && Object.keys(search.selectedCards).filter(a => search.selectedCards[a] === data._id).length > 0 ? true : false}\r\n priority={data.priority && db.priority.filter(a => String(a.value) === String(data.priority)).length > 0 ? db.priority.filter(a => String(a.value) === String(data.priority))[0].color : null}\r\n locked={props.locked || false}\r\n snapshot={props.snapshot || null}\r\n isCombining={props.snapshot && props.snapshot.combineTargetFor ? true : false}\r\n onMouseOver={() => {\r\n if (mounted.current)\r\n setShowMoreButton(true)\r\n }}\r\n onMouseLeave={() => {\r\n if (mounted.current)\r\n setTimeout(() => {\r\n if (mounted.current)\r\n setShowMoreButton(false)\r\n }, 100)\r\n }}\r\n onClick={(e) => {\r\n !props?.showSelectBox && cardClick()\r\n }}\r\n onContextMenu={(e) => {\r\n openContextMenu(e)\r\n }}\r\n >\r\n {(data.status === 'completed' || (props.cardColorPicker && cardColor.color)) &&\r\n <div style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\"\r\n }}>\r\n <div style={{\r\n position: 'absolute',\r\n backgroundColor: props.cardColorPicker && cardColor.color ? cardColor.color : 'rgba(0,0,0,1)',\r\n opacity: cardColor.color ? 0.2 : 0.1,\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\"\r\n }}>\r\n </div>\r\n\r\n </div>\r\n }\r\n\r\n <React.Fragment>\r\n {props.snapshot && props.snapshot.combineTargetFor &&\r\n <div style={{ backgroundColor: customApp('menu'), padding: '7px 3px', color: '#FFFFFF', fontWeight: 'bold', textAlign: 'center' }}>\r\n {translate('$__dropHereToLink')}\r\n </div>\r\n }\r\n <div style={{\r\n position: 'absolute',\r\n border: props?.selectedCard && '2px solid #4682B4',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0\r\n }}></div>\r\n <div style={{ display: 'flex', position: 'relative' }}>\r\n {props?.showSelectBox &&\r\n <input\r\n type=\"checkbox\"\r\n style={{\r\n width: '20px',\r\n flex: 1,\r\n height: '20px',\r\n display: 'flex',\r\n top: '5px',\r\n left: '7px',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n borderRadius: '2px',\r\n border: '1px solid #064373',\r\n position: 'absolute',\r\n }}\r\n defaultChecked={props.selectedCard}\r\n onClick={() => {\r\n props.onSelect(props.cardId)\r\n }}\r\n />\r\n }\r\n <HeaderWithIcon\r\n private={(data.private || data.parentPrivate) ? true : false}\r\n unlockedPrivates={props.unlockedPrivates[data._id] ? true : false}\r\n // unlockedPrivates={true}\r\n style={{ paddingLeft: props?.showSelectBox ? '30px' : '' }}\r\n setPrivate={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().controls,\r\n unlockedPrivates: {\r\n ...reduxStore.getState().controls.unlockedPrivates,\r\n [data._id]: !props.unlockedPrivates[data._id]\r\n }\r\n })\r\n if (mounted.current)\r\n setShowPrivateCard(!props.unlockedPrivates[data._id])\r\n if (props.setPrivate)\r\n props.setPrivate(!props.unlockedPrivates[data._id])\r\n }}\r\n viewAllName={props.viewAllName}\r\n title={headerData.title}\r\n tooltipText={`${data._parent && db.cards[data._parent] ? `${db.cards[data._parent].name} / ` : ``}${headerData.title}`}\r\n searchText={props?.searchText || null}\r\n icon={headerData.icon}\r\n iconTitle={headerData.iconTitle}\r\n color={\"#6d6d6d\"}\r\n editable={!data.name && (!props.onlyOption || props.editable) ? true : false}\r\n _id={data._id}\r\n locked={data.type === \"link\" || props.locked ? true : false}\r\n colorPicker={permission && props.cardColorPicker && cardColor && !cardColor.parent ? (color) => {\r\n if (\r\n (!cardColor.color && color)\r\n || (cardColor.color && cardColor.color !== color)\r\n )\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n [data._id]: {\r\n ...db.cards[data._id],\r\n color\r\n },\r\n }\r\n })\r\n } : null}\r\n onEdit={\r\n (\r\n data.status !== 'completed'\r\n &&\r\n (\r\n (\r\n CardAccess\r\n && parseInt(CardAccess) > 1\r\n )\r\n ||\r\n (\r\n AppAccess\r\n && AppAccess.plan\r\n &&\r\n (\r\n AppAccess.owner\r\n || AppAccess.planAdmin\r\n || AppAccess.planEdit\r\n || AppAccess.planModerate\r\n )\r\n )\r\n )\r\n ) ? (res) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n [data._id]: {\r\n ...db.cards[data._id],\r\n name: res\r\n },\r\n }\r\n })\r\n } : null}\r\n moreButton={showMoreButton}\r\n options={\r\n\r\n data.deleted ? [\r\n {\r\n name: translate(`$__restoreThis`, 1),\r\n icon: 'restore_from_trash',\r\n onClick: () => {\r\n restoreThis()\r\n },\r\n show: \"hover\",\r\n color: customApp('medium'),\r\n }\r\n ]\r\n : !props.onlyOption && (!props.showSelected && !props.locked) ? [\r\n Object.keys(db.cards).filter(fil => db.cards[fil]\r\n && db.cards[fil].type === \"step\"\r\n && db.cards[fil]._parent === data._id\r\n ).length > 0\r\n && {\r\n name: \"$__openTaskList\",\r\n icon: \"schema\",\r\n show: \"fixed\",\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n board: data._id,\r\n })\r\n },\r\n },\r\n data.url &&\r\n {\r\n name: \"$__openLinkinNewTab\",\r\n icon: \"launch\",\r\n onClick: () => {\r\n window.open(data.url, '_blank')\r\n },\r\n },\r\n\r\n data.type !== \"chatGroup\"\r\n && data.type !== \"step\"\r\n && !data.isTemplate\r\n && !data.archived\r\n && data.status !== 'completed'\r\n // && myDay\r\n // && myDay.button\r\n && {\r\n name: moment(new Date(myDay.date * 1000)).format(\"YYYY/MM/DD\") === moment().format(\"YYYY/MM/DD\") ? \"$__removeOfMyDate\" : \"$__addOnMyDay\",\r\n icon: moment(new Date(myDay.date * 1000)).format(\"YYYY/MM/DD\") === moment().format(\"YYYY/MM/DD\") ? \"auto_delete\" : \"alarm_add\",\r\n color: moment(new Date(myDay.date * 1000)).format(\"YYYY/MM/DD\") === moment().format(\"YYYY/MM/DD\") ? \"red\" : \"lightblue\",\r\n show: \"hover\",\r\n onClick: () => {\r\n let myDayOption = (!myDay || !myDay.date) || (myDay && myDay.date && moment(new Date(myDay.date * 1000)).format(\"YYYY/MM/DD\") !== moment().format(\"YYYY/MM/DD\")) ? true : false\r\n setMyDay(props, {\r\n _id: data._id,\r\n userId: session._id,\r\n option: myDayOption\r\n })\r\n if (props.myDayClick)\r\n props.myDayClick()\r\n },\r\n },\r\n props.suggestion && {\r\n name: \"$__removeFromMyDaySuggestions\",\r\n icon: \"playlist_remove\",\r\n show: \"hover\",\r\n onClick: () => {\r\n setMyDay(props, {\r\n _id: data._id,\r\n userId: session._id,\r\n option: false,\r\n noLog: true\r\n })\r\n if (props.myDayClick)\r\n props.myDayClick()\r\n },\r\n },\r\n !data.archived && !props.onlyOption && ((CardAccess && parseInt(CardAccess) > 1) || AppAccess.owner || AppAccess.planAdmin || AppAccess.planEdit || AppAccess.planModerate) &&\r\n {\r\n name: \"$__edit\",\r\n icon: \"edit\",\r\n onClick: () => {\r\n if (props.onAction)\r\n props.onAction()\r\n openSideModule()\r\n },\r\n show: \"hover\"\r\n },\r\n (\r\n !data.archived\r\n && !data.isTemplate\r\n && data._users\r\n && data.status !== 'completed'\r\n && data._users[session._id]\r\n &&\r\n (\r\n !data._kpiTimer\r\n ||\r\n Object.keys(data._kpiTimer).length === 0\r\n ||\r\n (\r\n data._kpiTimer\r\n && Object.keys(data._kpiTimer).length > 0\r\n && Object.keys(data._kpiTimer).filter(at =>\r\n session\r\n && session._id\r\n && at\r\n && data._kpiTimer[at]\r\n && data._kpiTimer[at].userId\r\n && data._kpiTimer[at].userId === session._id\r\n ).length === 0\r\n )\r\n )\r\n )\r\n &&\r\n {\r\n name: \"$__timerStart\",\r\n icon: \"play_circle_outline\",\r\n color: 'blue',\r\n show: 'hover',\r\n onClick: () => {\r\n appAlert({\r\n message: translate('$__confirmStartTimer', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: () => {\r\n kpiTimerStart(props, data._id)\r\n let myDayOption = (!myDay || !myDay.date) || (myDay && myDay.date && moment(new Date(myDay.date * 1000)).format(\"YYYY/MM/DD\") !== moment().format(\"YYYY/MM/DD\")) ? true : false\r\n if (myDayOption)\r\n setMyDay(props, {\r\n _id: data._id,\r\n userId: session._id,\r\n option: true\r\n })\r\n if (props.myDayClick)\r\n props.myDayClick()\r\n }\r\n })\r\n },\r\n },\r\n // data._hasStep && {\r\n // name: \"$__completeStep\",\r\n // icon: \"rule\",\r\n // color: 'green',\r\n // show: 'hover',\r\n // onClick: async () => {\r\n // setCompletedStep(data._id)\r\n // },\r\n // },\r\n\r\n //CONCLUDE OPTIONS\r\n (\r\n data._users\r\n && data.status !== 'completed'\r\n && data._users[session._id]\r\n && data._hasStep\r\n )\r\n &&\r\n {\r\n name: \"$__completeStep\",\r\n icon: \"playlist_add_check\",\r\n color: '#6ab6c2',\r\n show: 'hover',\r\n onClick: async () => {\r\n setCompleted()\r\n },\r\n },\r\n\r\n (\r\n data._users\r\n && data.status !== 'completed'\r\n && data._users[session._id]\r\n )\r\n &&\r\n {\r\n name: \"$__complete\",\r\n icon: \"check_circle\",\r\n color: 'green',\r\n show: 'hover',\r\n onClick: async () => {\r\n setCompleted(true)\r\n },\r\n },\r\n\r\n (\r\n !data.archived\r\n && !props.onlyOption\r\n && (\r\n props.selectOption\r\n || props.viewButton\r\n )\r\n ) && {\r\n name: data._selected || (\r\n props.searchs\r\n && props.searchs[searchID]\r\n && props.searchs[searchID].selectedCards\r\n && Object.keys(props.searchs[searchID].selectedCards).filter(tp => props.searchs[searchID].selectedCards[tp] === data._id).length > 0\r\n ) ? \"$__removeSelection\" : \"$__selectThis\",\r\n icon: data._selected || (\r\n props.searchs\r\n && props.searchs[searchID]\r\n && props.searchs[searchID].selectedCards\r\n && Object.keys(props.searchs[searchID].selectedCards).filter(tp => props.searchs[searchID].selectedCards[tp] === data._id).length > 0\r\n ) ? \"visibility_off\" : \"visibility\",\r\n hide: true,\r\n onClick: () => {\r\n selectThis()\r\n },\r\n },\r\n {\r\n name: \"$__duplicate\",\r\n icon: \"content_copy\",\r\n onClick: () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n toCopyMove: data._id,\r\n })\r\n },\r\n },\r\n // {\r\n // name: \"$__move\",\r\n // icon: \"drive_file_move\",\r\n // onClick: () => {\r\n // setMove(true)\r\n // setCopyName(data.name)\r\n // },\r\n // },\r\n !data.isTemplate && data.type === 'plan' &&\r\n {\r\n name: \"$__copyToTemplates\",\r\n icon: \"copy_all\",\r\n onClick: () => {\r\n if (mounted.current)\r\n setUseTemplate(true)\r\n },\r\n },\r\n (\r\n data\r\n && !data.isTemplate\r\n && data.type === 'plan'\r\n && !data.archived\r\n && (\r\n (\r\n data._users\r\n && data._users[session._id]\r\n && data._users[session._id].access\r\n && parseInt(data._users[session._id].access) === 5\r\n )\r\n ||\r\n (\r\n AppAccess\r\n && AppAccess.planAdmin\r\n )\r\n )\r\n ) && {\r\n name: translate('$__shelve'),\r\n icon: 'archive',\r\n onClick: () => {\r\n updateCard(props, {\r\n _id: data._id,\r\n archived: true,\r\n })\r\n },\r\n },\r\n ((CardAccess && parseInt(CardAccess) === 5) || AppAccess.owner || AppAccess.planAdmin || AppAccess.planEdit) && !props.disableDelete &&\r\n {\r\n name: \"$__delete\",\r\n icon: \"delete_forever\",\r\n color: 'red',\r\n onClick: () => {\r\n if (\r\n props.directDeletion\r\n || data.archived\r\n || (\r\n db.dataType.filter(c => c.name === data.type).length === 0\r\n ||\r\n (\r\n db.dataType.filter(c => c.name === data.type).length > 0\r\n && db.dataType.filter(c => c.name === data.type)[0].module === 'swot'\r\n )\r\n )\r\n ) {\r\n deleteThis()\r\n } else {\r\n openSideModule('delete')\r\n }\r\n if (props.onAction)\r\n props.onAction()\r\n },\r\n show: \"hover\"\r\n },\r\n (\r\n data\r\n && !data.isTemplate\r\n && data.type === 'plan'\r\n && data.archived\r\n && (\r\n (\r\n data._users\r\n && data._users[session._id]\r\n && data._users[session._id].access\r\n && parseInt(data._users[session._id] === 5)\r\n )\r\n ||\r\n (\r\n AppAccess && AppAccess.planAdmin\r\n )\r\n )\r\n ) && {\r\n name: translate('$__unarchive'),\r\n icon: 'archive',\r\n onClick: () => {\r\n updateCard(props, {\r\n _id: data._id,\r\n archived: null,\r\n })\r\n },\r\n },\r\n !data.archived\r\n && !data.isTemplate\r\n && {\r\n name: !data._isFavorite ? \"$__addToFavorite\" : \"$__removeFromFavorite\",\r\n icon: !data._isFavorite ? \"favorite_border\" : \"favorite\",\r\n color: customApp('medium'),\r\n onClick: async () => {\r\n favoriteNode(props, data._id, !data._isFavorite ? false : true)\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n [data._id]: {\r\n ...db.cards[data._id],\r\n _isFavorite: !data._isFavorite ? true : false\r\n },\r\n }\r\n })\r\n },\r\n },\r\n !data.isTemplate\r\n && !data.archived\r\n && (props.my || props.showCompleteOption) && {\r\n name: data.status !== \"$__completed\" ? \"$__markasdone\" : \"$__concluded\",\r\n icon: \"check_circle_outline\",\r\n color: data.status !== \"completed\" ? \"lightgray\" : \"green\",\r\n onClick: async () => {\r\n setCompleted()\r\n },\r\n }\r\n ] : []}\r\n isExpanded={props.noExpanded ? false : expanded}\r\n noExpanding={props.expanded || db.cardsExpanded || false}\r\n onExpanding={() => {\r\n if (props.onExpand) {\r\n props.onExpand(!expanded)\r\n }\r\n if (!props.expanded && !db.cardsExpanded) {\r\n if (mounted.current)\r\n setExpanded((prevExpanded) => !prevExpanded)\r\n }\r\n }\r\n }\r\n onClick={(e) => {\r\n // e.preventDefault()\r\n // cardClick()\r\n }}\r\n />\r\n </div>\r\n {data && (data._cardCode || data.value || data.ref1 || data.ref2) ?\r\n <div style={{\r\n width: \"100%\",\r\n clear: \"both\",\r\n marginLeft: props?.showSelectBox ? '30px' : '',\r\n display: \"flex\",\r\n alignContent: \"center\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n {data && data._cardCode && (\r\n !expanded\r\n || (\r\n expanded &&\r\n !data.image\r\n )\r\n )\r\n ?\r\n <div\r\n style={{\r\n paddingLeft: 36,\r\n fontSize: 11,\r\n marginTop: -9,\r\n color: \"gray\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n whiteSpace: \"nowrap\"\r\n }}>\r\n # {data._cardCode}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {data.isAnonymous && (\r\n <div style={{\r\n paddingLeft: 36,\r\n fontSize: 11,\r\n marginTop: 4,\r\n color: \"gray\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}>\r\n <Icon icon=\"visibility_off\" size=\"12px\" style={{ marginRight: 4 }} />\r\n {translate(\"$__anonymousActivity\", 1)}\r\n </div>\r\n )}\r\n <div style={{ display: \"flex\" }}>\r\n {data && (data.ref1 || data.ref2) ?\r\n <div\r\n style={{\r\n textAlign: \"right\",\r\n fontSize: 11,\r\n marginTop: -9,\r\n color: \"blue\",\r\n }}>\r\n {`${data.ref1} `}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {data && data.ref2 ?\r\n <div\r\n style={{\r\n textAlign: \"right\",\r\n fontSize: 11,\r\n marginTop: -9,\r\n color: \"green\",\r\n }}>\r\n | {data.ref2}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n {data && data.value ?\r\n <div\r\n style={{\r\n width: \"100%\",\r\n textAlign: \"right\",\r\n fontSize: 11,\r\n marginTop: -9,\r\n color: \"black\",\r\n }}>\r\n $ {data.value}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {/* {expanded && data.image ? (\r\n <div style={{\r\n width: \"100%\",\r\n marginBottom: \"10px\",\r\n marginTop: \"10px\"\r\n }}>\r\n <img\r\n src={data.image}\r\n alt={data.name}\r\n style={{\r\n maxWidth: \"100%\",\r\n borderRadius: \"4px\"\r\n }}\r\n />\r\n </div>\r\n ) : null} */}\r\n {(((data.type === 'insight' || data.type === 'link') && data._createdBy && db.users[data._createdBy._id])\r\n ||\r\n (data._createdBy && data._createdBy.channel && data._createdBy._id && db.users && db.users[data._createdBy._id])\r\n ) && !data.isAnonymous ?\r\n <div style={{\r\n width: 'calc(100% - 0px)',\r\n alignItems: 'center',\r\n padding: '7px',\r\n display: 'inline-flex',\r\n borderBottom: 'solid 1px rgba(0,0,0,0.03)'\r\n }}>\r\n <div style={{\r\n position: 'relative',\r\n float: 'left'\r\n }}>\r\n <Tooltip\r\n title={data._createdBy.name || db.users[data._createdBy._id].name}\r\n >\r\n <Avatar\r\n alt={data._createdBy.name || db.users[data._createdBy._id].name}\r\n src={db.users[data._createdBy._id]?.image || null}\r\n size=\"12px\"\r\n style={{ width: 16, height: 16 }}\r\n >\r\n {data._createdBy?.name?.substr(0, 1) || db.users[data._createdBy._id].name.substr(0, 1)}\r\n </Avatar>\r\n </Tooltip>\r\n </div>\r\n <div style={{\r\n position: 'relative',\r\n float: 'right',\r\n width: '100%',\r\n paddingLeft: '7px',\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n fontSize: '12px'\r\n }}>\r\n <div style={{\r\n color: customApp('menu'),\r\n fontWeight: 'bold',\r\n }}>\r\n <span style={{ fontSize: 10, color: \"gray\" }}>{translate(\"$__createdBy\", '*')}</span>: {data._createdBy?.name?.split(' ')[0] || db.users[data._createdBy._id].name.split(' ')[0]}\r\n </div>\r\n <div>\r\n {moment(new Date()).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") === moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") ?\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"H:mm\")}`\r\n :\r\n moment(new Date()).tz(\"America/Sao_Paulo\").format(\"YYYY\") === moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY\") ?\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM H:mm\")}`\r\n :\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")}`\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n : data.isAnonymous && data.created_at ?\r\n <div style={{\r\n width: 'calc(100% - 0px)',\r\n alignItems: 'center',\r\n padding: '7px',\r\n display: 'inline-flex',\r\n borderBottom: 'solid 1px rgba(0,0,0,0.03)',\r\n justifyContent: 'flex-end',\r\n fontSize: '12px'\r\n }}>\r\n <div style={{\r\n color: customApp('menu'),\r\n fontWeight: 'bold',\r\n marginRight: '10px'\r\n }}>\r\n <span style={{ fontSize: 10, color: \"gray\" }}>{translate(\"$__anonymous\", '*')}</span>\r\n </div>\r\n <div>\r\n {moment(new Date()).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") === moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\") ?\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"H:mm\")}`\r\n :\r\n moment(new Date()).tz(\"America/Sao_Paulo\").format(\"YYYY\") === moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"YYYY\") ?\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM H:mm\")}`\r\n :\r\n `${moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY H:mm\")}`\r\n }\r\n </div>\r\n </div>\r\n : <></>}\r\n {data._kpiTimer && Object.keys(data._kpiTimer).length > 0 && Object.keys(data._kpiTimer).filter(a => data._kpiTimer[a].userId === session._id).length !== 0 &&\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n float: 'left'\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n >\r\n <Timer data={data} />\r\n </div>\r\n }\r\n {(\r\n !props.noExpanded\r\n && expanded\r\n && (\r\n !data.private\r\n || (\r\n data.private\r\n && (showPrivateCard || reduxStore.getState().controls.lockPrivate)\r\n )\r\n )\r\n ) ?\r\n <React.Fragment>\r\n {data.isAnonymous ? (\r\n <CardExpanded\r\n {...props}\r\n data={data}\r\n locked={locked}\r\n anonymousMode={true}\r\n permission={permission}\r\n expanded\r\n Resume={true}\r\n />\r\n ) : (\r\n <CardExpanded\r\n {...props}\r\n data={data}\r\n locked={locked}\r\n permission={permission}\r\n expanded\r\n Resume={true}\r\n />\r\n )}\r\n <div>\r\n {props.searchText && data.description &&\r\n <div className={classes.description}>\r\n {Highlighted(data.description, props.searchText)}\r\n </div>\r\n }\r\n </div>\r\n </React.Fragment>\r\n : expanded ? <React.Fragment>\r\n <FakeExpanded />\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </React.Fragment>\r\n {!data.isTemplate ?\r\n <div>\r\n {\r\n (\r\n data.status !== \"completed\"\r\n &&\r\n (\r\n (\r\n data.startDate\r\n && moment(data.startDate).isValid()\r\n )\r\n ||\r\n (\r\n data.endDate\r\n && moment(data.endDate).isValid()\r\n )\r\n )\r\n )\r\n ?\r\n <div>\r\n <div className={\r\n (\r\n data.endDate\r\n && moment(new Date(data.endDate * 1000)).tz(\"America/Sao_Paulo\").format(\"YYYY-MM-DD\") < moment().format(\"YYYY-MM-DD\")\r\n && data.status !== \"completed\"\r\n )\r\n ? classes.lateDates\r\n : classes.dates\r\n }>\r\n {data.startDate && moment(data.startDate).isValid() &&\r\n <div className={classes.dateInfo}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n className={classes.dateIco} icon=\"insert_invitation\" title={\"$__startDate\"} size=\"14px\" disabled />\r\n {(new Date(data.startDate * 1000) instanceof Date && !isNaN(new Date(data.startDate * 1000))) ?\r\n moment(new Date(data.startDate * 1000)).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n :\r\n moment(data.startDate).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n }\r\n </div>\r\n }\r\n {data.endDate && moment(data.endDate).isValid() ?\r\n <div className={classes.dateInfo}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n className={classes.dateIco} icon=\"event_available\" title={\"$__endDate\"} size=\"14px\" disabled />\r\n {(new Date(data.endDate * 1000) instanceof Date && !isNaN(new Date(data.endDate * 1000))) ?\r\n moment(new Date(data.endDate * 1000)).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n :\r\n moment(data.endDate).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY\")\r\n }\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n\r\n }\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {data._tags && data._tags.filter(a => a.value).length > 0 ?\r\n <div\r\n style={props.showTags || expanded ? {\r\n marginBottom: 33\r\n } : {}}\r\n >\r\n <CardTags\r\n options={data._tags}\r\n expanded={props.showTags || (\r\n expanded\r\n && data.type !== 'plan'\r\n && data.type !== 'link'\r\n && data.type !== 'insight'\r\n )\r\n ? true\r\n : false\r\n }\r\n />\r\n </div> : <React.Fragment></React.Fragment>\r\n }\r\n {\r\n data.isTemplate &&\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n clear: \"both\",\r\n padding: \"7px\",\r\n backgroundColor: customApp(\"menu\"),\r\n marginTop: \"7px\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n if (mounted.current)\r\n setUseTemplate(true)\r\n }}>\r\n <IconButton\r\n text={translate(\"$__useThisTemplate\", '*')}\r\n icon=\"auto_awesome\"\r\n iconColor={'#FFFFFF'}\r\n textColor={'#FFFFFF'}\r\n />\r\n </div>\r\n }\r\n {\r\n data._requireApproval &&\r\n (\r\n (\r\n data._parent\r\n && (\r\n !db.cards[data._parent]\r\n || (\r\n db.cards[data._parent]\r\n &&\r\n (\r\n (\r\n db.cards[data._parent]._users\r\n && (\r\n !db.cards[data._parent]._users[session._id]\r\n || (\r\n db.cards[data._parent]._users[session._id]\r\n && !db.cards[data._parent]._users[session._id].approvalResponsible\r\n )\r\n )\r\n )\r\n\r\n )\r\n )\r\n )\r\n )\r\n ||\r\n (\r\n db.cards[data._id]._users\r\n && (\r\n Object.keys(db.cards[data._id]._users).length === 1\r\n && db.cards[data._id]._users[session._id]\r\n )\r\n )\r\n ) ?\r\n <div style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\"\r\n }}>\r\n <div style={{\r\n position: 'absolute',\r\n backgroundColor: 'rgba(0,0,0,0.6)',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: \"center\",\r\n cursor: \"pointer\",\r\n color: \"white\"\r\n }}>\r\n <Icon icon=\"lock\" color=\"white\" />\r\n <span>{translate(\"$__awaitApproval\")}</span>\r\n </div>\r\n </div>\r\n : !showMoreButton && data.status === 'completed' &&\r\n <div style={{\r\n backgroundColor: 'rgba(0,0,0,0.4)',\r\n position: 'absolute',\r\n height: '2px',\r\n left: 0,\r\n right: 0,\r\n top: '20px'\r\n }}>\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 0,\r\n bottom: -12,\r\n color: \"#FFF\",\r\n fontSize: 10,\r\n padding: 3,\r\n backgroundColor: \"rgba(0,0,0,0.66)\",\r\n }}\r\n >\r\n {translate(\"$__completeDate\")}:\r\n {getDate(data.completed_at || data.updated_at)}\r\n </div>\r\n </div>\r\n }\r\n {\r\n (data.type !== 'plan' && data.deleted) ?\r\n <div style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\"\r\n }}>\r\n <div style={{\r\n position: 'absolute',\r\n backgroundColor: '#71389da6',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n paddingRight: 7,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: \"pointer\",\r\n justifyContent: \"right\"\r\n }}>\r\n <CustomButton\r\n title={translate(`$__restoreThis`, 1)}\r\n text={translate(`$__restoreThis`, 1)}\r\n color=\"#FFFFFF\"\r\n icon={\"restore_from_trash\"}\r\n onClick={() => {\r\n restoreThis()\r\n }}\r\n size={\"17px\"}\r\n textSize={\"17px\"}\r\n transparent\r\n />\r\n </div>\r\n\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {\r\n locked ?\r\n <div style={{\r\n position: \"absolute\",\r\n backgroundColor: \"rgba(233,233,233,0.88)\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n <div style={{\r\n display: \"flex\"\r\n }}>\r\n <Icon color=\"lightgray\" icon=\"lock\" size={\"22px\"} />\r\n </div>\r\n\r\n </div>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {/* {props.hasChildrens ? <div style={{ width: \"100%\", padding: 2 }}>{props.hasChildrens}</div> : <></>} */}\r\n {(\r\n expanded\r\n || (\r\n data._users\r\n && Object.keys(data._users).filter(a => String(a) !== null).length > 0\r\n &&\r\n (\r\n !data._users[session._id]\r\n ||\r\n (\r\n data._users[session._id]\r\n && Object.keys(data._users).length > 1\r\n )\r\n )\r\n )\r\n ) && !data.isAnonymous ?\r\n <React.Fragment>\r\n <div style={{\r\n width: \"100%\",\r\n marginTop: expanded ? 37 : 7\r\n }}>\r\n <div className={classes.usersContent}>\r\n <div className={classes.users}>\r\n <QuickUsersList _id={data._id} data={data} permission={permission} transparent myDay limit={3} />\r\n </div>\r\n </div>\r\n </div>\r\n <div style={{ clear: 'both' }}></div>\r\n </React.Fragment>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </Container >\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nconst Container = styled.div`\r\n border-radius:5px;\r\n min-width:200px;\r\n background-color:#fff;\r\n margin-bottom:7px;\r\n\r\n ${props =>\r\n props.separator ? `marging-top:30px;` : ``\r\n }\r\n ${props =>\r\n props.selectable && props.selected ? `\r\n opacity:1;`\r\n : props.selectable ? `\r\n opacity:0.5;`\r\n : ``\r\n }\r\n ${props =>\r\n props.locked ?\r\n `cursor:no-drop !important;`\r\n : `cursor:pointer;`\r\n }\r\n ${props =>\r\n props.selected ?\r\n `border-bottom:solid 5px ${customApp(\"color\")} !important;`\r\n : ``\r\n }\r\n ${props =>\r\n props.isDragDisable\r\n ? \"\"\r\n : props.isDragging\r\n ? `opacity:0.88;\r\n max-width:320px;\r\n border:solid 10px red;`\r\n : ``\r\n }\r\n ${props =>\r\n props.inLine ?\r\n `position:relative;\r\n float:left;\r\n margin:3.5px;\r\n width:calc(20% - 7px);\r\n // maxWidth:320px;\r\n `\r\n : `\r\n width:calc(100%) !important;\r\n margin:7px 0px 12px 0px;\r\n `\r\n }\r\n width:calc(100%) !important;\r\n\r\n ${props =>\r\n props.priority ?\r\n `border-left:5px solid ${props.priority} !important;`\r\n : ``\r\n }\r\n ${props => props.isCombining ? `border:solid 3px ${customApp('menu')} !important;` : ``}\r\n `\r\n\r\n\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n cardsExpanded: store.db.cardsExpanded,\r\n showPrivate: store.controls.lockPrivate,\r\n cards: store.db.cards,\r\n unlockedPrivates: store.controls.unlockedPrivates,\r\n controls: store.controls,\r\n searchs: store.searchs\r\n})\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Card)","import axios from \"axios\"\r\n\r\naxios.defaults.headers.post[\"Content-Type\"] = \"application/json; charset=UTF-8\"\r\n\r\n/**\r\n * Create base url for requisition ms\r\n */\r\nconst apims = axios.create({\r\n baseURL: process.env.REACT_APP_MS\r\n});\r\n\r\naxios.defaults.withCredentials = true;\r\n/**\r\n * intecept verbs http to verify token\r\n */\r\napims.interceptors.request.use(async config => {\r\n config.headers[\"Content-Type\"] = `${config.headers[\"Content-Type\"] ? `${config.headers[\"Content-Type\"]}` : `application/json`}; charset=UTF-8;`\r\n const token = localStorage.getItem(\"TOKEN\") || \"\"\r\n if (String(token) !== \"null\" && String(token) !== \"\" && String(token) !== \"undefined\") {\r\n config.headers.Authorization = `Bearer ${token}`\r\n config.headers.Accept = \"application/json;charset=UTF-8;application/x-www-form-urlencoded\"\r\n }\r\n return config\r\n});\r\n\r\napims.interceptors.response.use(\r\n async data => {\r\n return Promise.resolve(data)\r\n }\r\n ,\r\n error => {\r\n const response = Promise.reject(error.response)\r\n console.log(error.response)\r\n if (error && error.response && error.response.status && error.response.status === 401 && window.location.pathname !== '/login' && window.location.pathname !== '/register' && window.location.pathname !== '/activate') {\r\n console.log(error)\r\n }\r\n return response\r\n }\r\n);\r\n\r\n/**\r\n * Export ms\r\n */\r\nexport default apims;","import React, { useState, useEffect, useRef } from 'react';\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n//COMPONENTS\r\nimport Header from 'components/Dashboards/Header'\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport Legend from '../Legend';\r\nimport './Loader.css'\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\n\r\nconst ActionsDough = (props) => {\r\n const { tittle, preview, icon } = props\r\n const [data, setData] = useState([])\r\n const keysLabel = useRef([])\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const { db } = reduxStore.getState()\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n\r\n useEffect(() => {\r\n\r\n let newData = [...db.status.map((st, index) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(props.planCards).filter(fil => {\r\n\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status\r\n && db.cards[fil].status === st.value\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(props.planCards).filter(fil =>\r\n db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status !== 'completed'\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n ).length,\r\n color: 'red'\r\n }]\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n setData(newData)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.filter, dashFilterChart]);\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', overflow: 'hidden', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column' }}>\r\n <Header styles={props.styles} tittle={translate(`$__${tittle}`)} icon={icon} edit={props.edit} id={props.id} handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', backgroundColor: '#f5f5f5' }}>\r\n <div className='componentCircle' style={{ width: '100%', height: '100%', position: 'absolute', }}>\r\n {(data.length > 0 && (!props.load && inViewport)) ? <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 20, right: 20, bottom: 20, left: 20 }}\r\n innerRadius={0}\r\n padAngle={1.7}\r\n cornerRadius={3}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n theme={{\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent',\r\n }}\r\n arcLinkLabelsStraightLength={0}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n arcLinkLabelsSkipAngle={10}\r\n arcLinkLabelsTextColor=\"#333333\"\r\n arcLinkLabelsThickness={0}\r\n arcLinkLabelsColor={{ from: 'color' }}\r\n arcLabelsSkipAngle={10}\r\n arcLabelsTextColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'brighter',\r\n 2\r\n ]\r\n ]\r\n }}\r\n /> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n {!preview &&\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={props.filter?.colorsArr}\r\n />\r\n </div>\r\n }\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ActionsDough;\r\n","import React, { useState, useEffect, useRef } from 'react'\r\n\r\n//COMPONENTS\r\nimport Pagination from '@material-ui/lab/Pagination'\r\nimport ButtonOptions from 'componentsV3/Buttons';\r\nimport Filter from 'componentsV3/Filter';\r\nimport Header from '../Header'\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport Icon from 'components/Icon'\r\nimport Card from \"components/Card\"\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\n\r\nconst DayTasks = (props) => {\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n const [hover, setHover] = useState(false)\r\n const [dueActivities_page, setDueActivities_page] = useState(1)\r\n const [filter, setFilter] = useState(\"\")\r\n const taskRef = useRef()\r\n const [height, setHeight] = useState(0)\r\n\r\n useEffect(() => {\r\n if (!taskRef.current) return;\r\n\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n let containerItemCount = taskRef.current.clientHeight / 42\r\n\r\n setHeight((containerItemCount / 2) - 1)\r\n });\r\n resizeObserver.observe(taskRef.current);\r\n return () => resizeObserver.disconnect(); // clean up \r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n\r\n\r\n return (\r\n <div onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} style={{ height: '100%' }}>\r\n <UiCard style={{ marginTop: '0px', height: '100%', overflow: 'hidden', borderRadius: '0px' }}>\r\n <div>\r\n {props.edit ?\r\n <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>pending_actions</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7.5px', alignSelf: 'center', fontWeight: 'bold', marginTop: '1px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>{translate(`$__todayTasks`, 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> : <Header\r\n hover={hover}\r\n tittle={translate(`$__todayTasks`, 1)}\r\n icon={'pending_actions'}\r\n datafilter={false}\r\n styles={props.styles}\r\n />\r\n }\r\n {(hover && !props.edit) && <ButtonOptions\r\n text={\"Buscar\"}\r\n icon={\"search\"}\r\n popper={\r\n <div style={{ padding: '15px' }}>\r\n <Filter\r\n fields={['text']}\r\n showFilters\r\n style={{ position: 'absolute', zIndex: '999' }}\r\n defaultValues={{\r\n text: ''\r\n }}\r\n onChange={(e) => e.text && setFilter(e?.text)}\r\n />\r\n </div>\r\n }\r\n style={{\r\n alignSelf: 'center',\r\n position: 'absolute',\r\n right: '40px',\r\n borderRadius: '5px',\r\n backgroundColor: 'white',\r\n top: '7px'\r\n }}\r\n />}\r\n </div>\r\n <UiCardBody style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>\r\n <div ref={taskRef} style={{ overflowY: 'scroll', height: `calc(100% - 70px)`, overflowX: 'hidden' }}>\r\n {Object.keys(props.planCards).filter((a, i) => {\r\n if (\r\n db.cards[a]._planId === hashs[0]\r\n && !db.cards[a].deleted\r\n && db.cards[a].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n && db.cards[a]._users\r\n && (\r\n Object.keys(db.cards[a]._users).filter(user => db.cards[a]._users[user].myDay\r\n && moment(new Date(db.cards[a]._users[user].myDay * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today\r\n ).length > 0\r\n )\r\n )\r\n return true\r\n return false\r\n })\r\n .filter((card, i) => i >= (dueActivities_page - 1) * height && i < dueActivities_page * height)\r\n .map((card, i) => {\r\n return <Card\r\n db=\"cards\"\r\n key={card}\r\n data={db.cards[card]}\r\n />\r\n }\r\n )}\r\n </div>\r\n {Math.ceil(Object.keys(props.planCards).filter(a =>\r\n db.cards[a]._planId === hashs[0]\r\n && !db.cards[a].deleted\r\n && db.cards[a].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n && db.cards[a]._users\r\n && (\r\n Object.keys(db.cards[a]._users).filter(user => db.cards[a]._users[user].myDay\r\n && moment(new Date(db.cards[a]._users[user].myDay * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today\r\n ).length > 0\r\n )\r\n ).length / height) > 1 &&\r\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center', maxHeight: '30px' }} >\r\n <Pagination\r\n page={dueActivities_page}\r\n count={Math.ceil(Object.keys(props.planCards).filter(a =>\r\n db.cards[a]._planId === hashs[0]\r\n && !db.cards[a].deleted\r\n && db.cards[a].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n && db.cards[a]._users\r\n && (\r\n Object.keys(db.cards[a]._users).filter(user => db.cards[a]._users[user].myDay\r\n && moment(new Date(db.cards[a]._users[user].myDay * 1000)).tz('America/Sao_Paulo').format('YYYY/MM/DD') === today\r\n ).length > 0\r\n )\r\n ).length / height)}\r\n onChange={(e, p) => {\r\n setDueActivities_page(p)\r\n }}\r\n />\r\n </div>\r\n }\r\n </UiCardBody>\r\n </UiCard>\r\n </div>\r\n )\r\n}\r\n\r\nexport default DayTasks","import React, { useState, useEffect } from 'react'\r\n\r\n//COMPONENTS\r\nimport Header from 'components/Dashboards/Header'\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\nimport Icon from 'components/Icon';\r\nimport { ResponsiveFunnel } from '@nivo/funnel'\r\n\r\n//STYLES\r\nimport \"./Loader.css\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from 'functions';\r\n\r\nconst Funnel = (props) => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n const [filter, setFilter] = useState({\r\n index: 0,\r\n showQuantity: 8,\r\n number: 8,\r\n finalIndex: 8\r\n })\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState([])\r\n const [steps, setSteps] = useState([])\r\n const [users, setUsers] = useState([])\r\n const { db } = reduxStore.getState()\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n // number: filter?.users ? filter?.users?.length : 8,\r\n\r\n useEffect(() => {\r\n const { db } = reduxStore.getState()\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n let newSteps = Object.keys(props.planCards)\r\n .filter(cd => {\r\n let lastDateCard =\r\n db.cards[cd].completed_at?.low\r\n || db.cards[cd].completed_at\r\n || db.cards[cd].updated_at?.low\r\n || db.cards[cd].updated_at\r\n || db.cards[cd].created_at?.low\r\n || db.cards[cd].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[cd]._parent === hashs[0]\r\n && db.cards[cd].type === \"step\"\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n }).map((cd, ic) => db.cards[cd])\r\n\r\n let newData = newSteps\r\n .sort((a, b) => a.step - b.step)\r\n // .filter(sst => {\r\n // if (users\r\n // && users.length === 0) return true\r\n // if (users\r\n // && users.length > 0\r\n // && Object.keys(sst._users).filter(a => users.indexOf(a) > -1).length > 0\r\n // ) return true\r\n // return false\r\n // })\r\n .forEach((cd, ic) => ({\r\n \"id\": cd._id,\r\n \"value\": Object.keys(db.cards).filter(sst => {\r\n if (!db.cards[sst].deleted\r\n && (\r\n db.cards[sst]._parent === cd._id\r\n || (\r\n ic === 0\r\n && db.cards[sst]._parent === hashs[0]\r\n && db.cards[sst].type !== 'step'\r\n )\r\n )\r\n && (\r\n (users\r\n && users.length === 0\r\n ) ||\r\n (\r\n users\r\n && users.length > 0\r\n && users.filter(us => db.cards[sst]._users[us]).length > 0\r\n )\r\n )) return true\r\n return false\r\n }\r\n ).length,\r\n \"label\": cd.name,\r\n \"name\": cd.name\r\n }))\r\n setSteps(newSteps)\r\n setData(newData)\r\n }, [props.planCards, dashFilterChart, props.load, users]);\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 <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'hidden' }}>\r\n <Header\r\n filterConfig={{ filterName: 'etapas', filterItems: [], filterSelect: data.length }}\r\n styles={props.styles}\r\n handleSetSelected={(value) => setFilter({ ...filter, ...value })}\r\n tittle={translate(\"$__\" + props.tittle)}\r\n icon={props.icon}\r\n datafilter={true}\r\n handleSetoption={(value) => setFilter({ ...filter, ...value })}\r\n edit={props.edit}\r\n id={props.id}\r\n handleRemoveObject={(id) => props.handleRemoveObject(id)}\r\n rtFilters={['users']}\r\n onRtFilter={(e) => {\r\n setUsers(e)\r\n }}\r\n />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n {(filter.index !== 0) &&\r\n <Icon\r\n onClick={() =>\r\n setFilter(\r\n {\r\n ...filter,\r\n index: filter.index - 1,\r\n finalIndex: filter.finalIndex - 1\r\n })\r\n }\r\n style={\r\n {\r\n position: 'absolute',\r\n zIndex: '999',\r\n top: '48%',\r\n left: '10px'\r\n }}>\r\n arrow_back_ios\r\n </Icon>\r\n }\r\n {(steps.length !== filter.index + filter.number && steps.length > filter.showQuantity) && <Icon onClick={() => setFilter({ ...filter, index: filter.index + 1, finalIndex: filter.finalIndex + 1 })} style={{ position: 'absolute', zIndex: '999', top: '48%', right: '10px' }}>arrow_forward_ios</Icon>}\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter' }}>\r\n <div style={{ width: \"100%\", justifyContent: \"space-between\", display: \"flex\", alignItems: \"center\", color: customApp(\"menu\"), fontWeight: \"bold\", fontSize: 16, }}>\r\n {steps\r\n .sort((a, b) => a.step - b.step)\r\n .map((cd) => (\r\n <div key={cd._id}\r\n style={{ width: `${10000 / filter.showQuantity}%`, textAlign: \"center\", wordWrap: ' break-word ', maxHeight: '60px', overflow: 'scroll', minHeight: '50px', alignSelf: 'center' }}\r\n >\r\n {cd.name}\r\n </div>\r\n )\r\n ).slice(filter.index, filter.finalIndex)\r\n }\r\n\r\n </div>\r\n <div style={{ width: \"100%\", justifyContent: \"space-between\", display: \"flex\", alignItems: \"center\", color: customApp(\"menu\"), fontWeight: \"bold\", fontSize: 16, }}>\r\n {steps\r\n .sort((a, b) => a.step - b.step)\r\n .map((cd) => {\r\n let sumValues = 0\r\n let ColumnData = cd\r\n let items = Object.keys(db.cards)\r\n .filter(im =>\r\n cd\r\n && cd._id\r\n && db.cards[im]._parent === cd._id\r\n && db.cards[im].deleted\r\n && db.cards[im].value\r\n ).map(im =>\r\n db.cards[im].value\r\n ) || []\r\n if (ColumnData.showSumValues && items.length > 0) {\r\n items.forEach(a => {\r\n sumValues = sumValues + parseFloat(a)\r\n })\r\n }\r\n return (<div key={cd._id} style={{ width: `${10000 / filter.showQuantity}%`, textAlign: \"center\", fontSize: 12, alignSelf: 'center' }}>{sumValues ? `R$ ${sumValues}` : ``}</div>)\r\n }).slice(filter.index, filter.finalIndex)\r\n }\r\n </div>\r\n {(data.length > 0) &&\r\n <ResponsiveFunnel\r\n data={data.slice(filter.index, filter.finalIndex)}\r\n direction=\"horizontal\"\r\n margin={{ top: 0, right: 0, bottom: 45, left: 0 }}\r\n shapeBlending={0.46}\r\n spacing={3}\r\n valueFormat=\" > .0s\"\r\n colors={{ scheme: 'reds' }}\r\n isInteractive={false}\r\n borderWidth={20}\r\n labelColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 3\r\n ]\r\n ]\r\n }}\r\n beforeSeparatorLength={10}\r\n beforeSeparatorOffset={20}\r\n afterSeparatorLength={10}\r\n afterSeparatorOffset={20}\r\n currentPartSizeExtension={10}\r\n currentBorderWidth={7}\r\n motionConfig=\"wobbly\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n </div >\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Funnel\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n//COMPONENTS\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport Legend from '../Legend';\r\nimport Header from 'components/Dashboards/Header'\r\nimport \"./Loader.css\"\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\nconst GoalsDough = (props) => {\r\n const [data, setData] = useState([])\r\n const { tittle, icon } = props\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n const keysLabel = useRef([])\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n\r\n useEffect(() => {\r\n let newData = [\r\n ...db.status.map((st) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n return db.cards[fil]._planId === hashs[0]\r\n && db.cards[fil].type === 'goal'\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status\r\n && db.cards[fil].status === st.value\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].status !== 'completed'\r\n && db.cards[fil].type === 'goal'\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length,\r\n color: '#FFFFFF'\r\n }\r\n ]\r\n\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n setData(newData)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.filter, dashFilterChart]);\r\n\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', overflow: 'hidden', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column' }}>\r\n <Header styles={props.styles} tittle={translate(`$__${tittle}`)} icon={icon} edit={props.edit} id={props.id} handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', backgroundColor: '#f5f5f5' }}>\r\n <div className='componentCircle' style={{ width: '100%', height: '100%', position: 'absolute' }}>\r\n {(!props.load && inViewport) ? <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 20, right: 20, bottom: 20, left: 20 }}\r\n innerRadius={0}\r\n padAngle={1.7}\r\n cornerRadius={3}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n theme={{\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent'\r\n }}\r\n arcLinkLabelsStraightLength={0}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.8]] }}\r\n enableArcLinkLabels={false}\r\n arcLinkLabelsSkipAngle={10}\r\n arcLinkLabelsTextColor=\"#FFFFFF\"\r\n arcLinkLabelsThickness={0}\r\n arcLinkLabelsColor={{ from: 'color' }}\r\n arcLabelsSkipAngle={10}\r\n arcLabelsTextColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'brighter',\r\n 2\r\n ]\r\n ]\r\n }}\r\n /> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={props.filter.colorsArr}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GoalsDough;\r\n","import React, { useEffect, useRef, useState } from 'react'\r\n\r\n//COMPONENTS\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport Icon from 'components/Icon'\r\nimport ButtonOptions from 'componentsV3/Buttons';\r\nimport Filter from 'componentsV3/Filter';\r\nimport Card from \"components/Card\"\r\nimport Pagination from '@material-ui/lab/Pagination'\r\nimport Header from '../Header'\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\nimport { translate } from \"functions\"\r\n\r\n\r\nconst LastCompleted = (props) => {\r\n\r\n const [lastCompletedCards_page, setlastCompletedCards_page] = React.useState(1)\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n const [hover, setHover] = useState(false)\r\n const taskRef = useRef()\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [filter, setFilter] = useState(\"\")\r\n const [height, setHeight] = useState(0)\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n\r\n useEffect(() => {\r\n if (!taskRef.current) return;\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n let containerItemCount = taskRef.current.clientHeight / 42\r\n setHeight((containerItemCount / 2) - 1)\r\n });\r\n resizeObserver.observe(taskRef.current);\r\n return () => resizeObserver.disconnect(); // clean up \r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n\r\n\r\n return (\r\n <div onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} style={{ height: '100%', overflow: 'hidden' }}>\r\n <UiCard style={{ height: '100%', margin: '0px' }}>\r\n <div>\r\n {props.edit ?\r\n <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>pending_actions</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7.5px', alignSelf: 'center', fontWeight: 'bold', marginTop: '1px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>{translate(`$__lastCompletedCards`, 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', position: 'absolute', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', right: '62px', top: '8px', border: '1px solid #D3D3D3', padding: '14px' }}>\r\n open_with\r\n </Icon>\r\n </div>\r\n </div> : <Header\r\n hover={hover}\r\n tittle={translate(`$__lastCompletedCards`, 1)}\r\n icon={'pending_actions'}\r\n datafilter={false}\r\n styles={props.styles}\r\n />\r\n }\r\n {(hover && !props.edit) && <ButtonOptions\r\n text={\"Buscar\"}\r\n icon={\"search\"}\r\n popper={\r\n <div style={{ padding: '15px' }}>\r\n <Filter\r\n fields={['text']}\r\n showFilters\r\n style={{ position: 'absolute', zIndex: '999' }}\r\n defaultValues={{\r\n text: ''\r\n }}\r\n onChange={(e) => e.text && setFilter(e?.text)}\r\n />\r\n </div>\r\n }\r\n style={{\r\n alignSelf: 'center',\r\n position: 'absolute',\r\n right: '40px',\r\n borderRadius: '5px',\r\n backgroundColor: 'white',\r\n top: '7px'\r\n }}\r\n />}\r\n </div>\r\n <UiCardBody>\r\n <div ref={taskRef} style={{ overflowY: 'scroll', height: `calc(100% - 70px)`, overflowX: 'hidden' }}>\r\n {Object.keys(props.planCards)\r\n .filter((card, i) => {\r\n let lastDateCard =\r\n db.cards[card].completed_at?.low\r\n || db.cards[card].completed_at\r\n || db.cards[card].updated_at?.low\r\n || db.cards[card].updated_at\r\n || db.cards[card].created_at?.low\r\n || db.cards[card].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[card]._planId === hashs[0]\r\n && !db.cards[card].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && (\r\n !db.cards[card].checklist\r\n ||\r\n (\r\n db.cards[card].checklist\r\n && db.cards[card].showCard\r\n )\r\n )\r\n && db.cards[card].status === 'completed'\r\n && db.cards[card].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n })\r\n .sort((a, b) => {\r\n let completeA = db.cards[a].completed_at && db.cards[a].completed_at.low ? parseInt(db.cards[a].completed_at.low) : typeof db.cards[a].completed_at === 'string' ? db.cards[a].completed_at : 0\r\n let completeB = db.cards[b].completed_at && db.cards[b].completed_at.low ? parseInt(db.cards[b].completed_at.low) : typeof db.cards[b].completed_at === 'string' ? db.cards[b].completed_at : 0\r\n if (completeA > completeB) {\r\n return -1\r\n } else if (completeA < completeB) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .filter((card, i) => i >= (lastCompletedCards_page - 1) * height && i < lastCompletedCards_page * height)\r\n .map((card, i) => {\r\n return (<Card\r\n db=\"cards\"\r\n key={card}\r\n data={db.cards[card]}\r\n inLine={true}\r\n />)\r\n }\r\n )}\r\n </div>\r\n {Math.ceil(Object.keys(props.planCards).filter(card => {\r\n let lastDateCard =\r\n db.cards[card].completed_at?.low\r\n || db.cards[card].completed_at\r\n || db.cards[card].updated_at?.low\r\n || db.cards[card].updated_at\r\n || db.cards[card].created_at?.low\r\n || db.cards[card].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[card]._planId === hashs[0]\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[card].status === 'completed'\r\n }).length / height) > 1 &&\r\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center', maxHeight: '30px' }} >\r\n <Pagination\r\n page={lastCompletedCards_page}\r\n count={Math.ceil(Object.keys(db.cards).filter(card => {\r\n let lastDateCard =\r\n db.cards[card].completed_at?.low\r\n || db.cards[card].completed_at\r\n || db.cards[card].updated_at?.low\r\n || db.cards[card].updated_at\r\n || db.cards[card].created_at?.low\r\n || db.cards[card].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[card]._planId === hashs[0]\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[card].status === 'completed'\r\n && db.cards[card].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n }).length / height)}\r\n onChange={(e, p) => {\r\n setlastCompletedCards_page(p)\r\n }}\r\n />\r\n </div>\r\n }\r\n </UiCardBody>\r\n </UiCard>\r\n </div>\r\n )\r\n}\r\n\r\nexport default LastCompleted","import React, { useState, useEffect, useRef } from 'react'\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//COMPONENTS\r\nimport Header from '../Header'\r\nimport Card from \"components/Card\"\r\nimport Pagination from '@material-ui/lab/Pagination'\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport Icon from 'components/Icon'\r\nimport ButtonOptions from 'componentsV3/Buttons';\r\nimport Filter from 'componentsV3/Filter';\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\nconst LateTask = (props) => {\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n const [dueActivities_page, setDueActivities_page] = useState(1)\r\n const [filter, setFilter] = useState(\"\")\r\n const [hover, setHover] = useState(false)\r\n const taskRef = useRef()\r\n const [height, setHeight] = useState(0)\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n let filterStructure = props.planCards && Object.keys(props.planCards).filter(card => {\r\n let lastDateCard =\r\n db.cards[card].completed_at?.low\r\n || db.cards[card].completed_at\r\n || db.cards[card].updated_at?.low\r\n || db.cards[card].updated_at\r\n || db.cards[card].created_at?.low\r\n || db.cards[card].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return !db.cards[card].deleted\r\n && db.cards[card].status !== 'completed'\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[card].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n && db.cards[card].endDate\r\n && moment(new Date(db.cards[card].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).map(card => card)\r\n\r\n\r\n useEffect(() => {\r\n if (!taskRef.current) return;\r\n const resizeObserver = new ResizeObserver(() => {\r\n let containerItemCount = taskRef.current.clientHeight / 42\r\n\r\n setHeight((containerItemCount / 2) - 1)\r\n });\r\n resizeObserver.observe(taskRef.current);\r\n return () => resizeObserver.disconnect();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n\r\n return (\r\n <div onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} style={{ height: '100%' }}>\r\n <UiCard style={{ marginTop: '0px', height: '100%' }} >\r\n <div>\r\n {props.edit ?\r\n <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>pending_actions</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7.5px', alignSelf: 'center', fontWeight: 'bold', marginTop: '1px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>{translate(`$__lateActivities`, 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> : <Header\r\n hover={hover}\r\n tittle={translate(`$__lateActivities`, 1)}\r\n icon={'pending_actions'}\r\n datafilter={false}\r\n styles={props.styles}\r\n />\r\n }\r\n {(hover && !props.edit) && <ButtonOptions\r\n text={\"Buscar\"}\r\n icon={\"search\"}\r\n popper={\r\n <div style={{ padding: '15px' }}>\r\n <Filter\r\n fields={['text']}\r\n showFilters\r\n style={{ position: 'absolute', zIndex: '999' }}\r\n defaultValues={{\r\n text: ''\r\n }}\r\n onChange={(e) => e.text && setFilter(e?.text)}\r\n />\r\n </div>\r\n }\r\n style={{\r\n alignSelf: 'center',\r\n position: 'absolute',\r\n right: '40px',\r\n borderRadius: '5px',\r\n backgroundColor: 'white',\r\n top: '7px'\r\n }}\r\n />}\r\n </div>\r\n {props.planCards &&\r\n\r\n <UiCardBody style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>\r\n {/* <input onChange={(e) => setFilter(e.target.value)}></input> */}\r\n <div ref={taskRef} style={{ overflowY: 'scroll', height: `calc(100% - 70px)`, overflowX: 'hidden' }}>\r\n {filterStructure.sort((a, b) => {\r\n let completeA = db.cards[a].endDate\r\n let completeB = db.cards[b].endDate\r\n if (completeA > completeB) {\r\n return -1\r\n } else if (completeA < completeB) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .filter((card, i) => i >= (dueActivities_page - 1) * height && i < dueActivities_page * height)\r\n .map((card, i) => {\r\n return (<Card\r\n db=\"cards\"\r\n key={card}\r\n data={db.cards[card]}\r\n inLine={true}\r\n />)\r\n }\r\n )}\r\n </div>\r\n {Math.ceil(filterStructure.length / height) > 1 &&\r\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center', maxHeight: '30px' }} >\r\n <Pagination\r\n page={dueActivities_page}\r\n count={Math.ceil(filterStructure.length / height)}\r\n onChange={(e, p) => {\r\n setDueActivities_page(p)\r\n }}\r\n />\r\n </div>\r\n }\r\n </UiCardBody>\r\n }\r\n </UiCard >\r\n </div >\r\n )\r\n}\r\n\r\nexport default LateTask","import React, { useEffect, useState, useRef } from 'react';\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n//COMPONENTS\r\nimport Header from 'components/Dashboards/Header'\r\nimport Legend from '../Legend';\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport MatrixIcon from \"assets/icons/Matrix\"\r\nimport \"./Loader.css\"\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\nconst MatrixDough = (props) => {\r\n const { tittle } = props\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const keysLabel = useRef([])\r\n const [data, setData] = useState([])\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n // eslint-disable-next-line\r\n }, [props.dashboardConfig]);\r\n\r\n\r\n useEffect(() => {\r\n const { db } = reduxStore.getState()\r\n let newData = [\r\n ...db.status.map((st, index) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type.indexOf('guideline') > -1\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type.indexOf('guideline') > -1\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length,\r\n color: 'red'\r\n }\r\n ]\r\n\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n setData(newData)\r\n // eslint-disable-next-line\r\n }, [props.planCards, props.filter, dashFilterChart]);\r\n\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', overflow: 'hidden', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column' }}>\r\n <Header styles={props.styles} tittle={translate(`$__${tittle}`)} icon={MatrixIcon} edit={props.edit} id={props.id} handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', backgroundColor: '#f5f5f5' }}>\r\n <div className='componentCircle' style={{ width: '100%', height: '100%', position: 'absolute', }}>\r\n {(!props.load && inViewport) ? <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 20, right: 20, bottom: 20, left: 20 }}\r\n innerRadius={0}\r\n padAngle={1.7}\r\n cornerRadius={3}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n theme={{\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent'\r\n }}\r\n arcLinkLabelsStraightLength={0}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n arcLinkLabelsSkipAngle={10}\r\n arcLinkLabelsTextColor=\"#333333\"\r\n arcLinkLabelsThickness={0}\r\n arcLinkLabelsColor={{ from: 'color' }}\r\n arcLabelsSkipAngle={10}\r\n arcLabelsTextColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'brighter',\r\n 2\r\n ]\r\n ]\r\n }}\r\n /> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={props.filter.colorsArr}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default MatrixDough;\r\n","import React, { useState, useEffect, useRef } from 'react'\r\n\r\n//COMPONENTS\r\nimport ButtonOptions from 'componentsV3/Buttons';\r\nimport Filter from 'componentsV3/Filter';\r\nimport Header from '../Header'\r\nimport Icon from 'components/Icon'\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport Card from \"components/Card\"\r\nimport Pagination from '@material-ui/lab/Pagination'\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\nconst NextTask = (props) => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n const [nextActivities_page, setNextActivities_page] = React.useState(1)\r\n const [hover, setHover] = useState(false)\r\n const taskRef = useRef()\r\n const [filter, setFilter] = useState(\"\")\r\n const [height, setHeight] = useState(0)\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n let filterStructure = props.planCards && Object.keys(props.planCards).filter(card => {\r\n let lastDateCard =\r\n db.cards[card].completed_at?.low\r\n || db.cards[card].completed_at\r\n || db.cards[card].updated_at?.low\r\n || db.cards[card].updated_at\r\n || db.cards[card].created_at?.low\r\n || db.cards[card].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[card]._planId === hashs[0]\r\n && !db.cards[card].deleted\r\n && db.cards[card].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n && db.cards[card].status !== 'completed'\r\n && (\r\n db.cards[card].startDate\r\n && moment(new Date(db.cards[card].startDate * 1000)).tz('America/Sao_Paulo').format() >= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n )\r\n }).map(card => card)\r\n\r\n useEffect(() => {\r\n if (!taskRef.current) return; // wait for the elementRef to be available\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n let containerItemCount = taskRef.current.clientHeight / 42\r\n\r\n setHeight((containerItemCount / 2) - 1)\r\n });\r\n resizeObserver.observe(taskRef.current);\r\n return () => resizeObserver.disconnect(); // clean up \r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n return (\r\n <div style={{ height: '100%' }} onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)}>\r\n <UiCard style={{ marginTop: '0px', height: '100%' }}>\r\n <div>\r\n {props.edit ?\r\n <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>pending_actions</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7.5px', alignSelf: 'center', fontWeight: 'bold', marginTop: '1px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>{translate(`$__nextActivities`, 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\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> : <Header\r\n hover={hover}\r\n tittle={translate(`$__nextActivities`, 1)}\r\n icon={'pending_actions'}\r\n datafilter={false}\r\n styles={props.styles}\r\n />\r\n }\r\n {/* #dedede' */}\r\n {(hover && !props.edit) && <ButtonOptions\r\n text={\"Buscar\"}\r\n icon={\"search\"}\r\n popper={\r\n <div style={{ padding: '15px' }}>\r\n <Filter\r\n fields={['text']}\r\n showFilters\r\n style={{ position: 'absolute', zIndex: '999' }}\r\n defaultValues={{\r\n text: ''\r\n }}\r\n onChange={(e) => e.text && setFilter(e?.text)}\r\n />\r\n </div>\r\n }\r\n style={{\r\n alignSelf: 'center',\r\n position: 'absolute',\r\n right: '40px',\r\n borderRadius: '5px',\r\n backgroundColor: 'white',\r\n top: '7px'\r\n }}\r\n />}\r\n </div>\r\n\r\n <UiCardBody>\r\n <div ref={taskRef} style={{ overflowY: 'scroll', height: `calc(100% - 70px)`, overflowX: 'hidden' }}>\r\n {filterStructure\r\n .sort((a, b) => {\r\n let completeA = db.cards[a].completed_at && db.cards[a].completed_at.low ? parseInt(db.cards[a].completed_at.low) : typeof db.cards[a].completed_at === 'string' ? db.cards[a].completed_at : 0\r\n let completeB = db.cards[b].completed_at && db.cards[b].completed_at.low ? parseInt(db.cards[b].completed_at.low) : typeof db.cards[b].completed_at === 'string' ? db.cards[b].completed_at : 0\r\n if (completeA > completeB) {\r\n return -1\r\n } else if (completeA < completeB) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n })\r\n .filter((card, i) => i >= (nextActivities_page - 1) * height && i < nextActivities_page * height)\r\n .map((card, i) => {\r\n return (<Card\r\n db=\"cards\"\r\n key={card}\r\n data={db.cards[card]}\r\n inLine={true}\r\n />)\r\n }\r\n )}\r\n </div>\r\n {Math.ceil(filterStructure.length / height) > 1 &&\r\n <div style={{ width: '100%', display: 'flex', justifyContent: 'center', maxHeight: '30px' }} >\r\n <Pagination\r\n page={nextActivities_page}\r\n count={Math.ceil(Object.keys(db.cards).filter(card =>\r\n db.cards[card]._planId === hashs[0]\r\n && db.cards[card].status !== 'completed'\r\n && db.cards[card].name.toLowerCase().includes(filter.toLowerCase() ? filter : \"\")\r\n && (db.cards[card].startDate && moment(new Date(db.cards[card].startDate * 1000)).tz('America/Sao_Paulo').format() >= moment(new Date(today)).tz('America/Sao_Paulo').format())\r\n ).length / height)}\r\n onChange={(e, p) => {\r\n setNextActivities_page(p)\r\n }}\r\n />\r\n </div>\r\n }\r\n\r\n </UiCardBody>\r\n </UiCard>\r\n </div>\r\n )\r\n}\r\n\r\nexport default NextTask","import React, { useEffect, useState, useRef } from 'react'\r\nimport GridContainer from 'components/Grid/GridContainer'\r\nimport GridItem from 'components/Grid/GridItemV2'\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\nimport HtmlTooltip from 'components/Tooltip/html'\r\n\r\n\r\n//FUNCTIONS\r\nimport { totalTime, translate } from \"functions/\"\r\n\r\n//COMPONENTS\r\nimport Icon from 'components/Icon'\r\n\r\nconst refArray = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n\r\n\r\nconst StatisticsModal = (props) => {\r\n\r\n const mounted = useRef({ current: true })\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const getHeader = Array.from(\r\n new Set(props.data.flatMap(item => Object.keys(item).filter(key => {\r\n return refArray.includes(key) || key.length < 3\r\n }))\r\n ))\r\n\r\n getHeader?.[0]?.length < 3 ? getHeader.sort((a, b) => a - b) : getHeader.sort((a, b) => refArray.indexOf(a) - refArray.indexOf(b));\r\n\r\n const { timeline } = props\r\n const { db } = reduxStore.getState()\r\n const [renderedData, setRenderedData] = useState(false);\r\n const [loaded, setLoaded] = useState(false)\r\n const cardsList = Object.keys(props.planCards)\r\n const { cards } = db\r\n\r\n const getChildrens = (id) => {\r\n let result = [id]\r\n Object.keys(cards).filter(c => cards[c]._parent === id).map(async (c, ci) => {\r\n let child = getChildrens(c)\r\n if (child) {\r\n result = [...new Set([...result, ...child])]\r\n }\r\n })\r\n return result\r\n }\r\n\r\n const getHoursByTag = (tag, period) => {\r\n return new Promise(async (resolve) => {\r\n if (!period) return resolve(``)\r\n let calcTime = 0\r\n cardsList.filter(card =>\r\n !db.cards[card].deleted\r\n && db.cards[card].status === \"completed\"\r\n && db.cards[card]._tags\r\n && db.cards[card]._tags.filter(a => a.value === tag).length > 0\r\n ).forEach(async Xcard => {\r\n let subCards = getChildrens(Xcard)\r\n if (subCards.length > 0)\r\n subCards.filter(card =>\r\n !db.cards[card].deleted\r\n && db.cards[card].status === \"completed\"\r\n && timeline[card]\r\n ).forEach(card => {\r\n let cardTimer = 0\r\n Object.keys(timeline[card])\r\n .filter(a =>\r\n a\r\n && timeline[card][a]\r\n && !timeline[card][a].deleted\r\n && timeline[card][a].type === \"timer\"\r\n && (\r\n !period\r\n || (\r\n period\r\n && parseInt(timeline[card][a].ini) >= parseInt(period.start)\r\n && parseInt(timeline[card][a].fin) <= parseInt(period.end)\r\n )\r\n )\r\n ).forEach(tm => {\r\n let timerTotal = timeline[card][tm].fin - timeline[card][tm].ini\r\n if (timeline[card][tm]._users && timeline[card][tm]._users.filter(a => a._id).length > 0)\r\n timerTotal = timerTotal * timeline[card][tm]._users.filter(a => a._id).length\r\n cardTimer = cardTimer + timerTotal\r\n })\r\n calcTime = calcTime + cardTimer\r\n })\r\n })\r\n\r\n if (calcTime) {\r\n let timeText = totalTime(calcTime)\r\n resolve(`${timeText.hours ? `${timeText.hours}H ` : ``}${timeText.minutes ? `${timeText.minutes}m` : ``}`)\r\n }\r\n resolve(``);\r\n });\r\n }\r\n\r\n const tableStyle = {\r\n borderCollapse: 'collapse',\r\n fontSize: '0.8em', // Tamanho menor da fonte para as células\r\n fontFamily: 'sans-serif',\r\n width: '100%',\r\n maxHeight: '44px',\r\n boxShadow: 'rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px',\r\n };\r\n\r\n const cellStyle = {\r\n border: '1px solid #dddddd',\r\n padding: '5px 10px',\r\n color: 'black',\r\n };\r\n\r\n const loadTime = async (props, getHeader) => {\r\n const result = await Promise.all(props.data.map(async (item, index) => {\r\n return new Promise(async (resolve) => {\r\n const promisesHours = getHeader.map(async (cellRef, monthIndex) => {\r\n return new Promise(async (resolveMap) => {\r\n await new Promise(resolveY => setTimeout(resolveY, 10));\r\n const hourObj = {\r\n hour: await getHoursByTag(item.tag, item[`Period__${cellRef.replace(\"$__\", \"\")}`] || null, item),\r\n cellRef: cellRef\r\n }\r\n resolveMap(hourObj)\r\n })\r\n })\r\n const Hours = await Promise.all(promisesHours)\r\n resolve(\r\n <tr key={index}>\r\n <td style={{ ...cellStyle, display: 'flex' }}>\r\n <div style={{ width: '15px', height: '15px', backgroundColor: item.color, alignSelf: 'center', marginRight: '5px', borderRadius: '50%' }}></div>\r\n {item.label}\r\n </td>\r\n {Hours.map((hourItem, monthIndex) => {\r\n return (\r\n <td style={{ ...cellStyle, position: 'relative' }} key={monthIndex}>\r\n <div style={{ display: 'flex', whiteSpace: 'nowrap' }}>\r\n {(item[hourItem.cellRef] || 0) + (hourItem.hour ? ' /' : '')}\r\n <div style={{ display: 'flex', fontSize: '12px', fontWeight: 'bold', whiteSpace: 'nowrap' }}>\r\n {hourItem.hour && <Icon>history</Icon>}\r\n {hourItem.hour}\r\n </div>\r\n <HtmlTooltip\r\n title={(\r\n <React.Fragment>\r\n <div style={{ margin: '10px', fontSize: '16px', justifyContent: 'center' }}>\r\n {typeof item === 'object' && Object.keys(item).map((key, index) => {\r\n if ([\r\n 'inProgress',\r\n 'completed',\r\n 'notStarted',\r\n 'paused',\r\n 'awaitAction'\r\n ].includes(key)) {\r\n let color = ''\r\n switch (key) {\r\n case 'inProgress': color = \"#011E41\"; break;\r\n case 'completed': color = \"#5A7F71\"; break;\r\n case 'notStarted': color = \"#929497\"; break;\r\n case 'paused': color = \"#EBA900\"; break;\r\n case 'awaitAction': color = \"pink\"; break;\r\n default: color = 'white'\r\n }\r\n return (\r\n <div key={index} style={{ marginBottom: '8px' }}>\r\n {Object.keys(item[key])\r\n .filter((nestedKey, index) => nestedKey === hourItem.cellRef)\r\n .map((nestedKey, index) => {\r\n const value = item[key][nestedKey];\r\n return (\r\n <div key={index} style={{ display: 'flex', marginLeft: '-10px', marginTop: '5px' }}>\r\n <div style={{ borderRadius: '50%', backgroundColor: color, height: '20px', width: '20px', alignSelf: 'center', marginRight: '10px', marginTop: '-3.5px' }}> </div>\r\n {translate(`$__${key}`)}: {value}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )\r\n }\r\n return <></>\r\n })}\r\n </div>\r\n </React.Fragment>\r\n )} >\r\n <span style={{ width: '100%', height: \"100%\", margin: '0px', padding: '0px', position: 'absolute', left: '0px', top: '0px' }} />\r\n </HtmlTooltip >\r\n </div>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n )\r\n })\r\n }))\r\n\r\n if (result.length > 0 && mounted.current) {\r\n setRenderedData(result)\r\n setLoaded(true)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n };\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.data.length > 0 && mounted.current)\r\n loadTime(props, getHeader)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.data]);\r\n\r\n\r\n return (\r\n <div style={{ width: '100%', height: '100%' }} >\r\n <div>\r\n <GridContainer >\r\n <GridItem className=\"grid\" style={{ padding: '0px' }} xs={12}>\r\n {getHeader.length > 0 && <table style={tableStyle}>\r\n <thead>\r\n <tr>\r\n <th tyle={cellStyle}></th>\r\n {getHeader\r\n .map((item, index) => {\r\n return <th style={cellStyle} key={index}>{item.length < 3 ? translate(\"$__week\") + \" \" + (index + 1) : translate(`$__${item}`)}</th>\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {!loaded && props.data.map((item, index) => (\r\n <tr key={index}>\r\n <td style={{ ...cellStyle, display: 'flex' }}>\r\n <div style={{ width: '15px', height: '15px', backgroundColor: item.color, alignSelf: 'center', marginRight: '5px', borderRadius: '50%' }}></div>\r\n {item.label}\r\n </td>\r\n {getHeader.map((cellRef, monthIndex) => {\r\n return <td style={{ ...cellStyle, position: 'relative' }} key={monthIndex}>\r\n {item?.[cellRef] || 0}\r\n <HtmlTooltip\r\n title={(\r\n <React.Fragment>\r\n <div style={{ width: '200px', marginBottom: '20px', fontSize: '16px', marginTop: '20px' }}>\r\n\r\n </div>\r\n </React.Fragment>\r\n )} >\r\n <span style={{ width: '100%', height: \"100%\", margin: '0px', padding: '0px', position: 'absolute', left: '0px', top: '0px' }} />\r\n </HtmlTooltip>\r\n </td>\r\n })\r\n }\r\n </tr>\r\n ))}\r\n </tbody>\r\n <tbody>\r\n {loaded && renderedData}\r\n </tbody>\r\n </table>}\r\n </GridItem>\r\n </GridContainer >\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n timeline: store.timeline\r\n}\r\n)\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default React.memo(connect(mapStateToProps, mapDispatchToProps)(StatisticsModal));\r\n\r\n\r\n","import React, { useEffect, useState, useRef } from 'react'\r\n\r\n//COMPONENTS\r\nimport Legend from '../Legend';\r\nimport { ResponsiveBar } from '@nivo/bar'\r\nimport Header from 'components/Dashboards/Header'\r\nimport './Loader.css';\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from 'functions';\r\nimport Icon from 'components/Icon';\r\n\r\n\r\nconst Barchart = (props) => {\r\n\r\n const keysLabel = useRef([])\r\n const { db } = reduxStore.getState()\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [filter, setFilter] = useState({\r\n index: 0,\r\n showQuantity: 10,\r\n number: 10,\r\n finalIndex: 10\r\n })\r\n const [data, setData] = useState({})\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n useEffect(() => {\r\n if (Object.keys(props.filter).length > 0) {\r\n setFilter({ ...filter, ...props.filter })\r\n }\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...filter,\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.filter, props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let usersUsed = {}\r\n if (props.planCards && !props.load) {\r\n Object.keys(props.planCards).length > 0 && Object.keys(props.planCards).filter((fil) => !db.cards[fil].deleted).forEach(cardId => {\r\n Object.keys(db.cards[cardId]?._users).forEach(u => {\r\n let usersFilter = filter?.users?.length > 0 ? filter.users.includes(db.cards[cardId]?._users[u]._id) : true\r\n\r\n\r\n if (usersFilter) {\r\n if (!usersUsed[u]) {\r\n usersUsed = {\r\n ...usersUsed,\r\n [u]: {\r\n ...usersUsed[u],\r\n [db.cards[cardId].status]: 0,\r\n \"allTask\": 0,\r\n \"user\": db.cards[cardId]?._users[u].name.match(/\\b(\\w)/g).join(''),\r\n \"id\": u,\r\n \"image\": db.cards[cardId]?._users[u].image,\r\n \"name\": db.cards[cardId]?._users[u].name\r\n }\r\n }\r\n }\r\n\r\n if (db.cards[cardId]?._createdBy?._id && db.cards[cardId]._createdBy._id === u) {\r\n let lastDateCard =\r\n db.cards[cardId].completed_at?.low\r\n || db.cards[cardId].completed_at\r\n || db.cards[cardId].updated_at?.low\r\n || db.cards[cardId].updated_at\r\n || db.cards[cardId].created_at?.low\r\n || db.cards[cardId].created_at\r\n\r\n let dateCard = moment(lastDateCard * 1000).format(\"YYYYMMDD\");\r\n\r\n let startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000).format(\"YYYYMMDD\") :\r\n (filter.startDate ? moment(filter.startDate * 1000).format(\"YYYYMMDD\") : moment().subtract(1, 'month').format(\"YYYYMMDD\"));\r\n\r\n let endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000).format(\"YYYYMMDD\") :\r\n (filter.endDate ? moment(filter.endDate * 1000).format(\"YYYYMMDD\") : moment().format(\"YYYYMMDD\"))\r\n\r\n if (parseInt(dateCard) >= parseInt(startDate) && parseInt(dateCard) <= parseInt(endDate)) {\r\n if (db.cards[cardId].type !== 'step') {\r\n let newColor = db.status.filter(fil => fil.value === db.cards[cardId].status)[0].color\r\n if (filter?.colorsArr) {\r\n filter.colorsArr.forEach((item) => {\r\n if (item.label === db.cards[cardId].status) {\r\n newColor = item.color;\r\n }\r\n });\r\n }\r\n usersUsed = {\r\n ...usersUsed,\r\n [u]: {\r\n ...usersUsed[u],\r\n [db.cards[cardId].status]: usersUsed[u]?.[db.cards[cardId].status] ? usersUsed[u]?.[db.cards[cardId].status] + 1 : 1,\r\n \"allTask\": usersUsed[u]?.[\"allTask\"] ? usersUsed[u]?.[\"allTask\"] + 1 : 1,\r\n [db.cards[cardId].status + 'Color']: newColor\r\n }\r\n }\r\n const newLabel = {\r\n label: db.cards[cardId].status,\r\n color: newColor\r\n }\r\n if (!keysLabel.current.some(item => item.label === newLabel.label))\r\n keysLabel.current = [...keysLabel.current, newLabel]\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n })\r\n if (data !== usersUsed)\r\n setData(usersUsed)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.load, filter, props.filter, dashFilterChart]);\r\n\r\n const getNames = (userID) => {\r\n let name = \"\"\r\n Object.values(data).forEach((item) => {\r\n if (item.id === userID) {\r\n name = item?.name.match(/\\b(\\w)/g).join('')\r\n }\r\n })\r\n return name\r\n }\r\n let startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000).format(\"DD/MM/YYYY\") :\r\n (filter.startDate ? moment(filter.startDate * 1000).format(\"DD/MM/YYYY\") : moment().subtract(1, 'month').format(\"DD/MM/YYYY\"));\r\n\r\n let endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000).format(\"DD/MM/YYYY\") :\r\n (filter.endDate ? moment(filter.endDate * 1000).format(\"DD/MM/YYYY\") : moment().format(\"DD/MM/YYYY\"))\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'visible' }}>\r\n <Header\r\n handleSetSelected={(value) => {\r\n setFilter({ ...filter, ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n filterConfig={{ filterSelect: Object.keys(data).length > 0 && Object.values(data).length }}\r\n tittle={translate(\"$__\" + props.tittle)}\r\n icon={props.icon}\r\n styles={props.styles}\r\n indicators={filter && filter}\r\n datafilter={true}\r\n handleRemoveObject={() => props.handleRemoveObject(props.id)}\r\n edit={props.edit}\r\n handleSetoption={(value) => {\r\n setFilter({ ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{}} >\r\n </div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n {(!props.load && inViewport) && <div style={{ position: 'absolute', right: '2%', top: '2%', padding: '5px', display: 'flex', zIndex: '9', justifyContent: 'center', alignContent: 'center' }}>\r\n <div style={{ marginTop: '2px', marginRight: '4px' }}>\r\n {startDate + ' ~ '}\r\n {endDate + ' -- '}\r\n {filter.showQuantity < Object.keys(data).length ? filter.showQuantity + \"/\" : Object.keys(data).length + \"/\"}\r\n {Object.keys(data).length > 0 && <span>{Object.keys(data).length}</span>}\r\n </div>\r\n <Icon>person</Icon>\r\n </div>}\r\n {(filter.index !== 0) &&\r\n <Icon\r\n onClick={() =>\r\n setFilter(\r\n {\r\n ...filter,\r\n index: filter.index - 1,\r\n finalIndex: filter.finalIndex - 1\r\n })\r\n }\r\n style={\r\n {\r\n position: 'absolute',\r\n zIndex: '999',\r\n top: '48%',\r\n left: '10px'\r\n }}>\r\n arrow_back_ios\r\n </Icon>\r\n }\r\n {(Object.keys(data).length !== filter.index + filter.number && Object.keys(data).length > filter.showQuantity) && <Icon onClick={() => setFilter({ ...filter, index: filter.index + 1, finalIndex: filter.finalIndex + 1 })} style={{ position: 'absolute', zIndex: '999', top: '48%', right: '10px' }}>arrow_forward_ios</Icon>}\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter', backgroundColor: '#f5f5f5' }}>\r\n {(Object.keys(data).length > 0 && (!props.load && inViewport)) ?\r\n <div className='component' style={{ width: '100%', height: '100%' }}>\r\n <ResponsiveBar\r\n data={Object.values(data).sort(function (a, b) {\r\n if (a[\"allTask\"] > b[\"allTask\"]) {\r\n return -1;\r\n }\r\n if (a[\"allTask\"] < b[\"allTask\"]) {\r\n return 1;\r\n }\r\n return 0;\r\n }).slice(filter.index, filter.finalIndex)}\r\n keys={[\r\n 'inProgress',\r\n 'completed',\r\n 'notStarted',\r\n 'paused',\r\n 'awaitAction'\r\n ]} // data\r\n colors={({ id, data }) => data[`${id}Color`]}\r\n tooltip={point => {\r\n\r\n return <div style={{\r\n fontSize: '12px',\r\n width: '200px',\r\n marginBottom: '10px',\r\n zIndex: '99999'\r\n }}>\r\n <div style={{ display: 'flex', marginLeft: '5px', marginTop: '10px', textOverflow: 'ellipsis', overflow: 'hidden' }}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n width: '40px',\r\n height: '32px',\r\n backgroundImage: `url(\"${point.data.image}\")`,\r\n backgroundColro: \"lightgray\",\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'center center',\r\n borderRadius: '50%',\r\n alignSelf: 'center'\r\n }}\r\n ></div>\r\n <p style={{ margin: '0px', marginLeft: '12px', fontSize: '20px', alignSelf: 'center', width: '100%', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>{point.data.name}</p>\r\n </div>\r\n <div style={{ borderBottom: '1px solid #d1d1cf', marginTop: '10px' }}></div>\r\n <div style={{ width: \"100%\", fontSize: '18px', padding: '10px', marginBottom: '5px', marginTop: '4px' }}>\r\n {Object.entries(point.data).map(([key, val] = Object.entries(point.data)) => {\r\n if ([\r\n 'inProgress',\r\n 'completed',\r\n 'notStarted',\r\n 'paused',\r\n 'awaitAction'\r\n ].includes(key)) {\r\n let color = ''\r\n switch (key) {\r\n case 'inProgress': color = \"#011E41\"; break;\r\n case 'completed': color = \"#5A7F71\"; break;\r\n case 'notStarted': color = \"#929497\"; break;\r\n case 'paused': color = \"#EBA900\"; break;\r\n case 'awaitAction': color = \"pink\"; break;\r\n default: color = 'white'\r\n }\r\n if (filter.colorsArr)\r\n filter.colorsArr.forEach((item) => {\r\n if (item.label === key)\r\n color = item.color\r\n })\r\n return <div style={{ display: 'flex', marginBottom: '8px' }} key={key}>\r\n <div style={{ borderRadius: '50%', backgroundColor: color, height: '20px', width: '20px', alignSelf: 'center', marginRight: '10px' }}> </div>\r\n <div style={{ marginLeft: '14x' }}> {translate(\"$__\" + key)} : <span style={{ fontWeight: 'bolder' }}>{val}</span></div>\r\n </div>\r\n } else return null\r\n })}\r\n\r\n </div>\r\n </div>;\r\n }}\r\n indexBy={\"id\"} //data\r\n margin={{ top: 40, right: 20, bottom: 30, left: 40 }}\r\n padding={0.3}\r\n valueScale={{ type: 'linear' }}\r\n indexScale={{ type: 'band', round: false }}\r\n enableLabel={false}\r\n yScale={{\r\n max: 100,\r\n }}\r\n minValue={0}\r\n theme={{\r\n fontSize: '14px',\r\n color: 'white',\r\n background: '#f5f5f5',\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n fill: 'rgba(0, 0, 0, 0.50)',\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n }\r\n },\r\n }}\r\n\r\n fill={[\r\n {\r\n match: {\r\n id: 'fries'\r\n },\r\n id: 'dots'\r\n },\r\n {\r\n match: {\r\n id: 'sandwich'\r\n },\r\n id: 'lines'\r\n }\r\n ]}\r\n borderColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 1.6\r\n ]\r\n ]\r\n }}\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: 32,\r\n format: (v) => getNames(v),\r\n } : null}\r\n axisLeft={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: -40\r\n } : null}\r\n role=\"application\"\r\n /> </div> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={filter?.colorsArr}\r\n />\r\n </div>\r\n </div >\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Barchart\r\n","import React, { useEffect, useState, useRef } from 'react'\r\n\r\n//COMPONENTS\r\nimport Legend from '../Legend';\r\nimport { ResponsiveBar } from '@nivo/bar'\r\nimport Header from 'components/Dashboards/Header'\r\nimport './Loader.css';\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from 'functions';\r\nimport Icon from 'components/Icon';\r\n\r\n\r\nconst Barchart = (props) => {\r\n const keysLabel = useRef([])\r\n const { db } = reduxStore.getState()\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [filter, setFilter] = useState({\r\n index: 0,\r\n showQuantity: 10,\r\n number: 10,\r\n finalIndex: 10\r\n })\r\n const [data, setData] = useState({})\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n\r\n useEffect(() => {\r\n if (Object.keys(props.filter).length > 0) {\r\n setFilter({ ...filter, ...props.filter })\r\n }\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...filter,\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.filter, props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let usersUsed = {}\r\n if (props.planCards && !props.load) {\r\n Object.keys(props.planCards).length > 0 && Object.keys(props.planCards).filter((fil) => !db.cards[fil].deleted).forEach(cardId => {\r\n\r\n Object.keys(db.cards[cardId]?._users).forEach(u => {\r\n let usersFilter = filter?.users?.length > 0 ? filter.users.includes(db.cards[cardId]?._users[u]._id) : true\r\n\r\n\r\n if (usersFilter) {\r\n if (!usersUsed[u]) {\r\n usersUsed = {\r\n ...usersUsed,\r\n [u]: {\r\n ...usersUsed[u],\r\n [db.cards[cardId].status]: 0,\r\n \"allTask\": 0,\r\n \"user\": db.cards[cardId]?._users[u].name.match(/\\b(\\w)/g).join(''),\r\n \"id\": u,\r\n \"image\": db.cards[cardId]?._users[u].image,\r\n \"name\": db.cards[cardId]?._users[u].name\r\n }\r\n }\r\n }\r\n\r\n\r\n if (db.cards[cardId]?._users[u].isResponsible) {\r\n let lastDateCard =\r\n db.cards[cardId].completed_at?.low\r\n || db.cards[cardId].completed_at\r\n || db.cards[cardId].updated_at?.low\r\n || db.cards[cardId].updated_at\r\n || db.cards[cardId].created_at?.low\r\n || db.cards[cardId].created_at\r\n\r\n let dateCard = moment(lastDateCard * 1000).format(\"YYYYMMDD\");\r\n let startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000).format(\"YYYYMMDD\") :\r\n (filter.startDate ? moment(filter.startDate * 1000).format(\"YYYYMMDD\") : moment().subtract(1, 'month').format(\"YYYYMMDD\"));\r\n\r\n let endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000).format(\"YYYYMMDD\") :\r\n (filter.endDate ? moment(filter.endDate * 1000).format(\"YYYYMMDD\") : moment().format(\"YYYYMMDD\"))\r\n\r\n if (parseInt(dateCard) >= parseInt(startDate) && parseInt(dateCard) <= parseInt(endDate)) {\r\n if (db.cards[cardId].type !== 'step') {\r\n let newColor = db.status.filter(fil => fil.value === db.cards[cardId].status)[0].color\r\n if (filter?.colorsArr) {\r\n filter.colorsArr.forEach((item) => {\r\n if (item.label === db.cards[cardId].status) {\r\n newColor = item.color;\r\n }\r\n });\r\n }\r\n usersUsed = {\r\n ...usersUsed,\r\n [u]: {\r\n ...usersUsed[u],\r\n [db.cards[cardId].status]: usersUsed[u]?.[db.cards[cardId].status] ? usersUsed[u]?.[db.cards[cardId].status] + 1 : 1,\r\n \"allTask\": usersUsed[u]?.[\"allTask\"] ? usersUsed[u]?.[\"allTask\"] + 1 : 1,\r\n [db.cards[cardId].status + 'Color']: newColor\r\n }\r\n }\r\n const newLabel = {\r\n label: db.cards[cardId].status,\r\n color: newColor\r\n }\r\n if (!keysLabel.current.some(item => item.label === newLabel.label))\r\n keysLabel.current = [...keysLabel.current, newLabel]\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n })\r\n if (data !== usersUsed)\r\n setData(usersUsed)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.load, filter, dashFilterChart]);\r\n\r\n const getNames = (userID) => {\r\n let name = \"\"\r\n Object.values(data).forEach((item) => {\r\n if (item.id === userID) {\r\n name = item?.name.match(/\\b(\\w)/g).join('')\r\n }\r\n })\r\n return name\r\n }\r\n\r\n let startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000).format(\"DD/MM/YYYY\") :\r\n (filter.startDate ? moment(filter.startDate * 1000).format(\"DD/MM/YYYY\") : moment().subtract(1, 'month').format(\"DD/MM/YYYY\"));\r\n\r\n let endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000).format(\"DD/MM/YYYY\") :\r\n (filter.endDate ? moment(filter.endDate * 1000).format(\"DD/MM/YYYY\") : moment().format(\"DD/MM/YYYY\"))\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'visible' }}>\r\n <Header\r\n handleSetSelected={(value) => {\r\n setFilter({ ...filter, ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n filterConfig={{ filterSelect: Object.keys(data).length > 0 && Object.values(data).length }}\r\n tittle={translate(\"$__\" + props.tittle)}\r\n icon={props.icon}\r\n styles={props.styles}\r\n indicators={filter && filter}\r\n datafilter={true}\r\n handleRemoveObject={() => props.handleRemoveObject(props.id)}\r\n edit={props.edit}\r\n handleSetoption={(value) => {\r\n setFilter({ ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{}} >\r\n </div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n {(!props.load && inViewport) && <div style={{ position: 'absolute', right: '2%', top: '2%', padding: '5px', display: 'flex', zIndex: '9', justifyContent: 'center', alignContent: 'center' }}>\r\n <div style={{ marginTop: '2px', marginRight: '4px' }}>\r\n {startDate + ' ~ '}\r\n {endDate + ' -- '}\r\n {filter.showQuantity < Object.keys(data).length ? filter.showQuantity + \"/\" : Object.keys(data).length + \"/\"}\r\n {Object.keys(data).length > 0 && <span>{Object.keys(data).length}</span>}\r\n </div>\r\n <Icon>person</Icon>\r\n </div>}\r\n {(filter.index !== 0) &&\r\n <Icon\r\n onClick={() =>\r\n setFilter(\r\n {\r\n ...filter,\r\n index: filter.index - 1,\r\n finalIndex: filter.finalIndex - 1\r\n })\r\n }\r\n style={\r\n {\r\n position: 'absolute',\r\n zIndex: '999',\r\n top: '48%',\r\n left: '10px'\r\n }}>\r\n arrow_back_ios\r\n </Icon>\r\n }\r\n {(Object.keys(data).length !== filter.index + filter.number && Object.keys(data).length > filter.showQuantity) && <Icon onClick={() => setFilter({ ...filter, index: filter.index + 1, finalIndex: filter.finalIndex + 1 })} style={{ position: 'absolute', zIndex: '999', top: '48%', right: '10px' }}>arrow_forward_ios</Icon>}\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter', backgroundColor: '#f5f5f5' }}>\r\n {(Object.keys(data).length > 0 && (!props.load && inViewport)) ?\r\n <div className='component' style={{ width: '100%', height: '100%' }}>\r\n <ResponsiveBar\r\n data={Object.values(data).sort(function (a, b) {\r\n if (a[\"allTask\"] > b[\"allTask\"]) {\r\n return -1;\r\n }\r\n if (a[\"allTask\"] < b[\"allTask\"]) {\r\n return 1;\r\n }\r\n return 0;\r\n }).slice(filter.index, filter.finalIndex)}\r\n keys={[\r\n 'inProgress',\r\n 'completed',\r\n 'notStarted',\r\n 'paused',\r\n 'awaitAction'\r\n ]} // data\r\n colors={({ id, data }) => data[`${id}Color`]}\r\n tooltip={point => {\r\n\r\n return <div style={{\r\n fontSize: '12px',\r\n width: '200px',\r\n marginBottom: '10px',\r\n zIndex: '99999'\r\n }}>\r\n <div style={{ display: 'flex', marginLeft: '5px', marginTop: '10px', textOverflow: 'ellipsis', overflow: 'hidden' }}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n width: '40px',\r\n height: '32px',\r\n backgroundImage: `url(\"${point.data.image}\")`,\r\n backgroundColro: \"lightgray\",\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'center center',\r\n borderRadius: '50%',\r\n alignSelf: 'center'\r\n }}\r\n ></div>\r\n <p style={{ margin: '0px', marginLeft: '12px', fontSize: '20px', alignSelf: 'center', width: '100%', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>{point.data.name}</p>\r\n </div>\r\n <div style={{ borderBottom: '1px solid #d1d1cf', marginTop: '10px' }}></div>\r\n <div style={{ width: \"100%\", fontSize: '18px', padding: '10px', marginBottom: '5px', marginTop: '4px' }}>\r\n {Object.entries(point.data).map(([key, val] = Object.entries(point.data)) => {\r\n if ([\r\n 'inProgress',\r\n 'completed',\r\n 'notStarted',\r\n 'paused',\r\n 'awaitAction'\r\n ].includes(key)) {\r\n let color = ''\r\n switch (key) {\r\n case 'inProgress': color = \"#011E41\"; break;\r\n case 'completed': color = \"#5A7F71\"; break;\r\n case 'notStarted': color = \"#929497\"; break;\r\n case 'paused': color = \"#EBA900\"; break;\r\n case 'awaitAction': color = \"pink\"; break;\r\n default: color = 'white'\r\n }\r\n if (filter.colorsArr)\r\n filter.colorsArr.forEach((item) => {\r\n if (item.label === key)\r\n color = item.color\r\n })\r\n return <div style={{ display: 'flex', marginBottom: '8px' }} key={key}>\r\n <div style={{ borderRadius: '50%', backgroundColor: color, height: '20px', width: '20px', alignSelf: 'center', marginRight: '10px' }}> </div>\r\n <div style={{ marginLeft: '14x' }}> {translate(\"$__\" + key)} : <span style={{ fontWeight: 'bolder' }}>{val}</span></div>\r\n </div>\r\n } else return null\r\n })}\r\n\r\n </div>\r\n </div>;\r\n }}\r\n indexBy={\"id\"} //data\r\n margin={{ top: 40, right: 20, bottom: 30, left: 40 }}\r\n padding={0.3}\r\n valueScale={{ type: 'linear' }}\r\n indexScale={{ type: 'band', round: false }}\r\n enableLabel={false}\r\n yScale={{\r\n max: 100,\r\n }}\r\n minValue={0}\r\n theme={{\r\n fontSize: '14px',\r\n color: 'white',\r\n background: '#f5f5f5',\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n fill: 'rgba(0, 0, 0, 0.50)',\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n }\r\n },\r\n }}\r\n\r\n fill={[\r\n {\r\n match: {\r\n id: 'fries'\r\n },\r\n id: 'dots'\r\n },\r\n {\r\n match: {\r\n id: 'sandwich'\r\n },\r\n id: 'lines'\r\n }\r\n ]}\r\n borderColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 1.6\r\n ]\r\n ]\r\n }}\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: 32,\r\n format: (v) => getNames(v),\r\n } : null}\r\n axisLeft={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: -40\r\n } : null}\r\n role=\"application\"\r\n /> </div> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={filter?.colorsArr}\r\n />\r\n </div>\r\n </div >\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Barchart\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\r\n//COMPONENTS\r\nimport Header from 'components/Dashboards/Header'\r\nimport Legend from '../Legend';\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport \"./Loader.css\"\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck';\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n\r\nconst ObjetiveDough = (props) => {\r\n\r\n const { tittle, preview, icon } = props\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n const [data, setData] = useState([])\r\n const keysLabel = useRef([])\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let newData = [\r\n ...db.status.map((st) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type === 'objective'\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status !== 'completed'\r\n && db.cards[fil].type === 'objective'\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length,\r\n color: 'red'\r\n }\r\n ]\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n\r\n setData(newData)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.filter, dashFilterChart]);\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div className='box' style={{ width: '100%', height: '100%', overflow: 'hidden', alignSelf: 'center', backgroundColor: 'white', borderRadius: '5px', display: 'flex', flexFlow: 'column' }}>\r\n <Header styles={props.styles} tittle={translate(`$__${tittle}`)} icon={icon} edit={props.edit} id={props.id} handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', backgroundColor: '#f5f5f5' }}>\r\n <div className='componentCircle' style={{ width: '100%', height: '100%', position: 'absolute', }}>\r\n {(!props.load && inViewport) ? <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 20, right: 20, bottom: 20, left: 20 }}\r\n innerRadius={0}\r\n padAngle={1.7}\r\n cornerRadius={3}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n theme={{\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent'\r\n }}\r\n arcLinkLabelsStraightLength={0}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n arcLinkLabelsSkipAngle={10}\r\n arcLinkLabelsTextColor=\"#333333\"\r\n arcLinkLabelsThickness={0}\r\n arcLinkLabelsColor={{ from: 'color' }}\r\n arcLabelsSkipAngle={10}\r\n arcLabelsTextColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'brighter',\r\n 3\r\n ]\r\n ]\r\n }}\r\n /> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n {!preview &&\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={props.filter.colorsArr}\r\n />\r\n </div>\r\n }\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ObjetiveDough;\r\n","import React from \"react\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport moment from \"moment-timezone\"\r\n\r\n//COMPONENTS\r\nimport TextField from \"components/TextField\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\n\r\n\r\n//@MATERIAL\r\nimport { withStyles } from \"@material-ui/core/styles\";\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//FUNCTIONS\r\nimport { translate, customApp, appAlert, formatNumber } from \"functions/\";\r\nimport { kpiTimerDelete } from \"functions/cards\";\r\nimport { timelineComment } from \"functions/chat\"\r\n\r\nimport api from \"api\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/KPI_change\";\r\n\r\nimport \"assets/css/components/chart.css\";\r\nrequire(\"chartist-plugin-tooltips\");\r\n\r\nconst Component = (props) => {\r\n const { classes } = props\r\n const { session, db } = reduxStore.getState()\r\n const [description, setDescription] = React.useState('')\r\n const [value, setValue] = React.useState(0)\r\n\r\n const timer = props.timer || {}\r\n const data = props.data || {}\r\n\r\n const changeKPI = async (d, b) => {\r\n let newValue = String(value)\r\n if (d.key.toLowerCase() === 'backspace') {\r\n newValue = newValue.substr(0, newValue.length - 1)\r\n } else {\r\n newValue = `${newValue ? newValue : ``}${!isNaN(d.key) || ((d.key === ',' || d.key === '.') && newValue.indexOf(',') === -1 && newValue.indexOf('.') === -1) ? d.key : ``}`\r\n }\r\n if (newValue && newValue.indexOf(',') > -1)\r\n newValue = newValue.substr(0, newValue.indexOf(',') + 3)\r\n\r\n setValue(newValue)\r\n }\r\n\r\n if (!data)\r\n return (null)\r\n\r\n const cancel = () => {\r\n if (props.callBack)\r\n props.callBack()\r\n }\r\n const save = async () => {\r\n if (!props.timer && !description) {\r\n appAlert({\r\n message: translate('$__fillDescription', 1),\r\n variant: 'warning',\r\n persist: false,\r\n horizontal: 'center',\r\n })\r\n } else {\r\n let newValue = isNaN(value) ? value.replace(',', '.') : value\r\n\r\n let dataSave = {\r\n _id: uuid(),\r\n cardId: data._id,\r\n idRel: data._id,\r\n value: !props.PositiveValue ? `-${newValue}` : newValue,\r\n type: 'kpi',\r\n ...props.manualEntry ? { manualEntry: true } : {},\r\n kpi_type: data.kpi_type ? data.kpi_type : null,\r\n message: description || ''\r\n }\r\n if (props.timer)\r\n dataSave = {\r\n ...dataSave,\r\n value: timer.diff,\r\n ini: timer.created_at,\r\n fin: timer.updated_at,\r\n type: 'timer',\r\n kpi_type: 'timer',\r\n to: timer.to\r\n }\r\n\r\n let comment = {\r\n ...dataSave,\r\n created_at: `${moment().unix('x')}`,\r\n db: \"cards\",\r\n node: data._id,\r\n user: {\r\n _id: session._id,\r\n name: db.users[session._id].name,\r\n image: db.users[session._id].image || null,\r\n },\r\n }\r\n\r\n timelineComment({\r\n reduxFunction: props.reduxFunction\r\n }, {\r\n ...dataSave,\r\n comment\r\n })\r\n\r\n api.post(\"timeline/add\", {\r\n ...dataSave\r\n })\r\n\r\n\r\n\r\n if (props.callBack)\r\n props.callBack()\r\n if (props.timer && !props.manualAdd)\r\n kpiTimerDelete(props, data._id, timer._id)\r\n\r\n setValue(0)\r\n setDescription('')\r\n }\r\n }\r\n\r\n if (!props.data)\r\n return (<div>NO DATA RECEIVED</div>)\r\n\r\n return (\r\n <div className={classes.dataSave}>\r\n <fieldset>\r\n <legend\r\n style={{ color: customApp('color') }}>\r\n {translate('$__new', 1)}\r\n </legend>\r\n {!props.timer &&\r\n <TextField\r\n placeholder={translate('$__value', 1)}\r\n value={formatNumber(value ? value : 0, data.kpi_type === 'time' ? 'number' : data.kpi_type, data.kpi_currency ? data.kpi_currency : null)}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n onKeyDown: (d) => {\r\n changeKPI(d, 'ini')\r\n },\r\n }}\r\n />\r\n }\r\n <TextField\r\n multiline\r\n placeholder={translate('$__description', 1)}\r\n onChange={(e) => setDescription(e.target.value)}\r\n value={description}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n }}\r\n />\r\n <div style={{ display: 'flex', textAlign: 'right' }}>\r\n <CustomButton\r\n title={translate(`$__save`, 1)}\r\n color='green'\r\n icon={'save'}\r\n onClick={() => save()}\r\n size={'25px'}\r\n transparent\r\n />\r\n {(!props.timer || props.manualAdd) &&\r\n <CustomButton\r\n title={translate(`$__cancel`, 1)}\r\n color='lightgrey'\r\n icon={'cancel'}\r\n onClick={() => cancel()}\r\n size={'25px'}\r\n transparent\r\n />\r\n }\r\n </div>\r\n </fieldset>\r\n </div>\r\n );\r\n}\r\n//REACT\r\nconst mapStateToProps = (store) => ({});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Component));","//REDUX\r\nimport reduxStore from \"store/\";\r\nrequire('dotenv').config()\r\n\r\nexport const countUnReadsMessages = (id, type = \"comment\") => {\r\n const { session, timeline } = reduxStore.getState();\r\n\r\n // Retorna 0 se o timeline ou o id não forem válidos\r\n if (!timeline || !timeline[id]) {\r\n return 0;\r\n }\r\n\r\n // Filtra as mensagens não lidas\r\n const unreadMessages = Object.keys(timeline[id]).filter((messageId) => {\r\n const message = timeline[id][messageId];\r\n\r\n // Verifica se a mensagem é válida\r\n const isValidMessage =\r\n message &&\r\n message.type === type &&\r\n !message.deleted &&\r\n message.user &&\r\n message.user._id &&\r\n message.user._id !== session._id;\r\n\r\n // Verifica se a mensagem não foi lida pelo usuário atual\r\n const isUnread =\r\n !message.readedBy || !message.readedBy[session._id];\r\n\r\n return isValidMessage && isUnread;\r\n });\r\n\r\n return unreadMessages.length;\r\n};\r\n","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst style = {\r\n root: {\r\n ...defaultFont,\r\n },\r\n aspectsTitle: {\r\n width: '100%',\r\n fontWeight: 'bold',\r\n padding: '3px',\r\n color: customApp('color'),\r\n display: 'flex',\r\n alignItems: 'center'\r\n }\r\n};\r\n\r\nexport default style;\r\n","import React from \"react\";\r\n\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport reduxStore from \"store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Card-SWOT\";\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nfunction Component(props) {\r\n const { db } = reduxStore.getState()\r\n const classes = useStyles();\r\n const [aspects, setAspects] = React.useState([])\r\n\r\n React.useEffect(() => {\r\n let newAspects = []\r\n if (props.data && props.data.length > 0)\r\n props.data.forEach(a => {\r\n newAspects.push(db.cards[a])\r\n })\r\n setAspects(newAspects)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.data])\r\n\r\n let internal = props.type === 'guidelineD' || props.type === 'guidelineR' ? aspects.filter(a => a && a.type === 'strength') : aspects.filter(a => a && a.type === 'weakness')\r\n let external = props.type === 'guidelineD' || props.type === 'guidelineE' ? aspects.filter(a => a && a.type === 'threat') : aspects.filter(a => a && a.type === 'opportunity')\r\n let internalType = props.type === 'guidelineD' || props.type === 'guidelineR' ? 'strength' : 'weakness'\r\n let externalType = props.type === 'guidelineD' || props.type === 'guidelineE' ? 'threat' : 'opportunity'\r\n let internalTypeMult = props.type === 'guidelineD' || props.type === 'guidelineR' ? 'forces' : 'weaknesses'\r\n let externalTypeMult = props.type === 'guidelineD' || props.type === 'guidelineE' ? 'threats' : 'opportunities'\r\n\r\n return (\r\n <div className={classes.root} >\r\n <div className={classes.aspectsTitle}>\r\n <Icon\r\n icon={props.type === 'guidelineD' || props.type === 'guidelineR' ?\r\n db.dataType.filter(a => a.name === 'strength')[0].icon\r\n : db.dataType.filter(a => a.name === 'weakness')[0].icon\r\n }\r\n color={customApp('color')}\r\n title={translate(internalType, 1)}\r\n />\r\n <span style={{ marginLeft: '5px' }}>{translate('$__internalAspects', 1)} - {translate(`$__${internalTypeMult}`, 1)}</span>\r\n </div>\r\n {internal && internal.length > 0 && internal.sort((a, b) => a.name - b.name).map((a, i) => (\r\n <Chip\r\n size=\"small\"\r\n label={a.name}\r\n title={a.name}\r\n style={{ margin: '3px', maxWidth: '100%', overflow: 'hidden' }}\r\n key={a._id} />\r\n )\r\n )\r\n }\r\n\r\n\r\n <div className={classes.aspectsTitle}>\r\n <Icon\r\n icon={props.type === 'guidelineD' || props.type === 'guidelineE' ?\r\n db.dataType.filter(a => a.name === 'threat')[0].icon\r\n : db.dataType.filter(a => a.name === 'opportunity')[0].icon\r\n }\r\n color={customApp('color')}\r\n title={translate(externalType, 1)}\r\n />\r\n <span style={{ marginLeft: '5px' }}>{translate('$__externalAspects', 1)} - {translate(`$__${externalTypeMult}`, 1)}</span>\r\n </div>\r\n {external && external.length > 0 && external.sort((a, b) => a.name - b.name).map((a, i) => (\r\n <Chip size=\"small\"\r\n label={a.name}\r\n title={a.name}\r\n style={{ margin: '3px', maxWidth: '100%', overflow: 'hidden' }}\r\n key={a._id} />\r\n ))\r\n }\r\n </div >\r\n );\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(null,\r\n mapDispatchToProps\r\n)(Component);\r\n","import React from \"react\"\r\nimport moment from \"moment-timezone\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport reduxStore from \"store\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//COMPONENTS\r\nimport Badge from \"components/Icon/Badge\"\r\nimport Checklist from \"components/Checklist\"\r\nimport ConnectedIn from \"components/ConnectedIn\"\r\nimport Icon from \"components/Icon\"\r\nimport KPIChange from \"components/KPI/change\"\r\nimport LinearProgress from \"components/Progress/linear\"\r\n\r\n//DEPENDENCIES\r\nimport SWOT from \"./SWOT\"\r\n\r\n//@MATERIAL\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport { withStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Card.js\"\r\n\r\n//IMAGES\r\nimport defaultAvatar from \"assets/img/fundo-sonne.png\"\r\nimport MachenIco from \"assets/icons/machen.svg\"\r\nimport BrightAndConnectedIco from \"assets/icons/BrigthAndConnected\"\r\n\r\n//FUNCTIONS\r\nimport PreLoader from \"components/PreLoader\"\r\n\r\nimport {\r\n translate,\r\n customApp,\r\n nl2br\r\n} from \"functions/\"\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData.js\"\r\nimport {\r\n loadTimeline\r\n} from \"functions/chat\"\r\n\r\n\r\nfunction ExpandedCard(props) {\r\n const { classes, anonymousMode } = props\r\n const { db, session } = reduxStore.getState()\r\n const [ImagePreview, setImagePreview] = React.useState(null)\r\n const [stopLoading, setStopLoading] = React.useState(true)\r\n const [loadingData, setLoadingData] = React.useState(false)\r\n\r\n const mounted = React.useRef(true)\r\n const cardRef = React.createRef()\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n let data = reduxStore.getState().db.cards[props.cardId || props.data._id] || {}\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n React.useEffect(() => {\r\n if (mounted.current) {\r\n if (data._parent && (!hashs[0] || (hashs[0] && hashs[0].length !== 36))) {\r\n init()\r\n } else {\r\n setLoadingData(false)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const init = async () => {\r\n if (\r\n (\r\n !data._loadTimeline\r\n ||\r\n (\r\n data._loadTimeline\r\n && !data._loadTimeline['kpi']\r\n )\r\n )\r\n && data.kpi_type && data.kpiType !== 'task' && data.kpiType !== 'timer' && data.kpiType !== 'time')\r\n loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Card/index/init()\"\r\n },\r\n {\r\n ids: [data._id],\r\n db: 'cards',\r\n type: 'kpi'\r\n }\r\n )\r\n\r\n const reqParents = async (parent) => {\r\n if (!db.cards[parent]) {\r\n if (mounted.current)\r\n setLoadingData(true)\r\n let response = await loadCardsV2({ ...props, ignoreLoader: true }, {\r\n idRel: [parent],\r\n cardLoad: \"parents\"\r\n })\r\n if (response && mounted.current)\r\n setLoadingData(false)\r\n } else if (db.cards[parent] && db.cards[parent]._parent) {\r\n let response = reqParents(db.cards[parent]._parent)\r\n if (response && mounted.current)\r\n setLoadingData(false)\r\n } else {\r\n setLoadingData(false)\r\n }\r\n }\r\n\r\n const reqFullData = async () => {\r\n reqParents(data._parent)\r\n }\r\n reqFullData()\r\n if (props.onResize)\r\n props.onResize()\r\n }\r\n\r\n if (loadingData)\r\n return <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: \"100%\" }}>\r\n <span style={{ color: customApp('menu'), fontSize: \"12px\", paddingRight: \"15px\", whiteSpace: \"nowrap\" }}>{translate('$__loadingData')}</span>\r\n <LinearProgress />\r\n </div>\r\n\r\n if (!data && !data._id)\r\n return null\r\n\r\n\r\n let hasYoutube = false\r\n let youtube = (<React.Fragment></React.Fragment>)\r\n if (data && data.url && (\r\n data.url.indexOf(\".youtube.com/watch?\") > -1\r\n || data.url.indexOf(\"youtu.be\") > -1\r\n )) {\r\n let ybQuery = data.url.indexOf(\".youtube.com/watch?\") > -1 ? data.url.split(\"?\")[1].split(\"v=\")[1].split(\"&\")[0] : data.url.split(\".be/\")[1]\r\n if (ybQuery) {\r\n youtube = (\r\n <iframe\r\n width=\"560\"\r\n height=\"315\"\r\n style={{\r\n top: 0,\r\n width: \"100%\",\r\n maxWidth: \"500px\",\r\n height: \"100%\",\r\n alignSelf: \"center\",\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n }}\r\n src={`https://www.youtube.com/embed/${ybQuery}`}\r\n title=\"YouTube video player\"\r\n frameBorder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n allowFullScreen >\r\n\r\n </iframe >\r\n )\r\n hasYoutube = true\r\n }\r\n }\r\n if (data && data.url && (\r\n data.url.indexOf(\"https://vimeo.com\") > -1\r\n )) {\r\n let vmQuery = data.url.replace(\"https://\", \"\").split(\"/\")[1]\r\n if (vmQuery) {\r\n youtube = (\r\n <iframe\r\n width=\"560\"\r\n height=\"315\"\r\n style={{\r\n top: 0,\r\n width: \"100%\",\r\n maxWidth: \"500px\",\r\n height: \"100%\",\r\n alignSelf: \"center\",\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n }}\r\n src={`https://player.vimeo.com/video/${vmQuery}`}\r\n title=\"Vimeo video player\"\r\n frameBorder=\"0\"\r\n allow=\"autoplay; fullscreen; picture-in-picture\"\r\n allowfullscreen\r\n >\r\n\r\n </iframe >\r\n )\r\n hasYoutube = true\r\n }\r\n }\r\n\r\n return (\r\n <div ref={cardRef}>\r\n <div>\r\n <div {...props.provided && props.provided.dragHandleProps} style={{ display: \"none\" }}></div>\r\n <React.Fragment>\r\n <div className={classes.infos}\r\n onClick={(e) => {\r\n if (props.onClick) {\r\n props.onClick()\r\n }\r\n }\r\n }\r\n >\r\n <div style={{ position: \"relative\", display: \"flex\" }}>\r\n {\r\n (hasYoutube || (data.image && (((data.image || props.Avatar)) || ((data.image || props.Avatar))) && !session.cards.hide.image)) ?\r\n <div\r\n className={classes.imagePreview}\r\n style={ImagePreview ? {\r\n backgroundImage: `url(\"${!ImagePreview ? defaultAvatar : ImagePreview}\")`,\r\n } : {\r\n background: customApp('AvatarBackground'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n {hasYoutube ?\r\n youtube\r\n :\r\n data.image && !ImagePreview ?\r\n <React.Fragment>\r\n <div style={{ marginTop: `calc(-48% - ${(data.type === 'insight' || data.type === 'link') ? `10px` : `0px`})`, display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\r\n {(data.type === 'insight' || data.type === 'link') ?\r\n <Icon icon={BrightAndConnectedIco} size=\"39px\" color=\"rgba(250,250,250,0.77)\" />\r\n :\r\n <img alt=\"MACHEN_IMAGE\" src={MachenIco} style={{ width: '25%' }} />\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n {!stopLoading &&\r\n <div\r\n style={{ position: 'absolute', marginTop: \"calc(-48% + 0px)\", zIndex: 1 }}>\r\n <PreLoader />\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n </React.Fragment>\r\n :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {!hasYoutube && (!ImagePreview || props.Avatar || data.image !== ImagePreview) &&\r\n <React.Fragment>\r\n <img\r\n alt=\"MACHEN_IMAGE\"\r\n className={classes.image}\r\n src={`${data.image ? data.image : defaultAvatar}`}\r\n onError={(e) => {\r\n if (data.image) {\r\n setImagePreview(null)\r\n } else {\r\n setStopLoading(true)\r\n }\r\n }}\r\n onLoad={(e) => {\r\n setImagePreview(`${(props.Avatar && !data.image) ? defaultAvatar : data.image}`)\r\n }}\r\n width=\"100%\" />\r\n </React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n : props.Avatar && !session.cards.hide.image &&\r\n <div\r\n className={db.viewList ? classes.imagePreviewList : classes.imagePreview}\r\n style={{\r\n background: customApp('AvatarBackground'),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}>\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n }}>\r\n {(data.type === 'insight' || data.type === 'link') ?\r\n <Icon icon={BrightAndConnectedIco} size=\"39px\" color=\"rgba(250,250,250,0.77)\" />\r\n :\r\n <img alt=\"MACHEN_IMAGE\" src={MachenIco} style={{ width: '25%' }} />\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n {data.image ?\r\n <div style={{ position: \"absolute\", bottom: 0, right: 0, padding: \"2px 7px\", backgroundColor: \"rgba(0,0,0,0.7)\", color: \"#FFFFFF\", borderRadius: \"10px 0px 0px 0px\", fontSize: 10 }}># {data._cardCode}</div>\r\n : <></>}\r\n {\r\n (\r\n (\r\n Object.keys(reduxStore.getState().db.cards).filter(fil => reduxStore.getState().db.cards[fil]\r\n && reduxStore.getState().db.cards[fil].type === \"step\"\r\n && reduxStore.getState().db.cards[fil]._parent === data._id\r\n ).length > 0\r\n\r\n )\r\n )\r\n &&\r\n <div style={{\r\n position: \"absolute\",\r\n bottom: 0,\r\n left: 0,\r\n padding: \"2px 7px\",\r\n backgroundColor: \"rgba(0,0,0,0.7)\",\r\n color: \"#FFFFFF\",\r\n borderRadius: \"0px 10px 0px 0px\",\r\n fontSize: 10,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n // zIndex: 1\r\n }}\r\n onClick={(e) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CONTROL\", {\r\n ...reduxStore.getState().control,\r\n board: data._id,\r\n })\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }}\r\n ><Icon\r\n size={\"10px\"}\r\n color={\"#FFFFFF\"}\r\n icon={\"open_in_new\"}\r\n />{translate(\"$__openTaskList\")}</div>\r\n }\r\n </div>\r\n {(\r\n db.dataType.filter(c => c.name === data.type)[0].module !== 'swot'\r\n &&\r\n (\r\n (\r\n data._parent\r\n && data._parent !== data._id\r\n )\r\n ||\r\n (\r\n data._planId\r\n && data._planId !== data._id\r\n )\r\n )\r\n ) &&\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: 'flex',\r\n paddingTop: '7px'\r\n }}>\r\n {db.cards[data._parent] ?\r\n <ConnectedIn\r\n id={data._parent && reduxStore.getState().db.cards[data._parent] ? data._parent : data._planId && reduxStore.getState().db.cards[data._planId] ? data._planId : null}\r\n loading={loadingData}\r\n showLegend={props.Resume ? false : true}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n }\r\n <div style={!db.viewList || props.ignoreList ? {} : {\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%'\r\n }}>\r\n {\r\n (data.type.indexOf(\"guideline\") > -1 && ((data._aspects && data._aspects.length > 0) || (data._aspects && data._aspects.length > 0))) ?\r\n <SWOT data={data._aspects} type={data.type} />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {!props.searchText && (data.description || data.type === \"plan\") ?\r\n <Tooltip\r\n title={data.description || \"\"}\r\n >\r\n {props.Resume ?\r\n <div className={classes.description}\r\n style={{\r\n display: '-webkit-box',\r\n WebkitBoxOrient: 'vertical',\r\n WebkitLineClamp: 2,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n height: 90,\r\n ...!data.description ? { color: \"lightgray\" } : {}\r\n }}\r\n >{data.description ? `${data.description}` : (data.type === \"plan\") ? translate(\"$__planDescriptionCardPlaceholder\") : <></>}</div>\r\n :\r\n <div className={classes.description} style={{\r\n wordBreak: 'break-word',\r\n height: 90,\r\n display: '-webkit-box',\r\n WebkitBoxOrient: 'vertical',\r\n WebkitLineClamp: 2,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n }} dangerouslySetInnerHTML={{\r\n __html: data.description ? nl2br(data.description) : ``\r\n }} />\r\n }\r\n </Tooltip> : <></>\r\n }\r\n {(data.kpi_type && !session.cards.hide.kpi) &&\r\n <KPIChange data={data} chartShow={!session.cards.hide.kpiChart ? true : false} onResize={() => {\r\n // if (props.onResize) props.onResize()\r\n }} />\r\n }\r\n {(data.type === \"link\" || data.type === \"insight\") &&\r\n <div className={classes.dates}>\r\n <div className={classes.dateInfo}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n className={classes.dateIco} icon=\"event_available\" title={\"$__pubDate\"} size=\"14px\" disabled />\r\n {moment(data.created_at * 1000).tz(\"America/Sao_Paulo\").format(\"DD/MM/YYYY HH:mm\")}\r\n </div>\r\n </div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n <div style={{ clear: \"both\" }}></div>\r\n </div>\r\n </React.Fragment>\r\n {\r\n (\r\n (data.type !== 'plan'\r\n &&\r\n (\r\n\r\n Object.keys(reduxStore.getState().db.cards).filter(fil => reduxStore.getState().db.cards[fil]\r\n && reduxStore.getState().db.cards[fil].checklist\r\n && reduxStore.getState().db.cards[fil]._parent === data._id\r\n ).length > 0\r\n && Object.keys(reduxStore.getState().db.cards).filter(fil => reduxStore.getState().db.cards[fil]\r\n && reduxStore.getState().db.cards[fil].type === \"step\"\r\n && reduxStore.getState().db.cards[fil]._parent === data._id\r\n ).length === 0\r\n\r\n )\r\n )\r\n )\r\n &&\r\n <div style={{\r\n position: 'relative',\r\n width: 'calc(100%)',\r\n top: '16px',\r\n clear: 'both',\r\n marginBottom: '16px'\r\n }}>\r\n <div style={{\r\n padding: '7px',\r\n backgroundColor: 'rgba(0,0,0,0.05)',\r\n fontSize: '16px',\r\n borderTopLeftRadius: 7,\r\n borderTopRightRadius: 7,\r\n }}>{translate('$__list', 1)}</div>\r\n <Checklist nodeId={data._id} db={\"cards\"} noDelete showProgress />\r\n <div style={{ clear: 'both' }}></div>\r\n </div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </div >\r\n <div style={{ clear: \"both\" }}></div>\r\n </div >\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store, props) => ({\r\n card: store.db.cards,\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(ExpandedCard))","import React from \"react\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\n\r\n//@MATERIAL\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp } from \"functions/\";\r\n\r\n\r\nconst useStyles = makeStyles((props) => ({\r\n iconButtonStyleTransaparent: {\r\n margin: 0,\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.9)'\r\n }\r\n },\r\n iconButtonStyleWhite: {\r\n margin: 0,\r\n backgroundColor: '#FFFFFF',\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.9)'\r\n }\r\n },\r\n}));\r\n\r\nfunction Comp(props) {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null)\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <div\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n }}\r\n style={{ zIndex: 100 }}\r\n >\r\n <Tooltip\r\n title={translate(`$__options`, 1)}\r\n >\r\n <IconButton\r\n ref={anchorRef}\r\n aria-controls={open ? 'menu-list-grow' : undefined}\r\n aria-haspopup=\"true\"\r\n aria-label=\"menu\"\r\n onClick={(e) => {\r\n setOpen((prevOpen) => !prevOpen);\r\n if (props.onClick)\r\n props.onClick()\r\n e.stopPropagation()\r\n }}\r\n className={!props.transparent ? classes.iconButtonStyleWhite : classes.iconButtonStyleTransaparent}\r\n >\r\n <Icon\r\n usePropagation\r\n size={!props.size ? \"20px\" : props.size}\r\n color={props.iconColor ? props.iconColor : customApp('menu')}\r\n icon={props.icon ? props.icon : 'design_services'}\r\n title={props.title ? props.title : \"NO_ALIAS\"}\r\n />\r\n </IconButton>\r\n </Tooltip>\r\n <Popper open={open} anchorEl={anchorRef.current} role={undefined} transition>\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom',\r\n }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <div\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }}\r\n >\r\n {React.cloneElement(props.children, {\r\n callBack: (e) => {\r\n setOpen(false);\r\n }\r\n })}\r\n </div>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n </div >\r\n )\r\n}\r\nexport default Comp;\r\n","import React from \"react\";\r\nimport Chartist from \"chartist\";\r\nimport ChartistGraph from \"react-chartist\";\r\nimport MD5 from \"crypto-js/md5\";\r\n// import { ResponsiveLine } from '@nivo/line'\r\n\r\n//COMPONENTS\r\nimport LinearProgress from \"components/Progress/linear\";\r\nimport KpiDescription from \"components/KPI/dataSave\";\r\nimport PopperMenu from \"components/PopperMenu\";\r\n\r\n//@MATERIAL\r\nimport {\r\n withStyles\r\n} from \"@material-ui/core/styles\";\r\n\r\n//REDUX\r\nimport {\r\n connect\r\n} from 'react-redux';\r\nimport {\r\n bindActionCreators\r\n} from 'redux';\r\nimport * as reduxActions from 'store/actions';\r\nimport reduxStore from \"store/\";\r\n\r\n//FUNCTIONS\r\nimport {\r\n translate,\r\n customApp,\r\n formatNumber\r\n} from \"functions/\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/KPI_change\";\r\n\r\nimport {\r\n model\r\n} from \"variables/charts\";\r\nimport {\r\n loadTimeline,\r\n} from \"functions/chat\";\r\n\r\nimport \"assets/css/components/chart.css\";\r\nrequire(\"chartist-plugin-tooltips\");\r\n\r\nconst KpiChange = (props) => {\r\n const { classes, data } = props\r\n const { db, timeline } = reduxStore.getState()\r\n const { cards } = db\r\n const [mounted, setMounted] = React.useState(false)\r\n const [loading, setLoading] = React.useState(false)\r\n const [cardsWithKpi, setCardsWithKpi] = React.useState([])\r\n\r\n let kpi_ini = Number(data.kpi_ini)\r\n let kpi_fin = Number(data.kpi_fin)\r\n\r\n React.useEffect(() => {\r\n if (!mounted) {\r\n setMounted(true)\r\n childrenCards(props.data._id)\r\n iniKpi()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n React.useEffect(() => {\r\n childrenCards(props.data._id)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cards])\r\n\r\n const iniKpi = async () => {\r\n let reqData = {\r\n ids: [data._id],\r\n db: 'cards',\r\n reqChildrens: true,\r\n type: 'kpi',\r\n limit: true\r\n }\r\n let reqMd5 = MD5(`${JSON.stringify(reqData)}`).toString()\r\n if (\r\n timeline\r\n && (\r\n !timeline[data._id]\r\n ||\r\n (\r\n timeline[data._id]\r\n && Object.keys(timeline[data._id]).filter(l => timeline[data._id][l].type === 'kpi').length === 0\r\n )\r\n )\r\n && (\r\n !reduxStore.getState().timelineLoader\r\n || (\r\n reduxStore.getState().timelineLoader\r\n && !reduxStore.getState().timelineLoader[reqMd5]\r\n )\r\n )\r\n ) {\r\n setLoading(true)\r\n const result = await loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Timeline/Index/init()\"\r\n },\r\n reqData\r\n )\r\n\r\n if (result) {\r\n setLoading(false)\r\n if (props.onResize) props.onResize()\r\n }\r\n } else {\r\n setLoading(false)\r\n if (props.onResize) props.onResize()\r\n }\r\n }\r\n\r\n //Filter all Children Cards with KPI = kpi_useParent\r\n let kpiCards = [props.data._id]\r\n const childrenCards = async (cardId, children) => {\r\n let chields = Object.keys(cards)\r\n .filter(a => cards[a].kpi_useParent && cards[a]._parent === cardId)\r\n if (chields.length > 0) {\r\n chields.map(async a => {\r\n childrenCards(a, true)\r\n kpiCards.push(a)\r\n setCardsWithKpi(Array.from(new Set(kpiCards)))\r\n })\r\n } else if (!children) {\r\n setCardsWithKpi(kpiCards)\r\n }\r\n return chields\r\n }\r\n\r\n if (!data)\r\n return (null)\r\n\r\n let kpiChart = {\r\n ...model\r\n }\r\n\r\n let series = []\r\n let labels = []\r\n\r\n let kpi_flow = {}\r\n cardsWithKpi.forEach(a => {\r\n kpi_flow = {\r\n ...kpi_flow,\r\n ...timeline[a] || {}\r\n }\r\n })\r\n\r\n\r\n kpi_flow = Object.keys(kpi_flow).filter(a => kpi_flow[a].type === 'kpi' && kpi_flow[a].kpi_type === data.kpi_type).map(a => kpi_flow[a])\r\n\r\n let kpi_total = data.kpi_type !== 'time' ? Number(kpi_ini) : 0\r\n let percent100 = String(kpi_fin).substring(0, 1) === -1 ? Number(kpi_ini) + Number(kpi_fin) : Number(kpi_ini) - Number(kpi_fin)\r\n let accomplished = 0\r\n if (percent100 < 0) percent100 = percent100 * -1\r\n\r\n if (kpi_flow && Object.keys(kpi_flow).length > 0) {\r\n Object.keys(kpi_flow).sort((a, b) => {\r\n if (kpi_flow[a].created_at < kpi_flow[b].created_at)\r\n return -1\r\n return 1\r\n }).forEach((a, i) => {\r\n kpi_total = Number(kpi_total) + Number(kpi_flow[a].value)\r\n accomplished = accomplished + Number(kpi_flow[a].value)\r\n series.push({\r\n meta: kpi_flow[a].value,\r\n total: kpi_total,\r\n value: Number(kpi_ini) > Number(kpi_fin) ? 100 - Math.floor((kpi_total * 100) / percent100) : Math.floor((kpi_total * 100) / percent100),\r\n })\r\n labels.push(i + 1)\r\n if (i + 1 === Object.keys(kpi_flow).length)\r\n kpiChart = {\r\n ...kpiChart,\r\n data: {\r\n labels: labels,\r\n series: [[...series]]\r\n },\r\n options: {\r\n //fullWidth: true,\r\n ...kpiChart.options,\r\n low: 0,\r\n high: 100,\r\n plugins: [Chartist.plugins.tooltip({\r\n tooltipFnc: function (meta, value, name) {\r\n return (\r\n `${meta > 0 ? '+' : ''}` +\r\n formatNumber(meta, data.kpi_type === 'time' ? 'number' : data.kpi_type, data.kpi_currency ? data.kpi_currency : null) + '<br>' + formatNumber(value, 'percent')\r\n );\r\n }\r\n })],\r\n axisX: {\r\n showGrid: false,\r\n },\r\n axisY: {\r\n showGrid: false,\r\n },\r\n onlyInteger: true,\r\n },\r\n }\r\n })\r\n }\r\n\r\n\r\n let sumKpi = 0\r\n\r\n if (Number(kpi_ini) === 0 && Number(kpi_fin) !== 0) {\r\n sumKpi = Number(kpi_fin)\r\n } else if (Number(kpi_ini) > Number(kpi_fin)) {\r\n sumKpi = Number(kpi_ini) - Number(kpi_fin)\r\n } else if (Number(kpi_ini) < Number(kpi_fin)) {\r\n sumKpi = Number(kpi_fin) - Number(kpi_ini)\r\n }\r\n\r\n // Number(kpi_ini) > Number(kpi_fin) ? Number(kpi_ini) - Number(kpi_fin) : Number(kpi_ini) + Number(kpi_fin)\r\n // console.log(sumKpi)\r\n\r\n\r\n if (kpi_flow && Object.keys(kpi_flow).length > 0) {\r\n Object.keys(kpi_flow).forEach(a => {\r\n sumKpi = Number(sumKpi) + Number(kpi_flow[a].value)\r\n })\r\n }\r\n\r\n let percentKpi = Math.ceil(kpi_ini < kpi_fin ? kpi_fin - kpi_ini : kpi_ini - kpi_fin)\r\n percentKpi = ((Math.ceil(sumKpi) * 100) / percentKpi) - 100\r\n if (percentKpi < 0)\r\n percentKpi = percentKpi * -1\r\n\r\n\r\n if (!props.data)\r\n return (<div>NO DATA RECEIVED</div>)\r\n\r\n if (loading)\r\n return (<div style={{ position: \"absolute\", bottom: 0, left: \"7px\", right: \"7px\", height: 152 }}>\r\n <LinearProgress />\r\n </div>\r\n )\r\n\r\n const kpiInfo = () => {\r\n let kpii = kpi_ini && parseInt(kpi_ini) ? parseInt(kpi_ini) : 0\r\n let kpif = kpi_fin && parseInt(kpi_fin) ? parseInt(kpi_fin) : 0\r\n if (kpii > kpif)\r\n return (\r\n <div style={{\r\n ...sumKpi < 0 ? { color: \"red\", fontWeight: \"bold\" } : {}\r\n }}>\r\n {translate(`$__balance`, 1)}: {sumKpi < 0 ? `- ` : ``}{formatNumber(sumKpi || 0, data.kpi_type === 'time' ? 'number' : data.kpi_type, data.kpi_currency ? data.kpi_currency : null)}{data.kpi_type === 'time' ? <span style={{ marginLeft: 5, fontSize: 10, textTransform: \"lowercase\" }}>{translate(\"$__minutes\")}</span> : ``}\r\n </div>\r\n )\r\n return (\r\n <div style={{\r\n ...sumKpi < 0 ? { color: \"red\", fontWeight: \"bold\" } : {}\r\n }}>\r\n {translate(`$__targetValue`, 1)}: {formatNumber(kpii > kpif ? kpii - kpif : kpif - kpii || 0, data.kpi_type === 'time' ? 'number' : data.kpi_type, data.kpi_currency ? data.kpi_currency : null)}{data.kpi_type === 'time' ? <span style={{ marginLeft: 5, fontSize: 10, textTransform: \"lowercase\" }}>{translate(\"$__minutes\")}</span> : ``}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className={classes.root}>\r\n <React.Fragment>\r\n {props.chartShow && data.kpi_type !== 'time' && data.kpi_type !== 'task' && kpi_flow.length > 0 ?\r\n <div style={{\r\n backgroundColor: customApp('color'),\r\n height: 152\r\n }}>\r\n <ChartistGraph\r\n className=\"ct-chart-white-colors\"\r\n data={kpiChart.data}\r\n type=\"Line\"\r\n options={kpiChart.options}\r\n listener={kpiChart.animation}\r\n />\r\n </div> :\r\n <React.Fragment></React.Fragment>\r\n }\r\n {data.kpi_type !== 'task' &&\r\n <fieldset style={{ position: 'relative' }}>\r\n <legend\r\n style={\r\n {\r\n color: customApp('color')\r\n }\r\n }>\r\n {translate('$__progress', 1)}\r\n </legend>\r\n <div className={classes.progress}>\r\n <LinearProgress\r\n variant=\"determinate\"\r\n size={100}\r\n value={percentKpi}\r\n showText\r\n onClick={() => {\r\n // setReqSave(true)\r\n }} />\r\n </div>\r\n <div style={{\r\n position: 'relative',\r\n textSize: '11px',\r\n fontWeight: 'bold',\r\n color: customApp('color')\r\n }}>\r\n {kpiInfo()}\r\n\r\n </div>\r\n <div style={{\r\n position: 'relative',\r\n textSize: '11px',\r\n fontWeight: 'bold',\r\n color: accomplished > 0 ? customApp('green') : 'red'\r\n }}>\r\n {translate(`$__accomplished`, 1)}: {accomplished && parseInt(accomplished) > 0 ? formatNumber(accomplished, data.kpi_type === 'time' ? 'number' : data.kpi_type, data.kpi_currency ? data.kpi_currency : null) : 0}\r\n </div>\r\n <div style={{\r\n position: 'absolute',\r\n right: '0px',\r\n top: '-33px',\r\n display: 'flex'\r\n }}>\r\n <PopperMenu\r\n icon=\"add_circle\"\r\n title={translate(\"$__increase\")}\r\n iconColor={customApp('blue')}\r\n onClick={() => {\r\n // setPositiveValue(true)\r\n // setReqSave(true)\r\n }}\r\n transparent\r\n >\r\n <KpiDescription\r\n data={data}\r\n PositiveValue={true}\r\n callBack={() => {\r\n // setReqSave(false)\r\n }}\r\n />\r\n </PopperMenu>\r\n <PopperMenu\r\n icon=\"remove_circle\"\r\n iconColor={'orange'}\r\n title={translate(\"$__decrease\")}\r\n onClick={() => {\r\n // setPositiveValue(false)\r\n }}\r\n transparent\r\n >\r\n <KpiDescription\r\n data={data}\r\n PositiveValue={false}\r\n callBack={() => {\r\n // setReqSave(false)\r\n }}\r\n />\r\n </PopperMenu>\r\n </div>\r\n </fieldset>\r\n }\r\n {data.kpi_type === 'task' &&\r\n <div className={classes.time}>TASK</div>\r\n }\r\n </React.Fragment>\r\n </div >\r\n );\r\n}\r\n//REACT\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n timeline: store.timeline,\r\n cards: store.db.cards\r\n }\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(KpiChange));","import Switch from '@material-ui/core/Switch';\r\n\r\n//@MATERIAL \r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//Styles \r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst Component = withStyles({\r\n switchBase: {\r\n color: customApp('medium'),\r\n '&$checked': {\r\n color: customApp('color'),\r\n },\r\n '&$checked + $track': {\r\n backgroundColor: customApp('color'),\r\n },\r\n },\r\n checked: {},\r\n track: {},\r\n})(Switch);\r\n\r\nexport default Component","import React from 'react';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport DateRange from '@material-ui/icons/DateRange';\r\n\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//FUNCTIONS\r\nimport { translate } from \"functions/\";\r\nimport { pageLoadCards } from \"functions/loadData\"\r\n\r\nconst options = [\r\n '$__last7Days',\r\n '$__last15Days',\r\n '$__last30Days',\r\n '$__last60Days',\r\n '$__last90Days',\r\n '$__last180Days',\r\n '$__last365Days',\r\n '$__allPeriod',\r\n];\r\n\r\nconst ITEM_HEIGHT = 48;\r\n\r\nconst mapStateToProps = (store) => ({\r\n store: {\r\n session: store.session\r\n }\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\n\r\nfunction LongMenu(props) {\r\n const { session } = reduxStore.getState()\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n period: \"$__last7Days\",\r\n dashboard: {\r\n ...reduxStore.getState().session,\r\n period: \"$__last7Days\"\r\n }\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = async (option) => {\r\n // console.log(option)\r\n setAnchorEl(null);\r\n if (typeof option === 'string') {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION\", {\r\n ...reduxStore.getState().session,\r\n period: option,\r\n dashboard: {\r\n ...reduxStore.getState().session,\r\n period: option\r\n }\r\n })\r\n let subtractDays = String(option).replace('$__last', '')\r\n subtractDays = subtractDays.replace('Days', '')\r\n if (option === '$__allPeriod') {\r\n await pageLoadCards(props, 5000)\r\n } else {\r\n await pageLoadCards(props, subtractDays)\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div>\r\n <IconButton\r\n aria-label=\"more\"\r\n aria-controls=\"long-menu\"\r\n aria-haspopup=\"true\"\r\n onClick={handleClick}\r\n style={{ ...props.style ? props.style : {} }}\r\n >\r\n <DateRange />\r\n </IconButton>\r\n <Menu\r\n id=\"long-menu\"\r\n anchorEl={anchorEl}\r\n keepMounted\r\n open={open}\r\n onClose={handleClose}\r\n PaperProps={{\r\n style: {\r\n maxHeight: ITEM_HEIGHT * 4.5,\r\n width: '20ch',\r\n },\r\n }}\r\n >\r\n {options.map((option) => (\r\n <MenuItem\r\n key={option}\r\n selected={option === session.dashboard.period}\r\n onClick={(e) => handleClose(option)}\r\n >\r\n {translate(option, 1)}\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </div>\r\n );\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LongMenu)","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst buttonStyle = {\r\n header: {\r\n ...defaultFont,\r\n display: 'flex',\r\n width: '100%',\r\n justifyContent: 'space-between'\r\n },\r\n content: {\r\n position: 'relative',\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n },\r\n info: {\r\n display: 'flex',\r\n width: '100%',\r\n alignItems: 'center'\r\n },\r\n headerIcon: {\r\n display: 'contents',\r\n alignItems: 'center',\r\n },\r\n headerTitle: {\r\n width: 'calc(100% - 33px)',\r\n // marginLeft: '7px',\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n fontWeight: 'bold',\r\n paddingTop: '3px',\r\n },\r\n actionButtons: {\r\n // position: 'absolute',\r\n // top: \"-9px\",\r\n right: 0,\r\n display: 'flex',\r\n },\r\n cancelButton: {\r\n right: '4px',\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n },\r\n saveButton: {\r\n right: '33px',\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n },\r\n button: {\r\n padding: '3px auto',\r\n cursor: 'pointer',\r\n alignItems: 'center',\r\n display: 'flex',\r\n opacity: 1,\r\n // backgroundColor: '#FFFFFF'\r\n //transition: 'visibility 0.1s, opacity 0.5s linear'\r\n },\r\n parent: {\r\n width: '100%',\r\n padding: '0 5px',\r\n '& .title': {\r\n color: customApp('medium'),\r\n fontSize: '10px',\r\n textTransform: 'uppercase'\r\n },\r\n '& .info': {\r\n marginTop: '-8px',\r\n color: customApp('color'),\r\n fontWeight: '500',\r\n //display: 'flex',\r\n alignItems: 'center',\r\n }\r\n },\r\n};\r\n\r\nexport default buttonStyle;\r\n","import React, { useState, useRef, useEffect } from \"react\"\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 TextField from \"components/TextField\"\r\n// import SendingMessage from \"components/Timeline/sending\"\r\nimport PeriodFilter from \"components/Filter/period\"\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport Icons from \"components/Icons\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\nimport Badge from \"components/Icon/Badge\"\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\n\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/headerWithIcon.js\"\r\n\r\n//FUNCTIONS\r\nimport { translate, customApp, Highlighted, stripHtml } from \"functions/\"\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nfunction WithIcon(props) {\r\n const { title, icon: propIcon, editable, _id, onEdit, customButtons: propCustomButtons } = props\r\n const { functions, session } = reduxStore.getState();\r\n const { socket } = functions;\r\n const classes = useStyles();\r\n\r\n const [name, setName] = useState(title ? title.trim() : \"\");\r\n const [icon, setIcon] = useState(propIcon || null);\r\n const [editing, setEditing] = useState(false);\r\n const [modMessageOpen, setModMessageOpen] = useState(false);\r\n const [buttonsHover, setButtonsHover] = useState(false);\r\n\r\n const customButtons = propCustomButtons && propCustomButtons.filter(bt => bt !== false);\r\n\r\n const mounted = useRef(true);\r\n\r\n useEffect(() => {\r\n if (!title && editable) setEditing(true);\r\n return () => {\r\n mounted.current = false;\r\n }\r\n }, [title, editable]);\r\n\r\n\r\n const saveName = async () => {\r\n try {\r\n if (_id) {\r\n socket.emit(\"data\", {\r\n module: \"node\",\r\n method: \"put\",\r\n action: \"update\",\r\n noLog: true\r\n }, {\r\n _id,\r\n name\r\n });\r\n }\r\n if (onEdit) onEdit({ name, ...icon ? { icon } : {} }, _id || null);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n setEditing(false);\r\n };\r\n\r\n\r\n return (\r\n <div\r\n className={classes.header}\r\n style={{\r\n minHeight: '30px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n ...props.style,\r\n\r\n }}\r\n onMouseEnter={() => setButtonsHover(true)}\r\n onMouseLeave={() => {\r\n if (mounted.current && !modMessageOpen) {\r\n setButtonsHover(false)\r\n }\r\n }}\r\n >\r\n <div className={classes.content}>\r\n <div className={classes.info}>\r\n {props.searchText ?\r\n <div style={{\r\n marginLeft: '7px',\r\n }}>\r\n {Highlighted(props.title ? props.title : '', props.searchText)}\r\n </div>\r\n :\r\n <div\r\n className={classes.headerTitle}\r\n style={{\r\n fontSize: props.fontSize ? props.fontSize : '16px',\r\n color: props.color ? props.color : customApp('colorText'),\r\n paddingRight: '7px',\r\n marginLeft: props.icon ? '7px' : 'none',\r\n width: \"100%\"\r\n }}\r\n onDoubleClick={() => {\r\n if (props.onEdit && props.editable && mounted.current) {\r\n setName(props.title ? props.title.trim() : '')\r\n setEditing(true)\r\n }\r\n }\r\n }\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '100%',\r\n // paddingTop: '7px',\r\n display: 'flex',\r\n alignItems: \"center\"\r\n }}>\r\n {(props.icon || props.permitIcon || (props.iconOnEditable && editing)) ?\r\n <Icons\r\n icon={props.icon || 'perm_media'}\r\n color={props.color ? props.color : customApp('colorText')}\r\n onChange={(props.onChangeIcon || (props.editable && props.permitIcon)) ? (e) => {\r\n if (props.onChangeIcon)\r\n props.onChangeIcon(e)\r\n if (props.onEdit) {\r\n props.onEdit({\r\n name,\r\n ...e ? { icon: e } : {}\r\n })\r\n }\r\n setIcon(e)\r\n } : null}\r\n size={`calc(${props.fontSize} + 4px)` || '25px'}\r\n style={{ marginRight: 7 }}\r\n />\r\n : <React.Fragment></React.Fragment>\r\n }\r\n {(editing) ?\r\n <React.Fragment>\r\n <TextField\r\n label={props.placeholder ? props.placeholder : translate('$__nameOfCard', 1)}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n onChange: (d) => {\r\n setName(d.target.value)\r\n },\r\n onKeyDown: (e) => {\r\n if (e.keyCode === 13 && name)\r\n saveName()\r\n if (e.keyCode === 27) {\r\n setEditing(false)\r\n setName(props.title ? props.title.trim() : '')\r\n }\r\n }\r\n }}\r\n value={name}\r\n placeholder={props.placeholder ? props.placeholder : translate('$__titleOfCard_placeholder', 1)}\r\n autoFocus={props.noAutoFocus ? false : true}\r\n multiline={props.multiline ? true : false}\r\n />\r\n {(editing || props.onSave) &&\r\n <CustomButton\r\n title={translate(`$__save`, 1)}\r\n color='green'\r\n icon={'save'}\r\n onClick={() => {\r\n if (editing) {\r\n if (!props.noCancel) {\r\n saveName()\r\n } else {\r\n if (name)\r\n saveName()\r\n }\r\n } else {\r\n props.onSave()\r\n }\r\n }}\r\n size={props.actionsSize || '25px'}\r\n transparent\r\n />\r\n }\r\n {(editing || props.onCancel) &&\r\n <CustomButton\r\n title={translate(`$__close`, 1)}\r\n color={customApp(\"colorText\")}\r\n icon={'cancel'}\r\n onClick={() => {\r\n if (editing) {\r\n if (!props.onCancel) {\r\n setEditing(false)\r\n } else {\r\n if (name)\r\n setEditing(false)\r\n }\r\n }\r\n if (props.onCancel)\r\n props.onCancel()\r\n }\r\n }\r\n size={props.actionsSize || '25px'}\r\n transparent\r\n />\r\n }\r\n </React.Fragment>\r\n :\r\n <Tooltip\r\n title={props.tooltipText ? props.tooltipText : props.title ? props.title : ''}\r\n >\r\n <div style={{\r\n ...!props.expanded ? {\r\n width: '100%',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n }\r\n : {\r\n width: '100%',\r\n\r\n }\r\n }}>\r\n {`${props.showOrder ? `${props.showOrder}. ` : ``}${props.title && props.title.indexOf('$__') > -1 ? translate(props.title, 1) : props.title ? stripHtml(props.title) : ''}`}\r\n </div>\r\n </Tooltip>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n {props.periodFilter && session && session.period &&\r\n <div\r\n style={{\r\n display: \"flex\",\r\n whiteSpace: \"nowrap\",\r\n marginRight: 7\r\n }}>\r\n {translate(session.period)}\r\n <PeriodFilter\r\n style={{\r\n color: customApp('menu'),\r\n height: '20px',\r\n width: '20px'\r\n }}\r\n />\r\n </div>\r\n }\r\n <div\r\n className={classes.actionButtons}\r\n style={{ ...props.actionButtonsStyle ? props.actionButtonsStyle : {} }}\r\n >\r\n {(props.actionsButtons && props.onSave) &&\r\n <CustomButton\r\n title={translate(`$__save`, 1)}\r\n color='green'\r\n icon={'save'}\r\n onClick={() => {\r\n if (editing) {\r\n if (!props.noCancel) {\r\n saveName()\r\n } else {\r\n if (name)\r\n saveName()\r\n }\r\n } else {\r\n props.onSave()\r\n }\r\n }}\r\n size={props.actionsSize || '25px'}\r\n transparent\r\n />\r\n }\r\n {(props.actionsButtons && props.onCancel) &&\r\n <CustomButton\r\n title={translate(`$__close`, 1)}\r\n color='lightgrey'\r\n icon={'cancel'}\r\n onClick={() => {\r\n if (editing) {\r\n if (!props.noCancel) {\r\n setEditing(false)\r\n } else {\r\n if (name)\r\n setEditing(false)\r\n }\r\n } else {\r\n props.onCancel()\r\n }\r\n }\r\n }\r\n size={props.actionsSize || '25px'}\r\n transparent\r\n />\r\n }\r\n {!editing && props.timelineMessage && buttonsHover &&\r\n <div className={classes.button}\r\n style={{\r\n opacity: buttonsHover ? '1' : '0'\r\n }}\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n onClick={() => setModMessageOpen(true)}\r\n icon={'add_comment'}\r\n size={'20px'}\r\n tooltipprops={modMessageOpen ? {\r\n open: modMessageOpen,\r\n disableFocusListener: true,\r\n disableHoverListener: true,\r\n disableTouchListener: true,\r\n PopperProps: {\r\n disablePortal: true,\r\n },\r\n interactive: true,\r\n } : {}}\r\n // title={\r\n // modMessageOpen ?\r\n // <div style={{ position: 'relative', minWidth: '220px' }}>\r\n // <SendingMessage\r\n // nodeId={props._id}\r\n // onSending={() => {\r\n // setButtonsHover(false)\r\n // setModMessageOpen(false)\r\n // }}\r\n // onClose={() => {\r\n // setModMessageOpen(false)\r\n // setButtonsHover(false)\r\n // }}\r\n // relative\r\n // closeOption\r\n // />\r\n // </div>\r\n // : '$__addComment'\r\n // }\r\n />\r\n </div>\r\n }\r\n\r\n {\r\n !editing && customButtons && customButtons.map((bt, i) => {\r\n if (bt && bt.component)\r\n return (\r\n bt.component\r\n )\r\n return (\r\n bt && bt !== false && bt !== null && (buttonsHover || bt.show !== 'hover') &&\r\n <div key={i} className={classes.button}\r\n {...bt.provided}\r\n >\r\n <CustomButton\r\n title={bt.title ? translate(bt.title, 1) : translate(bt.name, 1)}\r\n color={customApp(bt.color || 'colorText')}\r\n icon={bt.icon}\r\n style={bt.style}\r\n onClick={e => {\r\n if (bt.onClick)\r\n bt.onClick(e)\r\n }\r\n }\r\n onMouseLeave={() => {\r\n if (!modMessageOpen) {\r\n setButtonsHover(false)\r\n }\r\n }}\r\n onClose={bt.onClose ? () => {\r\n if (bt.onClose) bt.onClose()\r\n setButtonsHover(false)\r\n } : null}\r\n size={bt.actionsSize || '16px'}\r\n transparent\r\n badgeContent={bt.count ? bt.count : null}\r\n />\r\n </div>\r\n )\r\n }\r\n )}\r\n {props.children}\r\n </div>\r\n </div >\r\n </div>\r\n )\r\n}\r\nconst mapStateToProps = (store) => ({\r\n users: store.db.users,\r\n groups: store.db.groups\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)(WithIcon)\r\n","import MD5 from \"crypto-js/md5\";\r\nimport moment from \"moment-timezone\";\r\n\r\n// REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n// API\r\nimport apims from \"apims\";\r\n\r\n/**\r\n * Atualiza o status de load no Redux sem duplicar código.\r\n * @param {Object} props - Propriedades do componente (inclui reduxFunction).\r\n * @param {string} key - Chave identificadora (geralmente um MD5 do request).\r\n * @param {string} status - Status a ser definido (\"loading\", \"completed\", \"errored\", etc.).\r\n */\r\nfunction setLoadStatus(props, key, status) {\r\n const { sessionLoads } = reduxStore.getState();\r\n const updatedLoads = { ...sessionLoads.cards.load, [key]: status };\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION_LOADS\", {\r\n ...sessionLoads,\r\n cards: {\r\n ...sessionLoads.cards,\r\n load: updatedLoads,\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * Prefixa chaves numéricas de um objeto para evitar conflitos.\r\n * @param {Object} obj - Objeto a ser processado.\r\n * @returns {Object} Novo objeto com chaves numéricas prefixadas.\r\n */\r\nfunction prefixNumericKeys(obj = {}) {\r\n const result = { ...obj };\r\n Object.keys(result).forEach((key) => {\r\n if (!isNaN(key[0])) {\r\n result[`f${key}`] = result[key];\r\n delete result[key];\r\n }\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * Carrega os cards via API e os monta no Redux.\r\n * @param {Object} props - Propriedades do componente (inclui reduxFunction).\r\n * @param {Object} data - Parâmetros do request.\r\n * @returns {Object|boolean} Objeto contendo total e cards ou true se já carregado; false em caso de falha.\r\n */\r\nconst loadCardsV2 = async (props, data) => {\r\n const {\r\n idRel,\r\n adminView = false,\r\n callback = null,\r\n cardLoad = \"my\",\r\n completed = false,\r\n status,\r\n deleted = false,\r\n archived = false,\r\n templates = false,\r\n allStatus = false,\r\n search = \"\",\r\n completedDays = 7,\r\n limit = 0,\r\n skip = 0,\r\n startDate = null,\r\n endDate = null,\r\n searchParams = null,\r\n ignoreLoader: customIgnoreLoader = false,\r\n } = data;\r\n\r\n // Obtemos dados relevantes do Redux\r\n const {\r\n sessionLoads,\r\n session: {\r\n dashboard: { period },\r\n },\r\n preLoader,\r\n } = reduxStore.getState();\r\n\r\n const loads = { ...sessionLoads.cards.load };\r\n const reqMd5 = MD5(JSON.stringify(data)).toString();\r\n\r\n // Define se deve ignorar o loader\r\n const ignoreLoader = cardLoad === \"search\" || props.ignoreLoader || customIgnoreLoader;\r\n\r\n // Se a requisição ainda não foi iniciada e não ignoramos o loader, marca como \"loading\"\r\n if (!loads[reqMd5]) {\r\n if (!ignoreLoader) {\r\n setLoadStatus(props, reqMd5, \"loading\");\r\n }\r\n } else if (loads[reqMd5] === \"completed\") {\r\n // Se já foi concluída, não recarrega\r\n // console.log(`loadCardsV2::already completed for reqMd5: ${reqMd5}`);\r\n return true;\r\n }\r\n\r\n // Ajusta o período para completedDays se necessário\r\n const subtractDays = String(period).replace(\"$__last\", \"\").replace(\"Days\", \"\");\r\n\r\n // Monta os dados do request para a API\r\n const requestData = {\r\n idRel,\r\n adminView,\r\n load: cardLoad,\r\n completed,\r\n archived,\r\n templates,\r\n status,\r\n allStatus,\r\n limit,\r\n skip,\r\n startDate,\r\n endDate,\r\n ...(completed && { completedDays: completedDays || subtractDays }),\r\n ...(search && { search }),\r\n ...(deleted && { deleted: true }),\r\n searchParams,\r\n };\r\n\r\n try {\r\n const response = await apims.post(\"/Card_List/\", requestData);\r\n\r\n if (response?.data) {\r\n // Monta os cards localmente\r\n const mountedCards = await mountCards(props, response.data, cardLoad);\r\n if (mountedCards) {\r\n setLoadStatus(props, reqMd5, \"completed\");\r\n if (callback) callback();\r\n\r\n props.reduxFunction(\"ASYNC\", \"preLoader\", {\r\n ...preLoader,\r\n cards: false,\r\n });\r\n\r\n return { total: response.data.length, cards: mountedCards };\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"loadCardsV2::ERR::\", error);\r\n setLoadStatus(props, reqMd5, \"errored\");\r\n } finally {\r\n // Garante que o preLoader seja desativado\r\n props.reduxFunction(\"ASYNC\", \"preLoader\", {\r\n ...preLoader,\r\n cards: false,\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * Solicita cards via API e atualiza o Redux.\r\n * @param {Object} props - Propriedades do componente.\r\n * @param {Object} data - Parâmetros do request.\r\n * @returns {Object|boolean|null} Cards montados ou true se duplicado; null em caso de erro.\r\n */\r\nconst reqCards = async (props, data) => {\r\n const {\r\n idRel,\r\n adminView = false,\r\n callback = null,\r\n cardLoad = \"my\",\r\n completed = false,\r\n status,\r\n deleted = false,\r\n archived = false,\r\n templates = false,\r\n search = props.search || \"\",\r\n } = data;\r\n\r\n const ignoreLoader = cardLoad === \"search\" || props.ignoreLoader;\r\n const { sessionLoads, db, preLoader } = reduxStore.getState();\r\n const loads = { ...sessionLoads.cards.load };\r\n const reqMd5 = MD5(JSON.stringify(data)).toString();\r\n\r\n // Evita requisições duplicadas\r\n if (loads[reqMd5]) return true;\r\n\r\n if (!ignoreLoader) {\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION_LOADS\", {\r\n ...sessionLoads,\r\n cards: {\r\n ...sessionLoads.cards,\r\n load: {\r\n ...loads,\r\n [reqMd5]: \"loading\",\r\n },\r\n },\r\n });\r\n }\r\n\r\n try {\r\n const response = await apims.post(\"/Card_List/\", {\r\n idRel,\r\n adminView,\r\n load: cardLoad,\r\n completed,\r\n archived,\r\n templates,\r\n status,\r\n ...(search && { search }),\r\n ...(deleted && { deleted: true }),\r\n });\r\n\r\n if (response?.data) {\r\n const mountedCards = await mountCards(props, response.data);\r\n if (mountedCards) {\r\n // Atualiza os cards no Redux\r\n const newCards = { ...mountedCards };\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n ...newCards,\r\n },\r\n });\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_SESSION_LOADS\", {\r\n ...sessionLoads,\r\n cards: {\r\n ...sessionLoads.cards,\r\n load: {\r\n ...loads,\r\n [reqMd5]: \"completed\",\r\n },\r\n },\r\n });\r\n\r\n if (callback) callback();\r\n return mountedCards;\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"reqCards::Error::\", error);\r\n } finally {\r\n props.reduxFunction(\"ASYNC\", \"preLoader\", {\r\n ...preLoader,\r\n cards: false,\r\n });\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Processa os dados dos cards, atualiza o Redux e retorna os cards montados.\r\n * @param {Object} props - Propriedades do componente.\r\n * @param {Array} ndata - Array de dados retornados da API.\r\n * @returns {Object} Objeto com os cards formatados ou objeto vazio.\r\n */\r\nfunction mountCards(props, ndata = []) {\r\n const { session, db } = reduxStore.getState();\r\n\r\n if (!ndata?.length) {\r\n return {};\r\n }\r\n\r\n // Filtra cards que possuem _id e que não sejam privados (ou o usuário tem permissão)\r\n const filterCards = (card) =>\r\n card?.data?._id &&\r\n (!card.data.private || card.users.some((user) => user._id === session._id));\r\n\r\n const prepareUsers = (users, myDayUsers) => {\r\n const userMap = {};\r\n if (users) {\r\n users.forEach((user) => {\r\n if (user._id) {\r\n const myDay =\r\n myDayUsers?.find((myDayUser) => myDayUser._id === user._id)?.date || null;\r\n userMap[user._id] = { ...user, ...(myDay && { myDay }) };\r\n }\r\n });\r\n }\r\n return userMap;\r\n };\r\n\r\n const prepareGroups = (groups) => {\r\n const groupMap = {};\r\n if (groups) {\r\n groups.forEach((group) => {\r\n if (group._id) {\r\n groupMap[group._id] = { ...group };\r\n }\r\n });\r\n }\r\n return groupMap;\r\n };\r\n\r\n const formatCardData = (card, users, groups, showGroups) => {\r\n const existingCard = db.cards[card.data._id] || {};\r\n const newCardData = {\r\n ...existingCard,\r\n ...(existingCard._selected && { _selected: true }),\r\n ...card.data,\r\n _cardCode: card.cardCode,\r\n _requireApproval: card.requireApproval || card.data.requireApproval || false,\r\n _isFavorite: String(card.favorite) === \"false\",\r\n ...(card.account && { _account: MD5(card.account).toString() }),\r\n ...(card.createdBy?.[0] && { _createdBy: card.createdBy[0] }),\r\n ...(card.myDay && { _myDay: card.myDay }),\r\n ...(card.parent && { _parent: card.parent }),\r\n ...(card.plan && { _planId: card.plan }),\r\n ...(users && { _users: users }),\r\n ...(groups && { _groups: groups }),\r\n ...(card.tags && { _tags: card.tags }),\r\n ...(card.aspects && { _aspects: card.aspects }),\r\n ...(card.inFlow && { _hasStep: card.inFlow }),\r\n status: card.data.status || \"notStarted\",\r\n ...(showGroups?.length > 0 && { showGroups }),\r\n _notifications: card.notifications,\r\n ...(card.parentCompleted?.card && {\r\n _parentCompleted: card.parentCompleted,\r\n status: \"completed\",\r\n completed_at: {\r\n low: card.parentCompleted.date || card.updated_at?.low || null,\r\n },\r\n }),\r\n ...(card.timer && {\r\n _kpiTimer: {\r\n [card.timer._id]: { ...card.timer, userId: session._id },\r\n },\r\n }),\r\n ...(card.parentPrivate && { private: true }),\r\n type: card.data.type || \"task\",\r\n };\r\n\r\n return prefixNumericKeys(newCardData);\r\n };\r\n\r\n const newCards = ndata\r\n .filter(filterCards)\r\n .reduce((acc, card) => {\r\n const users = prepareUsers(card.users, card.myDayUsers);\r\n const groups = prepareGroups(card.groups);\r\n const showGroups =\r\n card.data.type === \"step\"\r\n ? card.showGroups?.filter((g) => g.value) ?? []\r\n : [];\r\n const formattedCard = formatCardData(card, users, groups, showGroups);\r\n return { ...acc, [card.data._id]: formattedCard };\r\n }, {});\r\n\r\n if (Object.keys(newCards).length > 0) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...db,\r\n cards: {\r\n ...db.cards,\r\n ...newCards,\r\n },\r\n });\r\n return newCards;\r\n }\r\n return {};\r\n}\r\n\r\n/**\r\n * Função wrapper para loadCardsV2, facilitando sua chamada com parâmetros individuais.\r\n * @param {Object} props - Propriedades do componente.\r\n * @param {string} idRel - Identificador relacional.\r\n * @param {boolean} adminView - Visualização de administrador.\r\n * @param {Function|null} callback - Função callback após carregamento.\r\n * @param {string} cardLoad - Tipo de carregamento dos cards.\r\n * @param {boolean} completed - Se deve buscar cards completos.\r\n * @param {string} status - Status do card.\r\n * @param {boolean} ignoreLoader - Se deve ignorar o loader.\r\n * @returns {Object|boolean} Resultado do loadCardsV2 ou false.\r\n */\r\nconst loadCards = async (\r\n props,\r\n idRel,\r\n adminView = false,\r\n callback = null,\r\n cardLoad = \"my\",\r\n completed = false,\r\n status,\r\n ignoreLoader = false\r\n) => {\r\n const res = await loadCardsV2(props, {\r\n idRel,\r\n adminView,\r\n callback,\r\n cardLoad,\r\n completed,\r\n status,\r\n ignoreLoader,\r\n });\r\n return res || false;\r\n};\r\n\r\n/**\r\n * Carrega arquivos associados aos cards e atualiza o Redux.\r\n * @param {Object} props - Propriedades do componente.\r\n * @param {string|Array} nodeId - ID do nó ou array de IDs.\r\n * @param {string} dbR - Nome do banco de dados (padrão \"cards\").\r\n * @param {string} searchText - Texto de pesquisa.\r\n * @param {number|null} skip - Quantidade a pular.\r\n * @param {number|null} limit - Limite de registros.\r\n * @returns {boolean} True se carregado com sucesso; false em caso de erro.\r\n */\r\nconst loadFiles = async (props, nodeId, dbR = \"cards\", searchText, skip = null, limit = null) => {\r\n const db = dbR;\r\n\r\n const updateStoreWithFiles = (data) => {\r\n const updatedCards = Object.keys(data).reduce((acc, id) => {\r\n return {\r\n ...acc,\r\n [id]: {\r\n ...reduxStore.getState().db[db]?.[id],\r\n _files: {\r\n ...(reduxStore.getState().db[db]?.[id]?._files || {}),\r\n ...data[id],\r\n },\r\n _loadedFiles: true,\r\n },\r\n };\r\n }, {});\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n [db]: {\r\n ...reduxStore.getState().db[db],\r\n ...updatedCards,\r\n },\r\n });\r\n };\r\n\r\n try {\r\n const requestData =\r\n typeof nodeId === \"string\"\r\n ? { nodeId, skip, limit, searchText }\r\n : { nodesIds: nodeId };\r\n\r\n const reqFiles = await apims.post(\"/M_Files_List/\", requestData);\r\n\r\n if (reqFiles?.data) {\r\n updateStoreWithFiles(reqFiles.data);\r\n return true;\r\n }\r\n } catch (error) {\r\n console.group(\"loadFiles::ERR::\");\r\n console.error(error);\r\n console.groupEnd();\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n * Carrega os cards de acordo com a rota da página e atualiza o Redux.\r\n * @param {Object} props - Propriedades do componente.\r\n * @param {number} days - Número de dias para filtrar cards completos (padrão 7).\r\n * @returns {boolean} True quando finalizado.\r\n */\r\nconst pageLoadCards = async (props, days = 7) => {\r\n const pathname = window.location.pathname;\r\n const [firstHash, secondHash] = window.location.hash\r\n .split(\"/\")\r\n .map((part) => part.replace(\"#\", \"\"));\r\n const isPlanId = firstHash?.length === 36;\r\n\r\n const resolveLoad = async (loadConfig) => {\r\n await loadCardsV2(props, loadConfig);\r\n };\r\n\r\n const resolvePlanLoad = async (configs) => {\r\n for (const config of configs) {\r\n await loadCardsV2(props, config);\r\n }\r\n };\r\n\r\n switch (pathname) {\r\n case \"/calendar\":\r\n await resolveLoad({\r\n cardLoad: \"calendar\",\r\n iniDate: moment().startOf(\"month\").unix(\"x\"),\r\n endDate: moment().endOf(\"month\").unix(\"x\"),\r\n });\r\n return true;\r\n\r\n case \"/sp\":\r\n if (!isPlanId) {\r\n if (secondHash === \"archived\") {\r\n await resolvePlanLoad([\r\n { cardLoad: \"plans\", archived: true },\r\n { cardLoad: \"plans\", archived: true, completed: true, completedDays: days },\r\n ]);\r\n } else if (secondHash === \"completed\") {\r\n await resolveLoad({\r\n cardLoad: \"plans\",\r\n completed: true,\r\n completedDays: days,\r\n });\r\n } else if (secondHash === \"templates\") {\r\n await resolveLoad({\r\n cardLoad: \"templates\",\r\n templates: true,\r\n });\r\n } else if (secondHash === \"admin\") {\r\n await resolveLoad({\r\n cardLoad: \"plans\",\r\n adminView: true,\r\n });\r\n } else if (secondHash === \"deleted\") {\r\n await resolveLoad({\r\n cardLoad: \"plans\",\r\n deleted: true,\r\n });\r\n }\r\n } else {\r\n await resolvePlanLoad([\r\n { idRel: firstHash, cardLoad: \"plan\" },\r\n { idRel: firstHash, cardLoad: \"plan\", completed: true },\r\n ]);\r\n }\r\n return true;\r\n\r\n case \"/d\":\r\n if (secondHash === \"dayTasks\" || secondHash === \"ourTasks\") {\r\n await resolveLoad({\r\n adminView: true,\r\n cardLoad: \"myDay\",\r\n });\r\n } else {\r\n await resolvePlanLoad([\r\n { cardLoad: \"dashboard\" },\r\n { cardLoad: \"showIn\" },\r\n { cardLoad: \"channel\" },\r\n ]);\r\n }\r\n return true;\r\n\r\n case \"/forms\":\r\n case \"/p\":\r\n case \"/acc\":\r\n case \"/login\":\r\n case \"/subscriptionUpgrade\":\r\n case \"/masterAdmin\":\r\n case \"/plataformAdministrator\":\r\n return true;\r\n\r\n case \"/library\":\r\n await resolveLoad({ cardLoad: \"plans\" });\r\n return true;\r\n\r\n case \"/tags\":\r\n if (isPlanId || reduxStore.getState().searchs[\"tagsView\"]) {\r\n await resolveLoad({\r\n cardLoad: \"tags\",\r\n idRel: firstHash,\r\n searchParams: reduxStore.getState().searchs[\"tagsView\"],\r\n });\r\n }\r\n return true;\r\n\r\n case \"/t\":\r\n if (!secondHash || secondHash === \"myTasks\") {\r\n await resolvePlanLoad([\r\n { cardLoad: \"myResponsible\" },\r\n { cardLoad: \"myResponsible\", completed: true, completedDays: days },\r\n ]);\r\n } else if (secondHash === \"myDay\" || secondHash === \"ourDay\") {\r\n await resolvePlanLoad([\r\n { cardLoad: \"myDay\" },\r\n { cardLoad: \"myDay\", completed: true, completedDays: 180 },\r\n ]);\r\n } else {\r\n await resolvePlanLoad([\r\n { cardLoad: \"in\" },\r\n { cardLoad: \"in\", completed: true, completedDays: days },\r\n { cardLoad: \"myResponsible\" },\r\n ]);\r\n }\r\n return true;\r\n\r\n default:\r\n return true;\r\n }\r\n};\r\n\r\nexport {\r\n reqCards,\r\n loadCards,\r\n loadCardsV2,\r\n loadFiles,\r\n mountCards,\r\n pageLoadCards,\r\n};","//CORE\r\nimport React from \"react\";\r\nimport ReactExport from \"react-data-export\";\r\nimport moment from \"moment-timezone\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//@MATERIAL\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions/\";\r\n\r\nfunction ExportAll(props) {\r\n const ExcelFile = ReactExport.ExcelFile;\r\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n const data = props.data\r\n\r\n let dataSet1 = []\r\n let dataUsers = []\r\n\r\n let total_time = 0\r\n let total_hours = 0\r\n let total_minutes = 0\r\n let total_seconds = 0\r\n\r\n if (data && Object.keys(data).length > 0) {\r\n Object.keys(data).forEach(user => {\r\n let userData = []\r\n if (data[user]._times && Object.keys(data[user]._times > 0))\r\n Object.keys(data[user]._times).forEach(tm => {\r\n let card = reduxStore.getState().db.cards[data[user]._times[tm].cardId]\r\n let time = parseInt(data[user]._times[tm].fin) - parseInt(data[user]._times[tm].ini)\r\n total_time = total_time + time\r\n let diff = time\r\n let diffText = ``\r\n let hours = 0\r\n let minutes = 0\r\n let seconds = 0\r\n if (time < 60) {\r\n diffText = `${diff} ${translate('$__seconds', 1)}`\r\n } else if (time > 3600) {\r\n hours = Math.trunc(diff / 3600)\r\n diff = diff - (hours * 3600)\r\n minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\r\n diff = diff - (minutes * 60)\r\n seconds = diff > 0 ? diff : 0\r\n diffText = `${hours} ${translate('$__hour', 1)}${hours > 1 ? 's' : ''} ${minutes} ${translate('$__minutes', 1)} ${seconds} ${translate('$__seconds', 1)}`\r\n } else {\r\n minutes = Math.trunc(diff / 60) > 0 ? Math.trunc(diff / 60) : 0\r\n diff = diff - (minutes * 60)\r\n seconds = diff > 0 ? diff : 0\r\n diffText = `${minutes} ${translate('$__minutes', 1)} ${seconds} ${translate('$__seconds', 1)}`\r\n }\r\n\r\n dataSet1.push({\r\n name: data[user].name,\r\n // email: data[user].email,\r\n type: translate(`$__${card.type}`, 1),\r\n card: card.name,\r\n description: data[user]._times[tm].message,\r\n iniData: moment(data[user]._times[tm].ini * 1000).tz('America/Sao_Paulo').format('YYYY/MM/DD HH:mm:ss'),\r\n finalData: moment(data[user]._times[tm].fin * 1000).tz('America/Sao_Paulo').format('YYYY/MM/DD HH:mm:ss'),\r\n total: diffText,\r\n hours: hours,\r\n minutes: minutes,\r\n seconds: seconds,\r\n calc: (parseInt(data[user]._times[tm].fin) - parseInt(data[user]._times[tm].ini)) / 3600\r\n })\r\n userData.push({\r\n name: data[user].name,\r\n // email: data[user].email,\r\n type: translate(`$__${card.type}`, 1),\r\n card: card.name,\r\n description: data[user]._times[tm].message,\r\n iniData: moment(data[user]._times[tm].ini * 1000).tz('America/Sao_Paulo').format('YYYY/MM/DD HH:mm:ss'),\r\n finalData: moment(data[user]._times[tm].fin * 1000).tz('America/Sao_Paulo').format('YYYY/MM/DD HH:mm:ss'),\r\n total: diffText,\r\n hours: hours,\r\n minutes: minutes,\r\n seconds: seconds,\r\n calc: (parseInt(data[user]._times[tm].fin) - parseInt(data[user]._times[tm].ini)) / 3600\r\n })\r\n })\r\n userData.push({\r\n name: '',\r\n email: '',\r\n type: '',\r\n card: '',\r\n description: '',\r\n iniData: '',\r\n finalData: '',\r\n total: data[user].timerText,\r\n hours: '',\r\n minutes: '',\r\n seconds: '',\r\n calc: parseInt(data[user].totalTimer) / 3600,\r\n })\r\n dataUsers = {\r\n ...dataUsers,\r\n [user]: userData\r\n }\r\n\r\n }\r\n )\r\n let total_diff = total_time\r\n let total_diffText = ``\r\n if (total_time < 60) {\r\n total_seconds = total_diff\r\n total_diffText = `${total_diff} ${translate('$__seconds', 1)}`\r\n } else if (total_time > 3600) {\r\n total_hours = Math.trunc(total_diff / 3600)\r\n total_diff = total_diff - (total_hours * 3600)\r\n total_minutes = Math.trunc(total_diff / 60) > 0 ? Math.trunc(total_diff / 60) : 0\r\n total_diff = total_diff - (total_minutes * 60)\r\n total_seconds = total_diff > 0 ? total_diff : 0\r\n total_diffText = `${total_hours} ${translate('$__hour', 1)}${total_hours > 1 ? 's' : ''} ${total_minutes} ${translate('$__minutes', 1)} ${total_seconds} ${translate('$__seconds', 1)}`\r\n } else {\r\n total_minutes = Math.trunc(total_diff / 60) > 0 ? Math.trunc(total_diff / 60) : 0\r\n total_diff = total_diff - (total_minutes * 60)\r\n total_seconds = total_diff > 0 ? total_diff : 0\r\n total_diffText = `${total_minutes} ${translate('$__minutes', 1)} ${total_seconds} ${translate('$__seconds', 1)}`\r\n }\r\n\r\n dataSet1.push({\r\n name: '',\r\n type: '',\r\n card: '',\r\n description: '',\r\n iniData: '',\r\n finalData: '',\r\n total: total_diffText,\r\n hours: '',\r\n minutes: '',\r\n seconds: '',\r\n calc: ''\r\n })\r\n }\r\n\r\n if (dataSet1.length === 0)\r\n return (\r\n <div>Sem informações para exportar</div>\r\n )\r\n\r\n\r\n return (\r\n <ExcelFile\r\n filename={`${moment(new Date()).tz('America/Sao_Paulo').format('YYYY-MM-DDTHHMM')}_timeSheet`}\r\n element={\r\n <CustomButton\r\n title={translate(\"$__export\")}\r\n text={translate(\"$__export\")}\r\n icon={\"file_download\"}\r\n size={\"25px\"}\r\n />\r\n }\r\n >\r\n <ExcelSheet data={dataSet1} name=\"timeSheet\">\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__name', 1)}`} value=\"name\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__type', 1)}`} value=\"type\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__card', 1)}`} value=\"card\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__description', 1)}`} value=\"description\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__initialTimer', 1)}`} value=\"iniData\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__finalTimer', 1)}`} value=\"finalData\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__totalTime', 1)}`} value=\"total\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__hours', 1)}`} value=\"hours\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__minutes', 1)}`} value=\"minutes\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__seconds', 1)}`} value=\"seconds\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__valueForCalculation', 1)}`} value=\"calc\" />\r\n </ExcelSheet>\r\n {dataUsers && Object.keys(dataUsers).length > 0 && Object.keys(dataUsers).map((ds, i) => {\r\n let userName = dataUsers[ds][0].name\r\n return (\r\n <ExcelSheet data={dataUsers[ds]} name={userName} key={ds}>\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__name', 1)}`} value=\"name\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__type', 1)}`} value=\"type\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__card', 1)}`} value=\"card\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__description', 1)}`} value=\"description\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__initialTimer', 1)}`} value=\"iniData\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__finalTimer', 1)}`} value=\"finalData\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__totalTime', 1)}`} value=\"total\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__hours', 1)}`} value=\"hours\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__minutes', 1)}`} value=\"minutes\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__seconds', 1)}`} value=\"seconds\" />\r\n <ExcelColumn style={{ alignment: { wrapText: true } }} label={`${translate('$__valueForCalculation', 1)}`} value=\"calc\" />\r\n </ExcelSheet>\r\n )\r\n })}\r\n </ExcelFile>\r\n )\r\n}\r\nexport default ExportAll","/*!\r\n\r\n=========================================================\r\n* Material Dashboard PRO React - v1.8.0\r\n=========================================================\r\n\r\n* Product Page: https://www.creative-tim.com/product/material-dashboard-pro-react\r\n* Copyright 2019 Creative Tim (https://www.creative-tim.com)\r\n\r\n* Coded by Creative Tim\r\n\r\n=========================================================\r\n\r\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\n*/\r\n\r\n// ##############################\r\n// // // Function that converts from hex color to rgb color\r\n// // // Example: input = #9c27b0 => output = 156, 39, 176\r\n// // // Example: input = 9c27b0 => output = 156, 39, 176\r\n// // // Example: input = #999 => output = 153, 153, 153\r\n// // // Example: input = 999 => output = 153, 153, 153\r\n// #############################\r\nconst hexToRgb = input => {\r\n input = input + \"\";\r\n input = input.replace(\"#\", \"\");\r\n let hexRegex = /[0-9A-Fa-f]/g;\r\n if (!hexRegex.test(input) || (input.length !== 3 && input.length !== 6)) {\r\n throw new Error(\"input is not a valid hex color.\");\r\n }\r\n if (input.length === 3) {\r\n let first = input[0];\r\n let second = input[1];\r\n let last = input[2];\r\n input = first + first + second + second + last + last;\r\n }\r\n input = input.toUpperCase(input);\r\n let first = input[0] + input[1];\r\n let second = input[2] + input[3];\r\n let last = input[4] + input[5];\r\n return (\r\n parseInt(first, 16) +\r\n \", \" +\r\n parseInt(second, 16) +\r\n \", \" +\r\n parseInt(last, 16)\r\n );\r\n};\r\n\r\n// ##############################\r\n// // // Variables - Styles that are used on more than one component\r\n// #############################\r\n\r\nconst drawerWidth = 260;\r\n\r\nconst drawerMiniWidth = 60;\r\n\r\nconst transition = {\r\n transition: \"all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)\"\r\n};\r\n\r\nconst containerFluid = {\r\n //paddingRight: \"15px\",\r\n //paddingLeft: \"15px\",\r\n marginRight: \"auto\",\r\n marginLeft: \"auto\",\r\n \"&:before,&:after\": {\r\n display: \"table\",\r\n content: '\" \"'\r\n },\r\n \"&:after\": {\r\n clear: \"both\"\r\n }\r\n};\r\n\r\nconst container = {\r\n paddingRight: \"15px\",\r\n paddingLeft: \"15px\",\r\n marginRight: \"auto\",\r\n marginLeft: \"auto\",\r\n \"@media (min-width: 768px)\": {\r\n width: \"750px\"\r\n },\r\n \"@media (min-width: 992px)\": {\r\n width: \"970px\"\r\n },\r\n \"@media (min-width: 1200px)\": {\r\n width: \"1170px\"\r\n },\r\n \"&:before,&:after\": {\r\n display: \"table\",\r\n content: '\" \"'\r\n },\r\n \"&:after\": {\r\n clear: \"both\"\r\n },\r\n \"&::-webkit-scrollbar\": {\r\n width: '4px',\r\n height: '4px',\r\n },\r\n \"&::-webkit-scrollbar-button\": {\r\n width: '0px',\r\n height: '0px',\r\n },\r\n \"&::-webkit-scrollbar-thumb\": {\r\n background: '#e1e1e1',\r\n border: '0px none #ffffff',\r\n borderRadius: '27px',\r\n },\r\n \"&::-webkit-scrollbar-thumb:hover\": {\r\n background: '#ffffff',\r\n },\r\n \"&::-webkit-scrollbar-thumb:active\": {\r\n background: '#000000',\r\n },\r\n \"&::-webkit-scrollbar-track\": {\r\n background: '#666666',\r\n border: '0px none #ffffff',\r\n borderRadius: '20px',\r\n },\r\n \"&::-webkit-scrollbar-track:hover\": {\r\n background: '#666666',\r\n },\r\n \"&::-webkit-scrollbar-track:active\": {\r\n background: '#333333',\r\n },\r\n \"&::-webkit-scrollbar-corner\": {\r\n background: 'transparent',\r\n }\r\n};\r\n\r\n\r\nconst defaultFont = {\r\n fontFamily: '\"Soleto\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n fontWeight: \"300\",\r\n lineHeight: \"1.5em\"\r\n};\r\n\r\nconst primaryColor = [\"#9c27b0\", \"#ab47bc\", \"#8e24aa\", \"#af2cc5\", \"#7b1fa2\"];\r\nconst warningColor = [\r\n \"#ff9800\",\r\n \"#ffa726\",\r\n \"#fb8c00\",\r\n \"#ffa21a\",\r\n \"#f57c00\",\r\n \"#faf2cc\",\r\n \"#fcf8e3\"\r\n];\r\nconst dangerColor = [\r\n \"#f44336\",\r\n \"#ef5350\",\r\n \"#e53935\",\r\n \"#f55a4e\",\r\n \"#d32f2f\",\r\n \"#ebcccc\",\r\n \"#f2dede\"\r\n];\r\nconst successColor = [\r\n \"#4caf50\",\r\n \"#66bb6a\",\r\n \"#43a047\",\r\n \"#5cb860\",\r\n \"#388e3c\",\r\n \"#d0e9c6\",\r\n \"#dff0d8\"\r\n];\r\nconst infoColor = [\r\n \"#00acc1\",\r\n \"#26c6da\",\r\n \"#00acc1\",\r\n \"#00d3ee\",\r\n \"#0097a7\",\r\n \"#c4e3f3\",\r\n \"#d9edf7\"\r\n];\r\nconst roseColor = [\"#e91e63\", \"#ec407a\", \"#d81b60\", \"#eb3573\", \"#c2185b\"];\r\nconst grayColor = [\r\n \"#999\",\r\n \"#777\",\r\n \"#3C4858\",\r\n \"#AAAAAA\",\r\n \"#D2D2D2\",\r\n \"#DDD\",\r\n \"#555555\",\r\n \"#333\",\r\n \"#eee\",\r\n \"#ccc\",\r\n \"#e4e4e4\",\r\n \"#E5E5E5\",\r\n \"#f9f9f9\",\r\n \"#f5f5f5\",\r\n \"#495057\",\r\n \"#e7e7e7\",\r\n \"#212121\",\r\n \"#c8c8c8\",\r\n \"#505050\"\r\n];\r\nconst blackColor = \"#000\";\r\nconst whiteColor = \"#FFF\";\r\nconst twitterColor = \"#55acee\";\r\nconst facebookColor = \"#3b5998\";\r\nconst googleColor = \"#dd4b39\";\r\nconst linkedinColor = \"#0976b4\";\r\nconst pinterestColor = \"#cc2127\";\r\nconst youtubeColor = \"#e52d27\";\r\nconst tumblrColor = \"#35465c\";\r\nconst behanceColor = \"#1769ff\";\r\nconst dribbbleColor = \"#ea4c89\";\r\nconst redditColor = \"#ff4500\";\r\n\r\nconst boxShadow = {\r\n boxShadow:\r\n \"0 10px 30px -12px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.42), 0 4px 25px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\"\r\n};\r\n\r\nconst primaryBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \",.4)\"\r\n};\r\nconst infoBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.4)\"\r\n};\r\nconst successBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.4)\"\r\n};\r\nconst warningBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.4)\"\r\n};\r\nconst dangerBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.4)\"\r\n};\r\nconst roseBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \",.4)\"\r\n};\r\n\r\nconst warningCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + warningColor[1] + \", \" + warningColor[2] + \")\",\r\n ...warningBoxShadow\r\n};\r\nconst successCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + successColor[1] + \", \" + successColor[2] + \")\",\r\n ...successBoxShadow\r\n};\r\nconst dangerCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + dangerColor[1] + \", \" + dangerColor[2] + \")\",\r\n ...dangerBoxShadow\r\n};\r\nconst infoCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + infoColor[1] + \", \" + infoColor[2] + \")\",\r\n ...infoBoxShadow\r\n};\r\nconst primaryCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + primaryColor[1] + \", \" + primaryColor[2] + \")\",\r\n ...primaryBoxShadow\r\n};\r\nconst roseCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + roseColor[1] + \", \" + roseColor[2] + \")\",\r\n ...roseBoxShadow\r\n};\r\nconst customCardHeader = {\r\n\r\n};\r\n\r\nconst card = {\r\n display: \"inline-block\",\r\n position: \"relative\",\r\n width: \"100%\",\r\n margin: \"25px 0\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: whiteColor\r\n};\r\n\r\nconst cardActions = {\r\n margin: \"0 20px 10px\",\r\n paddingTop: \"10px\",\r\n borderTop: \"1px solid \" + grayColor[8],\r\n height: \"auto\",\r\n ...defaultFont\r\n};\r\n\r\nconst cardHeader = {\r\n margin: \"-20px 15px 0\",\r\n borderRadius: \"3px\",\r\n padding: \"15px\"\r\n};\r\n\r\nconst defaultBoxShadow = {\r\n border: \"0\",\r\n borderRadius: \"3px\",\r\n boxShadow:\r\n \"0 10px 20px -12px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.42), 0 3px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\",\r\n padding: \"10px 0\",\r\n transition: \"all 150ms ease 0s\"\r\n};\r\n\r\nconst tooltip = {\r\n padding: \"10px 15px\",\r\n minWidth: \"130px\",\r\n color: whiteColor,\r\n lineHeight: \"1.7em\",\r\n background: \"rgba(\" + hexToRgb(grayColor[6]) + \",0.9)\",\r\n border: \"none\",\r\n borderRadius: \"3px\",\r\n opacity: \"1!important\",\r\n boxShadow:\r\n \"0 8px 10px 1px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 3px 14px 2px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 5px 5px -3px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\",\r\n maxWidth: \"200px\",\r\n textAlign: \"center\",\r\n fontFamily: '\"Helvetica Neue\",Helvetica,Arial,sans-serif',\r\n fontSize: \"12px\",\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n textShadow: \"none\",\r\n textTransform: \"none\",\r\n letterSpacing: \"normal\",\r\n wordBreak: \"normal\",\r\n wordSpacing: \"normal\",\r\n wordWrap: \"normal\",\r\n whiteSpace: \"normal\",\r\n lineBreak: \"auto\"\r\n};\r\n\r\nconst title = {\r\n color: grayColor[2],\r\n textDecoration: \"none\",\r\n fontWeight: \"300\",\r\n marginTop: \"30px\",\r\n marginBottom: \"25px\",\r\n minHeight: \"32px\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n \"& small\": {\r\n color: grayColor[1],\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n};\r\n\r\nconst cardTitle = {\r\n ...title,\r\n marginTop: \"0\",\r\n marginBottom: \"3px\",\r\n minHeight: \"auto\",\r\n \"& a\": {\r\n ...title,\r\n marginTop: \".625rem\",\r\n marginBottom: \"0.75rem\",\r\n minHeight: \"auto\"\r\n }\r\n};\r\n\r\nconst cardSubtitle = {\r\n marginTop: \"-.375rem\"\r\n};\r\n\r\nconst cardLink = {\r\n \"& + $cardLink\": {\r\n marginLeft: \"1.25rem\"\r\n }\r\n};\r\n\r\nexport {\r\n hexToRgb,\r\n //variables\r\n drawerWidth,\r\n drawerMiniWidth,\r\n transition,\r\n container,\r\n containerFluid,\r\n boxShadow,\r\n card,\r\n defaultFont,\r\n primaryColor,\r\n warningColor,\r\n dangerColor,\r\n successColor,\r\n infoColor,\r\n roseColor,\r\n grayColor,\r\n blackColor,\r\n whiteColor,\r\n twitterColor,\r\n facebookColor,\r\n googleColor,\r\n linkedinColor,\r\n pinterestColor,\r\n youtubeColor,\r\n tumblrColor,\r\n behanceColor,\r\n dribbbleColor,\r\n redditColor,\r\n primaryBoxShadow,\r\n infoBoxShadow,\r\n successBoxShadow,\r\n warningBoxShadow,\r\n dangerBoxShadow,\r\n roseBoxShadow,\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader,\r\n customCardHeader,\r\n cardActions,\r\n cardHeader,\r\n defaultBoxShadow,\r\n tooltip,\r\n title,\r\n cardTitle,\r\n cardSubtitle,\r\n cardLink\r\n};\r\n","//ICONS\r\nimport GuidelineD from \"assets/icons/GuidelineC\";\r\nimport GuidelineC from \"assets/icons/GuidelineD\";\r\nimport GuidelineR from \"assets/icons/GuidelineE\";\r\nimport GuidelineE from \"assets/icons/GuidelineR\";\r\nimport MicrosoftWord from \"assets/icons/microsoftWord.svg\";\r\nimport MicrosoftExcel from \"assets/icons/microsoftExcel.svg\";\r\nimport MicrosoftPowerpoint from \"assets/icons/microsoftPowerpoint.svg\";\r\nimport SwotIcon from \"assets/icons/SWOT\";\r\nimport MatrixIcon from \"assets/icons/Matrix.js\"\r\nimport PDF from \"assets/icons/pdf.svg\";\r\nimport BrightAndConnectedIcon from \"assets/icons/BrigthAndConnected\";\r\nimport packageJson from '../../package.json';\r\n\r\n\r\nconst initialState = {\r\n version: packageJson.version,\r\n swot: [\r\n { value: 'strength', label: '$__strength', icon: 'arrow_upward' },\r\n { value: 'weakness', label: '$__weakness', icon: 'arrow_downward' },\r\n { value: 'opportunity', label: '$__opportunity', icon: 'trending_up' },\r\n { value: 'threat', label: '$__threat', icon: 'trending_down' }\r\n ],\r\n languages: [\r\n { value: 'pt-BR', label: '$__pt-BR' },\r\n { value: 'en-US', label: '$__en-US' },\r\n { value: 'es-ES', label: '$__es-ES' },\r\n ],\r\n planType: [\r\n {\r\n label: \"$__strategic\",\r\n value: null,\r\n swot: true,\r\n overview: true,\r\n description: \"$__strategicPlanDescription\"\r\n },\r\n {\r\n label: \"$__flowOrProcess\", //fluxos / processos\r\n value: \"operational\",\r\n overview: false,\r\n swot: false,\r\n kanban: true,\r\n description: \"$__flowOrProcesPlanDescription\"\r\n },\r\n {\r\n label: \"$__tacticAndOrOperational\",\r\n value: \"flow\",\r\n swot: false,\r\n kanban: false,\r\n overview: true,\r\n description: \"$__operationalPlanDescription\"\r\n },\r\n {\r\n label: \"$__crm\",\r\n value: \"crm\",\r\n swot: false,\r\n kanban: true,\r\n overview: false,\r\n description: \"$__crmPlanDescription\"\r\n }\r\n ],\r\n status: [\r\n { value: 'notStarted', label: '$__notStarted', icon: 'query_builder', color: '#929497' },\r\n { value: 'inProgress', label: '$__inProgress', icon: 'play_circle_outline', color: '#011E41' },\r\n { value: 'awaitAction', label: '$__await', icon: 'hourglass_top', color: 'pink' },\r\n { value: 'paused', label: '$__paused', icon: 'pause_presentation', color: '#EBA900' },\r\n {\r\n value: 'completed', label: '$__completed', icon: 'verified', color: '#5A7F71', props: {\r\n periodFilter: true\r\n }\r\n }\r\n ],\r\n currency: [\r\n { value: 'BRL', label: '$__currencyBRL', symbol: 'R$' },\r\n { value: 'USD', label: '$__currencyUSD', symbol: '$' },\r\n { value: 'EUR', label: '$__currencyEUR', symbol: '€' },\r\n // { value: 'CLP', label: '$__currencyCLP', symbol: '$' },\r\n // { value: 'AUD', label: '$__currencyAUD', symbol: '$' },\r\n // { value: 'NZD', label: '$__currencyNZD', symbol: '$' },\r\n // { value: 'CNY', label: '$__currencyCNY', symbol: '¥' },\r\n // { value: 'PYG', label: '$__currencyPYG', symbol: 'Gs' },\r\n // { value: 'RUB', label: '$__currencyRUB', symbol: '₽' }\r\n ],\r\n expiresIn: [\r\n // { value: '48h', label: '$__48hours' },\r\n // { value: '24h', label: '$__24hours' },\r\n { value: '12h', label: '$__12hours' },\r\n { value: null, label: '$__6hours' },\r\n { value: '3h', label: '$__3hours' },\r\n { value: '1h', label: '$__1hour' },\r\n ],\r\n passwordExpire: [\r\n { value: '30', label: '$__30days' },\r\n { value: '60', label: '$__60days' },\r\n { value: '90', label: '$__90days' },\r\n ],\r\n plans: [\r\n {\r\n value: 'p0', label: '$__saasPlanName0', settings: {\r\n space: 5368709120,\r\n admins: 1,\r\n price: 0,\r\n onBoarding: false,\r\n brightAndConnected: {\r\n feed: false,\r\n feedDays: false,\r\n radarLimit: 25,\r\n // radarDays: 10,\r\n insight: false,\r\n },\r\n plan: {\r\n activeLimit: 2,\r\n planClient: false,\r\n clientAdmin: false,\r\n machenPlan: false,\r\n templates: false,\r\n guidelineLimit: 2,\r\n feedLimit: 4,\r\n radarLimit: 25,\r\n insightLimit: 25,\r\n },\r\n task: {\r\n activeLimit: 25,\r\n filter: false,\r\n kpi: false,\r\n timeSheet: false,\r\n recurrence: false\r\n },\r\n files: {\r\n uploadLimit: 26214400,\r\n },\r\n chat: {\r\n groupUsersLimit: 7,\r\n },\r\n support: {\r\n email: true,\r\n priority: 0,\r\n chat: false,\r\n },\r\n mobile: {\r\n\r\n },\r\n addOn: {\r\n learneng: false,\r\n denkenDiscount: 0,\r\n }\r\n }\r\n },\r\n {\r\n value: 'p1', label: '$__saasPlanName1', settings: {\r\n space: 26843545600,\r\n admins: 1,\r\n price: 149.00,\r\n onBoarding: 0,\r\n whiteLabel: false,\r\n brightAndConnected: {\r\n feed: true,\r\n feedDays: 15,\r\n radarLimit: 0,\r\n // radarDays: 90,\r\n insight: true,\r\n },\r\n plan: {\r\n planLimit: 0,\r\n planClient: true,\r\n clientAdmin: 1,\r\n machenPlan: true,\r\n templates: true,\r\n guidelineLimit: 0,\r\n feedLimit: 0,\r\n radarLimit: 0,\r\n insightLimit: 0,\r\n },\r\n task: {\r\n activeLimit: 0,\r\n filter: true,\r\n kpi: true,\r\n timeSheet: true,\r\n recurrence: true\r\n },\r\n files: {\r\n uploadLimit: 104857600,\r\n },\r\n chat: {\r\n groupLimit: 0,\r\n },\r\n support: {\r\n email: true,\r\n priority: 0,\r\n chat: true,\r\n },\r\n mobile: {\r\n\r\n },\r\n addOn: {\r\n learneng: true,\r\n denkenDiscount: 5,\r\n }\r\n }\r\n },\r\n {\r\n value: 'p2', label: '$__saasPlanName2', settings: {\r\n space: 53687091200,\r\n admins: 9,\r\n price: 890.00,\r\n onBoarding: 4990.00,\r\n brightAndConnected: {\r\n feed: true,\r\n feedDays: 0,\r\n radarLimit: 0,\r\n // radarDays: 90,\r\n insight: true,\r\n },\r\n plan: {\r\n planLimit: 0,\r\n planClient: true,\r\n clientAdmin: 2,\r\n machenPlan: true,\r\n templates: true,\r\n guidelineLimit: 0,\r\n feedLimit: 0,\r\n radarLimit: 0,\r\n insightLimit: 0,\r\n },\r\n task: {\r\n activeLimit: 0,\r\n filter: true,\r\n kpi: true,\r\n timeSheet: true,\r\n recurrence: true\r\n },\r\n files: {\r\n uploadLimit: 314572800,\r\n },\r\n chat: {\r\n groupLimit: 0,\r\n },\r\n support: {\r\n email: true,\r\n priority: 0,\r\n chat: true,\r\n },\r\n mobile: {\r\n\r\n },\r\n addOn: {\r\n learneng: true,\r\n denkenDiscount: 0,\r\n whiteLabel: false,\r\n }\r\n }\r\n },\r\n {\r\n value: 'p3', label: '$__saasPlanName3', settings: {\r\n space: 107374182400,\r\n admins: 19,\r\n price: 1790.00,\r\n onBoarding: 6990.00,\r\n brightAndConnected: {\r\n feed: true,\r\n feedDays: 0,\r\n radarLimit: 0,\r\n // radarDays: 90,\r\n insight: true,\r\n },\r\n plan: {\r\n planLimit: 0,\r\n planClient: true,\r\n clientAdmin: 3,\r\n machenPlan: true,\r\n templates: true,\r\n guidelineLimit: 0,\r\n feedLimit: 0,\r\n radarLimit: 0,\r\n insightLimit: 0,\r\n },\r\n task: {\r\n activeLimit: 0,\r\n filter: true,\r\n kpi: true,\r\n timeSheet: true,\r\n recurrence: true\r\n },\r\n files: {\r\n uploadLimit: 314572800,\r\n },\r\n chat: {\r\n groupLimit: 0,\r\n },\r\n support: {\r\n email: true,\r\n priority: 0,\r\n chat: true,\r\n },\r\n mobile: {\r\n\r\n },\r\n addOn: {\r\n learneng: true,\r\n denkenDiscount: 0,\r\n whiteLabel: false,\r\n }\r\n }\r\n },\r\n {\r\n value: 'p4', label: '$__saasPlanName4', settings: {\r\n space: 214748364800,\r\n admins: 49,\r\n price: 3990.00,\r\n onBoarding: 10990.00,\r\n brightAndConnected: {\r\n feed: true,\r\n feedDays: 0,\r\n radarLimit: 0,\r\n // radarDays: 90,\r\n insight: true,\r\n },\r\n plan: {\r\n planLimit: 0,\r\n planClient: true,\r\n clientAdmin: 3,\r\n machenPlan: true,\r\n templates: true,\r\n guidelineLimit: 0,\r\n feedLimit: 0,\r\n radarLimit: 0,\r\n insightLimit: 0,\r\n },\r\n task: {\r\n activeLimit: 0,\r\n filter: true,\r\n kpi: true,\r\n timeSheet: true,\r\n recurrence: true\r\n },\r\n files: {\r\n uploadLimit: 314572800,\r\n },\r\n chat: {\r\n groupLimit: 0,\r\n },\r\n support: {\r\n email: true,\r\n priority: 0,\r\n chat: true,\r\n },\r\n mobile: {\r\n\r\n },\r\n addOn: {\r\n learneng: true,\r\n denkenDiscount: 0,\r\n whiteLabel: false,\r\n }\r\n }\r\n },\r\n {\r\n value: 'p5', label: '$__saasPlanName5', settings: {\r\n space: 0,\r\n admins: 0,\r\n price: 0,\r\n onBoarding: 0,\r\n brightAndConnected: {\r\n feed: true,\r\n feedDays: 0,\r\n radarLimit: 0,\r\n // radarDays: 90,\r\n insight: true,\r\n },\r\n plan: {\r\n planLimit: 0,\r\n planClient: true,\r\n clientAdmin: 3,\r\n machenPlan: true,\r\n templates: true,\r\n guidelineLimit: 0,\r\n feedLimit: 0,\r\n radarLimit: 0,\r\n insightLimit: 0,\r\n },\r\n task: {\r\n activeLimit: 0,\r\n filter: true,\r\n kpi: true,\r\n timeSheet: true,\r\n recurrence: true\r\n },\r\n files: {\r\n uploadLimit: 314572800,\r\n },\r\n chat: {\r\n groupLimit: 0,\r\n },\r\n support: {\r\n email: true,\r\n priority: 0,\r\n chat: true,\r\n },\r\n mobile: {\r\n\r\n },\r\n addOn: {\r\n learneng: true,\r\n denkenDiscount: 0,\r\n whiteLabel: false,\r\n },\r\n }\r\n },\r\n ],\r\n type: [\r\n { value: 'plan', label: '$__plan', icon: 'view_comfy', color: null, calendar: false },\r\n { value: 'strength', label: '$__strength', icon: 'arrow_upward', color: null, calendar: false },\r\n { value: 'weakness', label: '$__weakness', icon: 'arrow_downward', color: null, calendar: false },\r\n { value: 'opportunity', label: '$__opportunity', icon: 'trending_up', color: null, calendar: false },\r\n { value: 'threat', label: '$__threat', icon: 'trending_down', color: null, calendar: false },\r\n { value: 'guideline', label: '$__guideline', icon: MatrixIcon, color: null, calendar: true },\r\n { value: 'guidelineD', label: '$__guidelineD', icon: GuidelineD, color: null, calendar: true },\r\n { value: 'guidelineR', label: '$__guidelineR', icon: GuidelineR, color: null, calendar: true },\r\n { value: 'guidelineC', label: '$__guidelineC', icon: GuidelineC, color: null, calendar: true },\r\n { value: 'guidelineE', label: '$__guidelineE', icon: GuidelineE, color: null, calendar: true },\r\n { value: 'objective', label: '$__objective', icon: 'gps_fixed', color: null, calendar: true },\r\n { value: 'goal', label: '$__goal', icon: 'flag', color: null, calendar: true },\r\n { value: 'iniciative', label: '$__iniciative', icon: 'play_arrow', color: null, calendar: true },\r\n { value: 'task', label: '$__task', icon: 'fact_check', color: null, calendar: true },\r\n { value: 'meeting', label: '$__meeting', icon: 'meeting_room', color: null, calendar: true },\r\n { value: 'myTask', label: '$__myTask', icon: 'person_pin', color: null, calendar: true },\r\n { value: 'link', label: '$__radar', icon: 'public', color: null, calendar: true },\r\n { value: 'insight', label: '$__insight', icon: BrightAndConnectedIcon, color: null, calendar: true },\r\n ],\r\n dateStatus: [\r\n { value: 'notStarted', label: '$__notStarted', icon: 'query_builder' },\r\n { value: 'inProgress', label: '$__inProgress', icon: 'play_circle_outline' },\r\n ],\r\n priority: [\r\n { value: null, label: '$__none', color: '#c6c6c6' },\r\n { value: 'normal', label: '$__normal', color: '#c6c6c6' },\r\n { value: 'low', label: '$__low', color: '#faba00' },\r\n { value: 'medium', label: '$__medium', color: '#ff7c32' },\r\n { value: 'high', label: '$__high', color: '#ff0000' }\r\n ],\r\n automation: [\r\n { value: 'doNotChange', label: '$__doNotChange' },\r\n { value: 'replace', label: '$__replaceWith' },\r\n { value: 'add', label: '$__add' },\r\n { value: 'remove', label: '$__remove' },\r\n { value: 'removeAll', label: '$__removeAll' },\r\n ],\r\n fileExtensions: [\r\n { ext: ['jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'png', 'webp', 'svg', 'eps'], icon: false, title: 'image', viewer: 'img' },\r\n { ext: ['txt'], icon: 'description', title: 'Text', viewer: 'text' },\r\n { ext: ['doc', 'docx', 'dot', 'doc', 'dotx'], icon: MicrosoftWord, title: 'Microsoft Word', viewer: 'microsoft' },\r\n { ext: ['xls', 'xlt', 'ooxml', 'xlsx'], icon: MicrosoftExcel, title: 'Microsoft Excel', viewer: 'microsoft' },\r\n { ext: ['ppt', 'pptx', 'ppsx', 'sldx'], icon: MicrosoftPowerpoint, title: 'Microsoft PowerPoint', viewer: 'microsoft' },\r\n { ext: ['pdf'], icon: PDF, title: 'PDF', viewer: 'pdf' },\r\n { ext: ['aac', 'wav', 'ts', 'smf', 'ogg', 'mp3', '3gp', 'caf', 'm4a'], icon: 'audiotrack', title: 'audioFile', viewer: 'audio' },\r\n { ext: ['avi', 'mov', 'mp4', '3gpp'], icon: 'movie', title: 'movieFile', viewer: 'movie' }\r\n ],\r\n access: [\r\n {\r\n name: '$__admin',\r\n permissions: {\r\n create: true,\r\n read: true,\r\n run: true,\r\n update: true,\r\n delete: true,\r\n moderate: true,\r\n levels: 0 //0=infinito\r\n }\r\n },\r\n {\r\n name: '$__manager',\r\n permissions: {\r\n create: true,\r\n read: true,\r\n run: true,\r\n update: true,\r\n delete: true,\r\n moderate: true,\r\n levels: 0 //0=infinito\r\n }\r\n },\r\n {\r\n name: '$__user',\r\n permissions: {\r\n create: true,\r\n read: true,\r\n run: true,\r\n update: false,\r\n delete: false,\r\n moderate: false,\r\n levels: 0 //0=infinito\r\n }\r\n },\r\n {\r\n name: '$__guest',\r\n permissions: {\r\n create: false,\r\n read: true,\r\n run: true,\r\n update: false,\r\n delete: false,\r\n moderate: false,\r\n levels: 1 //0=infinito\r\n }\r\n }\r\n ],\r\n tag: [],\r\n userGroup: [],\r\n dataType: [\r\n {\r\n name: 'user',\r\n icon: 'contact_page',\r\n module: 'user',\r\n reqId: false,\r\n view: {\r\n 'c': {\r\n pages: ['users'],\r\n access: ['userAdmin', 'userModerate', 'master']\r\n },\r\n },\r\n hash: null,\r\n db: 'users',\r\n iniModule: 'userEdit',\r\n modules: ['resumeUser', 'userEdit', 'access', 'twoFactor', 'cards', 'mobile', 'settings', 'delete'],\r\n requireFields: ['name', 'email'],\r\n hideFields: ['independentAccount'],\r\n disabledFields: [],\r\n data: {\r\n type: \"user\"\r\n },\r\n sharedIn: {\r\n attach: [],\r\n copy: [],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'user',\r\n icon: 'contact_page',\r\n module: 'user',\r\n reqId: false,\r\n view: {\r\n 'c': {\r\n pages: ['units'],\r\n access: ['userAdmin', 'userModerate', 'master']\r\n },\r\n },\r\n hash: true,\r\n db: 'users',\r\n iniModule: 'userEdit',\r\n modules: ['resumeUser', 'userEdit', 'access', 'twoFactor', 'cards', 'mobile', 'settings', 'delete'],\r\n requireFields: ['name', 'email'],\r\n hideFields: ['independentAccount'],\r\n disabledFields: [],\r\n data: {\r\n type: \"user\"\r\n },\r\n sharedIn: {\r\n attach: [],\r\n copy: [],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'departments',\r\n icon: 'groups',\r\n module: 'user',\r\n reqId: false,\r\n view: {\r\n 'c': {\r\n pages: ['units'],\r\n access: ['userAdmin', 'userModerate'],\r\n noId: true\r\n },\r\n },\r\n hash: null,\r\n db: 'cards',\r\n iniModule: 'userEdit',\r\n modules: ['userEdit', 'delete', 'settings'],\r\n requireFields: ['name'],\r\n disabledFields: ['email'],\r\n hideFields: ['independentAccount'],\r\n data: {\r\n type: \"group\"\r\n },\r\n },\r\n {\r\n name: 'client',\r\n title: 'unity',\r\n icon: 'business',\r\n module: 'user',\r\n reqId: false,\r\n view: {\r\n 'c': {\r\n pages: ['units'],\r\n access: ['userAdmin', 'userModerate'],\r\n noId: true\r\n },\r\n },\r\n hash: null,\r\n db: 'cards',\r\n iniModule: 'userEdit',\r\n modules: ['userEdit', 'delete', 'settings'],\r\n requireFields: ['name'],\r\n disabledFields: ['email'],\r\n hideFields: [],\r\n data: {\r\n type: \"client\"\r\n },\r\n },\r\n // {\r\n // name: 'unity',\r\n // icon: 'badge',\r\n // module: 'user',\r\n // reqId: false,\r\n // view: {\r\n // 'c': {\r\n // pages: ['units'],\r\n // access: ['master'],\r\n // noId: true\r\n // },\r\n // },\r\n // hash: null,\r\n // db: 'users',\r\n // iniModule: 'userEdit',\r\n // modules: ['userEdit', 'delete', 'settings'],\r\n // requireFields: ['name'],\r\n // disabledFields: ['email'],\r\n // data: {\r\n // type: \"client\"\r\n // },\r\n // },\r\n {\r\n name: 'step',\r\n icon: '123',\r\n module: 'step',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'columnEdit',\r\n modules: ['columnEdit', 'users', 'flow', 'forms', 'delete', 'log', 'settings'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n fieldsTitle: {\r\n name: '$__columnName',\r\n placeholder: '$__columnPlaceholder'\r\n },\r\n sharedIn: {\r\n attach: [],\r\n copy: [],\r\n shared: []\r\n }\r\n },\r\n {\r\n name: 'chatGroup',\r\n icon: 'group_work',\r\n module: 'chat',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['cardEdit', 'users', 'files', 'delete', 'log'],\r\n hideFields: ['image', 'progress', 'status', 'tags', 'deadline', 'priority', 'recurrence', 'plan'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n fieldsTitle: {\r\n name: '$__groupName',\r\n placeholder: '$__groupNamePlaceholder'\r\n },\r\n sharedIn: {\r\n attach: [],\r\n copy: [],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'feed',\r\n icon: 'rss_feed',\r\n module: 'feeds',\r\n reqId: false,\r\n view: {\r\n 'bright-and-connected': {\r\n pages: ['feeds'],\r\n },\r\n 'sp': {\r\n pages: ['bright-and-connected']\r\n }\r\n },\r\n db: 'feeds',\r\n iniModule: 'feedEdit',\r\n modules: ['resumeFeed', 'feedEdit'],\r\n disabledFields: [],\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: [],\r\n copy: ['plan', 'client'],\r\n shared: []\r\n }\r\n },\r\n {\r\n name: 'link',\r\n icon: 'public',\r\n module: 'insights',\r\n reqId: true,\r\n view: {\r\n 'bright-and-connected': {\r\n pages: ['radar']\r\n },\r\n 'sp': {\r\n pages: ['radar']\r\n }\r\n },\r\n hash: null,\r\n db: 'cards',\r\n iniModule: 'link',\r\n modules: ['resumeLink', 'cardEdit', 'checklist', 'steps', 'timeline', 'sendTo', 'log', 'users', 'files', 'timeLog', 'settings', 'delete', 'myDay'],\r\n hideFields: ['image', 'status', 'client', 'recurrence'],\r\n disabledFields: ['url'],\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan', 'client'],\r\n copy: ['plan', 'client'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'insight',\r\n icon: BrightAndConnectedIcon,\r\n module: 'insights',\r\n reqId: true,\r\n view: {\r\n 'bright-and-connected': {\r\n pages: ['insight-boards']\r\n },\r\n 'sp': {\r\n pages: ['insight-boards']\r\n }\r\n },\r\n hash: null,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resumeLink', 'cardEdit', 'checklist', 'timeline', 'sendTo', 'log', 'users', 'files', 'timeLog', 'settings', 'delete', 'myDay'],\r\n hideFields: ['image', 'status', 'client', 'recurrence'],\r\n // disabledFields: ['url'],\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan', 'client'],\r\n copy: ['plan', 'client'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'plan',\r\n icon: 'view_comfy',\r\n module: 'plan',\r\n reqId: false,\r\n view: {\r\n 'sp': {\r\n pages: ['StrategyAndPlans', 'home'],\r\n },\r\n },\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'steps', 'timeline', 'users', 'sendTo', 'log', 'files', 'timeLog', 'delete', 'settings'],\r\n hideFields: ['image', 'recurrence'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n loadChildrens: true,\r\n sharedIn: {\r\n attach: [],\r\n copy: ['client'],\r\n shared: []\r\n },\r\n fieldsTitle: {\r\n name: \"$__planName\",\r\n placeholder: \"$__setPlanName\"\r\n }\r\n }, {\r\n name: 'plan',\r\n icon: 'tips_and_updates',\r\n module: 'plan',\r\n reqId: false,\r\n view: {\r\n 'sp': {\r\n pages: ['templates'],\r\n },\r\n },\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'steps', 'templateOptions', 'steps', 'timeline', 'files', 'delete'],\r\n hideFields: ['image', 'recurrence'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n fieldsTitle: {\r\n name: \"$__planName\",\r\n placeholder: \"$__setPlanName\"\r\n },\r\n\r\n },\r\n {\r\n name: 'objective',\r\n icon: 'gps_fixed',\r\n module: 'planning',\r\n myTasks: true,\r\n reqId: true,\r\n view: {\r\n 'sp': {\r\n pages: ['objectives'],\r\n },\r\n },\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'catenation', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'budget', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'client'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n loadChildrens: true,\r\n sharedIn: {\r\n attach: [\r\n 'plan',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n ],\r\n copy: [\r\n 'plan',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n ],\r\n shared: [\r\n 'plan',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n ]\r\n }\r\n },\r\n {\r\n name: 'goal',\r\n icon: 'flag',\r\n module: 'planning',\r\n myTasks: true,\r\n reqId: true,\r\n view: {\r\n 'sp': {\r\n pages: ['goals'],\r\n },\r\n },\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'catenation', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'budget', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'client'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n loadChildrens: true,\r\n sharedIn: {\r\n attach: [\r\n 'plan',\r\n 'objective',\r\n ],\r\n copy: [\r\n 'plan',\r\n 'objective',\r\n ],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n ]\r\n }\r\n },\r\n {\r\n name: 'iniciative', //action\r\n icon: 'play_arrow',\r\n module: 'agile',\r\n myTasks: true,\r\n reqId: true,\r\n view: {\r\n 'sp': {\r\n pages: ['agile', 'actions', 'dashboard'],\r\n },\r\n 't': {\r\n pages: ['myDay', 'ourDay', 'allTasks', 'unlinkedCards', 'myTasks']\r\n },\r\n },\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'budget', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'client'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: [\r\n 'plan',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'myTask',\r\n ],\r\n copy: [\r\n 'plan',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'myTask',\r\n ],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'myTask',\r\n alias: 'task',\r\n icon: 'person_pin',\r\n module: 'myTasks',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'sendTo', 'myDay', 'client', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image'],\r\n disabledFields: [],\r\n sendTo: true,\r\n myTasks: true,\r\n // view: {\r\n // 't': {\r\n // pages: ['myDay'],\r\n // },\r\n // },\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ],\r\n copy: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'task',\r\n icon: 'fact_check',\r\n module: 'agile',\r\n myTasks: true,\r\n reqId: true,\r\n view: {\r\n 'sp': {\r\n pages: ['agile', 'actions', 'dashboard'],\r\n },\r\n 't': {\r\n pages: ['myDay', 'ourDay', 'allTasks', 'unlinkedCards', 'myTasks'],\r\n },\r\n },\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'budget', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'client'],\r\n requireFields: ['name'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: [\r\n 'plan',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'myTask',\r\n ],\r\n copy: [\r\n 'plan',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'myTask',\r\n ],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'meeting',\r\n icon: 'meeting_room',\r\n module: 'agile',\r\n myTasks: true,\r\n reqId: true,\r\n view: {\r\n 'sp': {\r\n pages: ['agile', 'actions', 'dashboard'],\r\n },\r\n 't': {\r\n pages: ['myDay', 'ourDay', 'allTasks', 'unlinkedCards', 'myTasks']\r\n },\r\n },\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'myDay', 'budget', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'client'],\r\n requireFields: ['name', 'startDate'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: [\r\n 'plan',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'myTask',\r\n ],\r\n copy: [\r\n 'plan',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'myTask',\r\n ],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'strength',\r\n icon: 'arrow_upward',\r\n module: 'swot',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'timeline', 'log', 'files', 'timeLog', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'deadline', 'progress', 'priority', 'status', 'client', 'private'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'weakness',\r\n icon: 'arrow_downward',\r\n module: 'swot',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'timeline', 'log', 'files', 'timeLog', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'deadline', 'progress', 'priority', 'status', 'client', 'private'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'opportunity',\r\n icon: 'trending_up',\r\n module: 'swot',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'timeline', 'log', 'files', 'timeLog', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'deadline', 'progress', 'priority', 'status', 'client', 'private'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'threat',\r\n icon: 'trending_down',\r\n module: 'swot',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'timeline', 'log', 'files', 'timeLog', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'deadline', 'progress', 'priority', 'status', 'client', 'private'],\r\n disabledFields: [],\r\n sendTo: true,\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'guideline',\r\n icon: MatrixIcon,\r\n module: 'matrix',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'catenation', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['client'],\r\n disabledFields: [],\r\n sendTo: true,\r\n view: {\r\n 'sp': {\r\n pages: ['guidelines', 'matrix'],\r\n },\r\n },\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'guidelineD',\r\n icon: GuidelineD,\r\n module: 'matrix',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'catenation', 'steps', 'timeline', 'kpi', 'users', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'client', 'recurrence'],\r\n disabledFields: [],\r\n sendTo: true,\r\n myTasks: true,\r\n view: {\r\n 'sp': {\r\n pages: ['matrix', 'guidelines'],\r\n },\r\n },\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'guidelineR',\r\n icon: GuidelineR,\r\n module: 'matrix',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'catenation', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'client', 'recurrence'],\r\n disabledFields: [],\r\n sendTo: true,\r\n myTasks: true,\r\n view: {\r\n 'sp': {\r\n pages: ['matrix', 'guidelines'],\r\n },\r\n },\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'guidelineE',\r\n icon: GuidelineE,\r\n module: 'matrix',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'catenation', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'client', 'recurrence'],\r\n disabledFields: [],\r\n sendTo: true,\r\n myTasks: true,\r\n view: {\r\n 'sp': {\r\n pages: ['matrix', 'guidelines'],\r\n },\r\n },\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n {\r\n name: 'guidelineC',\r\n icon: GuidelineC,\r\n module: 'matrix',\r\n reqId: true,\r\n db: 'cards',\r\n iniModule: 'cardEdit',\r\n modules: ['resume', 'cardEdit', 'checklist', 'catenation', 'steps', 'recurrence', 'timeline', 'kpi', 'users', 'myDay', 'sendTo', 'log', 'files', 'timeLog', 'settings', 'delete'],\r\n hideFields: ['image', 'imageUpload', 'client', 'recurrence'],\r\n disabledFields: [],\r\n sendTo: true,\r\n myTasks: true,\r\n view: {\r\n 'sp': {\r\n pages: ['matrix', 'guidelines'],\r\n },\r\n },\r\n data: {\r\n status: \"notStarted\"\r\n },\r\n sharedIn: {\r\n attach: ['plan'],\r\n copy: ['plan'],\r\n shared: [\r\n 'plan',\r\n 'objective',\r\n 'goal',\r\n 'iniciative',\r\n 'task',\r\n 'meeting',\r\n 'chatGroup',\r\n 'strength',\r\n 'weakness',\r\n 'opportunity',\r\n 'threat',\r\n 'guideline',\r\n 'guidelineD',\r\n 'guidelineR',\r\n 'guidelineE',\r\n 'guidelineC',\r\n 'myTask',\r\n 'user'\r\n ]\r\n }\r\n },\r\n\r\n {\r\n name: 'swot',\r\n icon: SwotIcon,\r\n db: 'cards',\r\n hash: ['matrix'],\r\n },\r\n {\r\n name: 'matrix',\r\n icon: MatrixIcon,\r\n db: 'cards',\r\n hash: ['matrix'],\r\n },\r\n ],\r\n cards: {},\r\n users: {},\r\n feeds: {},\r\n notifications: {},\r\n loaded: false,\r\n viewList: false,\r\n myTasksMenuExpanded: false,\r\n adminView: false,\r\n adminViewLoader: false,\r\n orderByTitle: true,\r\n orderByTitlePosition: 'ASC',\r\n groupByColor: false,\r\n}\r\n\r\nconst session = (state = initialState, data) => {\r\n if (data.action === 'SET_DB' && data.value) {\r\n return {\r\n ...state,\r\n ...data.value,\r\n }\r\n }\r\n else {\r\n return state\r\n }\r\n};\r\n\r\nexport default session;","//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n//FUNCTIONS\r\nimport api from \"api/\";\r\nimport apims from \"apims\";\r\nimport { upload } from \"functions/upload\";\r\nimport { cardAccessUpdate } from \"functions/cards\";\r\n\r\nexport const loadUsers = async (props, id) => {\r\n try {\r\n let reqUsers = await apims.post(`/M_User_List_V3`, { id: id })\r\n if (reqUsers && reqUsers.data) {\r\n let users = {}\r\n reqUsers.data.map(async (a, i) => {\r\n users = {\r\n ...users,\r\n [a.data._id]: {\r\n ...reduxStore.getState().db.users && reduxStore.getState().db.users[a.data._id] ? reduxStore.getState().db.users[a.data._id] : {},\r\n ...a.data,\r\n ...a.access ? { _access: JSON.parse(a.access) } : {},\r\n ...a._safety ? { _safety: a._safety } : {},\r\n ...a._token ? { _token: { _id: a._token } } : {},\r\n ...a.groups && a.groups.filter(t => t.value).length > 0 ? { groups: a.groups } : {},\r\n ...a.tags && a.tags.filter(t => t.value).length > 0 ? { tags: a.tags } : {},\r\n ...a._parent && a._parent !== reduxStore.getState().session.account ? { _parent: a._parent } : {},\r\n }\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n users: {\r\n ...reduxStore.getState().db.users,\r\n ...users,\r\n },\r\n })\r\n return true\r\n }\r\n } catch (e) {\r\n console.group('Layout-ReqUsers::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n }\r\n}\r\n\r\nexport const loadUsersV2 = async (props, id, min) => {\r\n try {\r\n let reqUsers = await apims.post(`/UsersList${min ? `_min` : ``}`, { id: id })\r\n if (reqUsers && reqUsers.data) {\r\n let users = {}\r\n reqUsers.data.map(async (a, i) => {\r\n users = {\r\n ...users,\r\n [a.data._id]: {\r\n ...reduxStore.getState().db.users && reduxStore.getState().db.users[a.data._id] ? reduxStore.getState().db.users[a.data._id] : {},\r\n ...a.data,\r\n ...a.data.features ? { features: JSON.parse(a.data.features) } : {},\r\n ...a.access ? { _access: JSON.parse(a.access) } : {},\r\n ...a._safety ? { _safety: a._safety } : {},\r\n ...a._token ? { _token: { _id: a._token } } : {},\r\n ...a.groups && a.groups.filter(t => t.value).length > 0 ? { groups: a.groups } : {},\r\n ...a.tags && a.tags.filter(t => t.value).length > 0 ? { tags: a.tags } : {},\r\n ...a._parent && a._parent !== reduxStore.getState().session.account ? { _parent: a._parent } : {},\r\n ...a._lastAccess ? { _lastAccess: a._lastAccess } : {},\r\n }\r\n }\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n users: {\r\n ...reduxStore.getState().db.users,\r\n ...users,\r\n },\r\n })\r\n return true\r\n }\r\n } catch (e) {\r\n console.group('Layout-ReqUsers::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n }\r\n}\r\n\r\n\r\nconst save = async (props) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n const { sideModule } = reduxStore.getState();\r\n let newData = sideModule.data\r\n const oldData = reduxStore.getState().db[sideModule.db][sideModule.id] || {}\r\n\r\n //HASHS\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n if (newData.type === 'user')\r\n if (hashs && hashs.length > 2 && hashs[2] && hashs[2].length === 36) {\r\n newData.type = 'user'\r\n newData._parent = hashs[2]\r\n }\r\n\r\n Object.keys(newData).forEach(f => {\r\n if ((newData[f] && newData[f].low) || (newData[f] && newData[f].low && String(newData[f].low) === '0'))\r\n newData[f] = newData[f].low\r\n })\r\n let file = newData.file || null\r\n delete newData.file\r\n\r\n\r\n if (newData._id === 'new' || !newData._id) {\r\n try {\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"add\"\r\n }, {\r\n ...newData,\r\n oldData: oldData,\r\n }, async (response) => {\r\n newData._id = response.id\r\n newData._token = {\r\n _id: response.tokenId\r\n }\r\n let imageResult = file ? await upload(newData._id, file) : newData.image\r\n newData.image = imageResult\r\n\r\n dbUserUpdate(props, newData)\r\n\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"put\",\r\n action: \"update\"\r\n }, {\r\n ...newData,\r\n image: imageResult,\r\n oldData: oldData\r\n })\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: response.id,\r\n data: {\r\n ...reduxStore.getState().sideModule.data,\r\n _id: response.id,\r\n }\r\n });\r\n })\r\n return true\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n } else {\r\n let imageResult = file ? await upload(newData._id, file) : newData.image\r\n if (\r\n (file && imageResult)\r\n || !file\r\n ) {\r\n dbUserUpdate(props, newData)\r\n props.reduxFunction(\"ASYNC\", \"SET_MODULE\", {\r\n ...reduxStore.getState().sideModule,\r\n id: newData._id,\r\n data: {\r\n ...reduxStore.getState().sideModule.data,\r\n _id: newData._id,\r\n }\r\n });\r\n if (newData && newData.features && Object.keys(newData.features).filter(a => a === \"chat\").length > 0) {\r\n newData = {\r\n ...newData,\r\n features: JSON.stringify(newData.features)\r\n }\r\n }\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"put\",\r\n action: \"update\"\r\n }, {\r\n ...newData,\r\n image: imageResult,\r\n oldData: oldData\r\n })\r\n }\r\n return true\r\n }\r\n}\r\n\r\nconst saveAccess = async (props) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n const { sideModule } = reduxStore.getState()\r\n const { data } = sideModule\r\n\r\n socket.emit(\"data\", {\r\n module: \"user\",\r\n method: \"post\",\r\n action: \"access\"\r\n }, {\r\n _id: data._id,\r\n email: data.email,\r\n name: data.name,\r\n access: data._access,\r\n safety: data._safety\r\n }, async (response) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n users: {\r\n ...reduxStore.getState().db.users,\r\n [data._id]: {\r\n ...reduxStore.getState().db.users[data._id] || {},\r\n ...data || {},\r\n },\r\n }\r\n });\r\n socket.emit('user.ACCESS', {\r\n _id: data._id,\r\n [data._id]: {\r\n ...data,\r\n },\r\n })\r\n })\r\n return true\r\n\r\n}\r\n\r\nconst dbUserUpdate = (props, data) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n users: {\r\n ...reduxStore.getState().db.users,\r\n [data._id]: {\r\n ...reduxStore.getState().db.users[data._id] || {},\r\n ...data || {},\r\n },\r\n }\r\n });\r\n}\r\n\r\nconst dbUpdateUser = (props, data) => {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n users: {\r\n ...reduxStore.getState().db.users,\r\n [data._id]: {\r\n ...data[data._id] ? data[data._id] : {},\r\n },\r\n }\r\n });\r\n}\r\n\r\nasync function emailExist(email) {\r\n const { users } = reduxStore.getState().db\r\n if (Object.keys(users).filter(a => users[a].email === email).length === 1) {\r\n return true\r\n } else {\r\n try {\r\n await apims.get(`/M_User_Verify_MailExist/?email=${email}`)\r\n return false\r\n } catch (e) {\r\n console.log(e)\r\n return true\r\n }\r\n }\r\n}\r\n\r\nasync function emailExistV2(email) {\r\n const { users } = reduxStore.getState().db\r\n if (Object.keys(users).filter(a => users[a].email === email).length === 1)\r\n return { exists: true }\r\n try {\r\n await apims.get(`/M_User_Verify_MailExist/?email=${email}`)\r\n return { exists: false }\r\n } catch (e) {\r\n console.log(e)\r\n return { exists: true }\r\n }\r\n}\r\n\r\nasync function emailExistDB(email) {\r\n try {\r\n const verify = await apims.get(`/M_User_Verify_MailExist/?email=${email}`)\r\n if (verify)\r\n return false\r\n } catch (e) {\r\n return true\r\n }\r\n}\r\n\r\nasync function validateEmailToken(token, email) {\r\n try {\r\n const verify = await api.post(`user/email-token-validate`, {\r\n token: token,\r\n email: email\r\n })\r\n if (verify)\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\nasync function emailTokenGenerate(name, email) {\r\n try {\r\n const verify = await api.post(`user/email-token-generate`, {\r\n name: name,\r\n email: email\r\n })\r\n if (verify)\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nconst cardsAccess = (props, userId, access, nodeId, userData) => {\r\n\r\n let user = reduxStore.getState().db.users[userId] ? reduxStore.getState().db.users[userId] : userData\r\n\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n const { db } = reduxStore.getState()\r\n\r\n cardAccessUpdate(props, {\r\n cardId: nodeId,\r\n userId: userId,\r\n access: access,\r\n userData: {\r\n _id: userId,\r\n name: user.name,\r\n image: user.image ? user.image : null,\r\n }\r\n })\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"post\",\r\n action: \"access\"\r\n }, {\r\n cardType: db.cards[nodeId].type,\r\n cardId: nodeId,\r\n parentUser: db.cards[nodeId]._parent,\r\n userId: userId,\r\n access: access,\r\n userData: {\r\n _id: userId,\r\n name: user.name,\r\n image: user.image ? user.image : null,\r\n }\r\n }, async (response) => {\r\n // console.log(response)\r\n })\r\n return true\r\n}\r\n\r\nconst groupAccess = async (props, groupId, cardId) => {\r\n api.post(\"/card/groupAccess\", {\r\n groupId,\r\n cardId\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [cardId]: {\r\n ...reduxStore.getState().db.cards[cardId],\r\n _groups: {\r\n ...reduxStore.getState().db.cards[cardId]._groups || {},\r\n [groupId]: {\r\n _id: groupId\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n}\r\n\r\nconst groupAccessRemove = async (props, groupId, cardId) => {\r\n api.post(\"/card/groupAccessRemove\", {\r\n groupId,\r\n cardId\r\n })\r\n let groups = reduxStore.getState().db.cards[cardId]._groups\r\n delete groups[groupId]\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [cardId]: {\r\n ...reduxStore.getState().db.cards[cardId],\r\n _groups: groups\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst transferResponse = async (props, data) => {\r\n\r\n}\r\n\r\nconst isResponsible = async (props, data) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"post\",\r\n action: \"userResponsible\"\r\n }, {\r\n ...data\r\n })\r\n return true\r\n}\r\n\r\nexport const userParam = async (props, data) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n\r\n socket.emit(\"data\", {\r\n module: \"cards\",\r\n method: \"post\",\r\n action: \"userParam\"\r\n }, {\r\n ...data\r\n }, async (response) => {\r\n\r\n })\r\n return true\r\n}\r\n\r\nasync function calcCards(user) {\r\n try {\r\n apims.post(`/M_User_CountCards`, { id: user })\r\n return false\r\n } catch (e) {\r\n return true\r\n }\r\n}\r\n\r\nconst getAdminList = (options = {}, type) => {\r\n const { db } = reduxStore.getState()\r\n\r\n let userList = {\r\n }\r\n\r\n Object.keys(db.users).filter(idu => !db.users[idu]._parent && db.users[idu]._access && db.users[idu]._access.admin).forEach(idu => {\r\n userList = {\r\n ...userList,\r\n [idu]: db.users[idu]\r\n }\r\n })\r\n\r\n if ((!options || (options && !options.isArray)) && userList) {\r\n let result = {}\r\n Object.keys(userList).forEach(a => {\r\n if (!type || (type && type.indexOf(userList[a].type) > -1))\r\n result = {\r\n ...result,\r\n [a]: userList[a]\r\n }\r\n })\r\n return result\r\n } else if (options && options.isArray && userList) {\r\n let result = []\r\n Object.keys(userList).forEach(a => {\r\n if (!type || (type && type.indexOf(userList[a].type) > -1))\r\n if (result.filter(us => us._id === a).length === 0)\r\n result.push(userList[a])\r\n })\r\n return result\r\n } else {\r\n return {}\r\n }\r\n}\r\n\r\nexport const cardINNExists = (id) => {\r\n const { db, session } = reduxStore.getState()\r\n const card = db.cards[id]\r\n if (\r\n card._users[session._id]\r\n ||\r\n (\r\n card._groups\r\n && Object.keys(card._groups).length > 0\r\n && Object.keys(card._groups).filter(group => db?.users[session._id]?.groups?.filter(ug => ug.value === group).length > 0).length > 0\r\n )\r\n ) return true\r\n return false\r\n}\r\n\r\nexport const deleteUser = (id) => {\r\n try {\r\n api.delete(`/user/unique/${id}`)\r\n return true\r\n } catch (e) {\r\n console.log(e)\r\n return false\r\n }\r\n}\r\n\r\nexport {\r\n calcCards,\r\n groupAccess,\r\n groupAccessRemove,\r\n cardsAccess,\r\n dbUpdateUser,\r\n emailExist,\r\n emailExistV2,\r\n emailExistDB,\r\n emailTokenGenerate,\r\n getAdminList,\r\n isResponsible,\r\n save,\r\n saveAccess,\r\n transferResponse,\r\n validateEmailToken,\r\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAABN2lDQ1BBZG9iZSBSR0IgKDE5OTgpAAAokZWPv0rDUBSHvxtFxaFWCOLgcCdRUGzVwYxJW4ogWKtDkq1JQ5ViEm6uf/oQjm4dXNx9AidHwUHxCXwDxamDQ4QMBYvf9J3fORzOAaNi152GUYbzWKt205Gu58vZF2aYAoBOmKV2q3UAECdxxBjf7wiA10277jTG+38yH6ZKAyNguxtlIYgK0L/SqQYxBMygn2oQD4CpTto1EE9AqZf7G1AKcv8ASsr1fBBfgNlzPR+MOcAMcl8BTB1da4Bakg7UWe9Uy6plWdLuJkEkjweZjs4zuR+HiUoT1dFRF8jvA2AxH2w3HblWtay99X/+PRHX82Vun0cIQCw9F1lBeKEuf1UYO5PrYsdwGQ7vYXpUZLs3cLcBC7dFtlqF8hY8Dn8AwMZP/fNTP8gAAAAJcEhZcwAACxMAAAsTAQCanBgAAATuaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA2LjAtYzAwMiAxMTYuMTY0NzY2LCAyMDIxLzAyLzE5LTIzOjEwOjA3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA4LTE2VDEwOjAwOjU2LTAzOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wOC0xNlQxMDowMjoyNC0wMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wOC0xNlQxMDowMjoyNC0wMzowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NGNkYzhjZTMtOTEyYS1lODQwLWJjYjQtOWVkMTMxMGFiYjU4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjRjZGM4Y2UzLTkxMmEtZTg0MC1iY2I0LTllZDEzMTBhYmI1OCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjRjZGM4Y2UzLTkxMmEtZTg0MC1iY2I0LTllZDEzMTBhYmI1OCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NGNkYzhjZTMtOTEyYS1lODQwLWJjYjQtOWVkMTMxMGFiYjU4IiBzdEV2dDp3aGVuPSIyMDIxLTA4LTE2VDEwOjAwOjU2LTAzOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rzal5gAAFXlJREFUeJztnXlsZMd95z9V9a6+SDY5Q3JIzn1oNIpjO97YcrwxAluyN16ttcF617tAEGSxyALZwEBOLBIgCRDAuf5IYCAIknWAIItgs96VkhiyFcmSV5JzOFnJSizbkuYezXA4nINXs493VVX+eM1ucsjh2d1DyfwC/IPdXfWq6vvqd796wlrLZnHrrWmAI8Cf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\"","// ##############################\r\n// // // javascript library for creating charts\r\n// #############################\r\nvar Chartist = require(\"chartist\");\r\n\r\n// ##############################\r\n// // // Charts used in Dahsboard view\r\n// #############################\r\n\r\n// ##############################\r\n// // // variables used to create animation on charts\r\n// #############################\r\n\r\nvar delays = 80,\r\n durations = 500;\r\nvar delays2 = 80,\r\n durations2 = 500;\r\n\r\n// ##############################\r\n// // // Daily Sales\r\n// #############################\r\n\r\nconst model = {\r\n data: {\r\n // labels: [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"],\r\n // series: [[12, 17, 7, 17, 23, 18, 38]]\r\n },\r\n options: {\r\n lineSmooth: Chartist.Interpolation.cardinal({\r\n tension: 0\r\n }),\r\n low: 0,\r\n high: 100, // creative tim: we recommend you to set the high sa the biggest value + something for a better look\r\n chartPadding: {\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0\r\n }\r\n },\r\n};\r\n\r\n// ##############################\r\n// // // Email Subscriptions\r\n// #############################\r\n\r\nconst emailsSubscriptionChart = {\r\n data: {\r\n labels: [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"Mai\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\"\r\n ],\r\n series: [[542, 443, 320, 780, 553, 453, 326, 434, 568, 610, 756, 895], [150, 133, 440, 199, 799, 100, 499, 657, 50, 352, 117, 400], [900, 700, 800, 600, 100, 200, 700, 400, 410, 333, 355, 499]]\r\n },\r\n options: {\r\n axisX: {\r\n showGrid: false\r\n },\r\n low: 0,\r\n high: 1000,\r\n chartPadding: {\r\n top: 0,\r\n right: 5,\r\n bottom: 0,\r\n left: 0\r\n }\r\n },\r\n responsiveOptions: [\r\n [\r\n \"screen and (max-width: 640px)\",\r\n {\r\n seriesBarDistance: 5,\r\n axisX: {\r\n labelInterpolationFnc: function (value) {\r\n return value[0];\r\n }\r\n }\r\n }\r\n ]\r\n ],\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"bar\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays2,\r\n dur: durations2,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Completed Tasks\r\n// #############################\r\n\r\nconst completedTasksChart = {\r\n data: {\r\n labels: [\"12am\", \"3pm\", \"6pm\", \"9pm\", \"12pm\", \"3am\", \"6am\", \"9am\"],\r\n series: [[230, 750, 450, 300, 280, 240, 200, 190]]\r\n },\r\n options: {\r\n lineSmooth: Chartist.Interpolation.cardinal({\r\n tension: 0\r\n }),\r\n low: 0,\r\n high: 1000, // creative tim: we recommend you to set the high sa the biggest value + something for a better look\r\n chartPadding: {\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0\r\n }\r\n },\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"line\" || data.type === \"area\") {\r\n data.element.animate({\r\n d: {\r\n begin: 600,\r\n dur: 700,\r\n from: data.path\r\n .clone()\r\n .scale(1, 0)\r\n .translate(0, data.chartRect.height())\r\n .stringify(),\r\n to: data.path.clone().stringify(),\r\n easing: Chartist.Svg.Easing.easeOutQuint\r\n }\r\n });\r\n } else if (data.type === \"point\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays,\r\n dur: durations,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Rounded Line Chart\r\n// #############################\r\n\r\nconst roundedLineChart = {\r\n data: {\r\n labels: [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"],\r\n series: [[12, 17, 7, 17, 23, 18, 38]]\r\n },\r\n options: {\r\n lineSmooth: Chartist.Interpolation.cardinal({\r\n tension: 10\r\n }),\r\n axisX: {\r\n showGrid: false\r\n },\r\n low: 0,\r\n high: 50, // creative tim: we recommend you to set the high sa the biggest value + something for a better look\r\n chartPadding: {\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0\r\n },\r\n showPoint: false\r\n },\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"line\" || data.type === \"area\") {\r\n data.element.animate({\r\n d: {\r\n begin: 600,\r\n dur: 700,\r\n from: data.path\r\n .clone()\r\n .scale(1, 0)\r\n .translate(0, data.chartRect.height())\r\n .stringify(),\r\n to: data.path.clone().stringify(),\r\n easing: Chartist.Svg.Easing.easeOutQuint\r\n }\r\n });\r\n } else if (data.type === \"point\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays,\r\n dur: durations,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Straight Lines Chart\r\n// #############################\r\n\r\nconst straightLinesChart = {\r\n data: {\r\n labels: [\"'07\", \"'08\", \"'09\", \"'10\", \"'11\", \"'12\", \"'13\", \"'14\", \"'15\"],\r\n series: [[10, 16, 8, 13, 20, 15, 20, 34, 30]]\r\n },\r\n options: {\r\n lineSmooth: Chartist.Interpolation.cardinal({\r\n tension: 0\r\n }),\r\n low: 0,\r\n high: 50, // creative tim: we recommend you to set the high sa the biggest value + something for a better look\r\n chartPadding: {\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0\r\n },\r\n classNames: {\r\n point: \"ct-point ct-white\",\r\n line: \"ct-line ct-white\"\r\n }\r\n },\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"line\" || data.type === \"area\") {\r\n data.element.animate({\r\n d: {\r\n begin: 600,\r\n dur: 700,\r\n from: data.path\r\n .clone()\r\n .scale(1, 0)\r\n .translate(0, data.chartRect.height())\r\n .stringify(),\r\n to: data.path.clone().stringify(),\r\n easing: Chartist.Svg.Easing.easeOutQuint\r\n }\r\n });\r\n } else if (data.type === \"point\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays,\r\n dur: durations,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Simple Bar Chart\r\n// #############################\r\n\r\nconst simpleBarChart = {\r\n data: {\r\n labels: [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"Mai\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\"\r\n ],\r\n series: [[542, 443, 320, 780, 553, 453, 326, 434, 568, 610, 756, 895]]\r\n },\r\n options: {\r\n seriesBarDistance: 10,\r\n axisX: {\r\n showGrid: false\r\n }\r\n },\r\n responsiveOptions: [\r\n [\r\n \"screen and (max-width: 640px)\",\r\n {\r\n seriesBarDistance: 5,\r\n axisX: {\r\n labelInterpolationFnc: function (value) {\r\n return value[0];\r\n }\r\n }\r\n }\r\n ]\r\n ],\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"bar\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays2,\r\n dur: durations2,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Coloured Line Chart\r\n// #############################\r\n\r\nconst colouredLineChart = {\r\n data: {\r\n labels: [\r\n \"'06\",\r\n \"'07\",\r\n \"'08\",\r\n \"'09\",\r\n \"'10\",\r\n \"'11\",\r\n \"'12\",\r\n \"'13\",\r\n \"'14\",\r\n \"'15\"\r\n ],\r\n series: [[287, 480, 290, 554, 690, 690, 500, 752, 650, 900, 944]]\r\n },\r\n options: {\r\n lineSmooth: Chartist.Interpolation.cardinal({\r\n tension: 10\r\n }),\r\n axisY: {\r\n showGrid: true,\r\n offset: 40\r\n },\r\n axisX: {\r\n showGrid: false\r\n },\r\n low: 0,\r\n high: 1000,\r\n showPoint: true,\r\n height: \"300px\"\r\n },\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"line\" || data.type === \"area\") {\r\n data.element.animate({\r\n d: {\r\n begin: 600,\r\n dur: 700,\r\n from: data.path\r\n .clone()\r\n .scale(1, 0)\r\n .translate(0, data.chartRect.height())\r\n .stringify(),\r\n to: data.path.clone().stringify(),\r\n easing: Chartist.Svg.Easing.easeOutQuint\r\n }\r\n });\r\n } else if (data.type === \"point\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays,\r\n dur: durations,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Multiple Bars Chart\r\n// #############################\r\n\r\nconst multipleBarsChart = {\r\n data: {\r\n labels: [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"Mai\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Oct\",\r\n \"Nov\",\r\n \"Dec\"\r\n ],\r\n series: [\r\n [542, 443, 320, 780, 553, 453, 326, 434, 568, 610, 756, 895],\r\n [412, 243, 280, 580, 453, 353, 300, 364, 368, 410, 636, 695]\r\n ]\r\n },\r\n options: {\r\n seriesBarDistance: 10,\r\n axisX: {\r\n showGrid: false\r\n },\r\n height: \"300px\"\r\n },\r\n responsiveOptions: [\r\n [\r\n \"screen and (max-width: 640px)\",\r\n {\r\n seriesBarDistance: 5,\r\n axisX: {\r\n labelInterpolationFnc: function (value) {\r\n return value[0];\r\n }\r\n }\r\n }\r\n ]\r\n ],\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"bar\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays2,\r\n dur: durations2,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Coloured Lines Chart\r\n// #############################\r\n\r\nconst colouredLinesChart = {\r\n data: {\r\n labels: [\r\n \"'06\",\r\n \"'07\",\r\n \"'08\",\r\n \"'09\",\r\n \"'10\",\r\n \"'11\",\r\n \"'12\",\r\n \"'13\",\r\n \"'14\",\r\n \"'15\"\r\n ],\r\n series: [\r\n [287, 385, 490, 554, 586, 698, 695, 752, 788, 846, 944],\r\n [67, 152, 143, 287, 335, 435, 437, 539, 542, 544, 647],\r\n [23, 113, 67, 190, 239, 307, 308, 439, 410, 410, 509]\r\n ]\r\n },\r\n options: {\r\n lineSmooth: Chartist.Interpolation.cardinal({\r\n tension: 10\r\n }),\r\n axisY: {\r\n showGrid: true,\r\n offset: 40\r\n },\r\n axisX: {\r\n showGrid: false\r\n },\r\n low: 0,\r\n high: 1000,\r\n showPoint: true,\r\n height: \"300px\"\r\n },\r\n animation: {\r\n draw: function (data) {\r\n if (data.type === \"line\" || data.type === \"area\") {\r\n data.element.animate({\r\n d: {\r\n begin: 600,\r\n dur: 700,\r\n from: data.path\r\n .clone()\r\n .scale(1, 0)\r\n .translate(0, data.chartRect.height())\r\n .stringify(),\r\n to: data.path.clone().stringify(),\r\n easing: Chartist.Svg.Easing.easeOutQuint\r\n }\r\n });\r\n } else if (data.type === \"point\") {\r\n data.element.animate({\r\n opacity: {\r\n begin: (data.index + 1) * delays,\r\n dur: durations,\r\n from: 0,\r\n to: 1,\r\n easing: \"ease\"\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ##############################\r\n// // // Pie Chart\r\n// #############################\r\n\r\nconst pieChart = {\r\n data: {\r\n labels: [\"62%\", \"32%\", \"6%\"],\r\n series: [62, 32, 6]\r\n },\r\n options: {\r\n height: \"230px\"\r\n }\r\n};\r\n\r\nmodule.exports = {\r\n // Charts used in Dahsboard view\r\n model,\r\n emailsSubscriptionChart,\r\n completedTasksChart,\r\n // Charts used in Charts view\r\n roundedLineChart,\r\n straightLinesChart,\r\n simpleBarChart,\r\n colouredLineChart,\r\n multipleBarsChart,\r\n colouredLinesChart,\r\n pieChart\r\n};\r\n","import React from \"react\";\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\";\r\nimport history from \"store/history\";\r\nimport reduxStore from \"store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\n//COMPONENTS\r\nimport IconButton from \"components/CustomButtons/IconButton\";\r\nimport TextField from \"components/TextField\";\r\nimport ImgCropper from \"components/Cropper\";\r\nimport Icon from \"components/Icon\";\r\nimport HeaderWithIcon from \"components/Header/card\";\r\nimport LinearProgress from \"components/Progress/linear\";\r\n\r\n//@MATERIAL\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/Card\";\r\n\r\nimport {\r\n translate,\r\n customApp,\r\n} from \"functions/\";\r\n\r\nimport {\r\n saveCard,\r\n copyCards,\r\n} from \"functions/cards\";\r\n\r\nimport {\r\n loadCardsV2\r\n} from \"functions/loadData\";\r\n\r\nfunction Card(props) {\r\n const { db } = reduxStore.getState();\r\n const [data, setData] = React.useState({})\r\n\r\n React.useEffect(() => {\r\n setData({\r\n ...props.toTemplate && db.cards[props.cardId].name ? { name: `${translate('$__template')} - ${db.cards[props.cardId].name}` } : {},\r\n ...props.toTemplate && db.cards[props.cardId].description ? { description: db.cards[props.cardId].description } : {},\r\n ...props.toTemplate && db.cards[props.cardId].image ? { image: db.cards[props.cardId].image } : {},\r\n })\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n const [errorData, setErrorData] = React.useState({})\r\n const [installProgress, setInstallProgress] = React.useState(0)\r\n\r\n const dataType = reduxStore.getState().db.cards[props.cardId] && reduxStore.getState().db.cards[props.cardId].type ? db.dataType.filter(a => a.name === reduxStore.getState().db.cards[props.cardId].type)[0] : {}\r\n\r\n // console.log(data)\r\n const installTemplate = async () => {\r\n if (data && !data.name) {\r\n setErrorData({\r\n ...errorData,\r\n name: true\r\n })\r\n } else {\r\n setInstallProgress(1)\r\n try {\r\n let dataSend = {\r\n ...db.cards[props.cardId],\r\n ...data,\r\n templateId: db.cards[props.cardId]._id,\r\n created_at: null,\r\n isTemplate: props.toTemplate ? true : null,\r\n order: null,\r\n updated_at: null,\r\n _id: null,\r\n _planId: null,\r\n }\r\n const request = await saveCard(props, true, dataSend);\r\n if (request && request._id) {\r\n setInstallProgress(2)\r\n setTimeout(() => {\r\n installStep2(request._id)\r\n }, 1500)\r\n }\r\n } catch (e) {\r\n\r\n }\r\n }\r\n }\r\n\r\n const installStep2 = async (id) => {\r\n try {\r\n const request2 = await copyCards(props.cardId, id);\r\n if (request2) {\r\n setInstallProgress(3)\r\n setTimeout(() => {\r\n installStep3(id)\r\n }, 1500)\r\n }\r\n } catch (err) {\r\n console.log(err)\r\n }\r\n }\r\n\r\n const installStep3 = async (id) => {\r\n const loadPlan = await loadCardsV2(props, { idRel: [id], cardLoad: 'plans' })\r\n const loadPlanCompleted = await loadCardsV2(props, { idRel: [id], cardLoad: 'plans', completed: true })\r\n if (loadPlan && loadPlanCompleted) {\r\n setInstallProgress(4)\r\n setTimeout(() => {\r\n if (props.onComplete)\r\n props.onComplete()\r\n\r\n if (props.toTemplate) {\r\n history.push(`sp#tab/templates`)\r\n } else {\r\n history.push(`sp#${id}/dashboard`)\r\n }\r\n }, 500)\r\n\r\n }\r\n }\r\n\r\n if (installProgress > 0)\r\n return (\r\n <Paper style={{ padding: '7px', }}>\r\n <HeaderWithIcon\r\n title={`${data.name ? data.name : db.cards[props.cardId].name} `}\r\n icon={dataType && dataType.icon ? dataType.icon : 'help'}\r\n iconTitle={`$__${db.cards[props.cardId].type}`}\r\n color={customApp('medium')}\r\n fontSize={\"16px\"}\r\n />\r\n {installProgress === 1 &&\r\n <div style={{ position: 'relative', float: 'left', width: '100%', clear: \"both\" }}>\r\n <div style={{ position: 'relative', float: 'left', width: '100%' }}>{translate('$__installingTemplate')}</div>\r\n <LinearProgress />\r\n </div>\r\n }\r\n\r\n {installProgress === 2 &&\r\n <React.Fragment>\r\n <div style={{ position: 'relative', float: 'left', width: '100%', display: \"flex\" }}>\r\n <div style={{ position: 'relative', float: 'left', width: '100%' }}>{translate('$__templateInstalled')}</div>\r\n <Icon icon='done_all' color={'green'} />\r\n </div>\r\n <div style={{ position: 'relative', float: 'left', width: '100%', marginTop: '15px' }}>\r\n <div style={{ position: 'relative', float: 'left', width: '100%' }}>{translate('$__copyingData')}</div>\r\n <LinearProgress />\r\n </div>\r\n </React.Fragment>\r\n }\r\n {installProgress === 3 &&\r\n <React.Fragment>\r\n <div style={{ position: 'relative', float: 'left', width: '100%', display: \"flex\" }}>\r\n <div style={{ position: 'relative', float: 'left', width: '100%' }}>{translate('$__templateInstalled')}</div>\r\n <Icon icon='done_all' color={'green'} />\r\n </div>\r\n <div style={{ position: 'relative', float: 'left', width: '100%', display: \"flex\", marginTop: '15px' }}>\r\n <div style={{ position: 'relative', float: 'left', width: '100%' }}>{translate('$__copiedData')}</div>\r\n <Icon icon='done_all' color={'green'} />\r\n </div>\r\n <div style={{ position: 'relative', float: 'left', width: '100%', marginTop: '15px' }}>\r\n <div style={{ position: 'relative', float: 'left', width: '100%' }}>{translate('$__preparingToRedirect')}</div>\r\n <LinearProgress />\r\n </div>\r\n </React.Fragment>\r\n }\r\n {installProgress === 4 &&\r\n <div style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}>\r\n <div style={{\r\n position: 'relative',\r\n float: 'left',\r\n padding: '15px',\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n borderRadius: '50%',\r\n border: 'solid 1px green'\r\n }}>\r\n <Icon icon='done_all' color={'green'} size={'50px'} />\r\n </div>\r\n </div>\r\n }\r\n <div style={{ clear: \"both\" }}></div>\r\n </Paper>\r\n )\r\n\r\n return (\r\n <Paper style={{ padding: '7px' }}>\r\n <HeaderWithIcon\r\n title={`${translate('$__template', 1)}: ${db.cards[props.cardId].name}`}\r\n icon={dataType && dataType.icon ? dataType.icon : 'help'}\r\n iconTitle={`$__${db.cards[props.cardId].type}`}\r\n color={customApp('medium')}\r\n fontSize={\"16px\"}\r\n />\r\n <div>\r\n <ImgCropper\r\n img={props.toTemplate && db.cards[props.cardId].image ? db.cards[props.cardId].image : null}\r\n onChange={(a, file) => {\r\n setData({\r\n ...data,\r\n image: a,\r\n file: file\r\n })\r\n }}\r\n placeholder={''}\r\n />\r\n <TextField\r\n error={errorData && errorData.name}\r\n // helperText={translate(\"$__youMustDefineAName\")}\r\n label={`${translate('$__customName', 1)}`}\r\n variant={customApp('fieldVariant')}\r\n name={'name'}\r\n defaultValue={props.toTemplate && db.cards[props.cardId].name ? `${translate('$__template')} - ${db.cards[props.cardId].name}` : null}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon icon='view_headline' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n name: d.target.value\r\n })\r\n if (errorData && errorData.name)\r\n setErrorData({\r\n ...errorData,\r\n name: false\r\n })\r\n },\r\n }}\r\n // value={data && data.name ? data.name : ''}\r\n placeholder={translate(props.toTemplate ? '$__templateName_placeholder' : '$__planName_placeholder', 1)}\r\n // disabled={!props.permission || (dataType && dataType.disabledFields && dataType.disabledFields.indexOf('name') > -1) ? true : false}\r\n />\r\n <TextField\r\n label={`${translate('$__customDescription', 1)}`}\r\n variant={customApp('fieldVariant')}\r\n name={'description'}\r\n defaultValue={props.toTemplate && db.cards[props.cardId].description ? db.cards[props.cardId].description : null}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n autoComplete: 'new-password',\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon icon='toc' />\r\n </InputAdornment>\r\n ),\r\n onChange: (d) => {\r\n setData({\r\n ...data,\r\n description: d.target.value\r\n })\r\n },\r\n }}\r\n placeholder={translate(props.toTemplate ? '$__templateDescription_placeholder' : '$__planDescription_placeholder', 1)}\r\n multiline\r\n />\r\n </div>\r\n\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n clear: \"both\",\r\n padding: \"7px\",\r\n backgroundColor: \"#4caf50\",\r\n marginTop: \"7px\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={(e) => {\r\n installTemplate()\r\n e.stopPropagation()\r\n }}>\r\n\r\n <IconButton\r\n text={translate(\"$__ready\", '*')}\r\n icon=\"done_all\"\r\n iconColor={'#FFFFFF'}\r\n textColor={'#FFFFFF'}\r\n />\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n clear: \"both\",\r\n padding: \"7px\",\r\n backgroundColor: \"lightgrey\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={(e) => {\r\n props.onComplete()\r\n e.stopPropagation()\r\n }}>\r\n <IconButton\r\n text={translate(\"$__cancel\", '*')}\r\n icon=\"close\"\r\n iconColor={'#FFFFFF'}\r\n textColor={'#FFFFFF'}\r\n onClick={props.onComplete ? () => {\r\n props.onComplete()\r\n } : null}\r\n />\r\n </div>\r\n </Paper >\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = () => ({});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(Card));","import React from 'react';\r\n\r\n//@MATERIAL\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\n\r\n\r\nfunction ProgressLinear(props) {\r\n const styles = {\r\n root: {\r\n position: 'relative',\r\n width: `100%`,\r\n background: `transparent !important`,\r\n '& .MuiLinearProgress-indeterminate': {\r\n background: `transparent !important`\r\n },\r\n '& .MuiLinearProgress-bar': {\r\n background: `${customApp('linearProgress')} !important`\r\n },\r\n '& .text': {\r\n position: 'absolute',\r\n width: '40px',\r\n right: '-40px',\r\n top: '-9px',\r\n textAlign: 'right',\r\n textSize: '11px',\r\n fontWeight: 'bold',\r\n color: customApp('color')\r\n }\r\n },\r\n bar: {\r\n borderRadius: 7,\r\n },\r\n\r\n }\r\n const useStyles = makeStyles(styles);\r\n\r\n const classes = useStyles();\r\n\r\n let newProps = {\r\n ...props\r\n }\r\n if (newProps.showText) delete newProps.showText\r\n if (newProps.customColor) delete newProps.customColor\r\n\r\n return (\r\n <div className={classes.root} style={props.showText ? { width: `calc(100% - 40px)` } : {}}>\r\n <LinearProgress {...newProps} />\r\n {props.showText &&\r\n <div className={'text'}>{Math.floor(props.value)}%</div>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport default ProgressLinear","import {\r\n infoColor,\r\n primaryColor,\r\n successColor,\r\n dangerColor,\r\n warningColor,\r\n whiteColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nimport { customApp } from \"functions/\";;\r\nconst timelineStyle = theme => ({\r\n root: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto'\r\n },\r\n content: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto',\r\n backgroundColor: 'rgba(249,249,249,1)'\r\n },\r\n timeline: {\r\n listStyle: \"none\",\r\n padding: \"0\",\r\n position: \"absolute\",\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n width: '100%',\r\n '& .file-drop-target': {\r\n width: '100%'\r\n }\r\n },\r\n scrollEnd: {\r\n marginTop: '160px',\r\n position: 'relative',\r\n width: '100%',\r\n height: '0px',\r\n marginBottom: '-100px'\r\n },\r\n scrollEndNoEditor: {\r\n marginTop: '30px',\r\n position: 'relative',\r\n width: '100%',\r\n height: '0px',\r\n marginBottom: '-100px'\r\n },\r\n timelineSimple: {\r\n position: 'relative',\r\n // overflowX: 'auto',\r\n overflow: \"hidden\",\r\n marginTop: \"0px\",\r\n padding: \"0\",\r\n width: '-webkit-fill-available',\r\n \"&:before\": {\r\n left: \"15px\"\r\n },\r\n },\r\n timelineSimpleWithHeader: {\r\n position: 'relative',\r\n overflowX: 'auto',\r\n marginTop: \"60px\",\r\n padding: \"0 0 0\",\r\n width: '-webkit-fill-available',\r\n \"&:before\": {\r\n left: \"15px\"\r\n },\r\n },\r\n item: {\r\n marginBottom: \"15px\",\r\n paddingBottom: \"33px\",\r\n position: \"relative\",\r\n paddingLeft: \"15px\",\r\n width: 'calc(100% - 15px)',\r\n \"&:before,&:after\": {\r\n content: '\" \"',\r\n display: \"table\"\r\n },\r\n \"&:after\": {\r\n clear: \"both\"\r\n }\r\n },\r\n timelineBadge: {\r\n color: whiteColor,\r\n width: \"30px\",\r\n height: \"30px\",\r\n lineHeight: \"25px\",\r\n fontSize: \"12px\",\r\n textAlign: \"center\",\r\n position: \"absolute\",\r\n bottom: \"23px\",\r\n left: \"50%\",\r\n marginLeft: \"-7px\",\r\n zIndex: \"1\",\r\n borderTopRightRadius: \"50%\",\r\n borderTopLeftRadius: \"50%\",\r\n borderBottomRightRadius: \"50%\",\r\n borderBottomLeftRadius: \"50%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n\r\n },\r\n timelineSimpleBadge: {\r\n left: \"7px\"\r\n },\r\n timelineBadgeInverted: {\r\n color: whiteColor,\r\n width: \"30px\",\r\n height: \"30px\",\r\n lineHeight: \"25px\",\r\n fontSize: \"12px\",\r\n textAlign: \"center\",\r\n position: \"absolute\",\r\n bottom: \"23px\",\r\n right: \"50%\",\r\n marginRight: \"-7px\",\r\n zIndex: \"1\",\r\n borderTopRightRadius: \"50%\",\r\n borderTopLeftRadius: \"50%\",\r\n borderBottomRightRadius: \"50%\",\r\n borderBottomLeftRadius: \"50%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n\r\n },\r\n timelineSimpleBadgeInverted: {\r\n right: \"7px\"\r\n },\r\n custom: {\r\n backgroundColor: customApp('color'),\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.4)\"\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.4)\"\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.4)\"\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.4)\"\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.4)\"\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.4)\"\r\n },\r\n badgeIcon: {\r\n width: \"14px\",\r\n height: \"14px\"\r\n },\r\n timelinePanel: {\r\n maxWidth: \"calc(100% - 70px)\",\r\n float: \"right\",\r\n padding: \"7px\",\r\n marginBottom: \"5px\",\r\n marginRight: \"40px\",\r\n position: \"relative\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: customApp('timelineMyMessage'),\r\n },\r\n timelinePanelInverted: {\r\n maxWidth: \"calc(100% - 70px)\",\r\n float: \"left\",\r\n padding: \"7px\",\r\n marginLeft: \"40px\",\r\n marginBottom: \"5px\",\r\n position: \"relative\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: '#ffffff',\r\n },\r\n\r\n\r\n timelineHeading: {\r\n marginBottom: \"0px\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n timelineDate: {\r\n display: 'flex',\r\n alignItems: \"center\",\r\n padding: '5px',\r\n backgroundColor: '#CCCCCC'\r\n },\r\n timelineBody: {\r\n overflowWrap: \"anywhere\",\r\n fontSize: \"12px\",\r\n lineHeight: \"21px\",\r\n position: 'relative',\r\n width: '100%',\r\n float: 'left',\r\n },\r\n timelineLog: {\r\n fontSize: \"12px\",\r\n lineHeight: \"21px\",\r\n // display: 'flex',\r\n },\r\n timelineFooter: {\r\n zIndex: \"1\",\r\n position: \"relative\",\r\n float: \"left\",\r\n width: '100%',\r\n display: \"inline-flex\",\r\n justifyContent: \"space-between\"\r\n },\r\n footerUser: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontSize: '12px',\r\n fontWeight: 'bold',\r\n color: customApp('medium'),\r\n padding: '0 7px',\r\n },\r\n footerLine: {\r\n position: 'relative',\r\n marginTop: \"10px\",\r\n marginBottom: \"5px\"\r\n },\r\n dropFile: {\r\n display: 'none',\r\n },\r\n onDropFile: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#FFFFFF',\r\n backgroundColor: 'rgba(0,0,0,0.77)',\r\n zIndex: 1,\r\n },\r\n editor: {\r\n position: 'absolute',\r\n bottom: '0px',\r\n height: 'auto',\r\n width: 'calc(100% - 0px)',\r\n zIndex: 10,\r\n padding: '7px',\r\n },\r\n files: {\r\n display: 'inline-table',\r\n position: 'relative'\r\n },\r\n textEditorIcon: {\r\n cursor: 'pointer',\r\n color: customApp('color'),\r\n },\r\n progressBar: {\r\n backgroundColor: `${customApp('color', '0.1')} !important`,\r\n '& .MuiLinearProgress-indeterminate': {\r\n backgroundColor: `${customApp('color')} !important`\r\n },\r\n '& .MuiLinearProgress-bar': {\r\n backgroundColor: `${customApp('color')} !important`\r\n },\r\n },\r\n actionButton: {\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n float: 'left',\r\n height: '30px',\r\n position: 'relative',\r\n textAlign: 'center',\r\n width: '30px',\r\n },\r\n sendingMessage: {\r\n width: '100%'\r\n },\r\n valuePositive: {\r\n positive: 'relative',\r\n float: 'left',\r\n color: 'blue',\r\n },\r\n valueNegative: {\r\n positive: 'relative',\r\n float: 'left',\r\n color: 'red',\r\n },\r\n lastValue: {\r\n positive: 'relative',\r\n float: 'right',\r\n color: 'grey',\r\n },\r\n timeInfo: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'grey',\r\n width: '100%',\r\n position: 'relative',\r\n float: 'left',\r\n marginBottom: '7px',\r\n '& .text': {\r\n marginLeft: '7px',\r\n }\r\n },\r\n urlPreview: {\r\n position: 'relative',\r\n float: 'left',\r\n marginBottom: '33px',\r\n '& img': {\r\n maxWidth: '20%',\r\n minWidth: '177px',\r\n height: 'auto',\r\n marginTop: '30px',\r\n marginRight: '7px'\r\n },\r\n '& .data': {\r\n '& .title': {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n },\r\n '& .siteName': {\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n color: '#909090'\r\n },\r\n '& .contentSnippet': {\r\n fontSize: '12px',\r\n color: '#909090'\r\n }\r\n }\r\n },\r\n users: {\r\n position: 'relative',\r\n bottom: '0px',\r\n right: '2px',\r\n fontSize: '10px',\r\n '& .MuiAvatarGroup-root': {\r\n justifyContent: 'flex-end',\r\n },\r\n '& .MuiAvatar-root': {\r\n width: '25px',\r\n height: '25px',\r\n fontSize: '10px',\r\n }\r\n }\r\n});\r\n\r\nexport default timelineStyle;\r\n","import {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\nconst textField = {\r\n labelTop: {\r\n ...defaultFont,\r\n padding: \"0px\",\r\n width: \"100%\",\r\n marginTop: \"7px\",\r\n marginBottom: \"7px\",\r\n '& .invalid': {\r\n borderBottom: 'solid 2px red !important',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n padding: \"11px 11px\",\r\n fontSize: \"12px\",\r\n color: '#FFFFFF',\r\n },\r\n '& label': {\r\n marginTop: \"-10px\",\r\n fontSize: \"12px\",\r\n color: customApp('color'), //customApp\r\n },\r\n '& label.MuiFormLabel-filled': {\r\n color: customApp('color'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : \"0px\"\r\n },\r\n '& label.Mui-focused': {\r\n color: customApp('color'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : \"0px\"\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: customApp('line'), //customApp\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n },\r\n '& .MuiFilledInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n '& .MuiInputLabel-outlined': {\r\n marginTop: '0px',\r\n // padding: \"15px\",\r\n '&.Mui-focused': {\r\n marginTop: '0px',\r\n },\r\n '&.MuiFormLabel-filled': {\r\n marginTop: '0px',\r\n }\r\n },\r\n '& .MuiInputBase-root': {\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"0px\" : customApp('fieldVariant') === 'filled' ? \"-15px\" : \"0px\",\r\n borderRadius: customApp('fieldRadius'),\r\n color: '#FFFFFF',\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n },\r\n noLabel: {\r\n ...defaultFont,\r\n padding: \"0px\",\r\n width: \"100%\",\r\n marginTop: \"7px\",\r\n marginBottom: \"7px\",\r\n '& .invalid': {\r\n borderBottom: 'solid 2px red !important',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n padding: \"11px 11px\",\r\n fontSize: \"12px\",\r\n color: '#FFFFFF',\r\n },\r\n '& label': {\r\n textAlign: \"right\",\r\n fontSize: \"12px\",\r\n color: customApp('color'), //customApp\r\n },\r\n '& label.MuiFormLabel-filled': {\r\n display: 'none'\r\n },\r\n '& label.Mui-focused': {\r\n display: 'none'\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: customApp('line'), //customApp\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n },\r\n '& .MuiFilledInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n '& .MuiInputLabel-outlined': {\r\n display: 'none',\r\n marginTop: '0px',\r\n '&.Mui-focused': {\r\n marginTop: '0px',\r\n },\r\n '&.MuiFormLabel-filled': {\r\n marginTop: '0px',\r\n }\r\n },\r\n '& .MuiInputBase-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n color: '#FFFFFF',\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n },\r\n labelTopLight: {\r\n ...defaultFont,\r\n padding: \"0px\",\r\n width: \"100%\",\r\n marginTop: \"7px\",\r\n marginBottom: \"7px\",\r\n '& .invalid': {\r\n borderBottom: 'solid 2px red !important',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n padding: \"11px 11px\",\r\n fontSize: \"12px\",\r\n color: '#FFFFFF',\r\n },\r\n '& label': {\r\n marginTop: \"-10px\",\r\n fontSize: \"12px\",\r\n color: customApp('color'), //customApp\r\n },\r\n '& label.MuiFormLabel-filled': {\r\n color: customApp('color'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : \"0px\"\r\n },\r\n '& label.Mui-focused': {\r\n color: customApp('color'), //customApp\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"-10px\" : customApp('fieldVariant') === 'filled' ? \"-10px\" : \"0px\"\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: customApp('line'), //customApp\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n },\r\n '& .MuiFilledInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n '& .MuiInputLabel-outlined': {\r\n marginTop: '0px',\r\n // padding: \"15px\",\r\n '&.Mui-focused': {\r\n marginTop: '0px',\r\n },\r\n '&.MuiFormLabel-filled': {\r\n marginTop: '0px',\r\n }\r\n },\r\n '& .MuiInputBase-root': {\r\n marginTop: customApp('fieldVariant') === 'standard' ? \"0px\" : customApp('fieldVariant') === 'filled' ? \"-15px\" : \"0px\",\r\n borderRadius: customApp('fieldRadius'),\r\n //color: '#FFFFFF',\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n },\r\n noLabelLight: {\r\n ...defaultFont,\r\n padding: \"0px\",\r\n width: \"100%\",\r\n marginTop: \"7px\",\r\n marginBottom: \"7px\",\r\n '& .invalid': {\r\n borderBottom: 'solid 2px red !important',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n padding: \"11px 11px\",\r\n fontSize: \"12px\",\r\n },\r\n '& label': {\r\n textAlign: \"right\",\r\n fontSize: \"12px\",\r\n color: customApp('color'), //customApp\r\n },\r\n '& label.MuiFormLabel-filled': {\r\n display: 'none'\r\n },\r\n '& label.Mui-focused': {\r\n display: 'none'\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: customApp('line'), //customApp\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n },\r\n '& .MuiFilledInput-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n '& .MuiInputLabel-outlined': {\r\n display: 'none',\r\n marginTop: '0px',\r\n '&.Mui-focused': {\r\n marginTop: '0px',\r\n },\r\n '&.MuiFormLabel-filled': {\r\n marginTop: '0px',\r\n }\r\n },\r\n '& .MuiInputBase-root': {\r\n borderRadius: customApp('fieldRadius'),\r\n '& fieldset': {\r\n borderColor: customApp('line'), //customApp\r\n },\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&.Mui-focused': {\r\n borderBottomColor: customApp('line'), //customApp\r\n '&::before': {\r\n borderBottomColor: customApp('line')\r\n },\r\n '&::after': {\r\n borderBottomColor: customApp('line')\r\n },\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport default textField;\r\n","//CORE\r\nimport React from \"react\"\r\n\r\nimport CustomButton from \"components/Buttons/custom\"\r\n\r\n//REDUX\r\nimport * as reduxActions from \"store/actions\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport { connect } from \"react-redux\"\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\"\r\nimport { countNotifications } from \"functions/cards\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n iconButtonStyle: {\r\n margin: 0,\r\n marginTop: \"-8px\",\r\n backgroundColor: \"#FFFFFF\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(250,250,250,0.9)\"\r\n }\r\n },\r\n}))\r\n\r\nfunction Component(props) {\r\n const classes = useStyles()\r\n\r\n let notifications = countNotifications(props.nodeId)\r\n\r\n if (notifications.total < 1)\r\n return (<React.Fragment></React.Fragment>)\r\n\r\n return (\r\n <div id=\"notificationsBt\"\r\n style={{\r\n top: 0,\r\n zIndex: 0\r\n }}\r\n >\r\n <CustomButton\r\n className={classes.iconButtonStyle}\r\n badgeContent={notifications.total}\r\n color={customApp(\"menu\")}\r\n icon={notifications.total === 0 ? \"notifications_none\" : \"notifications_active\"}\r\n size={\"17px\"}\r\n transparent\r\n />\r\n </div>\r\n )\r\n}\r\n\r\n//REACT\r\nconst mapStateToProps = (store, props) => {\r\n return ({\r\n cards: store.db.cards,\r\n timeline: store.timeline\r\n })\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Component)\r\n","import React from \"react\";\r\n\r\n// REDUX\r\nimport reduxStore from \"store/\";\r\n\r\n// COMPONENTS\r\nimport ColorPicker from \"components/ColorPicker\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\nimport Icon from \"components/Icon\";\r\nimport MoreMenu from \"components/MoreMenu/\";\r\nimport NotificationCount from \"componentsV3/Notifications/count\";\r\nimport TextField from \"components/TextField\";\r\n\r\n// @MATERIAL\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Badge from \"components/Icon/Badge\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\n\r\n// FUNCTIONS\r\nimport { translate, customApp, Highlighted } from \"functions/\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n header: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\"\r\n },\r\n content: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n contentWithExpand: {\r\n position: \"relative\",\r\n width: \"calc(100% - 7px)\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n paddingLeft: \"5px\",\r\n paddingTop: \"5px\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n },\r\n info: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n alignItems: \"center\"\r\n },\r\n headerIcon: {\r\n display: \"contents\",\r\n alignItems: \"center\"\r\n },\r\n headerTitle: {\r\n width: \"100%\",\r\n overflowX: \"hidden\",\r\n overflowY: \"hidden\",\r\n fontWeight: \"bold\"\r\n },\r\n actionButtons: {\r\n position: \"absolute\",\r\n height: \"24px\",\r\n right: \"3px\",\r\n display: \"flex\"\r\n },\r\n cancelButton: {\r\n right: \"4px\",\r\n position: \"absolute\",\r\n cursor: \"pointer\"\r\n },\r\n saveButton: {\r\n right: \"33px\",\r\n position: \"absolute\",\r\n cursor: \"pointer\"\r\n },\r\n button: {\r\n padding: \"3px auto\",\r\n cursor: \"pointer\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n opacity: 1\r\n },\r\n parent: {\r\n width: \"100%\",\r\n padding: \"0 5px\",\r\n \"& .title\": {\r\n color: customApp(\"medium\"),\r\n fontSize: \"10px\",\r\n textTransform: \"uppercase\"\r\n },\r\n \"& .info\": {\r\n marginTop: \"-8px\",\r\n color: customApp(\"colorText\"),\r\n fontWeight: \"500\",\r\n alignItems: \"center\"\r\n }\r\n },\r\n iconButtonStyle: {\r\n margin: 0,\r\n backgroundColor: \"#FFFFFF\",\r\n \"&:hover\": {\r\n backgroundColor: \"rgba(250,250,250,0.9)\"\r\n },\r\n padding: \"3px\"\r\n }\r\n}));\r\n\r\nfunction HeaderComponent(props) {\r\n const {\r\n noExpanding,\r\n onExpanding,\r\n isExpanded,\r\n options,\r\n title,\r\n editable,\r\n unlockedPrivates,\r\n style,\r\n backClick,\r\n private: isPrivate,\r\n onEdit,\r\n _id: id,\r\n fontSize,\r\n iconTitle,\r\n privateTitle,\r\n color,\r\n optionsProps,\r\n setPrivate,\r\n colorPicker,\r\n moreButton,\r\n showOrder,\r\n value,\r\n viewAllName,\r\n expanded,\r\n tooltipText,\r\n actionsSize,\r\n onSave,\r\n onCancel,\r\n multiline,\r\n icon,\r\n searchText,\r\n searchTextStyle,\r\n dark,\r\n noAutoFocus,\r\n fieldName,\r\n inputStyle,\r\n textStyle\r\n } = props;\r\n\r\n const { functions, db } = reduxStore.getState();\r\n const { socket } = functions;\r\n const classes = useStyles();\r\n\r\n const [name, setName] = React.useState(title?.trim() || null);\r\n const [editing, setEditing] = React.useState(false);\r\n const [showPrivateCard, setShowPrivateCard] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (unlockedPrivates) {\r\n setShowPrivateCard(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [unlockedPrivates]);\r\n\r\n React.useEffect(() => {\r\n if (!title && editable) {\r\n setEditing(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [title]);\r\n\r\n const stripHtml = (html) => {\r\n const tmp = document.createElement(\"DIV\");\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || \"\";\r\n };\r\n\r\n const saveData = async (newData) => {\r\n try {\r\n if (id) {\r\n socket.emit(\r\n \"data\",\r\n {\r\n module: \"node\",\r\n method: \"put\",\r\n action: \"update\",\r\n noLog: true\r\n },\r\n {\r\n _id: id,\r\n ...newData\r\n }\r\n );\r\n }\r\n if (onEdit) onEdit(name, id);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n setEditing(false);\r\n };\r\n\r\n const hasOptions = options && options.length > 0;\r\n\r\n return (\r\n <div\r\n className={classes.header}\r\n style={{\r\n minHeight: style?.minHeight || \"30px\",\r\n ...style,\r\n ...(backClick ? { cursor: \"pointer\" } : {})\r\n }}\r\n >\r\n <div className={!onExpanding || editing ? classes.content : classes.contentWithExpand}>\r\n <div className={classes.info}>\r\n {isPrivate && !reduxStore.getState().controls.lockPrivate && !showPrivateCard ? (\r\n <>\r\n <div className={classes.headerIcon} style={{ color: \"lightgray\" }}>\r\n <Badge\r\n overlap=\"rectangular\"\r\n size={`calc(${fontSize} + 4px)` || \"22px\"}\r\n icon={\"private_connectivity\"}\r\n color={\"parent\"}\r\n title={\r\n iconTitle\r\n ? iconTitle.charAt(0).toUpperCase() + iconTitle.slice(1)\r\n : \"\"\r\n }\r\n />\r\n </div>\r\n <div style={{ marginLeft: \"7px\", fontSize: 12, color: \"lightgray\" }}>\r\n {privateTitle ? privateTitle : translate(\"$__privateActivity\")}\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n {icon && (\r\n <div\r\n className={classes.headerIcon}\r\n style={{\r\n color: color ? color : customApp(\"colorText\"),\r\n ...(backClick ? { cursor: \"pointer\" } : {})\r\n }}\r\n >\r\n <Badge\r\n overlap=\"rectangular\"\r\n size={`calc(${fontSize} + 4px)` || \"22px\"}\r\n icon={icon}\r\n color={\"parent\"}\r\n title={\r\n iconTitle\r\n ? iconTitle.charAt(0).toUpperCase() + iconTitle.slice(1)\r\n : \"\"\r\n }\r\n />\r\n </div>\r\n )}\r\n {searchText ? (\r\n <div style={{ marginLeft: \"7px\", ...searchTextStyle }}>\r\n {Highlighted(title ? title : \"\", searchText, dark ? true : false)}\r\n </div>\r\n ) : (\r\n <div\r\n className={classes.headerTitle}\r\n style={{\r\n fontSize: fontSize || \"14px\",\r\n color: color || customApp(\"colorText\"),\r\n marginLeft: icon ? \"7px\" : \"none\",\r\n ...textStyle,\r\n ...(backClick ? { cursor: \"pointer\" } : {})\r\n }}\r\n onClick={\r\n backClick\r\n ? (e) => {\r\n backClick();\r\n e.stopPropagation();\r\n }\r\n : null\r\n }\r\n >\r\n {editing ? (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n float: \"left\",\r\n width: \"100%\",\r\n paddingTop: \"10px\",\r\n paddingLeft: \"7px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n ...inputStyle\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <TextField\r\n style={{ width: \"calc(100% - 60px)\" }}\r\n label={fieldName ? fieldName : translate(\"$__nameOfCard\", 1)}\r\n variant={customApp(\"fieldVariant\")}\r\n name=\"name\"\r\n InputLabelProps={{ shrink: true }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n onChange: (d) => setName(d.target.value),\r\n onKeyDown: (e) => {\r\n if (e.keyCode === 13 && name) {\r\n saveData({ name });\r\n }\r\n if (e.keyCode === 27) {\r\n setEditing(false);\r\n setName(value ? value : title ? title.trim() : \"\");\r\n }\r\n }\r\n }}\r\n value={name}\r\n placeholder={translate(\"$__titleOfCard_placeholder\", 1)}\r\n autoFocus={noAutoFocus ? false : true}\r\n multiline={multiline ? true : false}\r\n />\r\n <Badge\r\n color={customApp(\"medium\")}\r\n onClick={() =>\r\n editing ? setEditing(false) : onCancel()\r\n }\r\n icon={\"cancel\"}\r\n title={translate(\"$__close\", \"*\")}\r\n size={actionsSize || \"25px\"}\r\n />\r\n <Badge\r\n overlap=\"rectangular\"\r\n color=\"green\"\r\n icon={\"save\"}\r\n onClick={() => {\r\n if (editing) {\r\n saveData({ name });\r\n } else {\r\n onSave();\r\n }\r\n }}\r\n title={translate(\"$__save\", \" * \")}\r\n size={actionsSize || \"25px\"}\r\n />\r\n </div>\r\n ) : (\r\n <Tooltip title={tooltipText ? tooltipText : title ? title : \"\"}>\r\n <div\r\n style={\r\n !expanded\r\n ? {\r\n width: \"100%\",\r\n textOverflow: \"ellipsis\",\r\n overflow: \"hidden\",\r\n whiteSpace:\r\n viewAllName === true ? undefined : \"nowrap\"\r\n }\r\n : { width: \"100%\" }\r\n }\r\n onDoubleClick={() => {\r\n if (onEdit && editable) {\r\n setName(value ? value : title ? title.trim() : \"\");\r\n setEditing(true);\r\n }\r\n }}\r\n >\r\n {`${showOrder ? `${showOrder}. ` : \"\"}${title && title.indexOf(\"$__\") > -1\r\n ? translate(title, 1)\r\n : title\r\n ? stripHtml(title)\r\n : \"\"\r\n }`}\r\n </div>\r\n </Tooltip>\r\n )}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n {!editing && (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: 7,\r\n padding: \"3px 0px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderRadius: 7,\r\n backgroundColor: \"rgba(250,250,250,0.7)\"\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }}\r\n >\r\n {!moreButton ? (\r\n <NotificationCount nodeId={id} />\r\n ) : (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n right: 0,\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n {isPrivate &&\r\n !reduxStore.getState().controls.lockPrivate &&\r\n !showPrivateCard ? (\r\n <>\r\n <CustomButton\r\n title={translate(`$__showPrivateActivity`, \"*\")}\r\n color=\"lightGray\"\r\n icon=\"lock_open\"\r\n onClick={() => {\r\n setShowPrivateCard((prev) => !prev);\r\n if (setPrivate) setPrivate(!showPrivateCard);\r\n }}\r\n size=\"21px\"\r\n style={{ padding: \"0px !important\" }}\r\n />\r\n </>\r\n ) : (\r\n <>\r\n {colorPicker && (\r\n <div style={{ zIndex: 1000 }}>\r\n <ColorPicker\r\n color={\r\n id && db.cards[id] && db.cards[id].color\r\n ? db.cards[id].color\r\n : null\r\n }\r\n _id={id}\r\n onChange={(c) => {\r\n colorPicker(c);\r\n }}\r\n style={{ zIndex: 5000 }}\r\n />\r\n </div>\r\n )}\r\n {hasOptions &&\r\n options\r\n .filter(\r\n (a) =>\r\n a &&\r\n a.name &&\r\n (a.name === \"$__removeSelection\" || a.name === \"$__selectThis\")\r\n )\r\n .length > 0 && (\r\n <Tooltip\r\n title={translate(\r\n options.filter(\r\n (a) =>\r\n a &&\r\n a.name &&\r\n (a.name === \"$__removeSelection\" || a.name === \"$__selectThis\")\r\n )[0].name\r\n )}\r\n >\r\n <IconButton\r\n onClick={(e) => {\r\n options\r\n .filter(\r\n (a) =>\r\n a &&\r\n a.name &&\r\n (a.name === \"$__removeSelection\" || a.name === \"$__selectThis\")\r\n )[0].onClick();\r\n }}\r\n className={classes.iconButtonStyle}\r\n >\r\n <Icon\r\n size=\"22px\"\r\n color={customApp(\"menu\")}\r\n icon={\r\n options.filter(\r\n (a) =>\r\n a &&\r\n a.name &&\r\n (a.name === \"$__removeSelection\" || a.name === \"$__selectThis\")\r\n )[0].icon\r\n }\r\n usePropagation\r\n />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {options &&\r\n options.filter((a) => a && a.show === \"fixed\").length > 0 ? (\r\n options\r\n .filter((a) => a && a.show === \"fixed\")\r\n .map((b, i) => (\r\n <Tooltip key={`opt${i}`} title={translate(b.name)}>\r\n <IconButton\r\n onClick={() => b.onClick()}\r\n className={classes.iconButtonStyle}\r\n >\r\n <Icon\r\n size=\"22px\"\r\n color={b.color || customApp(\"menu\")}\r\n icon={b.icon}\r\n usePropagation\r\n />\r\n </IconButton>\r\n </Tooltip>\r\n ))\r\n ) : (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n {!noExpanding && onExpanding && (\r\n <Tooltip title={translate(!isExpanded ? `$__expand` : `$__collapse`)}>\r\n <IconButton\r\n onClick={(e) => onExpanding()}\r\n className={classes.iconButtonStyle}\r\n >\r\n <Icon\r\n size=\"22px\"\r\n color={customApp(\"menu\")}\r\n icon={!isExpanded ? \"expand_more\" : \"expand_less\"}\r\n usePropagation\r\n />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {hasOptions && (\r\n <MoreMenu\r\n noButton\r\n options={[\r\n ...options,\r\n ...(isPrivate && showPrivateCard\r\n ? [\r\n {\r\n color: \"lightblue\",\r\n icon: \"lock\",\r\n name: \"$__lockThisPrivateCard\",\r\n onClick: () => {\r\n setShowPrivateCard((prev) => !prev);\r\n if (setPrivate) setPrivate(!showPrivateCard);\r\n },\r\n show: \"hover\"\r\n }\r\n ]\r\n : [])\r\n ]}\r\n {...(optionsProps || {})}\r\n />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HeaderComponent;\r\n","import React, { useEffect } from 'react'\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 TextareaAutosize from '@material-ui/core/TextareaAutosize'\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport HeaderWithIcon from \"components/Header/withIcon\"\r\nimport Icon from \"components/Icon\"\r\n\r\n//FUNCTIONS\r\nimport { translate, appAlert, nl2br } from \"functions\"\r\nimport { saveCard } from \"functions/cards\"\r\n\r\nconst Notes = (props) => {\r\n const [planNote, setPlanNote] = React.useState({ editor: false, text: '', height: 'auto' })\r\n const [planNoteSave, setPlanNoteSave] = React.useState(false)\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n\r\n const saveNote = async (clean) => {\r\n if (planNote.text || clean) {\r\n const request = await saveCard(props, false, {\r\n ...db.cards[hashs[0]],\r\n note: clean ? null : planNote.text\r\n });\r\n if (request) {\r\n appAlert({\r\n message: translate('$__noteSaved', 1),\r\n variant: null,\r\n persist: false,\r\n horizontal: 'right',\r\n confirm: null\r\n })\r\n }\r\n setPlanNote(\r\n { editor: false, text: clean ? '' : planNote.text, height: 'auto' }\r\n )\r\n }\r\n setPlanNoteSave(false)\r\n }\r\n\r\n useEffect(() => {\r\n setPlanNote(\r\n {\r\n editor: false,\r\n text: reduxStore.getState().db.cards[hashs[0]]?.note ? reduxStore.getState().db.cards[hashs[0]].note : \"\", height: 'auto'\r\n }\r\n )\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n\r\n return (\r\n <div style={{ width: \"100%\", height: '100%' }}>\r\n <UiCard style={{ marginTop: '0', height: '100%' }}>\r\n {props.edit ? <div style={{ width: '100%', height: '48px', minHeight: \"48px\", display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '19.5px', color: props.styles.color ? props.styles.color : 'grey', marginTop: '2px' }}>note</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', marginTop: '1px', color: props.styles.color ? props.styles.color : 'grey', fontSize: '16px' }}>{translate(`$__notes`, 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> : <HeaderWithIcon\r\n title={translate(`$__notes`, 1)}\r\n icon={'note'}\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 height: \"58px\",\r\n minHeight: \"48px\",\r\n borderRadius: '5px 5px 0px 0px ',\r\n fontWeight: 'normal',\r\n borderBottom: '1px solid #D3D3D3'\r\n }}\r\n customButtons={[\r\n ...planNote.text && !planNote.editor ? [\r\n {\r\n title: \"$__cleanNote\",\r\n icon: \"clear_all\",\r\n onClick: () => {\r\n saveNote(true)\r\n },\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n },\r\n {\r\n title: \"$__edit\",\r\n icon: \"edit\",\r\n onClick: () => {\r\n setPlanNote({\r\n ...planNote,\r\n editor: true,\r\n })\r\n },\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n }] : [],\r\n planNoteSave &&\r\n {\r\n title: \"$__saveNote\",\r\n icon: \"save\",\r\n onClick: () => {\r\n saveNote()\r\n },\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n },\r\n planNote.editor &&\r\n {\r\n title: \"$__cancel\",\r\n icon: \"cancel\",\r\n onClick: () => {\r\n setPlanNote({\r\n ...planNote,\r\n text: db.cards[hashs[0]].note,\r\n editor: false\r\n })\r\n setPlanNoteSave(false)\r\n },\r\n color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)',\r\n },\r\n ]}\r\n />}\r\n <UiCardBody style={{ display: 'flex', justifyContent: 'center', height: '100%' }}>\r\n {(!planNote.text && !planNote.editor) ?\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n userSelect: 'none',\r\n cursor: 'pointer',\r\n height: '100%'\r\n }}\r\n onClick={\r\n () => {\r\n setPlanNote({\r\n ...planNote,\r\n editor: true\r\n })\r\n }\r\n }\r\n >\r\n <div style={{ padding: '7px', border: 'dotted 1px rgba(0,0,0,0.2)', borderRadius: '7px' }}>\r\n <Icon size={'33px'} color={\"rgba(0,0,0,0.2)\"}>add</Icon>\r\n </div>\r\n <div style={{ color: 'rgba(0,0,0,0.2)', fontSize: '22px', fontWeight: 'bold', marginLeft: '15px' }}>\r\n {translate('$__addNote')}\r\n </div>\r\n </div>\r\n : planNote.editor ?\r\n <TextareaAutosize\r\n style={{\r\n borderRadius: '7px',\r\n border: \"0px\",\r\n padding: '7px',\r\n fontFamily: '\"Soleto\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n fontSize: '16px',\r\n width: \"100%\",\r\n overflow: \"scroll\",\r\n height: \"100%\",\r\n minWidth: 'calc(100% - 0px)',\r\n maxWidth: 'calc(100% - 0px)',\r\n }}\r\n placeholder={translate('$__planNotePlaceholder')}\r\n onChange={(e) => {\r\n setPlanNoteSave(true)\r\n setPlanNote({\r\n ...planNote,\r\n text: e.target.value\r\n })\r\n }}\r\n onBlur={(e) => {\r\n if (e.target.value === '' || e.target.value === db.cards[hashs[0]].note) {\r\n setPlanNoteSave(false)\r\n setPlanNote({\r\n ...planNote,\r\n editor: false\r\n })\r\n }\r\n }}\r\n autoFocus\r\n spellcheck={false}\r\n >\r\n {planNote.text}\r\n </TextareaAutosize>\r\n :\r\n <div\r\n style={{\r\n fontSize: '16px',\r\n width: '100%',\r\n height: \"100%\",\r\n overflow: \"scroll\",\r\n maxHeight: \"90%\"\r\n }}\r\n onClick={() => {\r\n setPlanNote({\r\n ...planNote,\r\n editor: true\r\n })\r\n }}\r\n dangerouslySetInnerHTML={{\r\n __html: nl2br(planNote.text)\r\n }}\r\n >\r\n </div>\r\n }\r\n </UiCardBody>\r\n </UiCard>\r\n </div>\r\n )\r\n}\r\n\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(null,\r\n mapDispatchToProps\r\n)(Notes);\r\n","module.exports = __webpack_public_path__ + \"static/media/strategy-pt.625a0c5b.png\";","import React from \"react\";\r\n\r\n//COMPONENTS\r\nimport Icon from \"components/Icon\";\r\n\r\n//@MATERIAL\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//FUNCTIONS\r\nimport { customApp } from \"functions/\";\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n iconButtonStyle: {\r\n margin: 0,\r\n backgroundColor: '#FFFFFF',\r\n '&:hover': {\r\n backgroundColor: 'rgba(250,250,250,0.9)'\r\n }\r\n },\r\n}));\r\n\r\n\r\nexport default function CustomButton(props) {\r\n const classes = useStyles();\r\n return (\r\n <Tooltip\r\n title={props.title ? props.title : ''}\r\n >\r\n <IconButton\r\n onClick={props.onClick ? (e) => {\r\n props.onClick()\r\n } : null}\r\n className={classes.iconButtonStyle}\r\n style={props.style || {}}\r\n >\r\n <Icon\r\n usePropagation\r\n size={props.size ? props.size : \"20px\"}\r\n color={props.color ? props.color : customApp('menu')}\r\n icon={props.icon ? props.icon : 'circle'} />\r\n </IconButton>\r\n </Tooltip>\r\n )\r\n}","import { customApp } from \"functions/\";\r\n\r\nexport default {\r\n control: {\r\n backgroundColor: '#fff',\r\n fontSize: 14,\r\n fontFamily: \"Roboto\",\r\n fontWeight: 'normal',\r\n lineHeight: '17px',\r\n },\r\n\r\n '&multiLine': {\r\n control: {\r\n fontFamily: 'Roboto',\r\n // minHeight: 63,\r\n },\r\n highlighter: {\r\n padding: 9,\r\n border: '1px solid transparent',\r\n boxSizing: 'border-box',\r\n overflow: 'hidden',\r\n maxHeight: 150,\r\n },\r\n input: {\r\n padding: 9,\r\n border: '1px solid silver',\r\n overflow: 'auto',\r\n maxHeight: 150,\r\n borderColor: 'transparent',\r\n },\r\n },\r\n\r\n '&singleLine': {\r\n display: 'inline-block',\r\n width: 180,\r\n lineHeight: '17px',\r\n highlighter: {\r\n lineHeight: '17px',\r\n padding: 1,\r\n border: '2px inset transparent',\r\n },\r\n input: {\r\n lineHeight: '17px',\r\n padding: 1,\r\n border: '2px inset',\r\n },\r\n },\r\n\r\n suggestions: {\r\n position: 'absolute',\r\n list: {\r\n backgroundColor: 'white',\r\n border: '1px solid rgba(0,0,0,0.15)',\r\n borderRadius: '7px 7px',\r\n boxShadow: '0 0 3px 5px rgba(0,0,0,0.05)',\r\n fontSize: 14,\r\n zIndex: 200,\r\n maxHeight: '151px !important',\r\n overflow: 'auto !important'\r\n },\r\n item: {\r\n padding: '5px 15px',\r\n borderBottom: '1px solid rgba(0,0,0,0.15)',\r\n '&focused': {\r\n backgroundColor: customApp('color'),\r\n },\r\n },\r\n zIndex: 500,\r\n bottom: '100%',\r\n top: 'none',\r\n left: '33px',\r\n height: 'auto',\r\n maxHeight: '151px !important',\r\n overflow: 'auto !important'\r\n },\r\n}","import {\r\n infoColor,\r\n primaryColor,\r\n successColor,\r\n dangerColor,\r\n warningColor,\r\n whiteColor,\r\n blackColor,\r\n grayColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nimport {\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nimport { customApp } from \"functions/\";;\r\nconst timelineStyle = theme => ({\r\n root: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n },\r\n rootRelative: {\r\n position: 'relative',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n },\r\n content: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n overflowY: 'auto',\r\n backgroundColor: 'rgba(249,249,249,1)'\r\n },\r\n timeline: {\r\n listStyle: \"none\",\r\n padding: \"0\",\r\n position: \"absolute\",\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n width: '100%',\r\n '& .file-drop-target': {\r\n width: '100%',\r\n display: 'flex',\r\n position: 'absolute',\r\n bottom: '0px',\r\n left: '0px',\r\n right: '0px',\r\n height: 'auto'\r\n }\r\n },\r\n scrollEnd: {\r\n marginTop: '160px',\r\n position: 'relative',\r\n width: '100%',\r\n height: '0px',\r\n marginBottom: '-100px'\r\n },\r\n timelineSimple: {\r\n position: 'relative',\r\n // overflowX: 'auto',\r\n overflow: \"hidden\",\r\n marginTop: \"0px\",\r\n padding: \"0 0 20px\",\r\n width: '-webkit-fill-available',\r\n \"&:before\": {\r\n left: \"15px\"\r\n },\r\n },\r\n item: {\r\n marginBottom: \"5px\",\r\n position: \"relative\",\r\n width: 'calc(100% - 15px)',\r\n \"&:before,&:after\": {\r\n content: '\" \"',\r\n display: \"table\"\r\n },\r\n \"&:after\": {\r\n clear: \"both\"\r\n }\r\n },\r\n timelineBadge: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n left: \"30px !important\"\r\n },\r\n color: whiteColor,\r\n width: \"30px\",\r\n height: \"30px\",\r\n lineHeight: \"25px\",\r\n fontSize: \"12px\",\r\n textAlign: \"center\",\r\n position: \"absolute\",\r\n bottom: \"23px\",\r\n left: \"50%\",\r\n marginLeft: \"-24px\",\r\n zIndex: \"1\",\r\n borderTopRightRadius: \"50%\",\r\n borderTopLeftRadius: \"50%\",\r\n borderBottomRightRadius: \"50%\",\r\n borderBottomLeftRadius: \"50%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n\r\n },\r\n timelineSimpleBadge: {\r\n left: \"30px\"\r\n },\r\n custom: {\r\n backgroundColor: customApp('color'),\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.4)\"\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.4)\"\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.4)\"\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.4)\"\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.4)\"\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n boxShadow:\r\n \"0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.4)\"\r\n },\r\n badgeIcon: {\r\n width: \"14px\",\r\n height: \"14px\"\r\n },\r\n timelinePanel: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n float: \"right !important\",\r\n width: \"calc(100% - 60px) !important\",\r\n \"&:before\": {\r\n borderLeftWidth: \"0 !important\",\r\n borderRightWidth: \"15px !important\",\r\n left: \"-20px !important\",\r\n right: \"auto !important\"\r\n },\r\n \"&:after\": {\r\n borderLeftWidth: \"0 !important\",\r\n borderRightWidth: \"14px !important\",\r\n left: \"-19px !important\",\r\n right: \"auto !important\"\r\n }\r\n },\r\n width: \"45%\",\r\n float: \"left\",\r\n padding: \"7px\",\r\n marginBottom: \"5px\",\r\n position: \"relative\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: whiteColor,\r\n \"&:before\": {\r\n position: \"absolute\",\r\n bottom: \"16px\",\r\n right: \"-15px\",\r\n display: \"inline-block\",\r\n borderTop: \"15px solid transparent\",\r\n borderLeft: \"15px solid \" + grayColor[10],\r\n borderRight: \"0 solid \" + grayColor[10],\r\n borderBottom: \"15px solid transparent\",\r\n content: '\" \"'\r\n },\r\n \"&:after\": {\r\n position: \"absolute\",\r\n bottom: \"16px\",\r\n right: \"-14px\",\r\n display: \"inline-block\",\r\n borderTop: \"14px solid transparent\",\r\n borderLeft: \"14px solid \" + whiteColor,\r\n borderRight: \"0 solid \" + whiteColor,\r\n borderBottom: \"14px solid transparent\",\r\n content: '\" \"'\r\n }\r\n },\r\n timelineSimplePanel: {\r\n width: \"calc(100% - 60px)\"\r\n },\r\n timelinePanelInverted: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n float: \"right\",\r\n backgroundColor: whiteColor,\r\n \"&:before\": {\r\n borderLeftWidth: \"0\",\r\n borderRightWidth: \"15px\",\r\n left: \"-15px\",\r\n right: \"auto\"\r\n },\r\n \"&:after\": {\r\n borderLeftWidth: \"0\",\r\n borderRightWidth: \"14px\",\r\n left: \"-14px\",\r\n right: \"auto\"\r\n }\r\n }\r\n },\r\n timelineHeading: {\r\n marginBottom: \"0px\"\r\n },\r\n timelineBody: {\r\n fontSize: \"12px\",\r\n lineHeight: \"21px\"\r\n },\r\n timelineFooter: {\r\n zIndex: \"1\",\r\n position: \"relative\",\r\n float: \"left\",\r\n width: '100%',\r\n display: \"inline-flex\",\r\n justifyContent: \"space-between\"\r\n },\r\n footerUser: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontSize: '12px',\r\n fontWeight: 'bold',\r\n color: customApp('medium')\r\n },\r\n footerLine: {\r\n position: 'relative',\r\n marginTop: \"10px\",\r\n marginBottom: \"5px\"\r\n },\r\n dropFile: {\r\n display: 'none',\r\n },\r\n onDropFile: {\r\n position: 'absolute',\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#FFFFFF',\r\n backgroundColor: 'rgba(0,0,0,0.77)',\r\n zIndex: 11,\r\n },\r\n editor: {\r\n position: 'absolute',\r\n bottom: '0px',\r\n // minHeight: '50px',\r\n height: 'auto',\r\n width: 'calc(100% - 0px)',\r\n zIndex: 10,\r\n },\r\n editorRelative: {\r\n position: 'relative',\r\n bottom: '0px',\r\n minHeight: '50px',\r\n height: 'auto',\r\n width: 'calc(100% - 0px)',\r\n zIndex: 10,\r\n },\r\n files: {\r\n display: 'inline-table',\r\n position: 'absolute',\r\n // backgroundColor: 'rgba(250,250,250,0.95)',\r\n width: '100%',\r\n bottom: 0,\r\n },\r\n textEditor: {\r\n zIndex: 100\r\n },\r\n textEditorIcon: {\r\n cursor: 'pointer',\r\n color: customApp('color'),\r\n },\r\n progressBar: {\r\n backgroundColor: `${customApp('color', '0.1')} !important`,\r\n '& .MuiLinearProgress-indeterminate': {\r\n backgroundColor: `${customApp('color')} !important`\r\n },\r\n '& .MuiLinearProgress-bar': {\r\n backgroundColor: `${customApp('color')} !important`\r\n },\r\n },\r\n actionButton: {\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n float: 'left',\r\n height: '20px',\r\n position: 'relative',\r\n textAlign: 'center',\r\n width: '30px',\r\n },\r\n sendingMessage: {\r\n width: '100%'\r\n },\r\n valuePositive: {\r\n positive: 'relative',\r\n float: 'left',\r\n color: 'blue',\r\n },\r\n valueNegative: {\r\n positive: 'relative',\r\n float: 'left',\r\n color: 'red',\r\n },\r\n lastValue: {\r\n positive: 'relative',\r\n float: 'right',\r\n color: 'grey',\r\n },\r\n timeInfo: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'grey',\r\n width: '100%',\r\n position: 'relative',\r\n float: 'left',\r\n marginBottom: '7px',\r\n '& .text': {\r\n marginLeft: '7px',\r\n }\r\n },\r\n urlPreview: {\r\n position: 'absolute',\r\n width: '100%',\r\n top: '-90px',\r\n maxHeight: '120px',\r\n background: 'linear-gradient(60deg, rgba(250,250,250,1), rgba(250,250,250,0.9))',\r\n padding: '7px',\r\n display: 'flex',\r\n overflow: 'auto',\r\n alignItems: 'center',\r\n '& img': {\r\n maxWidth: '20%',\r\n height: 'auto',\r\n position: 'relative',\r\n float: 'left',\r\n marginTop: '0px',\r\n marginRight: '7px'\r\n },\r\n '& .data': {\r\n position: 'relative',\r\n float: 'left',\r\n width: '75%',\r\n '& .title': {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n },\r\n '& .siteName': {\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n color: '#909090'\r\n },\r\n '& .contentSnippet': {\r\n fontSize: '12px',\r\n color: '#909090'\r\n }\r\n }\r\n },\r\n mentionInput: {\r\n ...defaultFont,\r\n '& textarea': {\r\n ...defaultFont,\r\n padding: '7px',\r\n borderRadius: '7px',\r\n fontSize: '16px',\r\n width: 'calc(100% - 14px)',\r\n minHeight: '38px',\r\n border: 'solid 1px rgba(0,0,0,0.1)'\r\n },\r\n '& .sugestions': {\r\n top: 'none !important',\r\n bottom: '40px',\r\n border: 'solid 10px red'\r\n },\r\n '& textarea::placeholder': {\r\n color: 'rgba(0,0,0,0.2)',\r\n }\r\n },\r\n mentionWrapper: {\r\n width: '100%',\r\n background: 'transparent',\r\n fontSize: '0.9rem',\r\n color: ' #a9b5c4',\r\n '&&.mentionWrapper__control': {\r\n borderRadius: '25px',\r\n border: '1px solid #3a546f',\r\n minHeight: '45px',\r\n '&& .mentionWrapper__highlighter': {\r\n padding: '0.7rem 1rem',\r\n },\r\n '&& .mentionWrapper__input': {\r\n padding: '0.7rem 1rem',\r\n border: 0,\r\n resize: 'none',\r\n outline: 'none',\r\n fontSize: '0.9rem',\r\n color: '#7288a3',\r\n borderColor: ' #3a546f',\r\n overflow: 'hidden',\r\n '&& :: placeholder': {\r\n color: '#7288a3',\r\n }\r\n }\r\n },\r\n },\r\n})\r\n\r\nexport default timelineStyle;\r\n","import React from \"react\";\r\nimport { FileDrop } from \"react-file-drop\";\r\nimport { MentionsInput, Mention } from 'react-mentions';\r\nimport { v4 as uuid } from \"uuid\";\r\nimport Picker from 'emoji-picker-react';\r\nimport moment from \"moment-timezone\"\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 Icon from \"components/Icon\";\r\nimport CustomIconButton from \"components/CustomButtons/icon\";\r\nimport CustomButton from \"components/Buttons/custom\";\r\n\r\n//DEPENDENCIES\r\nimport Message from \"./message\"\r\n\r\n//@MATERIAL\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//STYLES\r\nimport mentionInputStyle from \"assets/jss/material-dashboard-pro-react/components/Mentions-Input\";\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/timelineSending\";\r\n\r\n//FUNCTIONS\r\nimport { cardsAccess } from \"functions/users\";\r\nimport { translate, customApp, getAppAccess, appAlert } from \"functions/\";\r\nimport { upload } from \"functions/upload\";\r\nimport { timelineComment } from \"functions/chat.js\"\r\nimport apims from \"apims\"\r\nimport api from \"api\"\r\n\r\n//IMAGES\r\nimport defaultAvatar from \"assets/img/fundo-sonne.png\"\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport ErrorBoundary from \"components/ErrorBoundary\";\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nconst Timeline = (props) => {\r\n const { db, session } = reduxStore.getState()\r\n const [message, setMessage] = React.useState('')\r\n const [sending, setSending] = React.useState(false);\r\n const [fileDropDrag, setFileDropDrag] = React.useState(false);\r\n const [fileList, setFileList] = React.useState([]);\r\n const [fileSend, setFileSend] = React.useState([]);\r\n const [fileProgress, setFileProgress] = React.useState({})\r\n const [fileError, setFileError] = React.useState(null)\r\n const [urlPreview, setUrlPreview] = React.useState(null)\r\n const [urlPreviewLoad, setUrlPreviewLoad] = React.useState(false)\r\n const [urlErrors, setUrlErros] = React.useState([])\r\n const [onEmojiPicker, setOnEmojiPicker] = React.useState(false)\r\n const [inputHeight, setHeight] = React.useState(58)\r\n\r\n const classes = useStyles()\r\n const refFileDrop = React.createRef()\r\n const sendingInput = React.createRef()\r\n\r\n const mounted = React.useRef(true)\r\n\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n let AppAccess = getAppAccess()\r\n\r\n let CardAccess = 0\r\n\r\n if (session._id\r\n && db.cards[props.nodeId]\r\n && db.cards[props.nodeId]._users\r\n && db.cards[props.nodeId]._users[Object.keys(db.cards[props.nodeId]._users).find(a => a.indexOf(session._id) > -1)])\r\n CardAccess = db.cards[props.nodeId]._users[Object.keys(db.cards[props.nodeId]._users).find(a => a.indexOf(session._id) > -1)]\r\n\r\n let hashs = window.location.hash.split('/')\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n React.useEffect(() => {\r\n if (mounted.current)\r\n if (props.draft && props.draft.message) {\r\n setMessage(props.draft.message)\r\n } else {\r\n setMessage(\"\")\r\n }\r\n if (props?.draft?.files) {\r\n setFileList(props.draft.files)\r\n } else {\r\n setFileList([])\r\n }\r\n\r\n return () => {\r\n setMessage(\"\")\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.nodeId])\r\n\r\n const textInput = React.createRef()\r\n\r\n React.useEffect(() => {\r\n const inputId = document.getElementById(`sendingInput_${props.nodeId}`)\r\n if (props.draft?.reply && inputId)\r\n inputId.focus()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.draft])\r\n\r\n // const sendTyping = async () => {\r\n // let ids = []\r\n // let group = null\r\n // if (db.cards[props.nodeId] && db.cards[props.nodeId].type === 'chatGroup') {\r\n // group = props.nodeId\r\n // Object.keys(db.cards[props.nodeId]._users).map(id => {\r\n // if (ids.indexOf(id) === -1)\r\n // ids.push(id)\r\n // })\r\n // socket.emit(\"timeline.TYPING\", {\r\n // to: ids,\r\n // group: group\r\n // })\r\n // } else {\r\n // ids.push(props.nodeId)\r\n // socket.emit(\"timeline.TYPING\", {\r\n // to: ids\r\n // })\r\n // }\r\n // }\r\n\r\n const mentionedUsers = () => {\r\n let newText\r\n newText = message\r\n let usersMentioned = []\r\n if (newText) {\r\n const test1 = newText.split('@[')\r\n if (test1.length > 0)\r\n test1.forEach(a => {\r\n if (a) {\r\n let id = a.split(\"](\")[1]\r\n if (id) {\r\n id = id.split(\")\")[0]\r\n if (id && id.length === 36) {\r\n usersMentioned.push(id)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n return usersMentioned\r\n }\r\n\r\n const sendMessage = async () => {\r\n let notifyUsers = []\r\n let dataMessage = {\r\n _id: uuid(),\r\n idRel: props.nodeId,\r\n replyData: props.draft && props.draft.reply && reduxStore.getState().timeline[props.nodeId][props.draft.reply] ? reduxStore.getState().timeline[props.nodeId][props.draft.reply] : {},\r\n reply: props.draft && props.draft.reply ? props.draft.reply : null,\r\n message: message,\r\n type: 'comment',\r\n mentions: mentionedUsers(),\r\n notifyUsers: notifyUsers,\r\n filesCount: fileList.length > 0 ? fileList.length : 0,\r\n _parent: props.nodeId,\r\n _client: db.cards[props.nodeId] && db.cards[props.nodeId].client ? db.cards[props.nodeId].client : null,\r\n db: props.db ? props.db : 'cards'\r\n }\r\n if (urlPreview) {\r\n dataMessage = { ...dataMessage, urlPreview: JSON.stringify(urlPreview) }\r\n setUrlPreview(null)\r\n }\r\n\r\n setMessage(\"\")\r\n setOnEmojiPicker(false)\r\n if (fileList.length > 0) setSending(true)\r\n\r\n\r\n let mentions = mentionedUsers();\r\n if (db.cards[props.nodeId]\r\n && db.cards[props.nodeId].type !== 'chatGroup'\r\n && db.cards[props.nodeId]._users\r\n && Object.keys(db.cards[props.nodeId]._users).length > 0\r\n )\r\n Object.keys(db.cards[props.nodeId]._users).filter(a => a !== session._id && mentions.indexOf(a) === -1).forEach(a => {\r\n notifyUsers.push(a)\r\n })\r\n\r\n if (props.onSending)\r\n props.onSending({\r\n ...dataMessage,\r\n user: {\r\n _id: session._id,\r\n name: db.users[session._id].name,\r\n image: db.users[session._id].image || null,\r\n },\r\n })\r\n let comment = {\r\n ...dataMessage,\r\n created_at: `${moment().unix('x')}`,\r\n user: {\r\n _id: session._id,\r\n name: db.users[session._id].name,\r\n image: db.users[session._id].image || null,\r\n },\r\n }\r\n if (comment.mentions)\r\n delete comment.mentions\r\n\r\n if (comment.notifyUsers)\r\n delete comment.notifyUsers\r\n\r\n if (comment.db)\r\n delete comment.db\r\n\r\n timelineComment({\r\n reduxFunction: props.reduxFunction\r\n }, {\r\n ...dataMessage,\r\n comment\r\n })\r\n\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_CHATS\", {\r\n ...reduxStore.getState().chats,\r\n drafts: {\r\n ...reduxStore.getState().chats.drafts,\r\n [props.nodeId]: {\r\n message: null,\r\n reply: null,\r\n files: null\r\n }\r\n }\r\n })\r\n let sendMessage = await api.post(\"timeline/add\", dataMessage)\r\n\r\n if (sendMessage && sendMessage.data) {\r\n const response = sendMessage.data\r\n if (response._id) {\r\n let comment = {\r\n ...response.comment,\r\n _parent: props.nodeId,\r\n _client: db.cards[props.nodeId] && db.cards[props.nodeId].client ? db.cards[props.nodeId].client : null\r\n }\r\n let userAccessNew = 2\r\n if (CardAccess < 2)\r\n userAccessNew = CardAccess\r\n\r\n mentions.map(async a => {\r\n if (db.cards[props.nodeId]\r\n && (\r\n !db.cards[props.nodeId]._users\r\n || (\r\n db.cards[props.nodeId]._users\r\n && !db.cards[props.nodeId]._users[a]\r\n )\r\n )\r\n )\r\n cardsAccess(props, a, userAccessNew, props.nodeId, true)\r\n })\r\n if (fileList.length > 0) {\r\n sendFiles({ comment, dataMessage });\r\n } else {\r\n if (props.onSending)\r\n props.onSending()\r\n\r\n setFileSend([]);\r\n setFileList([]);\r\n setUrlErros([]);\r\n setUrlPreview(null);\r\n setUrlPreviewLoad(false);\r\n setSending(false)\r\n if (props.onSending) {\r\n props.onSending()\r\n }\r\n }\r\n }\r\n }\r\n return false\r\n }\r\n\r\n const onUploadProgress = async (event, fi) => {\r\n const percentCompleted = Math.round((event.loaded * 100) / event.total);\r\n setFileProgress({\r\n ...fileProgress,\r\n [fi]: percentCompleted\r\n })\r\n };\r\n\r\n const onUploadError = async (options, fi) => {\r\n setFileError({\r\n options,\r\n fi\r\n })\r\n setFileProgress({})\r\n };\r\n\r\n const sendFiles = async (options, n = 0, sendedList = []) => {\r\n const { comment, dataMessage } = options\r\n let files = Array.from(fileList)\r\n files.map(async (f, fi) => {\r\n if (fi === n) {\r\n const fileUpload = await upload(comment._id, f, true, {\r\n onUploadProgress: (e) => onUploadProgress(e, fi),\r\n onUploadError: (e) => {\r\n onUploadError(options, fi)\r\n }\r\n })\r\n if (fileUpload) {\r\n let nFilesSend = Array.from(sendedList)\r\n nFilesSend.push(fileUpload)\r\n setFileSend(nFilesSend)\r\n\r\n if (files.length > n + 1) {\r\n sendFiles(options, n + 1, nFilesSend)\r\n } else if (files.length === n + 1) {\r\n dataMessage.files = nFilesSend\r\n setTimeout(() => {\r\n api.post(\"timeline/add\", dataMessage)\r\n // socket.emit(\"data\", {\r\n // module: \"timeline\",\r\n // method: \"post\",\r\n // action: \"add\"\r\n // },\r\n // dataMessage,\r\n // )\r\n }, 1000)\r\n\r\n setFileSend([]);\r\n setFileList([]);\r\n setUrlPreview(null);\r\n setUrlPreviewLoad(false);\r\n setSending(false)\r\n if (props.onSending) {\r\n props.onSending()\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n const onDropFile = async event => {\r\n let fileSizeAlert = false\r\n setFileList([...fileList, ...Object.keys(event)\r\n .filter(file => {\r\n if (event[file].size > 100663296) { //96MB\r\n fileSizeAlert = true\r\n return false\r\n }\r\n return true\r\n })\r\n .map(file => event[file])])\r\n if (fileSizeAlert)\r\n appAlert({\r\n message: translate(\"$__filesSentCannotExceed100mbEach\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"center\",\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_CHATS\", {\r\n ...reduxStore.getState().chats,\r\n drafts: {\r\n ...reduxStore.getState().chats.drafts,\r\n [props.nodeId]: {\r\n ...reduxStore.getState().chats.drafts?.[props.nodeId] || {},\r\n files: [...fileList, ...Object.keys(event)\r\n .filter(file => {\r\n if (event[file].size > 100663296) { //96MB\r\n return false\r\n }\r\n return true\r\n })\r\n .map(file =>\r\n event[file]\r\n )]\r\n }\r\n }\r\n })\r\n setFileDropDrag(false)\r\n }\r\n\r\n const deleteFile = i => {\r\n let files = Array.from(fileList)\r\n files.splice(i, 1)\r\n setFileList(files)\r\n }\r\n\r\n const verifyText = async (f) => {\r\n setMessage(f)\r\n if (f\r\n\r\n && (\r\n f.indexOf('http://') > -1\r\n ||\r\n f.indexOf('https://') > -1\r\n )\r\n ) {\r\n let url = ''\r\n let text = []\r\n if (f.indexOf(' ') > -1) {\r\n text = f.split(' ')\r\n } else if (f.indexOf('\\n') > -1) {\r\n text = f.split('\\n')\r\n } else {\r\n text.push(f)\r\n }\r\n var pattern = new RegExp('^(https?:\\\\/\\\\/)?' + // protocol\r\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\r\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\r\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\r\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\r\n '(\\\\#[-a-z\\\\d_]*)?$', 'i'); // fragment locator\r\n\r\n await text.forEach(a => {\r\n let test = a.replace(':', \"\")\r\n if (\r\n (\r\n test.indexOf('http://') > -1\r\n ||\r\n test.indexOf('https://') > -1\r\n )\r\n &&\r\n !!pattern.test(test)) {\r\n url = a\r\n }\r\n })\r\n\r\n if (\r\n (\r\n !urlPreview\r\n && url\r\n && urlErrors.indexOf(url) === -1\r\n )\r\n ||\r\n (\r\n url\r\n && urlPreview\r\n && urlErrors.indexOf(url) === -1\r\n && urlPreview.link !== url\r\n )\r\n ) {\r\n setUrlPreviewLoad(true)\r\n if (f.indexOf('youtube.com/watch?') === -1) {\r\n try {\r\n let dataUrl = await apims.post(\"/URL_DATA\", {\r\n url\r\n })\r\n if (dataUrl && dataUrl.data) {\r\n let result = dataUrl.data\r\n\r\n if (result && result.title && result.img && result.contentSnippet) {\r\n setUrlPreview(result)\r\n } else {\r\n setUrlPreviewLoad(false)\r\n setUrlPreview(null)\r\n }\r\n } else {\r\n setUrlPreviewLoad(false)\r\n setUrlPreview(null)\r\n }\r\n } catch (e) {\r\n setUrlPreviewLoad(false)\r\n setUrlPreview(null)\r\n let urlErrorsArray = urlErrors\r\n urlErrorsArray.push(url)\r\n setUrlErros(urlErrorsArray)\r\n appAlert({\r\n message: translate(\"$__couldNotLoadDataFromURL\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"center\",\r\n })\r\n console.log(e)\r\n }\r\n }\r\n\r\n if (f.indexOf('youtube.com/watch?') > -1)\r\n setUrlPreviewLoad(false)\r\n }\r\n }\r\n if (\r\n f.indexOf('youtube.com/watch?') > -1\r\n ) {\r\n setUrlPreviewLoad(false)\r\n }\r\n }\r\n\r\n const onEmojiClick = (event, emojiObject) => {\r\n setMessage(`${message} ${emojiObject.emoji}`)\r\n };\r\n\r\n let usersSuggestion = []\r\n\r\n if (db.cards[props.nodeId] && db.cards[props.nodeId]._users)\r\n Object.keys(db.cards[props.nodeId]._users).forEach(a => {\r\n if (a\r\n && a !== null\r\n && a !== undefined\r\n && a !== session._id\r\n && db.cards[props.nodeId]._users[a].name\r\n && (\r\n !db.users[a]\r\n || (\r\n db.users[a]\r\n && !db.users[a].deleted\r\n )\r\n )\r\n ) {\r\n let id = db.cards[props.nodeId]._users[a]._id\r\n let display = db.cards[props.nodeId]._users[a].name ? db.cards[props.nodeId]._users[a].name : db.cards[props.nodeId]._users[a].name.split(' ').length > 0 ? db.cards[props.nodeId]._users[a].name.split(' ')[0] : db.cards[props.nodeId]._users[a].name\r\n if (id && Object.keys(usersSuggestion).filter(a => usersSuggestion[a].id === id).length === 0)\r\n usersSuggestion.push({ id: id, display: display })\r\n }\r\n })\r\n\r\n if (\r\n (\r\n db.cards[props.nodeId]\r\n && !db.cards[props.nodeId].private\r\n )\r\n &&\r\n (\r\n (\r\n AppAccess\r\n && (\r\n AppAccess.owner\r\n || AppAccess.planAdmin\r\n || AppAccess.planModerate\r\n )\r\n ) ||\r\n (\r\n CardAccess\r\n && CardAccess.access\r\n && parseInt(CardAccess.access) > 3\r\n )\r\n )\r\n ) {\r\n Object.keys(db.users)\r\n .filter(fil => {\r\n if (!db.users[fil].deleted && db.users[fil].type === 'user') {\r\n if (\r\n (\r\n db.cards[props.nodeId]\r\n && db.cards[props.nodeId].client\r\n && (\r\n !db.users[fil]._parent\r\n || db.users[fil]._parent === db.cards[props.nodeId].client\r\n )\r\n )\r\n ||\r\n (\r\n db.cards[props.nodeId]\r\n && !db.cards[props.nodeId].client\r\n && db.cards[props.nodeId]._planId\r\n && db.cards[db.cards[props.nodeId]._planId]\r\n && db.cards[db.cards[props.nodeId]._planId].client\r\n && (\r\n !db.users[fil]._parent\r\n || db.users[fil]._parent === db.cards[db.cards[props.nodeId]._planId].client\r\n )\r\n )\r\n ||\r\n (\r\n db.cards[props.nodeId]\r\n && !db.cards[props.nodeId].client\r\n && !db.users[fil]._parent\r\n )\r\n )\r\n return true\r\n }\r\n return false\r\n })\r\n .forEach(a => {\r\n if (a\r\n && a !== null\r\n && a !== undefined\r\n && a !== session._id\r\n && Object.keys(usersSuggestion).filter(fs => {\r\n if (usersSuggestion[fs].id === a)\r\n return true\r\n return false\r\n }).length === 0\r\n ) {\r\n usersSuggestion.push({\r\n id: a,\r\n display: props.nodeId && db.cards[props.nodeId] && db.cards[props.nodeId]._users && db.cards[props.nodeId]._users[a] && db.cards[props.nodeId]._users[a].name ? db.cards[props.nodeId]._users[a].name : db.users[a].displayName ? db.users[a].displayName : db.users[a].name\r\n })\r\n }\r\n })\r\n }\r\n\r\n if (db.cards[props.nodeId] &&\r\n (\r\n db.cards[props.nodeId]._parent\r\n && db.cards[db.cards[props.nodeId]._parent]\r\n && db.cards[db.cards[props.nodeId]._parent]._users\r\n )\r\n )\r\n Object.keys(db.cards[db.cards[props.nodeId]._parent]._users).forEach(a => {\r\n if (a\r\n && a !== null\r\n && a !== undefined\r\n && a !== session._id\r\n && Object.keys(usersSuggestion).filter(fs => {\r\n if (usersSuggestion[fs].id === a)\r\n return true\r\n return false\r\n }).length === 0\r\n ) {\r\n usersSuggestion.push({\r\n id: a,\r\n display: db.cards[db.cards[props.nodeId]._parent]._users[a].name,\r\n image: db.cards[db.cards[props.nodeId]._parent]._users[a].image || null\r\n })\r\n }\r\n })\r\n\r\n if (db.cards[props.nodeId] &&\r\n (\r\n db.cards[props.nodeId]._planId\r\n && db.cards[db.cards[props.nodeId]._planId]\r\n && db.cards[db.cards[props.nodeId]._planId]._users\r\n )\r\n )\r\n Object.keys(db.cards[db.cards[props.nodeId]._planId]._users).forEach(a => {\r\n if (a\r\n && a !== null\r\n && a !== undefined\r\n && a !== session._id\r\n && Object.keys(usersSuggestion).filter(fs => {\r\n if (usersSuggestion[fs].id === a)\r\n return true\r\n return false\r\n }).length === 0\r\n ) {\r\n usersSuggestion.push({\r\n id: a,\r\n display: db.cards[db.cards[props.nodeId]._planId]._users[a].name,\r\n image: db.cards[db.cards[props.nodeId]._planId]._users[a].image || null\r\n })\r\n }\r\n })\r\n\r\n return (\r\n <FileDrop\r\n ref={refFileDrop}\r\n className={props.relative ? classes.rootRelative : classes.root}\r\n onDragOver={\r\n () => {\r\n !props.disabledSend &&\r\n setFileDropDrag(true)\r\n }\r\n }\r\n onDrop={onDropFile}\r\n accept={\".png, .jpg, .jpeg, .bpm, .svg, .gif, .pdf, .mp4, .3gp, .ts, .mkv, .avi, .mov, .mts, m2ts, .mxf, .aac, aiff, .caf, .ogg, .mp3, .wav, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .zip, .rar\"}\r\n >\r\n <React.Fragment>\r\n {props.nodeId && !props.disabledSend ?\r\n <div className={props.relative ? classes.editorRelative : classes.editor}\r\n style={{\r\n ...props.editorStyle ? props.editorStyle : {},\r\n backgroundColor: \"#F0F0F0\"\r\n }}>\r\n <div className={classes.textEditor}>\r\n {urlPreviewLoad && !urlPreview &&\r\n <div className={classes.urlPreview} style={{ width: '100%', height: '150px' }}>\r\n <div style={{ display: 'flex' }}>\r\n <div style={{ marginLeft: '7px', width: '200px', height: '110px', maxWidth: '50%' }}>\r\n <Skeleton variant=\"rect\" style={{ width: '200px', height: '110px', maxWidth: '100%' }} />\r\n </div>\r\n <div style={{ marginLeft: '7px', width: '100%', height: '25px' }}>\r\n <Skeleton variant=\"text\" height={25} style={{ marginBottom: '7px' }} />\r\n <Skeleton variant=\"text\" height={10} />\r\n <Skeleton variant=\"text\" height={10} />\r\n <Skeleton variant=\"text\" height={10} />\r\n <Skeleton variant=\"text\" height={10} />\r\n <Skeleton variant=\"text\" height={10} />\r\n <Skeleton variant=\"text\" height={10} />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n {(\r\n (props.draft && props.draft.reply)\r\n || (fileList && fileList.length > 0)\r\n ) ?\r\n <div style={{\r\n position: \"absolute\",\r\n right: 0,\r\n left: 0,\r\n height: \"auto\",\r\n padding: 7,\r\n bottom: inputHeight + 4,\r\n backgroundColor: \"#f0f0f0\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }}>\r\n {props.draft && props.draft.reply ?\r\n <div\r\n style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n <div style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\"\r\n }}>\r\n\r\n <div style={{ color: customApp(\"menu\"), display: \"flex\", alignItems: \"center\" }}>\r\n <Icon\r\n icon='reply'\r\n color={customApp('menu')}\r\n size={'22px'}\r\n /><span style={{ marginLeft: 10 }}>{translate(\"$__reply\")}</span></div>\r\n\r\n\r\n </div>\r\n\r\n <div style={{\r\n display: \"flex\",\r\n margin: \"auto\",\r\n padding: 15,\r\n alignItems: \"center\",\r\n width: \"77%\",\r\n backgroundColor: \"rgba(250,250,250,0.33)\",\r\n borderRadius: 5,\r\n borderLeft: `5px solid ${customApp(\"menu\")}`\r\n }}>\r\n <ErrorBoundary>\r\n <Message\r\n storie={reduxStore.getState().timeline[props.nodeId][props.draft.reply]}\r\n hideCards={true}\r\n db={props.db}\r\n nodeId={props.nodeId}\r\n showUserName={true}\r\n noReactions={true}\r\n />\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n right: 0\r\n }}>\r\n <CustomButton\r\n title={translate(\"$__cancelReply\")}\r\n color=\"red\"\r\n icon={\"cancel\"}\r\n size={\"17px\"}\r\n onClick={() => {\r\n props.reduxFunction(\"ASYNC\", \"SET_CHATS\", {\r\n ...reduxStore.getState().chats,\r\n drafts: {\r\n ...reduxStore.getState().chats.drafts,\r\n [props.nodeId]: {\r\n ...reduxStore.getState().chats.drafts[props.nodeId] || {},\r\n reply: null,\r\n }\r\n }\r\n })\r\n }}\r\n transparent\r\n />\r\n </div>\r\n </ErrorBoundary>\r\n </div>\r\n </div> : <React.Fragment></React.Fragment>}\r\n {fileList && fileList.length > 0 ?\r\n <div style={{\r\n position: \"relative\",\r\n maxHeight: \"100%\",\r\n width: \"100%\"\r\n }}>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n float: \"left\",\r\n padding: 3,\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(\"$__clearFiles\", 1)}\r\n text={translate(\"$__clearFiles\")}\r\n color={\"gray\"}\r\n icon='clear_all'\r\n onClick={() => {\r\n appAlert({\r\n message: translate(\"$__confirmClearFiles\", 1),\r\n variant: \"warning\",\r\n persist: false,\r\n horizontal: \"right\",\r\n confirm: () => {\r\n setFileList([])\r\n props.reduxFunction(\"ASYNC\", \"SET_CHATS\", {\r\n ...reduxStore.getState().chats,\r\n drafts: {\r\n ...reduxStore.getState().chats.drafts,\r\n [props.nodeId]: {\r\n ...reduxStore.getState().chats.drafts?.[props.nodeId] || {},\r\n files: null\r\n }\r\n }\r\n })\r\n }\r\n })\r\n\r\n }\r\n }\r\n size={\"25px\"}\r\n />\r\n\r\n </div>\r\n <div style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n float: \"left\",\r\n padding: 3,\r\n overflow: \"auto\",\r\n display: \"flex\"\r\n }}\r\n >\r\n {fileList.map((file, i) => {\r\n let ext = file.name.split('.')\r\n let img = `attachment`\r\n if (db.fileExtensions.filter(a => a.ext.indexOf(ext[ext.length - 1].toLowerCase()) > -1).length > 0)\r\n img = db.fileExtensions.filter(a => a.ext.indexOf(ext[ext.length - 1].toLowerCase()) > -1)[0].icon || URL.createObjectURL(file)\r\n return (\r\n <div\r\n key={i}\r\n title={file.name}\r\n style={{\r\n position: 'relative',\r\n padding: 7,\r\n width: \"100px\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n width: '50px',\r\n height: '50px',\r\n margin: 'auto',\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\"\r\n }}\r\n >\r\n {typeof img === 'string' && img.indexOf('blob:') === -1 && img.indexOf('svg') === -1 ?\r\n <Icon icon={img} size='50px' />\r\n :\r\n <img alt=\"MACHEN_IMAGE\" src={img} style={{ width: '100%', height: '100%' }} />\r\n }\r\n </div>\r\n <div\r\n\r\n style={{\r\n position: \"relative\",\r\n margin: \"auto\",\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n width: \"calc(100% - 30px)\",\r\n overflow: \"hidden\"\r\n }}>{file.name}</div>\r\n <div style={{\r\n position: \"absolute\",\r\n top: 0,\r\n right: 3,\r\n display: \"flex\"\r\n }}>\r\n\r\n {fileSend && fileSend.length > 0 && fileSend[i] ?\r\n <Icon icon=\"cloud_done\" color=\"green\" />\r\n : !sending ? <Icon icon=\"delete_forever\" color=\"red\" onClick={() => deleteFile(i)} /> : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n {\r\n fileError && fileError.fi === i ?\r\n <CustomButton\r\n title={translate(\"$__uploadFiles\", 1)}\r\n text={translate(\"$__fileSendErrorClickToReSend\")}\r\n color={\"red\"}\r\n icon='upload'\r\n onClick={() => {\r\n sendFiles({\r\n comment: fileError.options.comment\r\n }, fileError.fi, fileSend)\r\n setFileError(null)\r\n }\r\n }\r\n size={\"25px\"}\r\n />\r\n : fileProgress && String(fileProgress[i]) && fileProgress[i] < 100 ?\r\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\r\n\r\n <React.Fragment>\r\n <div style={{ minWidth: 177 }}>\r\n <LinearProgress variant=\"buffer\" className={classes.progressBar} value={fileProgress[i] < 90 ? fileProgress[i] : 90} valueBuffer={fileProgress[i]} />\r\n </div>\r\n <div style={{ color: customApp(\"color\"), fontSize: 10, marginLeft: 15 }}>{fileProgress[i] < 90 ? fileProgress[i] : 90}%</div>\r\n </React.Fragment>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n : <React.Fragment></React.Fragment>}\r\n {urlPreview &&\r\n <GridContainer style={{ marginBottom: 15, backgroundColor: \"#f0f0f0\", padding: 7 }}>\r\n <div style={{ position: \"absolute\", right: \"20px\" }}>\r\n <CustomButton\r\n title={translate(\"$__removePreview\")}\r\n color=\"red\"\r\n icon={\"delete_forever\"}\r\n size={\"14px\"}\r\n onClick={() => {\r\n setUrlPreview(null);\r\n setUrlPreviewLoad(false);\r\n }}\r\n />\r\n </div>\r\n {urlPreview.img &&\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={4}\r\n lg={3}\r\n xl={2}\r\n >\r\n <img\r\n style={{\r\n width: \"-webkit-fill-available\"\r\n }}\r\n src={`${urlPreview.img ? urlPreview.img : defaultAvatar}`}\r\n alt={urlPreview.title || urlPreview.link}\r\n />\r\n\r\n </GridItem>\r\n }\r\n\r\n <GridItem\r\n xs={12}\r\n sm={6}\r\n md={8}\r\n lg={9}\r\n xl={10}\r\n >\r\n\r\n <div style={{\r\n fontSize: \"14px\",\r\n color: customApp(\"menu\"),\r\n fontWeight: \"bold\"\r\n }}>{urlPreview.title}</div>\r\n {urlPreview.site && <div\r\n style={{\r\n fontSize: \"12px\",\r\n }}\r\n >{urlPreview.site}</div>}\r\n {urlPreview.contentSnippet && <div\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"gray\",\r\n }}>{urlPreview.contentSnippet}</div>}\r\n <a style={{\r\n marginTop: \"15px\",\r\n fontWeight: \"bold\",\r\n fontSize: \"12px\",\r\n }\r\n } href={urlPreview.link} target=\"_blank\" rel=\"noopener noreferrer\">{translate(\"$__openLink\", \"*\")}</a>\r\n\r\n </GridItem>\r\n </GridContainer>\r\n }\r\n {fileError ?\r\n <div\r\n style={{\r\n position: 'relative',\r\n height: '60px',\r\n backgroundColor: '#ffffff',\r\n width: '100%',\r\n padding: 15,\r\n textAlign: \"center\",\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }}\r\n >\r\n <CustomButton\r\n title={translate(\"$__fileSendErrorClickToReSend\", 1)}\r\n text={translate(\"$__fileSendErrorClickToReSend\")}\r\n color={\"red\"}\r\n icon='upload'\r\n onClick={() => {\r\n sendFiles({\r\n comment: fileError.options.comment\r\n }, fileError.fi, fileSend)\r\n setFileError(null)\r\n }\r\n }\r\n size={\"25px\"}\r\n />\r\n </div>\r\n : sending ?\r\n <div\r\n style={{\r\n position: 'relative',\r\n height: '60px',\r\n backgroundColor: '#ffffff',\r\n width: '100%',\r\n padding: 15\r\n }}\r\n >{translate('$__sending', 1)}\r\n <LinearProgress className={classes.progressBar} /></div>\r\n :\r\n <div\r\n ref={sendingInput}\r\n style={{\r\n position: 'relative',\r\n height: 'auto',\r\n borderRadius: '7px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '3px 0px 4px 0px',\r\n }}>\r\n <MentionsInput\r\n id={`sendingInput_${props.nodeId}`}\r\n value={message.trim().length > 0 ? message : \"\"}\r\n inputRef={textInput}\r\n onChange={(e) => {\r\n verifyText(e.target.value)\r\n // sendTyping()\r\n if (sendingInput.current && sendingInput.current.clientHeight)\r\n setHeight(sendingInput.current.clientHeight)\r\n }}\r\n onBlur={(e) => {\r\n if (e.target.value)\r\n props.reduxFunction(\"ASYNC\", \"SET_CHATS\", {\r\n ...reduxStore.getState().chats,\r\n drafts: {\r\n ...reduxStore.getState().chats.drafts,\r\n [props.nodeId]: {\r\n ...reduxStore.getState().chats.drafts[props.nodeId] || {},\r\n message: e.target.value\r\n }\r\n }\r\n })\r\n }}\r\n onPaste={(e) => {\r\n onDropFile(e.clipboardData.files)\r\n }}\r\n placeholder={translate('$__writeMessage')}\r\n style={{\r\n ...mentionInputStyle,\r\n position: 'relative',\r\n width: 'calc(100% - 130px)',\r\n margin: '7px',\r\n maxHeight: '150px',\r\n paddingRight: '7px',\r\n background: 'none',\r\n border: 'none',\r\n overflow: 'auto !important'\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.keyCode === 13) {\r\n if (event.shiftKey) {\r\n event.stopPropagation();\r\n } else if (message.length > 0 && message.trim() && message.trim().length > 0) {\r\n sendMessage()\r\n } else {\r\n setMessage(\"\")\r\n }\r\n }\r\n }\r\n }\r\n autoFocus\r\n placement=\"top\"\r\n forceSuggestionsAboveCursor={true}\r\n autosize={{ minRows: 1, maxRows: 6 }}\r\n >\r\n <Mention\r\n trigger=\"@\"\r\n data={usersSuggestion}\r\n renderSuggestion={(suggestion, search, highlightedDisplay) => {\r\n let u = db.users[suggestion.id] ? db.users[suggestion.id] : suggestion\r\n if (suggestion && suggestion.id)\r\n return (\r\n <div style={{ display: 'flex', alignItems: 'center', position: \"relative\" }}>\r\n <Avatar style={{\r\n position: \"relative\",\r\n width: '25px', height: '25px', marginRight: '7px'\r\n }}\r\n // alt={highlightedDisplay}\r\n src={suggestion.image ? suggestion.image :\r\n db.cards &&\r\n props.nodeId &&\r\n db.cards[props.nodeId] &&\r\n db.cards[props.nodeId]._users &&\r\n db.cards[props.nodeId]._users[suggestion.id] &&\r\n db.cards[props.nodeId]._users[suggestion.id].image\r\n ? db.cards[props.nodeId]._users[suggestion.id].image\r\n : db.users[suggestion.id]\r\n && db.users[suggestion.id].image\r\n ? db.users[suggestion.id].image\r\n : null} />\r\n <div>\r\n <div\r\n >\r\n {highlightedDisplay}\r\n </div>\r\n {(u && u._parent &&\r\n reduxStore.getState().db.users[u._parent] &&\r\n reduxStore.getState().db.users[u._parent].name) ?\r\n <div\r\n style={{ fontSize: 11, color: \"lightgray\", marginTop: -3 }}\r\n >\r\n {reduxStore.getState().db.users[u._parent].name}\r\n </div>\r\n : <React.Fragment></React.Fragment>\r\n }\r\n </div>\r\n {(u && u._parent &&\r\n reduxStore.getState().db.users[u._parent] &&\r\n reduxStore.getState().db.users[u._parent].image) ?\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n bottom: 4,\r\n right: -7,\r\n width: 15,\r\n height: 15,\r\n borderRadius: \"50%\",\r\n backgroundImage: `url(${reduxStore.getState().db.users[u._parent].image})`,\r\n backgroundSize: \"cover\",\r\n backgroundRepeat: \"no-repeat\"\r\n }}></div>\r\n : <React.Fragment></React.Fragment>}\r\n </div>\r\n )\r\n }\r\n }\r\n style={{\r\n backgroundColor: customApp('color', 0.5),\r\n lineHeight: \"17px\",\r\n borderRadius: \"7px\",\r\n padding: '3px 2px',\r\n marginLeft: '-4px',\r\n fontWeight: 'bold',\r\n maxHeight: 250,\r\n overflow: \"auto\"\r\n }}\r\n />\r\n </MentionsInput>\r\n\r\n <div\r\n style={{\r\n cursor: 'pointer',\r\n zIndex: 100,\r\n display: 'flex',\r\n alignItems: 'center'\r\n }}\r\n >\r\n <CustomIconButton\r\n title={translate('$__emojis', 1)}\r\n icon={onEmojiPicker ? `highlight_off` : `sentiment_very_satisfied`}\r\n color={customApp('medium')}\r\n onClick={() => {\r\n setOnEmojiPicker(!onEmojiPicker)\r\n }}\r\n />\r\n {!sending &&\r\n <div className={classes.actionButton}>\r\n <input\r\n className={\"input-text-timeline\"}\r\n style={{\r\n position: 'absolute',\r\n marginRight: \"3em\",\r\n height: \"24px\",\r\n fontSize: \"0\",\r\n left: '0px',\r\n width: \"24px\",\r\n cursor: 'pointer',\r\n border: 'none',\r\n opacity: '0',\r\n }} onChange={e =>\r\n onDropFile(e.target.files)\r\n }\r\n multiple\r\n type=\"file\"\r\n accept={\".png, .jpg, .jpeg, .bpm, .svg, .gif, .pdf, .mp4, .3gp, .ts, .mkv, .avi, .mov, .mts, m2ts, .mxf, .aac, aiff, .caf, .ogg, .mp3, .wav, .doc, .docx, .xls, .xlsx, .ppt, .pptx\"} />\r\n <Icon\r\n icon='attachment'\r\n color={customApp('medium')}\r\n size={'22px'}\r\n />\r\n </div>\r\n }\r\n {(!sending && (message.trim().length > 0 || fileList.length > 0)) &&\r\n <CustomIconButton\r\n title={translate('$__pressENTERtoSendorClickHere', 1)}\r\n icon=\"send\"\r\n color={customApp('menu')}\r\n onClick={() => sendMessage()}\r\n />\r\n }\r\n {props.closeOption &&\r\n <Icon title={translate('$__pressCRTL+ENTERtoSend', 1)} icon=\"close\" color={customApp('color')} onClick={() => props.onClose()} />\r\n }\r\n {onEmojiPicker &&\r\n <div style={{\r\n position: 'absolute',\r\n bottom: '44px',\r\n right: '40px',\r\n zIndex: 100\r\n }}>\r\n\r\n <Picker\r\n onEmojiClick={onEmojiClick}\r\n groupVisibility={{\r\n recently_used: false\r\n }}\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n :\r\n <div\r\n className={props.relative ? classes.editorRelative : classes.editor}\r\n style={{\r\n backgroundColor: '#f0f0f0'\r\n }}\r\n\r\n >\r\n {translate('$__avaiableForViewingOnly')}\r\n </div>\r\n }\r\n <div className={fileDropDrag ? classes.onDropFile : classes.dropFile}\r\n onDragLeave={() => {\r\n !props.disabledSend &&\r\n setFileDropDrag(false)\r\n }\r\n }\r\n >\r\n {translate(\"$__dropTheFileToAttach\", '*')}\r\n </div>\r\n </React.Fragment>\r\n </FileDrop >\r\n );\r\n}\r\n//REACT\r\nconst mapStateToProps = (storie, props) => ({\r\n draft: storie.chats && storie.chats.drafts ? storie.chats.drafts[props.nodeId] : {}\r\n});\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Timeline)","import React from \"react\";\r\nimport moment from \"moment-timezone\"\r\nimport DataPicker from \"components/DataPicker\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//COMPONENTS\r\nimport Autocomplete from \"components/AutoComplete/multiple\"\r\nimport Checkbox from 'components/Checkbox'\r\nimport Icon from \"components/Icon\"\r\nimport SelectUsers from \"components/User/select\"\r\nimport Switch from \"components/Switch\"\r\nimport TextField from \"components/TextField/\"\r\nimport MultInput from \"components/MultInput/input\";\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 FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport FormGroup from '@material-ui/core/FormGroup'\r\nimport InputAdornment from '@material-ui/core/InputAdornment'\r\nimport Tooltip from \"@material-ui/core/Tooltip\"\r\nimport { makeStyles } from \"@material-ui/core/styles\"\r\n\r\n//STYLES\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/filter.js\"\r\nimport \"assets/css/components/react-datepicker.css\"\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions/\"\r\n\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nfunction RenderOptions(props) {\r\n const f = props.field\r\n const classes = useStyles()\r\n const {\r\n db\r\n } = reduxStore.getState();\r\n const [searchValues, setSearch] = React.useState({ ...JSON.parse(initialIndicators) })\r\n const [AccordionExpanded, SetAccordionExpanded] = React.useState(null)\r\n const indicators = props.indicators ? props.indicators : JSON.parse(initialIndicators)\r\n\r\n React.useEffect(() => {\r\n if (props.indicators)\r\n setSearch(props.indicators)\r\n }, [props.indicators]);\r\n\r\n React.useEffect(() => {\r\n\r\n if (props.onChange && JSON.stringify(props.indicators) !== JSON.stringify(searchValues)) {\r\n let appliedFilters = {}\r\n Object.keys(searchValues).forEach(x => {\r\n if (!indicators[x]) {\r\n appliedFilters = {\r\n ...indicators,\r\n ...appliedFilters,\r\n [x]: searchValues[x]\r\n }\r\n }\r\n if (indicators[x] && (JSON.stringify(indicators[x]) !== JSON.stringify(searchValues[x]))) {\r\n appliedFilters = {\r\n ...indicators,\r\n ...appliedFilters,\r\n [x]: searchValues[x]\r\n }\r\n\r\n }\r\n })\r\n if (JSON.stringify(appliedFilters) !== JSON.stringify({})) {\r\n\r\n props.onChange(appliedFilters)\r\n }\r\n }\r\n if (props?.preffers?.searchButton)\r\n return\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchValues])\r\n\r\n\r\n\r\n const updateIndicators = (indicator, value) => {\r\n let indicatorValues = searchValues[indicator] || {}\r\n if (value === 'all') {\r\n Object.keys(indicatorValues).forEach(a => {\r\n indicatorValues[a] = true\r\n })\r\n } else {\r\n if (indicatorValues.all)\r\n Object.keys(indicatorValues).forEach(a => {\r\n indicatorValues[a] = false\r\n })\r\n indicatorValues.all = false\r\n }\r\n if (props?.preffers?.unique?.status)\r\n Object.keys(indicatorValues).forEach(a => {\r\n indicatorValues[a] = false\r\n })\r\n\r\n setSearch({\r\n ...searchValues,\r\n [indicator]: {\r\n ...indicatorValues,\r\n [value]: value === 'all' ? true : !indicatorValues[value],\r\n }\r\n })\r\n }\r\n\r\n const indicatorField = (ind) => {\r\n return (\r\n <Accordion style={{ width: \"100%\" }}\r\n expanded={AccordionExpanded === ind ? true : false}\r\n onChange={() => {\r\n SetAccordionExpanded(AccordionExpanded === ind ? null : ind)\r\n }}\r\n >\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\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px', justifyContent: \"space-between\", width: \"100%\", display: \"flex\" }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n }}>\r\n {translate(`$__${ind}`)}\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n }}>\r\n {Object.keys(searchValues[ind])\r\n .filter((a, i) => searchValues[ind][a] && a !== 'all')\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(db.priority.filter(fil => String(fil.value) === String(a))[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: db.priority.filter(fil => String(fil.value) === String(a))[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </AccordionSummary>\r\n <AccordionDetails\r\n style={{ minWidth: '100%' }}\r\n >\r\n <FormGroup style={{ width: \"100%\" }}>\r\n {props?.preffers?.unique[ind] ? <></> :\r\n <FormControlLabel\r\n style={{ minWidth: '100%' }}\r\n control={\r\n <Checkbox\r\n checked={searchValues[ind] && searchValues[ind].all ? true : false}\r\n onChange={() => {\r\n updateIndicators('priority', 'all')\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate('$__allPriorities')}\r\n />\r\n }\r\n {db.priority.map((pr, index) =>\r\n <React.Fragment\r\n key={index}\r\n >\r\n <FormControlLabel\r\n style={{ minWidth: '100%', borderLeft: `3px solid ${pr.color}` }}\r\n control={\r\n <Checkbox\r\n indeterminate={searchValues[ind] && searchValues[ind].all ? true : false}\r\n checked={searchValues[ind] && searchValues[ind][pr.value] ? true : false}\r\n onChange={() => {\r\n updateIndicators(ind, pr.value)\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate(pr.label)}\r\n />\r\n </React.Fragment>\r\n )}\r\n </FormGroup>\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n }\r\n\r\n if (f === \"admin\")\r\n return (\r\n <Switch\r\n checked={\r\n searchValues.admin\r\n ? true\r\n : false\r\n }\r\n onChange={(d) => {\r\n setSearch({\r\n ...searchValues,\r\n admin: !searchValues.admin\r\n })\r\n }}\r\n name=\"adminView\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n )\r\n if (f === \"tagsByText\")\r\n return (\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n <TextField\r\n className={classes.noLabelLight}\r\n label={translate('$__searchTags', '*')}\r\n // variant={'standard'}\r\n // autoFocus\r\n value={searchValues.tagsByText || \"\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearch({\r\n ...searchValues,\r\n tagsByText: e.target.value\r\n })\r\n },\r\n }}\r\n />\r\n </div>\r\n )\r\n if (f === \"text\")\r\n return (\r\n <div className={classes.textField} style={{ width: \"100%\" }}>\r\n <TextField\r\n className={classes.noLabelLight}\r\n label={translate('$__search', '*')}\r\n // variant={'standard'}\r\n autoFocus\r\n value={searchValues.text || \"\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Icon color={customApp('color')}>search</Icon>\r\n </InputAdornment>\r\n ),\r\n onChange: e => {\r\n setSearch({\r\n ...searchValues,\r\n text: e.target.value\r\n })\r\n },\r\n onKeyDown: e => {\r\n // if (String(e.which) === '27')\r\n // setviewSearch(false)\r\n }\r\n }}\r\n />\r\n </div>\r\n )\r\n if (f === \"date\")\r\n return (\r\n <React.Fragment>\r\n <DataPicker\r\n type=\"datetime\"\r\n onChangeStartDate={(d) => {\r\n let newData = {\r\n startDate: moment(d).unix('x')\r\n }\r\n if (!reduxStore.getState().searchs[props.nodeId]?.endDate || reduxStore.getState().searchs[props.nodeId].endDate < moment(d).unix('x')) {\r\n newData = {\r\n ...newData,\r\n endDate: moment(`${moment(d).format(\"YYYY-MM-DD\")} 23:59:59`).add(1, 'week').unix('X')\r\n }\r\n }\r\n setSearch({\r\n ...searchValues,\r\n ...newData,\r\n })\r\n }}\r\n onChangeEndDate={(d) => {\r\n setSearch({\r\n ...searchValues,\r\n endDate: moment(d).unix('x'),\r\n })\r\n\r\n }}\r\n range\r\n horizontal\r\n startDate={searchValues?.startDate ? new Date(searchValues.startDate * 1000) : null}\r\n endDate={searchValues?.endDate ? new Date(searchValues.endDate * 1000) : null}\r\n onClear={() => {\r\n setSearch({\r\n ...searchValues,\r\n startDate: null,\r\n endDate: null,\r\n })\r\n }}\r\n />\r\n </React.Fragment>\r\n )\r\n if (f === \"tags\")\r\n return (<Autocomplete\r\n dbNode={'tag'}\r\n options={reduxStore.getState().db.tag}\r\n style={{ width: '100%' }}\r\n name=\"tag\"\r\n ws\r\n multiple\r\n value={searchValues?.tags || []}\r\n placeholder={translate('$__tags')}\r\n onChange={\r\n (v) => {\r\n setSearch({\r\n ...searchValues,\r\n tags: v\r\n })\r\n }\r\n }\r\n />)\r\n if (f === \"status\")\r\n return (\r\n <Accordion\r\n style={{ width: \"100%\", padding: 0 }}\r\n expanded={AccordionExpanded === \"status\" ? true : false}\r\n onChange={() => {\r\n SetAccordionExpanded(AccordionExpanded === `status` ? null : 'status')\r\n }}\r\n >\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\r\n >\r\n <div style={{ color: customApp('color'), fontSize: '16px', justifyContent: \"space-between\", width: \"100%\", display: \"flex\" }}>\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n }}>\r\n {translate('$__status')}\r\n </div>\r\n <div style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n }}>\r\n {searchValues?.status && Object.keys(searchValues.status)\r\n .filter((a, i) => ((searchValues.status[a] || searchValues.status.all) && a !== 'all'))\r\n .map((a, i) => {\r\n return (\r\n <Tooltip\r\n title={translate(db.status.filter(fil => fil.value === a)[0].label, 1)}\r\n key={i}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n float: 'left',\r\n width: '11px',\r\n height: '11px',\r\n borderRadius: '50%',\r\n backgroundColor: db.status.filter(fil => fil.value === a)[0].color,\r\n margin: '7px 3px',\r\n }}></div>\r\n </Tooltip>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </AccordionSummary>\r\n <AccordionDetails\r\n style={{ minWidth: '100%' }}\r\n >\r\n <FormGroup style={{ width: \"100%\" }}>\r\n {/* <FormControlLabel\r\n style={{ minWidth: '100%' }}\r\n control={\r\n <Checkbox\r\n checked={searchValues.status && searchValues.status.all ? true : false}\r\n onChange={() => {\r\n updateIndicators('status', 'all')\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate('$__allStatus')}\r\n /> */}\r\n {db.status.map((pr, index) =>\r\n <React.Fragment\r\n key={index}\r\n >\r\n <FormControlLabel\r\n style={{ minWidth: '100%' }}\r\n control={\r\n <Checkbox\r\n indeterminate={searchValues.status && searchValues.status.all ? true : false}\r\n checked={searchValues.status && searchValues.status[pr.value] ? true : false}\r\n onChange={() => {\r\n updateIndicators('status', pr.value)\r\n }}\r\n color=\"default\"\r\n />\r\n }\r\n label={translate(pr.label)}\r\n />\r\n </React.Fragment>\r\n )}\r\n </FormGroup>\r\n </AccordionDetails>\r\n </Accordion>\r\n )\r\n if (f === \"priority\")\r\n return indicatorField(\"priority\")\r\n if (f === \"complexity\")\r\n return indicatorField(\"complexity\")\r\n if (f === \"risk\")\r\n return indicatorField(\"risk\")\r\n if (f === \"impact\")\r\n return indicatorField(\"impact\")\r\n if (f === \"users\")\r\n return (<div\r\n style={{ marginTop: 5 }}\r\n >\r\n <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={null}\r\n noLimit\r\n multiple={true}\r\n onSelect={(e) => {\r\n setSearch({\r\n ...searchValues,\r\n users: e\r\n })\r\n }}\r\n selected={searchValues?.users || []}\r\n transparent\r\n />\r\n </div>)\r\n if (f === \"responsible\")\r\n return (<div\r\n style={{ marginTop: 5 }}\r\n >\r\n <SelectUsers\r\n text={translate(\"$__FilterByResponsible\")}\r\n includeMe\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={reduxStore.getState().db.cards[props.nodeId] || null}\r\n noLimit\r\n multiple={false}\r\n onSelect={(e) => {\r\n setSearch({\r\n ...searchValues,\r\n responsible: e\r\n })\r\n }}\r\n selected={searchValues?.responsible || []}\r\n transparent\r\n {...props?.fieldsProps?.responsible || {}}\r\n />\r\n </div>)\r\n if (f === \"userGroups\")\r\n return (\r\n <MultInput\r\n data={{\r\n values: searchValues.userGroups || [],\r\n }}\r\n options={reduxStore.getState().db.userGroup ? reduxStore.getState().db.userGroup : []}\r\n placeholder={\"$__userGroupPlaceholder\"}\r\n dbNode={\"userGroup\"}\r\n colorPickerCallBack={(res) => {\r\n }}\r\n noAdd\r\n />\r\n )\r\n if (process.env.REACT_APP_PROD === \"true\")\r\n return (<></>)\r\n return (<div style={{ fontSize: 10, color: \"red\" }}>{f} NOT EXISTS</div>)\r\n\r\n\r\n}\r\n\r\nconst initialIndicators = JSON.stringify({\r\n priority: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n risk: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n complexity: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n impact: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n})\r\n\r\n// REACT\r\n\r\n\r\nexport default RenderOptions","import React from \"react\";\r\nimport PropTypes from \"prop-types\"\r\n\r\n\r\n//REDUX\r\nimport { connect } from \"react-redux\"\r\nimport { bindActionCreators } from \"redux\"\r\nimport * as reduxActions from \"store/actions\"\r\n\r\n\r\n//COMPONENTS\r\nimport CustomButton from \"components/Buttons/custom\"\r\nimport RenderOptions from \"./RenderOptions\"\r\n\r\n//STYLES\r\nimport \"assets/css/components/react-datepicker.css\"\r\n\r\n//FUNCTIONS\r\nimport { customApp, translate } from \"functions/\"\r\n\r\n\r\nfunction FilterComponent(props) {\r\n const [viewSearch, setviewSearch] = React.useState(false);\r\n const [searchValues, setSearch] = React.useState({ ...props.indicators })\r\n\r\n\r\n const mounted = React.useRef(true)\r\n React.useEffect(() => {\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n React.useEffect(() => {\r\n if (props.onChange) {\r\n props.onChange({\r\n ...searchValues || {}\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchValues]);\r\n\r\n\r\n return (\r\n <React.Fragment>\r\n <div\r\n style={{\r\n position: 'relative', width: '100%', padding: '0px', marginBottom: '15px',\r\n }}\r\n >\r\n {props.fields?.map((ff, ffi) => <div key={`${ff}_${ffi}`} style={{ position: \"relative\" }}>\r\n <RenderOptions\r\n field={ff}\r\n indicators={searchValues}\r\n onChange={props.onChange ? (appliedFilters) => {\r\n if (mounted.current)\r\n setSearch(appliedFilters)\r\n } : null} /></div>)}\r\n\r\n {/* FINAL FILTER PARAMETERS */}\r\n {JSON.stringify(searchValues) !== initialIndicators ?\r\n <div\r\n style={{\r\n padding: '5px',\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'flex-end'\r\n }}\r\n onClick={() => { setviewSearch(!viewSearch) }}\r\n >\r\n\r\n </div> : <></>}\r\n {props?.preffers?.searchButton ?\r\n <CustomButton\r\n color={customApp('menu')}\r\n icon={'search'}\r\n onClick={() => {\r\n if (props.onSearch)\r\n props.onSearch()\r\n }}\r\n size={'15px'}\r\n title={`${translate(\"$__search\")}`}\r\n text={`${translate(\"$__search\")}`}\r\n />\r\n : <></>\r\n }\r\n </div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\nconst initialIndicators = JSON.stringify({\r\n status: {\r\n all: true,\r\n notStarted: true,\r\n awaitAction: true,\r\n paused: true,\r\n inProgress: true,\r\n completed: true,\r\n },\r\n priority: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n risk: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n complexity: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n impact: {\r\n all: true,\r\n 'null': true,\r\n normal: true,\r\n low: true,\r\n medium: true,\r\n high: true,\r\n },\r\n})\r\n\r\nconst mapStateToProps = (store) => ({\r\n searchs: store.searchs\r\n})\r\n\r\nFilterComponent.propTypes = {\r\n handleDrawerToggle: PropTypes.func,\r\n sidebarMinimize: PropTypes.func\r\n};\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterComponent)","module.exports = __webpack_public_path__ + \"static/media/userCover.49044f68.jpg\";","import moment from \"moment-timezone\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport MD5 from \"crypto-js/md5\";\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\";\r\n\r\nimport apims from \"apims/\";\r\nimport api from \"api/\"\r\n\r\nimport { loadCardsV2 } from \"./loadData\"\r\n\r\nimport { customApp, translate } from \"./index\"\r\n\r\nrequire('dotenv').config()\r\n\r\nconst clearReadeds = async (props, d) => {\r\n const { session, timeline, chat } = reduxStore.getState()\r\n\r\n let messages = timeline[d.nodeId]\r\n let nodeId = d.nodeId\r\n let toDelete = []\r\n\r\n if (d.chat) {\r\n nodeId = chat.nodeId\r\n }\r\n\r\n if (reduxStore.getState().db.cards[nodeId] && reduxStore.getState().db.cards[nodeId].type !== 'chatGroup' && messages && Object.keys(messages).length > 0) {\r\n Object.keys(messages)\r\n .filter(msg =>\r\n messages[msg]\r\n && messages[msg].type\r\n && messages[msg].type === d.type\r\n && messages[msg].readedBy\r\n && messages[msg].readedBy[session._id]\r\n )\r\n .sort((a, b) => {\r\n if (parseInt(messages[a].created_at) > parseInt(messages[b].created_at))\r\n return -1\r\n if (parseInt(messages[a].created_at) < parseInt(messages[b].created_at))\r\n return 1\r\n return 0\r\n })\r\n .forEach(msg => {\r\n if (toDelete.indexOf(msg) === -1)\r\n toDelete.push(msg)\r\n })\r\n } else if (reduxStore.getState().db.cards[nodeId] && reduxStore.getState().db.cards[nodeId].type === 'chatGroup') {\r\n Object.keys(messages)\r\n .filter(msg =>\r\n messages[msg]\r\n && messages[msg].readedBy\r\n && messages[msg].readedBy[session._id]\r\n )\r\n .sort((a, b) => {\r\n if (parseInt(messages[a].created_at) > parseInt(messages[b].created_at))\r\n return -1\r\n if (parseInt(messages[a].created_at) < parseInt(messages[b].created_at))\r\n return 1\r\n return 0\r\n })\r\n .forEach((msg, msgi) => {\r\n if (msgi > 14 && toDelete.indexOf(msg) === -1)\r\n toDelete.push(msg)\r\n })\r\n }\r\n let newMessages = { ...reduxStore.getState().timeline }\r\n toDelete.forEach(msg => {\r\n Object.keys(newMessages).forEach(tm => {\r\n if (newMessages[tm][msg])\r\n delete newMessages[tm][msg]\r\n })\r\n })\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n ...newMessages\r\n });\r\n}\r\n\r\nconst chatReaded = async (props, data) => {\r\n let newTimeline = {}\r\n const { db, session } = reduxStore.getState()\r\n if (\r\n reduxStore.getState().timeline[data.id]\r\n || reduxStore.getState().timeline[data.readedBy]\r\n ) {\r\n newTimeline = reduxStore.getState().timeline\r\n\r\n let nodeId = data.id\r\n let user = {}\r\n if (data.db !== 'cards') {\r\n nodeId = newTimeline[data.readedBy] ? data.readedBy : data.id\r\n user = {\r\n _id: data.readedBy,\r\n name: db.users[data.readedBy].name,\r\n image: db.users[data.readedBy].image\r\n }\r\n } else if (db.cards[data.id] && db.cards[data.id]._users && db.cards[data.id]._users[data.readedBy]) {\r\n user = db.cards[data.id]._users[data.readedBy]\r\n }\r\n\r\n\r\n if (newTimeline && newTimeline[nodeId]) {\r\n Object.keys(newTimeline[nodeId]).filter(m => {\r\n\r\n if (\r\n data\r\n && data.type\r\n && (\r\n (\r\n data.type !== \"all\"\r\n && newTimeline[nodeId][m].type === data.type\r\n )\r\n ||\r\n (\r\n data.type === \"all\"\r\n )\r\n )\r\n && newTimeline[nodeId][m].user._id !== data.readedBy\r\n &&\r\n (\r\n !newTimeline[nodeId][m].readedBy\r\n || (\r\n session\r\n && session._id\r\n && newTimeline[nodeId][m].readedBy\r\n && !newTimeline[nodeId][m].readedBy[session._id]\r\n )\r\n )) {\r\n return true\r\n }\r\n return false\r\n }).forEach((m, mi) => {\r\n if (newTimeline[nodeId] && newTimeline[nodeId][m])\r\n newTimeline[nodeId][m] = {\r\n ...newTimeline[nodeId][m] || {},\r\n readedBy: {\r\n ...newTimeline[nodeId] && newTimeline[nodeId][m] && newTimeline[nodeId][m].readedBy ? newTimeline[nodeId][m].readedBy : {},\r\n [data.readedBy]: {\r\n ...newTimeline[nodeId] && newTimeline[nodeId][m] && newTimeline[nodeId][m].readedBy && newTimeline[nodeId][m].readedBy[data.readedBy] ? newTimeline[nodeId][m].readedBy[data.readedBy] : {},\r\n ...user,\r\n readedDate: {\r\n low: moment().unix('x')\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n ...newTimeline\r\n });\r\n\r\n if (\r\n reduxStore.getState().db.cards[data.id]\r\n && data.type\r\n && reduxStore.getState().db.cards[data.id]._notifications\r\n && (\r\n reduxStore.getState().db.cards[data.id]._notifications[data.type]\r\n || (\r\n data.type === \"all\"\r\n )\r\n )\r\n ) {\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n cards: {\r\n ...reduxStore.getState().db.cards,\r\n [data.id]: {\r\n ...reduxStore.getState().db.cards[data.id],\r\n ...data.type === 'all' ? {\r\n notifications: {}\r\n } : {\r\n _notifications: {\r\n ...reduxStore.getState().db.cards[data.id] && reduxStore.getState().db.cards[data.id]._notifications ? reduxStore.getState().db.cards[data.id]._notifications : {},\r\n [data.type]: 0,\r\n }\r\n },\r\n\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst interact = async (props, data) => {\r\n const { db, timeline, session } = reduxStore.getState()\r\n let user = {}\r\n\r\n let nodeId = data.nodeId !== session._id ? data.nodeId : data.user\r\n\r\n if (db.users[data.user]) {\r\n user = db.users[data.user]\r\n } else if (data.user && db[data.db] && timeline[nodeId] && timeline[nodeId]._users && timeline[nodeId]._users[data.user]) {\r\n user = timeline[nodeId]._users[data.user]\r\n }\r\n\r\n if (nodeId && data.message && timeline && timeline[session._id] && timeline[session._id][data.message])\r\n nodeId = session._id\r\n\r\n if (db[data.db] && timeline[nodeId] && timeline[nodeId][data.message]) {\r\n let reactions = {\r\n ...timeline[nodeId][data.message]\r\n && timeline[nodeId][data.message]._reactions\r\n ? timeline[nodeId][data.message]._reactions\r\n : {},\r\n [data.react]: {\r\n ...timeline[nodeId][data.message]\r\n && timeline[nodeId][data.message]._reactions\r\n && timeline[nodeId][data.message]._reactions[data.react] ?\r\n timeline[nodeId][data.message]._reactions[data.react] : {},\r\n [data.user]: {\r\n ...user,\r\n reactDate: {\r\n low: moment().tz('America/Sao_Paulo').unix('x')\r\n }\r\n }\r\n }\r\n }\r\n Object.keys(reactions).forEach(a => {\r\n if (a !== data.react)\r\n Object.keys(reactions[a]).forEach(u => {\r\n if (reactions[a][u] && u === data.user)\r\n delete reactions[a][u]\r\n })\r\n })\r\n let newData = {\r\n ...timeline,\r\n [nodeId]: {\r\n ...timeline[nodeId],\r\n [data.message]: {\r\n ...timeline[nodeId][data.message],\r\n _reactions: reactions\r\n }\r\n }\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", newData);\r\n }\r\n}\r\n\r\nexport const timelineComment = async (props, dt) => {\r\n let verifyReg = await new Promise(async (resolve, reject) => {\r\n if (dt && dt.db === 'cards' && !reduxStore.getState().db.cards[dt.idRel]) {\r\n const loadNewCard = await loadCardsV2(props, {\r\n idRel: dt.idRel,\r\n cardLoad: \"fullCatenation\",\r\n ignoreLoader: true\r\n })\r\n if (loadNewCard)\r\n resolve(true)\r\n } else {\r\n resolve(true)\r\n }\r\n\r\n })\r\n if (verifyReg) {\r\n let data = dt\r\n const { session } = reduxStore.getState()\r\n let nodeId = data._parent ? data._parent : data.cardId ? data.cardId : data.node\r\n if (nodeId === session._id)\r\n nodeId = data.comment.user._id\r\n\r\n if (data.to) {\r\n data.to.forEach(idUser => {\r\n let user = reduxStore.getState().db.users[idUser]\r\n data._toUser = {\r\n ...data._toUser ? data._toUser : {},\r\n [idUser]: {\r\n _id: idUser,\r\n name: user.displayName ? user.displayName : user.name,\r\n image: user.image ? user.image : null\r\n }\r\n }\r\n })\r\n delete data.to\r\n }\r\n console.log()\r\n if (nodeId\r\n && data.comment\r\n ) {\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n ...reduxStore.getState().timeline,\r\n [nodeId]: {\r\n ...reduxStore.getState().timeline[nodeId] || {},\r\n [data.comment._id]: {\r\n ...reduxStore.getState().timeline[nodeId] && reduxStore.getState().timeline[nodeId][data.comment._id] ? reduxStore.getState().timeline[nodeId][data.comment._id] : {},\r\n ...data.comment,\r\n ...data._toUser ? { _toUser: data._toUser } : {},\r\n type: reduxStore.getState().timeline[nodeId] && reduxStore.getState().timeline[nodeId][data.comment._id] && reduxStore.getState().timeline[nodeId][data.comment._id].type ? reduxStore.getState().timeline[nodeId][data.comment._id].type : data && data.comment && data.comment.type ? data.comment.type : reduxStore.getState().timeline[nodeId] && reduxStore.getState().timeline[nodeId][data.comment._id] && reduxStore.getState().timeline[nodeId] && reduxStore.getState().timeline[nodeId][data.comment._id].type ? reduxStore.getState().timeline[nodeId] && reduxStore.getState().timeline[nodeId][data.comment._id].type : \"comment\",\r\n readedBy: {\r\n ...reduxStore.getState().timeline[nodeId] && reduxStore.getState().timeline[nodeId][data.comment._id] && reduxStore.getState().timeline[nodeId][data.comment._id].readedBy ? reduxStore.getState().timeline[nodeId][data.comment._id].readedBy : {},\r\n ...data.comment && data.comment.readedBy ? data.comment.readedBy : {},\r\n },\r\n idRel: null\r\n }\r\n }\r\n });\r\n }\r\n return true\r\n }\r\n}\r\n\r\nconst loadMessages = async (data) => {\r\n const { session } = reduxStore.getState()\r\n let timelines = {}\r\n try {\r\n let req = await apims.post(`/Timeline_Get`,\r\n {\r\n ...data,\r\n })\r\n\r\n let unreadeds = {}\r\n\r\n let load = await new Promise((resolve, reject) => {\r\n if (req && req.data && req.data.length > 0) {\r\n req.data.forEach((tm, mi) => {\r\n let readedBy = {}\r\n let reactions = {}\r\n\r\n if (tm && tm.params && tm.params.readedBy && tm.params.readedBy.filter(u => u._id).length > 0)\r\n tm.params.readedBy.forEach(u => {\r\n readedBy = {\r\n ...readedBy,\r\n [u._id]: u\r\n }\r\n })\r\n\r\n if (tm && tm.params && tm.params.reactions && tm.params.reactions.filter(u => u._id).length > 0)\r\n tm.params.reactions.forEach(r => {\r\n reactions = {\r\n ...reactions,\r\n [r.type]: {\r\n ...reactions[r.type],\r\n [r._id]: r,\r\n }\r\n }\r\n })\r\n\r\n if (parseInt(tm.unreaded) > 0)\r\n unreadeds = {\r\n ...unreadeds,\r\n [tm.nodeId !== session._id ? tm.nodeId : tm.params.user._id]: parseInt(tm.unreaded)\r\n }\r\n\r\n let timelineId = tm.nodeId !== session._id ? tm.nodeId : tm.params.user._id\r\n\r\n timelines = {\r\n ...timelines,\r\n [timelineId]: {\r\n ...timelines && timelines[timelineId] ? timelines[timelineId] : {},\r\n [tm.data._id]: {\r\n idRel: tm.nodeId,\r\n ...tm.data,\r\n ...tm.params,\r\n readedBy: readedBy,\r\n _reactions: reactions,\r\n sended: true,\r\n ...tm.data && tm.data.filesCount && (!tm.data.files || tm.data.files.length < parseInt(tm.data.filesCount)) && tm.data.localFiles ? { localFiles: JSON.parse(tm.data.localFiles), sendedFiles: false } : { localFiles: [], sendedFiles: true }\r\n }\r\n }\r\n }\r\n if (mi + 1 === req.data.length)\r\n resolve(true)\r\n })\r\n } else {\r\n resolve(true)\r\n }\r\n })\r\n if (load) {\r\n return {\r\n timelines,\r\n unreadeds\r\n }\r\n }\r\n } catch (e) {\r\n return {\r\n timelines: null,\r\n unreadeds: null\r\n }\r\n }\r\n}\r\n\r\nconst loadTimeline = async (props, data) => {\r\n let lastMessageDate = reduxStore.getState().chat?.lastMessageDate || 0;\r\n\r\n let loadMessages = reduxStore.getState().timelineLoader\r\n if (data.type && data.type === \"kpi\") {\r\n let reqMd5 = MD5(`${JSON.stringify(data)}`).toString()\r\n if (loadMessages[reqMd5])\r\n return {\r\n result: true,\r\n total: 0\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE_LOADER\", {\r\n ...loadMessages,\r\n [reqMd5]: true,\r\n });\r\n }\r\n\r\n const { ids, db, type, limit = 0, skip = 0, toId = null, ini = false, reqChildrens = false, newUpdates = false } = data\r\n const { session } = reduxStore.getState()\r\n\r\n let nodeId = []\r\n let nodes = []\r\n if (typeof ids === 'string') {\r\n nodes.push(ids)\r\n } else {\r\n nodes = ids\r\n }\r\n\r\n if (nodes && nodes.length > 0)\r\n nodes.forEach(a => {\r\n if (nodeId.indexOf(a) === -1) {\r\n nodeId.push(a)\r\n }\r\n })\r\n\r\n if (nodeId.length > 0) {\r\n const load = await new Promise(async (resolve, reject) => {\r\n if (nodeId.length > 0) {\r\n try {\r\n let reqTimeline = await apims.post(`/M_Timeline_Get_V3`,\r\n {\r\n nodesIds: nodeId,\r\n db,\r\n type: type ? type : 'comment',\r\n skip: parseInt(skip),\r\n limit: limit,\r\n toId,\r\n ini,\r\n newUpdates,\r\n reqChildrens,\r\n lastDate: newUpdates ? data.lastDate ? data.lastDate : lastMessageDate : null\r\n }\r\n )\r\n if (reqTimeline && reqTimeline.data && reqTimeline.data.length > 0) {\r\n let timelines = { ...reduxStore.getState().timeline }\r\n let chatOpenId = null\r\n reqTimeline.data.forEach(tm => {\r\n let idRel = tm.nodeId !== session._id ? tm.nodeId : tm.params.user._id\r\n let readedBy = timelines\r\n && timelines[idRel]\r\n && timelines[idRel][tm.data._id]\r\n && timelines[idRel][tm.data._id].readedBy ? timelines[idRel][tm.data._id].readedBy : {}\r\n\r\n let reactions = {}\r\n\r\n\r\n if (tm && tm.params && tm.params.readedBy && tm.params.readedBy.filter(u => u._id).length > 0)\r\n tm.params.readedBy.forEach(u => {\r\n readedBy = {\r\n ...readedBy,\r\n [u._id]: u\r\n }\r\n })\r\n\r\n if (tm && tm.params && tm.params.reactions && tm.params.reactions.filter(u => u._id).length > 0)\r\n tm.params.reactions.forEach(r => {\r\n reactions = {\r\n ...reactions,\r\n [r.type]: {\r\n ...reactions[r.type],\r\n [r._id]: r,\r\n }\r\n }\r\n })\r\n let toUsers = {}\r\n if (tm && tm.params && tm.params.users && tm.params.users.filter(a => a.name).length > 0)\r\n tm.params.users.filter(a => a.name).forEach(a => {\r\n toUsers = {\r\n ...toUsers,\r\n [a._id]: a\r\n }\r\n })\r\n if (session && session._id && readedBy && !readedBy[session._id] && timelines[idRel])\r\n Object.keys(timelines[idRel]).forEach(msg => {\r\n if (\r\n timelines[idRel][msg]\r\n && timelines[idRel][msg].readedBy\r\n && timelines[idRel][msg].readedBy[session._id]\r\n && parseInt(timelines[idRel][msg].created_at) > parseInt(tm.data.created_at)\r\n\r\n )\r\n readedBy = {\r\n ...readedBy,\r\n [session._id]: {\r\n ...timelines[idRel][msg].readedBy[session._id]\r\n }\r\n }\r\n })\r\n\r\n if (\r\n (\r\n data.ini\r\n || data.newUpdates\r\n )\r\n && parseInt(tm.data.created_at) > parseInt(lastMessageDate)\r\n ) {\r\n lastMessageDate = parseInt(tm.data.created_at)\r\n if (\r\n (\r\n reduxStore.getState().db.cards[idRel]\r\n && reduxStore.getState().db.cards[idRel].type === \"chatGroup\"\r\n )\r\n ||\r\n (\r\n reduxStore.getState().db.users[idRel]\r\n )\r\n )\r\n chatOpenId = idRel\r\n }\r\n\r\n timelines = {\r\n ...timelines,\r\n [idRel]: {\r\n ...timelines && timelines[idRel] ? timelines[idRel] : {},\r\n [tm.data._id]: {\r\n ...tm.data,\r\n ...tm.params,\r\n ...tm.data.type === 'timer' && String(tm.data.ini) === \"0\" ? {\r\n manualEntry: true,\r\n ini: parseInt(tm.data.created_at),\r\n fin: parseInt(tm.data.created_at) + parseInt(tm.data.fin),\r\n } : {},\r\n readedBy: readedBy,\r\n _reactions: reactions,\r\n ...Object.keys(toUsers).length > 0 ? { _toUser: toUsers } : {},\r\n }\r\n }\r\n }\r\n })\r\n if (!props.noReg)\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n ...reduxStore.getState().timeline,\r\n ...timelines,\r\n });\r\n\r\n resolve({\r\n result: true,\r\n total: reqTimeline.data.length,\r\n timelines: timelines,\r\n chatOpenId,\r\n lastMessageDate\r\n })\r\n } else {\r\n resolve({\r\n result: true,\r\n total: reqTimeline.data.length,\r\n })\r\n }\r\n\r\n } catch (e) {\r\n console.group('loadTimeline::ERR::')\r\n console.log(e)\r\n console.groupEnd()\r\n }\r\n }\r\n })\r\n if (\r\n load\r\n && (\r\n load.chatOpenId\r\n || load.lastMessageDate\r\n )\r\n ) {\r\n props.reduxFunction(\"IMMEDIATE\", \"SET_CHAT\", {\r\n ...reduxStore.getState().chat,\r\n ...(data.ini || data.newUpdates) && load.lastMessageDate ? { lastMessageDate: load.lastMessageDate } : {},\r\n ...data.ini && load.chatOpenId ? { nodeId: load.chatOpenId } : {},\r\n })\r\n }\r\n if (load)\r\n return load\r\n } else {\r\n return {\r\n result: true,\r\n total: 0\r\n }\r\n }\r\n}\r\n\r\nconst countUnRead = () => {\r\n const { db, session, timeline } = reduxStore.getState()\r\n let unReadCount = 0\r\n let unReadCountGroup = 0\r\n let unReadCountExternalGroups = 0\r\n let unReadCountUser = 0\r\n let unReadCountExternalUser = 0\r\n\r\n Object.keys(timeline).forEach(id => {\r\n\r\n Object.keys(timeline[id]).forEach(m => {\r\n if (\r\n timeline[id]\r\n && timeline[id][m]\r\n && timeline[id][m].type\r\n && timeline[id][m].type === \"comment\"\r\n && !timeline[id][m].deleted\r\n && timeline[id][m].user\r\n && timeline[id][m].user._id\r\n && timeline[id][m].user._id !== session._id\r\n\r\n && (\r\n !timeline[id][m].readedBy\r\n || (\r\n timeline[id][m].readedBy\r\n && !timeline[id][m].readedBy[session._id]\r\n )\r\n )\r\n ) {\r\n if (\r\n id\r\n && db.cards[id]\r\n && db.cards[id].type === 'chatGroup'\r\n )\r\n unReadCountGroup = unReadCountGroup + 1\r\n\r\n if (\r\n id\r\n && db.users[id]\r\n && db.users[id].type === \"user\"\r\n )\r\n unReadCountUser = unReadCountUser + 1\r\n unReadCount = unReadCount + 1\r\n }\r\n })\r\n })\r\n\r\n return {\r\n total: unReadCountGroup + unReadCountUser + unReadCountExternalGroups + unReadCountExternalUser,\r\n groups: unReadCountGroup,\r\n externalGroups: unReadCountExternalGroups,\r\n users: unReadCountUser,\r\n externalUsers: unReadCountExternalUser\r\n }\r\n}\r\n\r\nconst deleteMessage = async (props, data) => {\r\n let socket\r\n if (props && props.store && reduxStore.getState().functions && reduxStore.getState().functions.socket) {\r\n socket = reduxStore.getState().functions.socket\r\n } else {\r\n socket = reduxStore.getState().functions.socket\r\n }\r\n\r\n const comm = await new Promise(async (resolve, reject) => {\r\n socket.emit(\"data\", {\r\n module: \"chat\",\r\n method: \"put\",\r\n action: \"cancel\"\r\n },\r\n data,\r\n (req) => {\r\n let idRel = data.idRel\r\n const { session } = reduxStore.getState()\r\n if (reduxStore.getState().timeline[session._id] && reduxStore.getState().timeline[session._id][data.id]) {\r\n idRel = session._id\r\n }\r\n props.reduxFunction(\"ASYNC\", \"SET_TIMELINE\", {\r\n ...reduxStore.getState().timeline,\r\n [idRel]: {\r\n ...reduxStore.getState().timeline[idRel],\r\n [data.id]: {\r\n ...reduxStore.getState().timeline && reduxStore.getState().timeline[idRel] && reduxStore.getState().timeline[idRel][data.id],\r\n deleted: true,\r\n ...data.deletedReason ? { deletedReason: data.deletedReason } : {}\r\n }\r\n }\r\n });\r\n resolve(true)\r\n })\r\n })\r\n if (comm)\r\n return comm\r\n}\r\n\r\nconst updateTimelineMessage = (props, data) => {\r\n // console.log(data)\r\n}\r\n\r\nexport const mentionedUsers = (text, storie) => {\r\n const { db, session } = reduxStore.getState()\r\n let cardId\r\n if (storie && storie._parent && db.cards[storie._parent]) {\r\n cardId = storie._parent\r\n } else if (storie && storie.idRel && db.cards[storie.idRel]) {\r\n cardId = storie.idRel\r\n }\r\n\r\n let newText\r\n newText = text\r\n if (text) {\r\n const test1 = text.split(\"@[\")\r\n if (test1.length > 0)\r\n test1.map(a => {\r\n if (a) {\r\n let toReplace = `@[${a.split(\")\")[0]})`\r\n let id = a.split(\"](\")[1]\r\n if (id) {\r\n id = id.split(\")\")[0]\r\n if (\r\n id\r\n && id.length === 36\r\n && db.cards[cardId]\r\n && db.cards[cardId]._users\r\n && db.cards[cardId]._users[id]\r\n ) {\r\n let userName = db.cards[cardId]._users\r\n && db.cards[cardId]._users[id]\r\n && db.cards[cardId]._users[id].name\r\n ? db.cards[cardId]._users[id].name\r\n : db.cards[cardId]._users\r\n && db.cards[cardId]._users[id]\r\n && db.cards[cardId]._users[id].name\r\n ? db.cards[cardId]._users[id].name\r\n : a.split(\"](\")[0]\r\n if (\r\n session\r\n && session.GlobalData\r\n && session.GlobalData.hideDeletedUsers\r\n && reduxStore.getState().db.users[id]\r\n && reduxStore.getState().db.users[id].deleted\r\n )\r\n userName = translate(\"$__deletedUser\")\r\n newText = newText.replace(toReplace, `<span style=\"color:${customApp(\"menu\")}\"><b>${userName}</b></span>`)\r\n } else if (\r\n id\r\n && id.length === 36\r\n && db.users[id]\r\n ) {\r\n let userName = db.users[id] && db.users[id].name\r\n ? db.users[id].name : a.split('](')[0]\r\n if (\r\n session\r\n && session.GlobalData\r\n && session.GlobalData.hideDeletedUsers\r\n && reduxStore.getState().db.users[id]\r\n && reduxStore.getState().db.users[id].deleted\r\n ) userName = translate(\"$__deletedUser\")\r\n newText = newText.replace(toReplace, `<span style=\"color:${customApp(\"menu\")}\"><b>${userName}</b></span>`)\r\n } else {\r\n let userName = a.split('](')[0]\r\n if (\r\n session\r\n && session.GlobalData\r\n && session.GlobalData.hideDeletedUsers\r\n && reduxStore.getState().db.users[id]\r\n && reduxStore.getState().db.users[id].deleted\r\n ) userName = translate(\"$__deletedUser\")\r\n newText = newText.replace(toReplace, `<span style=\"color:${customApp(\"menu\")}\"><b>${userName}</b></span>`)\r\n }\r\n }\r\n }\r\n return true\r\n })\r\n }\r\n\r\n return newText\r\n}\r\n\r\nconst forwardMessage = (props, data) => {\r\n let dataMessage = {\r\n ...data,\r\n forwardedId: data._id,\r\n _id: uuid(),\r\n created_at: `${moment().tz('America/Sao_Paulo').unix('x')}`\r\n }\r\n\r\n if (dataMessage._reactions)\r\n delete dataMessage._reactions\r\n\r\n if (dataMessage.readedBy)\r\n delete dataMessage.readedBy\r\n\r\n if (dataMessage._reactions)\r\n delete dataMessage._reactions\r\n\r\n if (dataMessage._toUser)\r\n delete dataMessage._toUser\r\n\r\n\r\n data._forwardToId.forEach(idRel => {\r\n timelineComment(props, {\r\n comment: {\r\n ...dataMessage,\r\n idRel: idRel,\r\n },\r\n node: idRel\r\n })\r\n\r\n api.post(\"timeline/add\", {\r\n ...dataMessage,\r\n idRel: idRel\r\n })\r\n })\r\n\r\n\r\n}\r\n\r\nexport {\r\n chatReaded,\r\n countUnRead,\r\n forwardMessage,\r\n deleteMessage,\r\n interact,\r\n loadTimeline,\r\n loadMessages,\r\n updateTimelineMessage,\r\n clearReadeds,\r\n}","import React, { useRef } from 'react'\r\nimport MD5 from \"crypto-js/md5\"\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\r\nimport Icon from 'components/Icon'\r\nimport ButtonOptions from 'componentsV3/Buttons';\r\nimport Filter from 'componentsV3/FilterDashboard/index';\r\nimport TextField from \"components/TextField\"\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\"\r\nimport SelectUsers from \"components/User/select\";\r\n\r\nconst Header = (props) => {\r\n const { tittle, icon, datafilter, handleSetoption, handleSetSelected } = props\r\n const searchID = `${tittle}${MD5(`${window.location.pathname}-${window.location.hash}`).toString()}`\r\n const nodeId = props.id || props.nodeId || null\r\n const containerRef = useRef()\r\n\r\n const filters = {\r\n ...props.defaultValues || {},\r\n ...reduxStore.getState().searchs[searchID] || {}\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.onRtFilter && searchID && filters && filters.users)\r\n props.onRtFilter(filters.users)\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n\r\n return (\r\n <div ref={containerRef} style={{ height: '47px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', background: props.styles.backgroundColor ? props.styles.backgroundColor : 'white', display: 'flex', fontWeight: 'bolder', position: 'relative', overflow: 'visible' }}>\r\n <div style={{ width: '40px', height: '40px', alignSelf: 'center', display: 'flex' }}>\r\n <Icon\r\n size={28}\r\n icon={icon && icon}\r\n style={{\r\n alignSelf: 'center',\r\n marginLeft: '12.5px',\r\n color: props.styles.color ? props.styles.color : 'grey',\r\n maxWidth: '30px'\r\n }} />\r\n </div>\r\n {props.edit ? <div >\r\n <TextField\r\n variant={\"outlined\"}\r\n name={\"name\"}\r\n id={\"edit_693\"}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n onBlur={(e) => handleSetSelected && handleSetSelected({\r\n name: e.target.value\r\n })}\r\n linecolor={'#D3D3D3'}\r\n style={{ minWidth: '0px', width: '160px' }}\r\n InputProps={{\r\n autoComplete: \"new-password\",\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Icon icon=\"edit\" />\r\n </InputAdornment>\r\n ),\r\n // onChange: (d) => {\r\n // changeData(d.target)\r\n // },\r\n }}\r\n defaultValue={props.indicators?.name ? props.indicators?.name : tittle}\r\n placeholder={\"TESTEEEEE\"}\r\n />\r\n </div>\r\n // <input\r\n // type=\"text\"\r\n // defaultValue={props.indicators?.name ? props.indicators?.name : tittle}\r\n // onBlur={(e) => handleSetSelected({\r\n // name: e.target.value\r\n // })}\r\n // />\r\n : <p style={{ margin: '0px', marginLeft: '10px', alignSelf: 'center', padding: '0px', fontSize: '14px', fontWeight: 'bolder' }}>\r\n {props.indicators?.name ? props.indicators?.name : tittle}\r\n </p>}\r\n {props.rtFilters && props.rtFilters.length > 0 ?\r\n <>\r\n {console.log}\r\n {props.rtFilters.filter(a => a === 'users').length === 1 ?\r\n <div style={{ height: \"100%\", display: \"flex\", alignItems: \"center\" }}>\r\n <SelectUsers\r\n includeMe\r\n defineResponsible\r\n avatarSize=\"23px\"\r\n permission={true}\r\n data={reduxStore.getState().db.cards[nodeId]}\r\n noLimit\r\n multiple={true}\r\n onSelect={(e) => {\r\n if (props.onRtFilter)\r\n props.onRtFilter(e)\r\n props.reduxFunction(\"IMMEDIATE\", \"SET_SEARCH\", {\r\n ...reduxStore.getState().searchs,\r\n [searchID]: {\r\n ...reduxStore.getState().searchs[searchID] || {},\r\n appliedFilters: {\r\n ...reduxStore.getState().searchs[searchID]?.appliedFilters || {},\r\n users: e\r\n },\r\n users: e\r\n },\r\n })\r\n }}\r\n selected={filters.users}\r\n transparent\r\n />\r\n </div>\r\n : <></>}\r\n </> : <></>}\r\n {props.edit &&\r\n <>\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 {datafilter && <ButtonOptions\r\n text={\"Filtro\"}\r\n icon={\"filter_alt\"}\r\n popper={\r\n <div style={{ padding: '15px', }}>\r\n <div style={{ marginLeft: '11px', marginBottom: '12px' }}>\r\n {props?.filterConfig?.filterSelect && <select\r\n placeholder={\"Quantidade de usuarios por exibição\"}\r\n onChange={(e) => handleSetSelected({\r\n finalIndex: parseInt(e.target.value),\r\n showQuantity: parseInt(e.target.value), index: 0, number: parseInt(e.target.value)\r\n })}\r\n style={{ padding: '10px 10px 10px 3px', alignSelf: 'center', border: '1px solid #dde2e6', color: '#bebebe', fontSize: '14px' }}>\r\n <option disabled selected>Quantidade de {props?.filterConfig?.filterName ? props?.filterConfig?.filterName : 'usuarios'} por exibição</option>\r\n {props?.filterConfig?.filterSelect > 5 && <option > 5 {props?.filterConfig?.filterName ? props?.filterConfig?.filterName : 'usuarios'} por exibição</option>}\r\n {props?.filterConfig?.filterSelect > 10 && <option > 10 {props?.filterConfig?.filterName ? props?.filterConfig?.filterName : 'usuarios'} por exibição</option>}\r\n {props?.filterConfig?.filterSelect > 15 && <option > 15 {props?.filterConfig?.filterName ? props?.filterConfig?.filterName : 'usuarios'} por exibição</option>}\r\n {props?.filterConfig?.filterSelect > 10 && <option > 20 {props?.filterConfig?.filterName ? props?.filterConfig?.filterName : 'usuarios'} por exibição</option>}\r\n {props?.filterConfig?.filterSelect > 10 && <option > 25 {props?.filterConfig?.filterName ? props?.filterConfig?.filterName : 'usuarios'} por exibição</option>}\r\n </select>}\r\n </div>\r\n\r\n <Filter\r\n fields={props?.filterConfig?.filterItems ? props?.filterConfig?.filterItems : ['date', 'users']}\r\n showFilters\r\n style={{ position: 'absolute', zIndex: '999' }}\r\n nodeId={\"barChart\"}\r\n indicators={props?.indicators}\r\n onChange={(e) => {\r\n handleSetoption(e)\r\n }}\r\n />\r\n </div>\r\n }\r\n style={{\r\n alignSelf: 'center',\r\n position: 'absolute',\r\n right: '107px',\r\n }}\r\n textColor={props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)'}\r\n btColor={props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)'}\r\n />}\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 {props?.table && <Icon onClick={() => props.handleModal()} style={{ height: '25px', cursor: 'pointer', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', position: 'absolute', right: '232px', top: '8px', border: '1px solid #D3D3D3', padding: '14px' }}>\r\n table_rows\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 {props?.vertical && <Icon onClick={() => handleSetSelected({\r\n mode: (!props.indicators.mode || false)\r\n })} style={{ height: '25px', cursor: 'pointer', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', position: 'absolute', right: '278px', top: '8px', border: '1px solid #D3D3D3', padding: '14px' }}>\r\n vertical_split\r\n </Icon>}\r\n </div>\r\n </>\r\n }\r\n\r\n </div >\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n searchs: store.searchs\r\n})\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Header)","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\n\r\n// Importar estilos diretamente de um arquivo CSS/SCSS\r\nimport \"./cardStyles.css\"; // Crie um arquivo CSS para os estilos do Card\r\n\r\nexport default function Card(props) {\r\n const {\r\n className,\r\n children,\r\n plain,\r\n profile,\r\n blog,\r\n raised,\r\n background,\r\n pricing,\r\n color,\r\n product,\r\n testimonial,\r\n chart,\r\n login,\r\n ...rest\r\n } = props;\r\n\r\n const cardClasses = classNames(\"card\", {\r\n \"card-plain\": plain,\r\n \"card-profile\": profile || testimonial,\r\n \"card-blog\": blog,\r\n \"card-raised\": raised,\r\n \"card-background\": background,\r\n \"card-pricing-color\": (pricing && color) || (pricing && background),\r\n [`card-${color}`]: color,\r\n \"card-pricing\": pricing,\r\n \"card-product\": product,\r\n \"card-chart\": chart,\r\n \"card-login\": login,\r\n [className]: className !== undefined,\r\n });\r\n\r\n return (\r\n <div className={cardClasses} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nCard.propTypes = {\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n blog: PropTypes.bool,\r\n raised: PropTypes.bool,\r\n background: PropTypes.bool,\r\n pricing: PropTypes.bool,\r\n testimonial: PropTypes.bool,\r\n color: PropTypes.oneOf([\r\n \"primary\",\r\n \"info\",\r\n \"success\",\r\n \"warning\",\r\n \"danger\",\r\n \"rose\",\r\n ]),\r\n product: PropTypes.bool,\r\n chart: PropTypes.bool,\r\n login: PropTypes.bool,\r\n children: PropTypes.node,\r\n};\r\n","import {\r\n whiteColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-pro-react\";\r\n\r\nconst cardBodyStyle = {\r\n cardBody: {\r\n padding: \"0.9375rem 20px\",\r\n flex: \"1 1 auto\",\r\n WebkitBoxFlex: \"1\",\r\n position: \"relative\"\r\n },\r\n cardBodyBackground: {\r\n position: \"relative\",\r\n zIndex: \"2\",\r\n minHeight: \"280px\",\r\n paddingTop: \"40px\",\r\n paddingBottom: \"40px\",\r\n maxWidth: \"440px\",\r\n margin: \"0 auto\"\r\n },\r\n cardBodyPlain: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\"\r\n },\r\n cardBodyFormHorizontal: {\r\n paddingLeft: \"15px\",\r\n paddingRight: \"15px\",\r\n \"& form\": {\r\n margin: \"0\"\r\n }\r\n },\r\n cardPricing: {\r\n padding: \"15px!important\",\r\n margin: \"0px!important\"\r\n },\r\n cardSignup: {\r\n padding: \"0px 30px 0px 30px\"\r\n },\r\n cardBodyColor: {\r\n borderRadius: \"6px\",\r\n \"& h1,& h2,& h3\": {\r\n \"& small\": {\r\n color: \"rgba(\" + hexToRgb(whiteColor) + \", 0.8)\"\r\n }\r\n }\r\n },\r\n cardBodyProfile: {\r\n marginTop: \"15px\"\r\n },\r\n cardBodyCalendar: {\r\n padding: \"0px !important\"\r\n }\r\n};\r\n\r\nexport default cardBodyStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n//@MATERIAL\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n//@MATERIAL\r\nimport styles from \"assets/jss/material-dashboard-pro-react/components/cardBodyStyle\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CardBody(props) {\r\n const classes = useStyles();\r\n const {\r\n className,\r\n children,\r\n background,\r\n plain,\r\n formHorizontal,\r\n pricing,\r\n signup,\r\n color,\r\n profile,\r\n calendar,\r\n ...rest\r\n } = props;\r\n const cardBodyClasses = classNames({\r\n [classes.cardBody]: true,\r\n [classes.cardBodyBackground]: background,\r\n [classes.cardBodyPlain]: plain,\r\n [classes.cardBodyFormHorizontal]: formHorizontal,\r\n [classes.cardPricing]: pricing,\r\n [classes.cardSignup]: signup,\r\n [classes.cardBodyColor]: color,\r\n [classes.cardBodyProfile]: profile,\r\n [classes.cardBodyCalendar]: calendar,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n <div className={cardBodyClasses} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nCardBody.propTypes = {\r\n className: PropTypes.string,\r\n background: PropTypes.bool,\r\n plain: PropTypes.bool,\r\n formHorizontal: PropTypes.bool,\r\n pricing: PropTypes.bool,\r\n signup: PropTypes.bool,\r\n color: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n calendar: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n","import React, { useEffect, useState } from 'react'\r\n\r\n//COMPONENTS\r\nimport Meta from './Meta'\r\nimport './Loader.css'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//Functions\r\nimport moment from \"moment-timezone\"\r\n\r\nconst Actions = (props) => {\r\n // const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n\r\n const [data, setData] = useState()\r\n const { tittle, preview, icon } = props\r\n let hashs = window.location.hash.split(\"/\")\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n\r\n useEffect(() => {\r\n let preData = [...db.status.map((st, index) => {\r\n return {\r\n value: Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].status === st.value\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n }).length\r\n }\r\n })]\r\n let newPredata = 0\r\n preData.forEach((item) => {\r\n newPredata = item.value + newPredata\r\n })\r\n setData(newPredata)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, dashFilterChart]);\r\n\r\n\r\n return (\r\n <div style={{ height: '100%' }}>\r\n <Meta\r\n load={props.load}\r\n data={data && data.toString()}\r\n tittle={tittle}\r\n preview={preview}\r\n icon={icon}\r\n edit={props.edit}\r\n id={props.id}\r\n styles={props.styles}\r\n handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n </div>\r\n )\r\n}\r\n\r\nexport default Actions","import React, { useState, useEffect, useRef } from 'react'\r\nimport moment from \"moment-timezone\"\r\n\r\n//FUNCTIONS\r\nimport { translate } from \"functions\"\r\n\r\n//COMPONENTS\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport Icon from \"components/Icon\"\r\nimport './Loader.css';\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\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\r\nconst ActionsDetailed = (props) => {\r\n\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n let titles = {}\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState([])\r\n const keysLabel = useRef([])\r\n\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let newData = [\r\n ...db.status.map((st) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(props.planCards).filter(fil => {\r\n\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status\r\n && db.cards[fil].status === st.value\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].status !== 'completed'\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length,\r\n color: 'red'\r\n }\r\n ]\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n setData(newData)\r\n // eslint-disable-next-line\r\n }, [props.planCards, props.filter, dashFilterChart]);\r\n\r\n if (db.cards[hashs[0]]?.customColumns)\r\n titles = JSON.parse(db.cards[hashs[0]].customColumns)\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div style={{ height: '100%' }}>\r\n <UiCard style={{ height: '100%', marginTop: '0', display: 'flex' }}>\r\n {props.edit ? <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>play_arrow</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)' }}>{translate(`$__actions`, 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> : <HeaderWithMenu\r\n title={titles?.actions?.name ? titles.actions.name : translate(`$__actions`, 1)}\r\n icon={titles?.actions?.icon ? titles.actions.icon : \"play_arrow\"}\r\n color={props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)'}\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 />}\r\n <div style={{ display: 'flex', width: '100%', borderBottom: '1px solid #D3D3D3', position: 'relative', flex: '1 1 auto' }}>\r\n {props.load && <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n {(!props.load && inViewport) &&\r\n <div style={{ position: \"absolute\", width: '100%', height: '100%', backgroundColor: '#f5f5f5' }}>\r\n <div className='componentCircle' style={{ position: \"absolute\", width: '100%', height: '100%' }}>\r\n <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 17, right: 17, bottom: 17, left: 17 }}\r\n arcLabelsTextColor={{ from: 'color', modifiers: [['brighter', 3]] }}\r\n innerRadius={0.5}\r\n padAngle={3}\r\n cornerRadius={3}\r\n theme={{\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent',\r\n }}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n />\r\n </div>\r\n </div>}\r\n </div>\r\n {(!props.load && inViewport) && <UiCardBody style={{ height: '15%', maxHeight: '280px', backgroundColor: 'white' }}>\r\n <h3>\r\n <small>{translate('$__total', 1)}: {Object.keys(props.planCards)\r\n .filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n }).length}\r\n </small>\r\n </h3>\r\n {db.status.map((st, index) => {\r\n return (\r\n <div key={`${index}_${st.value}`} style={{ color: 'black', display: 'flex', justifyContent: 'space-between', height: '30px', alignItems: 'center', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={st.color}>{st.icon}</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate(st.label, 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(props.planCards)\r\n .filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n <div style={{ color: 'black', display: 'flex', justifyContent: 'space-between', height: '30px', alignItems: 'center', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={'red'}>assignment_late</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate('$__late', 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].status !== 'completed'\r\n && (\r\n db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'task'\r\n || db.cards[fil].type === 'meeting'\r\n || db.cards[fil].type === 'iniciative'\r\n || db.cards[fil].type === 'myTask'\r\n )\r\n && (\r\n !db.cards[fil].checklist\r\n || (\r\n db.cards[fil].checklist\r\n && db.cards[fil].showCard\r\n )\r\n )\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length}\r\n </div>\r\n </div>\r\n </UiCardBody>}\r\n {/* <UiCardFooter stats>\r\n <div className={classes.stats}>\r\n <Danger>\r\n <Warning />\r\n </Danger>\r\n <a href=\"#pablo\" onClick={e => e.preventDefault()}>\r\n {translate('$__updatePlan', 1)}\r\n </a>\r\n </div>\r\n </UiCardFooter> */}\r\n </UiCard>\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nconst mapStateToProps = (store) => ({\r\n store: { cards: store.db.cards }\r\n}\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)(ActionsDetailed);\r\n","import React, { useEffect, useState } from 'react'\r\n\r\n//COMPONENTS\r\nimport Meta from './Meta'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//Functions\r\nimport moment from \"moment-timezone\"\r\n\r\nconst Goal = (props) => {\r\n // const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n\r\n const { tittle, preview, icon } = props\r\n const [data, setData] = useState([])\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n\r\n useEffect(() => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n\r\n let preData = [...db.status.map((st, index) => {\r\n return {\r\n value: Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type === 'goal'\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length,\r\n }\r\n })]\r\n let newPredata = 0\r\n preData.forEach((item) => {\r\n newPredata = item.value + newPredata\r\n })\r\n setData(newPredata)\r\n }, [props.planCards, dashFilterChart]);\r\n\r\n\r\n\r\n\r\n return (\r\n <div style={{ height: '100%' }}>\r\n <Meta\r\n load={props.load}\r\n data={data && data.toString()}\r\n tittle={tittle}\r\n preview={preview}\r\n icon={icon}\r\n edit={props.edit}\r\n styles={props.styles}\r\n id={props.id}\r\n handleRemoveObject={(id) => props.handleRemoveObject(id)}\r\n />\r\n\r\n </div>\r\n )\r\n}\r\n\r\nexport default Goal","import React, { useState, useRef, useEffect } from 'react'\r\n\r\n//COMPONENTS\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport Icon from \"components/Icon\"\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\nconst GoalsDetailed = (props) => {\r\n\r\n\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n let titles = {}\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState([])\r\n const keysLabel = useRef([])\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let newData = [\r\n ...db.status.map((st, index) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0] &&\r\n db.cards[fil].type === 'goal' &&\r\n dateCard.isBetween(startDate, endDate, null, '[]') &&\r\n !db.cards[fil].checklist &&\r\n !db.cards[fil].deleted &&\r\n db.cards[fil].status &&\r\n db.cards[fil].status === st.value\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status !== 'completed'\r\n && db.cards[fil].type === 'goal'\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length,\r\n color: 'red'\r\n }\r\n ]\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n setData(newData)\r\n // eslint-disable-next-line\r\n }, [props.planCards, props.filter, dashFilterChart]);\r\n\r\n\r\n if (db.cards[hashs[0]]?.customColumns)\r\n titles = JSON.parse(db.cards[hashs[0]].customColumns)\r\n\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div style={{ height: '100%' }}>\r\n <UiCard style={{ height: '100%', marginTop: '0', display: 'flex' }}>\r\n {props.edit ? <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: props.styles.color ? props.styles.color : 'grey' }}>flag</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', color: props.styles.color ? props.styles.color : 'grey' }}>{translate(`$__goals`, 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 <HeaderWithMenu\r\n title={titles?.goals?.name ? titles.goals.name : translate(`$__goals`, 1)}\r\n icon={titles?.goals?.icon ? titles.goals.icon : \"flag\"}\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 />}\r\n <div style={{ display: 'flex', width: '100%', borderBottom: '1px solid #D3D3D3', position: 'relative', flex: '1 1 auto', backgroundColor: '#f5f5f5' }}>\r\n {props.load && <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n <div className='componentCircle' style={{ position: \"absolute\", width: '100%', height: '100%' }}>\r\n {(!props.load && inViewport) && <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 17, right: 17, bottom: 17, left: 17 }}\r\n arcLabelsTextColor={{ from: 'color', modifiers: [['brighter', 3]] }}\r\n innerRadius={0.5}\r\n padAngle={3}\r\n cornerRadius={3}\r\n theme={{\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent',\r\n }}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n />}\r\n </div>\r\n </div>\r\n {(!props.load && inViewport) && <UiCardBody style={{ height: '15%', maxHeight: '280px', backgroundColor: 'white', }}>\r\n <h3>\r\n <p style={{ fontSize: '22px', fontWeight: 'bolder' }}>{translate('$__total', 1)}: {Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0] &&\r\n !db.cards[fil].checklist &&\r\n dateCard.isBetween(startDate, endDate, null, '[]') &&\r\n !db.cards[fil].deleted &&\r\n db.cards[fil].type === 'goal'\r\n }).length}</p>\r\n </h3>\r\n {db.status.map((st, index) => {\r\n return (\r\n <div key={`${index}_${st.value}`} style={{ color: 'black', display: 'flex', fontSize: '14px', justifyContent: 'space-between', height: '30px', alignItems: 'center', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={st.color}>{st.icon}</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate(st.label, 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n return db.cards[fil]._planId === hashs[0] &&\r\n db.cards[fil].type === 'goal' &&\r\n dateCard.isBetween(startDate, endDate, null, '[]') &&\r\n !db.cards[fil].checklist &&\r\n !db.cards[fil].deleted &&\r\n db.cards[fil].status &&\r\n db.cards[fil].status === st.value\r\n }).length}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n <div style={{ color: 'black', display: 'flex', justifyContent: 'space-between', height: '30px', alignItems: 'center', fontSize: '14px', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={'red'}>assignment_late</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate('$__late', 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n\r\n const dateCard = moment(lastDateCard * 1000);\r\n\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].checklist\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status !== 'completed'\r\n && db.cards[fil].type === 'goal'\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length}\r\n </div>\r\n </div>\r\n </UiCardBody>}\r\n </UiCard>\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default GoalsDetailed","import React, { useEffect, useState } from 'react'\r\n\r\n//COMPONENTS\r\nimport Meta from './Meta'\r\nimport MatrixIcon from \"assets/icons/Matrix\"\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//Functions\r\nimport moment from \"moment-timezone\"\r\n\r\n\r\nconst Guideline = (props) => {\r\n const { tittle, preview } = props\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n\r\n let preData = [...db.status.map((st, index) => {\r\n return {\r\n value: Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].type === 'guideline'\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length,\r\n }\r\n })]\r\n let newPredata = 0\r\n preData.forEach((item) => {\r\n newPredata = item.value + newPredata\r\n })\r\n return (\r\n <div style={{ height: '100%' }}>\r\n <Meta\r\n data={newPredata}\r\n tittle={tittle}\r\n load={props.load}\r\n preview={preview}\r\n icon={MatrixIcon}\r\n edit={props.edit}\r\n id={props.id}\r\n styles={props.styles}\r\n handleRemoveObject={(id) => props.handleRemoveObject(id)} />\r\n </div>\r\n )\r\n}\r\n\r\nexport default Guideline","import React, { useState, useRef, useEffect } from 'react'\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\n//COMPONENTS\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport Icon from \"components/Icon\"\r\nimport UiCardHeader from \"components/Card/CardHeader\"\r\nimport MatrixIcon from \"assets/icons/Matrix\"\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport \"./Loader.css\"\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n\r\n\r\nconst MatrixDoughDetailed = (props) => {\r\n\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n let titles = {}\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState([])\r\n const keysLabel = useRef([])\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let newData = [\r\n ...db.status.map((st, index) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].type.indexOf('guideline') > -1\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(db.cards).filter(fil => {\r\n\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type.indexOf('guideline') > -1\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length,\r\n color: 'red'\r\n }\r\n ]\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n setData(newData)\r\n // eslint-disable-next-line\r\n }, [props.planCards, props.filter, dashFilterChart])\r\n\r\n if (db.cards[hashs[0]]?.customColumns)\r\n titles = JSON.parse(db.cards[hashs[0]].customColumns)\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div style={{ height: '100%' }}>\r\n <UiCard style={{ height: '100%', marginTop: '0', display: 'flex', overflow: 'hidden' }}>\r\n {props.edit ?\r\n <div style={{ width: '100%', height: '50px', display: 'flex', borderBottom: '1px solid #D3D3D3', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white' }}>\r\n <div style={{ width: '40px', height: '40px', alignSelf: 'center', display: 'flex' }}>\r\n <Icon\r\n size={28}\r\n icon={MatrixIcon}\r\n style={{\r\n alignSelf: 'center',\r\n marginLeft: '12.5px',\r\n color: props.styles.color ? props.styles.color : 'grey',\r\n maxWidth: '30px'\r\n }} />\r\n </div>\r\n <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', color: props.styles.color ? props.styles.color : 'grey' }}>{translate(`$__guidelines`, 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', position: 'absolute', color: props.styles.color ? props.styles.color : 'rgba(0, 0, 0, 0.67)', 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 <HeaderWithMenu\r\n title={titles?.guidelines?.name ? titles.guidelines.name : translate(`$__guidelines`, 1)}\r\n icon={titles?.guidelines?.icon ? titles.guidelines.icon : MatrixIcon}\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 />}\r\n <UiCardHeader style={{ display: 'flex', width: '100%', borderBottom: '1px solid #D3D3D3', position: 'relative', flex: '1 1 auto', backgroundColor: '#f5f5f5' }}>\r\n {props.load && <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n <div className='componentCircle' style={{ position: \"absolute\", width: '100%', height: '100%' }}>\r\n {(!props.load && inViewport) && <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 17, right: 17, bottom: 17, left: 17 }}\r\n arcLabelsTextColor={{ from: 'color', modifiers: [['brighter', 3]] }}\r\n innerRadius={0.5}\r\n padAngle={3}\r\n cornerRadius={3}\r\n theme={{\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent',\r\n }}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n />}\r\n </div>\r\n </UiCardHeader>\r\n {(!props.load && inViewport) && <UiCardBody style={{ height: '15%', maxHeight: '280px', backgroundColor: 'white' }}>\r\n <h3>\r\n <p style={{ fontSize: '22px', fontWeight: 'bolder' }}>{translate('$__total', 1)}: {Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n return db.cards[fil]._planId === hashs[0]\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].type.indexOf('guideline') > -1\r\n }).length}</p>\r\n </h3>\r\n {db.status.map((st, index) => {\r\n return (\r\n <div key={`${index}_${st.value}`} style={{ color: 'black', display: 'flex', fontSize: '14px', justifyContent: 'space-between', height: '30px', alignItems: 'center', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={st.color}>{st.icon}</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate(st.label, 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type.indexOf('guideline') > -1\r\n && db.cards[fil].status\r\n && db.cards[fil].status === st.value\r\n }).length}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n <div style={{ color: 'black', display: 'flex', justifyContent: 'space-between', height: '30px', fontSize: '14px', alignItems: 'center', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={'red'}>assignment_late</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate('$__late', 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type.indexOf('guideline') > -1\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length}\r\n </div>\r\n </div>\r\n </UiCardBody>}\r\n </UiCard>\r\n </div>\r\n )}\r\n </ViewportChecker>\r\n </div>\r\n )\r\n}\r\n\r\nexport default MatrixDoughDetailed","import React, { useState, useEffect } from 'react'\r\n\r\n//COMPONENTS\r\nimport Meta from './Meta'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//Functions\r\nimport moment from \"moment-timezone\"\r\n\r\n\r\nconst Objective = (props) => {\r\n // const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n const { tittle, preview, icon } = props\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n let preData = [...db.status.map((st, index) => {\r\n return {\r\n value: Object.keys(db.cards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].type === 'objective'\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length,\r\n }\r\n })]\r\n let newPredata = 0\r\n preData.forEach((item) => {\r\n newPredata = item.value + newPredata\r\n })\r\n\r\n return (\r\n\r\n <div style={{ height: '100%' }}>\r\n <Meta\r\n load={props.load}\r\n data={newPredata && newPredata.toString()}\r\n tittle={tittle}\r\n preview={preview}\r\n icon={icon}\r\n edit={props.edit}\r\n id={props.id}\r\n handleRemoveObject={(id) => props.handleRemoveObject(id)}\r\n styles={props.styles}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default Objective","import React, { useEffect, useState, useRef } from 'react'\r\n\r\n//COMPONENTS\r\nimport UiCard from \"components/Card/Card\"\r\nimport UiCardBody from \"components/Card/CardBody\"\r\nimport UiCardHeader from \"components/Card/CardHeader\"\r\nimport HeaderWithMenu from \"components/Header/card\"\r\nimport Icon from \"components/Icon\"\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport \"./Loader.css\"\r\nimport ViewportChecker from 'componentsV3/ViewerportCheck/ViewrportCheck'\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\n\r\n//FUNCTIONS\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from \"functions\"\r\n\r\nconst ObjectiveDetailed = (props) => {\r\n\r\n const today = moment().tz('America/Sao_Paulo').format('YYYY/MM/DD');\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const { db } = reduxStore.getState()\r\n let titles = {}\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState([])\r\n const keysLabel = useRef([])\r\n\r\n useEffect(() => {\r\n\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n }, [props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n let newData = [\r\n ...db.status.map((st, index) => {\r\n return {\r\n id: st.label.substring(3) === 'await' ? translate('$__awaitAction') : translate(st.label),\r\n label: st.label.substring(3) === 'await' ? '$__awaitAction' : st.label,\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].type === 'objective'\r\n && db.cards[fil].status && db.cards[fil].status === st.value\r\n }).length,\r\n color: st.color\r\n }\r\n }),\r\n {\r\n id: translate('$__late'),\r\n label: '$__late',\r\n value: Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && !db.cards[fil].deleted\r\n && db.cards[fil].status !== 'completed'\r\n && db.cards[fil].type === 'objective'\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length,\r\n color: 'red'\r\n }\r\n ]\r\n newData = newData.map((item) => {\r\n if (props.filter.colorsArr) {\r\n let newColor = ''\r\n props.filter.colorsArr.forEach((colorObj) => {\r\n if (item.label.substring(3) === colorObj.label)\r\n newColor = colorObj.color\r\n })\r\n return {\r\n ...item,\r\n color: newColor\r\n }\r\n }\r\n else return item\r\n })\r\n newData.forEach((item) => {\r\n const newLabel = {\r\n label: item.label.substring(3),\r\n color: item.color\r\n };\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n })\r\n setData(newData)\r\n // eslint-disable-next-line\r\n }, [props.planCards, props.filter, dashFilterChart])\r\n\r\n if (db.cards[hashs[0]]?.customColumns)\r\n titles = JSON.parse(db.cards[hashs[0]].customColumns)\r\n\r\n\r\n return (\r\n <div style={{ height: '100%', width: '100%' }}>\r\n <ViewportChecker>\r\n {(inViewport) => (\r\n <div style={{ height: '100%' }}>\r\n <UiCard style={{ height: '100%', marginTop: '0', display: 'flex' }}>\r\n {props.edit ? <div style={{ width: '100%', height: '50px', display: 'flex', backgroundColor: props.styles.backgroundColor ? props.styles.backgroundColor : 'white', borderBottom: '1px solid #D3D3D3' }}>\r\n <Icon size={24} style={{ alignSelf: 'center', marginLeft: '12.5px', color: props.styles.color ? props.styles.color : 'grey' }}>gps_fixed</Icon>\r\n <p style={{ margin: '0px', marginLeft: '7px', alignSelf: 'center', fontWeight: 'bold', color: props.styles.color ? props.styles.color : 'grey' }}>{translate(`$__objectives`, 1)}</p>\r\n\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 <HeaderWithMenu\r\n title={titles?.objectives?.name ? titles.objectives.name : translate(`$__objectives`, 1)}\r\n icon={titles?.objectives?.icon ? titles.objectives.icon : \"gps_fixed\"}\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 />\r\n }\r\n <UiCardHeader style={{ display: 'flex', width: '100%', borderBottom: '1px solid #D3D3D3', position: 'relative', flex: '1 1 auto', backgroundColor: '#f5f5f5' }}>\r\n {props.load && <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n <div className='componentCircle' style={{ position: \"absolute\", width: '100%', height: '100%' }}>\r\n {(!props.load && inViewport) &&\r\n < ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 17, right: 17, bottom: 17, left: 17 }}\r\n arcLabelsTextColor={{ from: 'color', modifiers: [['brighter', 3]] }}\r\n innerRadius={0.5}\r\n padAngle={3}\r\n cornerRadius={3}\r\n theme={{\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent',\r\n }}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n borderColor={{ from: 'color', modifiers: [['darker', 0.2]] }}\r\n enableArcLinkLabels={false}\r\n />}\r\n </div>\r\n </UiCardHeader>\r\n {!props.load && <UiCardBody style={{ height: '15%', maxHeight: '280px', backgroundColor: 'white' }}>\r\n <h3>\r\n <p style={{ fontSize: '22px', fontWeight: 'bolder' }}>{translate('$__total', 1)}: {Object.keys(props.planCards)\r\n .filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].deleted\r\n && !db.cards[fil].checklist\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].type === 'objective'\r\n }).length}</p>\r\n </h3>\r\n {db.status.map((st, index) => {\r\n return (\r\n <div key={`${index}_${st.value}`} style={{ color: 'black', display: 'flex', fontSize: '14px', justifyContent: 'space-between', height: '30px', alignItems: 'center', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={st.color}>{st.icon}</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate(st.label, 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(props.planCards).filter(fil => {\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && db.cards[fil].type === 'objective'\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].status\r\n && !db.cards[fil].checklist\r\n && db.cards[fil].status === st.value\r\n }).length}\r\n </div>\r\n </div>\r\n )\r\n })}\r\n <div style={{ color: 'black', display: 'flex', justifyContent: 'space-between', height: '30px', fontSize: '14px', alignItems: 'center', width: '100%' }}>\r\n <div style={{ display: 'flex' }}>\r\n <Icon color={'red'}>assignment_late</Icon>\r\n <span style={{ marginLeft: '15px' }} >{translate('$__late', 1)}</span>\r\n </div>\r\n <div>\r\n {Object.keys(props.planCards).filter(fil => {\r\n\r\n let lastDateCard =\r\n db.cards[fil].completed_at?.low\r\n || db.cards[fil].completed_at\r\n || db.cards[fil].updated_at?.low\r\n || db.cards[fil].updated_at\r\n || db.cards[fil].created_at?.low\r\n || db.cards[fil].created_at\r\n const dateCard = moment(lastDateCard * 1000);\r\n const startDate = dashFilterChart?.startDate ? moment(dashFilterChart?.startDate * 1000) : moment().subtract(10, 'years')\r\n const endDate = dashFilterChart?.endDate ? moment(dashFilterChart?.endDate * 1000) : moment()\r\n\r\n return db.cards[fil]._planId === hashs[0]\r\n && !db.cards[fil].checklist\r\n && !db.cards[fil].deleted\r\n && dateCard.isBetween(startDate, endDate, null, '[]')\r\n && db.cards[fil].status !== 'completed'\r\n && db.cards[fil].type === 'objective'\r\n && db.cards[fil].endDate && moment(new Date(db.cards[fil].endDate * 1000)).tz('America/Sao_Paulo').format() <= moment(new Date(today)).tz('America/Sao_Paulo').format()\r\n }).length}\r\n </div>\r\n </div>\r\n </UiCardBody>}\r\n </UiCard >\r\n </div >\r\n )}\r\n </ViewportChecker>\r\n </div >\r\n )\r\n}\r\n\r\nexport default ObjectiveDetailed","import React, { useEffect, useState, useRef } from 'react'\r\nimport moment from \"moment-timezone\"\r\n\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\r\n//COMPONENTS\r\nimport Legend from '../Legend';\r\nimport { ResponsiveBar } from '@nivo/bar'\r\nimport Header from 'components/Dashboards/Header'\r\nimport './Loader.css';\r\n\r\n//DEPENDENCIES\r\nimport Modal from './Modal';\r\n\r\n//FUNCTIONS\r\nimport { translate } from 'functions';\r\nimport { loadTimeline } from \"functions/chat\"\r\n\r\n\r\nconst TaskDoneBar = (props) => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const mounted = useRef(true)\r\n const similarColorsRef = useRef({})\r\n const colorSelectRef = useRef(0)\r\n\r\n React.useEffect(() => {\r\n const init = async () => {\r\n try {\r\n await loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Components/Dashboard/Widgers/TaskDoneBar/init()\"\r\n },\r\n {\r\n ids: [hashs[0]],\r\n db: \"cards\",\r\n type: \"timer\",\r\n reqChildrens: true\r\n })\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n init()\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n\r\n const { db } = reduxStore.getState()\r\n const [filterChart, setFilter] = useState({\r\n index: 0,\r\n showQuantity: 12,\r\n number: 12,\r\n finalIndex: 12,\r\n dataStructure: 'month',\r\n status: {\r\n \"all\": false,\r\n \"notStarted\": false,\r\n \"awaitAction\": false,\r\n \"paused\": false,\r\n \"inProgress\": false,\r\n \"completed\": true\r\n }\r\n })\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState({\r\n \"total\": {\r\n \"value\": 0,\r\n \"label\": \"completed\",\r\n \"color\": \"#5A7F71\",\r\n \"id\": \"completed\",\r\n }\r\n })\r\n const [table, setTable] = useState({})\r\n const keysLabel = useRef([{ label: 'completed', color: '#5A7F71' }])\r\n const filterRef = useRef([])\r\n\r\n const generateColor = (name) => {\r\n let hash = 0;\r\n for (let i = 0; i < name.length; i++) {\r\n hash += name.charCodeAt(i);\r\n }\r\n const hexColor = \"#\" + ((hash % 0xFFFFFF) + 0x1000000).toString(16).slice(1, 7);\r\n return hexColor;\r\n }\r\n\r\n function generateSimilarColors(color, tag, last) {\r\n\r\n let newColor = props?.dashboardConfig?.colorsArr[colorSelectRef.current]?.color;\r\n let result = '#';\r\n\r\n let adjustmentFactor = 0.25;\r\n\r\n for (let i = 1; i < newColor.length; i += 2) {\r\n let temp = parseInt(newColor.slice(i, i + 2), 16);\r\n temp = Math.round(temp + adjustmentFactor * (255 - temp));\r\n result += temp.toString(16).padStart(2, '0');\r\n }\r\n\r\n\r\n\r\n if (filterChart?.tagsColors && filterChart?.tagsColors?.mainColor === color) {\r\n Object.values(filterChart?.tagsColors).forEach((item) => {\r\n if (item.name === tag) {\r\n similarColorsRef.current = {\r\n ...similarColorsRef.current,\r\n [item.name]: {\r\n color: item.color,\r\n name: item.name\r\n }\r\n }\r\n }\r\n })\r\n } else if (!similarColorsRef.current?.[tag] || newColor !== similarColorsRef.current?.mainColor) {\r\n similarColorsRef.current = {\r\n ...similarColorsRef.current,\r\n [tag]: {\r\n color: result,\r\n name: tag\r\n }\r\n }\r\n }\r\n\r\n if (!similarColorsRef.current?.[tag]) {\r\n similarColorsRef.current = {\r\n ...similarColorsRef.current,\r\n [tag]: {\r\n color: result,\r\n name: tag\r\n }\r\n }\r\n }\r\n\r\n\r\n if (Object.values(similarColorsRef.current).length > 0) {\r\n Object.values(similarColorsRef.current).forEach((item) => {\r\n if (item.name === tag) {\r\n result = item.color\r\n }\r\n })\r\n }\r\n\r\n\r\n return result;\r\n }\r\n\r\n\r\n\r\n const checkWeekStructure = (start, end) => {\r\n if (start === end)\r\n return true\r\n else\r\n return false\r\n }\r\n\r\n const getNames = (name) => {\r\n if (typeof name === 'string') {\r\n let nameLength = name.split(\" \")\r\n let newName = name\r\n if (data.length > 5 && data.length < 10) {\r\n newName = ''\r\n if (!nameLength[0].startsWith(\"#\")) {\r\n nameLength.forEach((item) => {\r\n if (nameLength.length === 1) {\r\n newName = item.substring(0, 3);\r\n } else {\r\n newName = newName + item.charAt(0)\r\n }\r\n })\r\n } else {\r\n nameLength.forEach((item, index) => {\r\n if (index !== 0) {\r\n if (nameLength.length === 2) {\r\n newName = item.substring(0, 3);\r\n } else {\r\n newName = newName + item.charAt(0)\r\n }\r\n }\r\n })\r\n return nameLength[0] + newName\r\n }\r\n return newName\r\n } else if (data.length > 10 && !filterChart?.mode) {\r\n return ''\r\n }\r\n if (newName.split('').length > 10) {\r\n return newName.substring(0, 10) + '...';\r\n } else {\r\n return newName\r\n }\r\n }\r\n }\r\n\r\n\r\n const getLeftValue = () => {\r\n if (filterChart?.mode) {\r\n let hihgherLabel = 0\r\n data.forEach((item) => {\r\n if (item && item?.label && item?.label.split(\"\").length > hihgherLabel)\r\n hihgherLabel = item.label.split(\"\").length\r\n })\r\n return (hihgherLabel > 10 ? 10 : hihgherLabel) * 11\r\n } else {\r\n return 40\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (Object.keys(props.filter).length > 0) {\r\n setFilter({ ...filterChart, ...props.filter })\r\n }\r\n if (mounted.current && Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...filterChart,\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n // eslint-disable-next-line\r\n }, [props.filter, props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n if (filterChart.tags && mounted.current) {\r\n filterRef.current = []\r\n filterChart.tags.forEach((item) => {\r\n filterRef.current = [...filterRef.current, item.label];\r\n })\r\n\r\n }\r\n similarColorsRef.current = {}\r\n\r\n }, [filterChart]);\r\n\r\n\r\n useEffect(() => {\r\n let timeTasks = {};\r\n let modalData = {}\r\n let keysLabelArr = []\r\n colorSelectRef.current = 0\r\n let count = 0\r\n const startDate = (dashFilterChart.startDate ? dashFilterChart : filterChart).startDate ? moment((dashFilterChart.startDate ? dashFilterChart : filterChart).startDate * 1000) : moment().startOf('year');\r\n const endDate = (dashFilterChart.startDate ? dashFilterChart : filterChart).endDate ? moment((dashFilterChart.startDate ? dashFilterChart : filterChart).endDate * 1000) : moment().endOf('year');\r\n const weekStructure = checkWeekStructure(startDate.format('MMMM'), endDate.format('MMMM'))\r\n\r\n const getWeeks = (date, label) => {\r\n count = count + 1\r\n let firstWeek = date.startOf(\"month\").week()\r\n let lastWeek = date.endOf(\"month\").week()\r\n for (let i = firstWeek; i <= lastWeek; i++) {\r\n modalData = {\r\n ...modalData,\r\n [label]: {\r\n ...modalData[label] || {},\r\n [i]: (modalData[label]?.[i] || 0),\r\n }\r\n }\r\n }\r\n }\r\n\r\n const updateTaskInfo = (dateCard, item, status, last) => {\r\n if (colorSelectRef.current < 5) {\r\n colorSelectRef.current = colorSelectRef.current + 1\r\n } else {\r\n colorSelectRef.current = 0\r\n }\r\n const label = item.label\r\n const cardDate = moment(dateCard.date).clone()\r\n const monthKey = dateCard.date.clone().format('MMMM');\r\n const startOfMonth = cardDate.clone().startOf('month');\r\n const endOfMonth = cardDate.clone().endOf('month');\r\n const weekStart = cardDate.clone().startOf(\"week\")\r\n const weekEnd = cardDate.clone().endOf(\"week\")\r\n const weekKey = dateCard.date.clone().week();\r\n if (!modalData.label && weekStructure)\r\n getWeeks(dateCard.date.clone(), label)\r\n timeTasks = {\r\n ...timeTasks,\r\n [label]: {\r\n ...timeTasks[label] || {},\r\n \"id\": label,\r\n \"color\": props?.dashboardConfig?.colorsArr ?\r\n generateSimilarColors(props?.dashboardConfig?.colorsArr[0]?.color, label, last)\r\n : (item?.color || generateColor(label)),\r\n \"label\": label,\r\n \"value\": (timeTasks[label]?.[\"value\"] || 0) + 1,\r\n }\r\n };\r\n let cellRef = weekStructure ? weekKey : monthKey\r\n\r\n modalData = {\r\n ...modalData,\r\n [label]: {\r\n ...modalData[label] || {},\r\n \"value\": (modalData[label]?.[\"value\"] || 0) + 1,\r\n tag: item.value,\r\n \"label\": window.location.hostname.indexOf('eneva') > -1 ? label.substring(3) : label,\r\n [status]: {\r\n ...modalData[label]?.[status],\r\n [cellRef]: (modalData[label]?.[status]?.[cellRef] || 0) + 1,\r\n },\r\n color: generateSimilarColors(props?.dashboardConfig?.colorsArr[0]?.color, label),\r\n [cellRef]: (modalData[label]?.[cellRef] || 0) + 1,\r\n [\"Period__\" + cellRef]: weekStructure ? {\r\n start: weekStart.startOf(\"day\").unix(\"X\"),\r\n end: weekEnd.endOf(\"day\").unix(\"X\")\r\n } : {\r\n start: startOfMonth.startOf(\"day\").unix(\"X\"),\r\n end: endOfMonth.endOf(\"day\").unix(\"X\")\r\n }\r\n }\r\n }\r\n keysLabelArr = {\r\n ...keysLabelArr,\r\n [label]: {\r\n label: label,\r\n color: item?.color || generateColor(label)\r\n }\r\n }\r\n };\r\n\r\n if (props.planCards) {\r\n keysLabel.current = [];\r\n let arr = filterChart.status ? Object.keys(filterChart.status).filter(key => (filterChart.status[key])) : [\"completed\"]\r\n Object.keys(props.planCards).filter((fil) =>\r\n !db.cards[fil].deleted\r\n &&\r\n (arr).includes(db.cards[fil].status)\r\n )\r\n .forEach((planCard, index) => {\r\n let result = filterChart?.users?.length > 0 ? false : true\r\n if (filterChart.users && Object.keys(db.cards[planCard]?._users).length > 0) {\r\n Object.values(db.cards[planCard]?._users).forEach((user) => {\r\n filterChart.users.forEach((filterUser) => {\r\n if (user._id === filterUser)\r\n result = true\r\n })\r\n })\r\n }\r\n if (result) {\r\n const dateCard = {\r\n date: db.cards[planCard].completed_at ? moment(db.cards[planCard].completed_at?.low * 1000) : moment(db.cards[planCard].created_at * 1000),\r\n tags: db.cards[planCard]._tags\r\n };\r\n\r\n if (dateCard.date.isBetween(startDate, endDate, null, '[]')) {\r\n // const monthKey = dateCard.date.format('MMMM');\r\n if (filterChart?.tags?.length > 0 || filterChart.tagsByText) {\r\n dateCard.tags\r\n .filter(item =>\r\n (\r\n filterChart.tags\r\n && filterChart.tags.length > 0\r\n && item.label\r\n && filterRef.current.includes(item.label)\r\n )\r\n ||\r\n (\r\n filterChart.tagsByText\r\n && item.label\r\n && item.label.toLowerCase().indexOf(filterChart.tagsByText.toLowerCase()) > -1\r\n )\r\n )\r\n .forEach((item) => {\r\n updateTaskInfo(dateCard, item, db.cards[planCard].status, index === Object.keys(props.planCards).length - 1);\r\n });\r\n\r\n keysLabel.current = Object.values(keysLabelArr)\r\n } else {\r\n timeTasks = {\r\n ...timeTasks,\r\n [db.cards[planCard].status]: {\r\n ...timeTasks[\"total\"] || {},\r\n \"value\": timeTasks && timeTasks[db.cards[planCard].status] && timeTasks[db.cards[planCard].status][\"value\"] ? timeTasks[db.cards[planCard].status][\"value\"] + 1 : 1,\r\n \"label\": db.cards[planCard].status,\r\n \"color\": db.status.filter(fil => fil.value === db.cards[planCard].status)[0].color,\r\n \"id\": translate(`$__${db.cards[planCard].status}`),\r\n // \"id\":trans\r\n }\r\n }\r\n modalData = {}\r\n\r\n const newLabel = {\r\n label: db.cards[planCard].status,\r\n color: db.status.filter(fil => fil.value === db.cards[planCard].status)[0].color\r\n };\r\n\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n if (data !== timeTasks && mounted.current) {\r\n let newData = Object.values(timeTasks)\r\n if (filterChart?.colorsArr) {\r\n newData = newData.map((item) => {\r\n const foundColorObj = filterChart?.colorsArr.find((colorObj) => colorObj.label === item.label);\r\n if (foundColorObj) {\r\n return {\r\n ...item,\r\n color: foundColorObj.color\r\n };\r\n } else {\r\n return item;\r\n }\r\n });\r\n }\r\n\r\n\r\n setData(newData)\r\n setTable(modalData)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.load, filterChart, dashFilterChart])\r\n\r\n\r\n\r\n return (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'visible' }}>\r\n <Header\r\n handleSetSelected={(value) => {\r\n setFilter({ ...filterChart, ...value })\r\n props.handleSetFilter({ ...filterChart, ...value, id: props.id })\r\n }}\r\n filterConfig={{ filterItems: ['date', 'users', 'tags', 'tagsByText', 'unit', 'status'] }}\r\n tittle={translate(\"$__\" + props.tittle)}\r\n icon={props.icon}\r\n styles={props.styles}\r\n datafilter={true}\r\n indicators={filterChart ? filterChart : null}\r\n handleModal={() => {\r\n props.handleDatagridTable()\r\n }}\r\n table={true}\r\n vertical={true}\r\n handleRemoveObject={() => props.handleRemoveObject(props.id)}\r\n edit={props.edit}\r\n handleSetoption={(value) => {\r\n JSON.stringify(value) !== JSON.stringify(filterChart) && setFilter({ ...value })\r\n props.handleSetFilter({ ...filterChart, ...value, id: props.id })\r\n }}\r\n />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{}} >\r\n </div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter', backgroundColor: '#f5f5f5' }}>\r\n {(!props.load && Array.isArray(data)) ?\r\n <ResponsiveBar\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 35, right: 40, bottom: 35, left: getLeftValue() }}\r\n innerRadius={0}\r\n padAngle={1.7}\r\n cornerRadius={3}\r\n layout={filterChart?.mode ? 'horizontal' : 'vertical'}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n padding={data.length === 1 ? 0.35 : 0.1}\r\n tooltipFormat={x => {\r\n return x\r\n }}\r\n axisLeft={filterChart?.mode ? {\r\n format: (v) => getNames(v)\r\n } : {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n format: (v) => v % 1 === 0 ? v : ''\r\n }}\r\n axisBottom={filterChart?.mode ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n format: (v) => v % 1 === 0 ? v : ''\r\n } : {\r\n format: (v) => getNames(v)\r\n }}\r\n theme={{\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent',\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n fill: 'rgba(0, 0, 0, 0.50)',\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n }\r\n },\r\n }}\r\n />\r\n : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n {props.filter.table ? <div style={{ maxHeight: '300px', overflow: 'scroll' }} >\r\n <Modal data={Object.values(table)} planCards={props.planCards} filterProps={filterChart} />\r\n </div> :\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={Object.keys(similarColorsRef.current).length > 0\r\n ? data.filter((item) => item.color && item.label).map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label,\r\n }\r\n })\r\n : keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label,\r\n }\r\n })\r\n }\r\n customColors={filterChart?.colorsArr}\r\n />\r\n </div>}\r\n </div >\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(null, mapDispatchToProps)(TaskDoneBar);","import React, { useEffect, useState, useRef } from 'react'\r\nimport moment from \"moment-timezone\"\r\n\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 Legend from '../Legend';\r\nimport { ResponsivePie } from '@nivo/pie'\r\nimport Header from 'components/Dashboards/Header'\r\nimport './Loader.css';\r\n\r\n//DEPENDENCIES\r\nimport Modal from './Modal';\r\n\r\n//FUNCTIONS\r\nimport { translate } from 'functions';\r\nimport { loadTimeline } from \"functions/chat\"\r\n\r\n\r\n\r\n\r\nconst TaskDoneBar = (props) => {\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n const mounted = useRef(true)\r\n\r\n React.useEffect(() => {\r\n init()\r\n mounted.current = true\r\n return () => {\r\n mounted.current = false\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const init = async () => {\r\n loadTimeline(\r\n {\r\n ...props,\r\n fnIdentification: \"Components/Dashboard/Widgers/TaskDoneBar/init()\"\r\n },\r\n {\r\n ids: [hashs[0]],\r\n db: \"cards\",\r\n type: \"timer\",\r\n reqChildrens: true\r\n })\r\n }\r\n\r\n const { db } = reduxStore.getState()\r\n const [filterChart, setFilter] = useState({\r\n index: 0,\r\n showQuantity: 12,\r\n number: 12,\r\n finalIndex: 12,\r\n dataStructure: 'month',\r\n status: {\r\n \"all\": false,\r\n \"notStarted\": false,\r\n \"awaitAction\": false,\r\n \"paused\": false,\r\n \"inProgress\": false,\r\n \"completed\": true\r\n }\r\n })\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState({\r\n \"total\": {\r\n \"value\": 0,\r\n \"label\": \"completed\",\r\n \"color\": \"#5A7F71\",\r\n \"id\": \"completed\",\r\n }\r\n })\r\n const [table, setTable] = useState({})\r\n const keysLabel = useRef([{ label: 'completed', color: '#5A7F71' }])\r\n const filterRef = useRef([])\r\n\r\n const generateColor = (name) => {\r\n let hash = 0;\r\n for (let i = 0; i < name.length; i++) {\r\n hash += name.charCodeAt(i);\r\n }\r\n const hexColor = \"#\" + ((hash % 0xFFFFFF) + 0x1000000).toString(16).slice(1, 7);\r\n return hexColor;\r\n }\r\n\r\n const checkWeekStructure = (start, end) => {\r\n if (start === end)\r\n return true\r\n else\r\n return false\r\n }\r\n\r\n const getNames = (name) => {\r\n if (typeof name === 'string') {\r\n let nameLength = name.split(\" \")\r\n let newName = name\r\n if (data.length > 5 && data.length < 10) {\r\n newName = ''\r\n if (!nameLength[0].startsWith(\"#\")) {\r\n nameLength.forEach((item) => {\r\n if (nameLength.length === 1) {\r\n newName = item.substring(0, 3);\r\n } else {\r\n newName = newName + item.charAt(0)\r\n }\r\n })\r\n } else {\r\n nameLength.forEach((item, index) => {\r\n if (index !== 0) {\r\n if (nameLength.length === 2) {\r\n newName = item.substring(0, 3);\r\n } else {\r\n newName = newName + item.charAt(0)\r\n }\r\n }\r\n })\r\n return nameLength[0] + newName\r\n }\r\n return newName\r\n } else if (data.length > 10 && !filterChart?.mode) {\r\n return ''\r\n }\r\n if (newName.split('').length > 10) {\r\n return newName.substring(0, 10) + '...';\r\n } else {\r\n return newName\r\n }\r\n }\r\n }\r\n\r\n\r\n const getLeftValue = () => {\r\n if (filterChart?.mode) {\r\n let hihgherLabel = 0\r\n data.forEach((item) => {\r\n if (item && item?.label && item?.label.split(\"\").length > hihgherLabel)\r\n hihgherLabel = item.label.split(\"\").length\r\n })\r\n return (hihgherLabel > 10 ? 10 : hihgherLabel) * 11\r\n } else {\r\n return 40\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (Object.keys(props.filter).length > 0) {\r\n setFilter({ ...filterChart, ...props.filter })\r\n }\r\n if (mounted.current && Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...filterChart,\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.filter, props.dashboardConfig]);\r\n\r\n useEffect(() => {\r\n if (filterChart.tags && mounted.current) {\r\n filterRef.current = []\r\n\r\n filterChart.tags.forEach((item) => {\r\n filterRef.current = [...filterRef.current, item.label];\r\n })\r\n }\r\n }, [filterChart]);\r\n\r\n useEffect(() => {\r\n let timeTasks = {};\r\n let modalData = {}\r\n let keysLabelArr = []\r\n let count = 0\r\n const startDate = (dashFilterChart.startDate ? dashFilterChart : filterChart).startDate ? moment((dashFilterChart.startDate ? dashFilterChart : filterChart).startDate * 1000) : moment().startOf('year');\r\n const endDate = (dashFilterChart.startDate ? dashFilterChart : filterChart).endDate ? moment((dashFilterChart.startDate ? dashFilterChart : filterChart).endDate * 1000) : moment().endOf('year');\r\n const weekStructure = checkWeekStructure(startDate.format('MMMM'), endDate.format('MMMM'))\r\n\r\n const getWeeks = (date, label) => {\r\n count = count + 1\r\n let firstWeek = date.startOf(\"month\").week()\r\n let lastWeek = date.endOf(\"month\").week()\r\n for (let i = firstWeek; i <= lastWeek; i++) {\r\n modalData = {\r\n ...modalData,\r\n [label]: {\r\n ...modalData[label] || {},\r\n [i]: (modalData[label]?.[i] || 0),\r\n }\r\n }\r\n }\r\n }\r\n\r\n const updateTaskInfo = (dateCard, item, status) => {\r\n const label = item.label\r\n const cardDate = moment(dateCard.date).clone()\r\n const monthKey = dateCard.date.clone().format('MMMM');\r\n const startOfMonth = cardDate.clone().startOf('month');\r\n const endOfMonth = cardDate.clone().endOf('month');\r\n const weekStart = cardDate.clone().startOf(\"week\")\r\n const weekEnd = cardDate.clone().endOf(\"week\")\r\n const weekKey = dateCard.date.clone().week();\r\n if (!modalData.label && weekStructure)\r\n getWeeks(dateCard.date.clone(), label)\r\n timeTasks = {\r\n ...timeTasks,\r\n [label]: {\r\n ...timeTasks[label] || {},\r\n \"id\": label,\r\n \"color\": item?.color || generateColor(label),\r\n \"label\": label,\r\n \"value\": (timeTasks[label]?.[\"value\"] || 0) + 1,\r\n }\r\n };\r\n let cellRef = weekStructure ? weekKey : monthKey\r\n modalData = {\r\n ...modalData,\r\n [label]: {\r\n ...modalData[label] || {},\r\n \"value\": (modalData[label]?.[\"value\"] || 0) + 1,\r\n tag: item.value,\r\n \"label\": label,\r\n [status]: {\r\n ...modalData[label]?.[status],\r\n [cellRef]: (modalData[label]?.[status]?.[cellRef] || 0) + 1,\r\n },\r\n [cellRef]: (modalData[label]?.[cellRef] || 0) + 1,\r\n [\"Period__\" + cellRef]: weekStructure ? {\r\n start: weekStart.startOf(\"day\").unix(\"X\"),\r\n end: weekEnd.endOf(\"day\").unix(\"X\")\r\n } : {\r\n start: startOfMonth.startOf(\"day\").unix(\"X\"),\r\n end: endOfMonth.endOf(\"day\").unix(\"X\")\r\n }\r\n }\r\n }\r\n keysLabelArr = {\r\n ...keysLabelArr,\r\n [label]: {\r\n label: label,\r\n color: item?.color || generateColor(label)\r\n }\r\n }\r\n };\r\n\r\n if (props.planCards) {\r\n keysLabel.current = [];\r\n let arr = filterChart.status ? Object.keys(filterChart.status).filter(key => (filterChart.status[key])) : [\"completed\"]\r\n Object.keys(props.planCards).filter((fil) =>\r\n !db.cards[fil].deleted\r\n &&\r\n (arr).includes(db.cards[fil].status)\r\n )\r\n .forEach(planCard => {\r\n let result = filterChart?.users?.length > 0 ? false : true\r\n if (filterChart.users && Object.keys(db.cards[planCard]?._users).length > 0) {\r\n Object.values(db.cards[planCard]?._users).forEach((user) => {\r\n filterChart.users.forEach((filterUser) => {\r\n if (user._id === filterUser)\r\n result = true\r\n })\r\n })\r\n }\r\n if (result) {\r\n const dateCard = {\r\n date: db.cards[planCard].completed_at ? moment(db.cards[planCard].completed_at?.low * 1000) : moment(db.cards[planCard].created_at * 1000),\r\n tags: db.cards[planCard]._tags\r\n };\r\n\r\n if (dateCard.date.isBetween(startDate, endDate, null, '[]')) {\r\n // const monthKey = dateCard.date.format('MMMM');\r\n if (filterChart?.tags?.length > 0 || filterChart.tagsByText) {\r\n dateCard.tags\r\n .filter(item =>\r\n (\r\n filterChart.tags\r\n && filterChart.tags.length > 0\r\n && item.label\r\n && filterRef.current.includes(item.label)\r\n )\r\n ||\r\n (\r\n filterChart.tagsByText\r\n && item.label\r\n && item.label.toLowerCase().indexOf(filterChart.tagsByText.toLowerCase()) > -1\r\n )\r\n )\r\n .forEach(item => {\r\n updateTaskInfo(dateCard, item, db.cards[planCard].status);\r\n });\r\n keysLabel.current = Object.values(keysLabelArr)\r\n } else {\r\n timeTasks = {\r\n ...timeTasks,\r\n [db.cards[planCard].status]: {\r\n ...timeTasks[\"total\"] || {},\r\n \"value\": timeTasks && timeTasks[db.cards[planCard].status] && timeTasks[db.cards[planCard].status][\"value\"] ? timeTasks[db.cards[planCard].status][\"value\"] + 1 : 1,\r\n \"label\": db.cards[planCard].status,\r\n \"color\": db.status.filter(fil => fil.value === db.cards[planCard].status)[0].color,\r\n \"id\": translate(`$__${db.cards[planCard].status}`),\r\n // \"id\":trans\r\n }\r\n }\r\n modalData = {}\r\n\r\n const newLabel = {\r\n label: db.cards[planCard].status,\r\n color: db.status.filter(fil => fil.value === db.cards[planCard].status)[0].color\r\n };\r\n\r\n if (!keysLabel.current.some(item => item.label === newLabel.label)) {\r\n keysLabel.current = [...keysLabel.current, newLabel];\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n if (data !== timeTasks && mounted.current) {\r\n let newData = Object.values(timeTasks)\r\n if (filterChart?.colorsArr) {\r\n newData = newData.map((item) => {\r\n const foundColorObj = filterChart?.colorsArr.find((colorObj) => colorObj.label === item.label);\r\n if (foundColorObj) {\r\n return {\r\n ...item,\r\n color: foundColorObj.color\r\n };\r\n } else {\r\n return item;\r\n }\r\n });\r\n }\r\n setData(newData);\r\n setTable(modalData)\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.load, filterChart, dashFilterChart])\r\n\r\n\r\n return (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'visible' }}>\r\n <Header\r\n handleSetSelected={(value) => {\r\n setFilter({ ...filterChart, ...value })\r\n props.handleSetFilter({ ...filterChart, ...value, id: props.id })\r\n }}\r\n filterConfig={{ filterItems: ['date', 'users', 'tags', 'tagsByText', 'unit', 'status'] }}\r\n tittle={translate(\"$__\" + props.tittle)}\r\n icon={props.icon}\r\n styles={props.styles}\r\n datafilter={true}\r\n indicators={filterChart ? filterChart : null}\r\n handleModal={() => {\r\n props.handleDatagridTable()\r\n }}\r\n table={true}\r\n vertical={true}\r\n handleRemoveObject={() => props.handleRemoveObject(props.id)}\r\n edit={props.edit}\r\n handleSetoption={(value) => {\r\n JSON.stringify(value) !== JSON.stringify(filterChart) && setFilter({ ...value })\r\n props.handleSetFilter({ ...filterChart, ...value, id: props.id })\r\n }}\r\n />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{}} >\r\n </div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter', backgroundColor: '#f5f5f5' }}>\r\n {(!props.load && Array.isArray(data)) ?\r\n <ResponsivePie\r\n data={data}\r\n colors={{ datum: 'data.color' }}\r\n margin={{ top: 35, right: 40, bottom: 35, left: getLeftValue() }}\r\n innerRadius={0}\r\n padAngle={1.7}\r\n cornerRadius={3}\r\n layout={filterChart?.mode ? 'horizontal' : 'vertical'}\r\n activeOuterRadiusOffset={8}\r\n borderWidth={1}\r\n padding={data.length === 1 ? 0.35 : 0.1}\r\n tooltipFormat={x => {\r\n return x\r\n }}\r\n axisLeft={filterChart?.mode ? {\r\n format: (v) => getNames(v)\r\n } : {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n format: (v) => v % 1 === 0 ? v : ''\r\n }}\r\n axisBottom={filterChart?.mode ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n format: (v) => v % 1 === 0 ? v : ''\r\n } : {\r\n format: (v) => getNames(v)\r\n }}\r\n theme={{\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n legend: false,\r\n background: 'transparent',\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n fill: 'rgba(0, 0, 0, 0.50)',\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n }\r\n },\r\n }}\r\n />\r\n : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n {props.filter.table && <div style={{ maxHeight: '300px', overflow: 'scroll' }} >\r\n <Modal data={Object.values(table)} planCards={props.planCards} filterProps={filterChart} />\r\n </div>}\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]}\r\n customColors={filterChart?.colorsArr}\r\n />\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch);\r\n\r\nexport default connect(null, mapDispatchToProps)(TaskDoneBar);","import React, { useEffect, useState, useRef } from 'react'\r\n//COMPONENTS\r\nimport Legend from '../Legend';\r\nimport { ResponsiveBar } from '@nivo/bar'\r\nimport Header from 'components/Dashboards/Header'\r\nimport './Loader.css';\r\n\r\n//REDUX\r\nimport reduxStore from \"store/\"\r\nimport moment from \"moment-timezone\"\r\nimport { translate } from 'functions';\r\n\r\n\r\n//https://codesandbox.io/s/m4ro13jjn8?file=/src/index.js\r\n\r\n\r\nconst TaskDoneBarMonth = (props) => {\r\n\r\n const { db } = reduxStore.getState()\r\n const [filter, setFilter] = useState({\r\n index: 0,\r\n showQuantity: 12,\r\n number: 12,\r\n finalIndex: 12,\r\n dataStructure: 'month',\r\n })\r\n const [dashFilterChart, setDashFilterChart] = useState({})\r\n const [data, setData] = useState({\r\n 'total': {\r\n \"total\": 0,\r\n \"month\": moment().startOf('month').format('MMMM'),\r\n }\r\n })\r\n const keysRef = useRef(['total'])\r\n const keysColors = useRef([])\r\n const keysLabel = useRef([{ label: 'Concluidas', color: '#5A7F71' }])\r\n const filterRef = useRef([])\r\n\r\n\r\n let hashs = window.location.hash.split(\"/\")\r\n hashs[0] = hashs[0].replace('#', '')\r\n\r\n // number: filter?.users ? filter?.users?.length : 10,\r\n\r\n const generateColor = (name) => {\r\n let hash = 0;\r\n for (let i = 0; i < name.length; i++) {\r\n hash += name.charCodeAt(i);\r\n }\r\n const hexColor = \"#\" + ((hash % 0xFFFFFF) + 0x1000000).toString(16).slice(1, 7);\r\n return hexColor;\r\n }\r\n\r\n\r\n useEffect(() => {\r\n if (Object.keys(props.filter).length > 0) {\r\n setFilter({ ...filter, ...props.filter })\r\n }\r\n if (Object.keys(props?.dashboardConfig?.filter).length > 0) {\r\n setDashFilterChart({\r\n ...filter,\r\n ...props?.dashboardConfig?.filter,\r\n colorsArr: props.dashboardConfig?.colorsArr\r\n })\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.filter, props.dashboardConfig]);\r\n\r\n\r\n useEffect(() => {\r\n if (filter.tags) {\r\n filterRef.current = []\r\n if (filter.tags.length === 0) {\r\n keysRef.current = []\r\n keysColors.current = []\r\n keysLabel.current = []\r\n }\r\n keysRef.current = [...keysRef.current.filter(key => key !== 'total')];\r\n filter.tags.forEach((item) => {\r\n filterRef.current = [...filterRef.current, item.label];\r\n })\r\n }\r\n }, [filter]);\r\n\r\n useEffect(() => {\r\n let timeTasks = {};\r\n let keysColorsArr = []\r\n let keysRefArr = []\r\n let keysLabelArr = []\r\n\r\n const updateTaskInfo = (dateCard, item) => {\r\n const monthKey = dateCard.date.format('MMMM');\r\n const label = item.label\r\n timeTasks = {\r\n ...timeTasks,\r\n [monthKey]: {\r\n ...timeTasks[monthKey] || {},\r\n total: (timeTasks[monthKey]?.total || 0) + 1,\r\n month: dateCard.date.format('MMMM'),\r\n [label]: (timeTasks[monthKey]?.[label] || 0) + 1,\r\n }\r\n };\r\n\r\n if (!keysRef.current.includes(label)) {\r\n keysColorsArr = keysColorsArr.filter((color) => color !== \"#5A7F71\")\r\n keysColorsArr = [...keysColorsArr, item?.color || generateColor(label)]\r\n keysRefArr = [...keysRefArr, label];\r\n keysLabelArr = keysLabelArr.filter((item) => item.label !== \"Concluidas\")\r\n keysLabelArr = [...keysLabelArr,\r\n {\r\n label: label,\r\n color: item?.color || generateColor(label)\r\n }\r\n ]\r\n }\r\n };\r\n\r\n if (props.planCards) {\r\n for (let i = 0; i < 12; i++) {\r\n const month = moment().startOf('year').add(i, 'month').format('MMMM');\r\n timeTasks = {\r\n ...timeTasks,\r\n [month]: {}\r\n }\r\n }\r\n Object.keys(props.planCards).forEach(planCard => {\r\n let result = filter?.users?.length > 0 ? false : true\r\n if (filter.users && Object.keys(db.cards[planCard]?._users).length > 0) {\r\n Object.values(db.cards[planCard]?._users).forEach((user) => {\r\n filter.users.forEach((filterUser) => {\r\n if (user._id === filterUser)\r\n result = true\r\n })\r\n })\r\n }\r\n if (result) {\r\n const dateCard = {\r\n date: moment(db.cards[planCard].completed_at?.low * 1000),\r\n tags: db.cards[planCard]._tags\r\n };\r\n\r\n let dateFilterStart = dashFilterChart.startDate ? moment.unix(dashFilterChart.startDate) : (filter.startDate ? filter.startDate : moment().startOf('year'))\r\n let dateFilterEnd = dashFilterChart.endDate ? moment.unix(dashFilterChart.endDate) : (filter.endDate ? filter.endDate : moment().endOf('year'))\r\n if (dateCard.date.isBetween(dateFilterStart, dateFilterEnd)) {\r\n const monthKey = dateCard.date.format('MMMM');\r\n timeTasks = {\r\n ...timeTasks,\r\n [monthKey]: {\r\n ...timeTasks[monthKey] || {},\r\n \"total\": timeTasks && timeTasks[monthKey] && timeTasks[monthKey][\"total\"] ? timeTasks[monthKey][\"total\"] + 1 : 1,\r\n \"month\": translate(`$__${monthKey}`),\r\n }\r\n }\r\n if (filter?.tags?.length > 0 || filter.tagsByText) {\r\n dateCard.tags\r\n .filter(item =>\r\n (\r\n filter.tags\r\n && filter.tags.length > 0\r\n && item.label\r\n && filterRef.current.includes(item.label)\r\n )\r\n ||\r\n (\r\n filter.tagsByText\r\n && item.label\r\n && item.label.toLowerCase().indexOf(filter.tagsByText.toLowerCase()) > -1\r\n )\r\n )\r\n .forEach(item => {\r\n updateTaskInfo(dateCard, item);\r\n });\r\n keysRef.current = keysRefArr\r\n keysColors.current = keysColorsArr\r\n keysLabel.current = keysLabelArr\r\n\r\n } else {\r\n keysLabel.current = [{ label: 'completed', color: '#5A7F71' }]\r\n keysRef.current = [\"total\"];\r\n keysColors.current = [\"#5A7F71\"]\r\n if (filter.colorsArr) {\r\n keysLabel.current = filter.colorsArr.filter((item) => item.label === 'completed');\r\n keysColors.current = filter.colorsArr.map((item) => item.color);\r\n }\r\n }\r\n\r\n }\r\n }\r\n })\r\n let finalArr = Object.values(timeTasks).filter((item) => {\r\n return Object.keys(item).length !== 0;\r\n });\r\n setData(finalArr);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [props.planCards, props.load, filter, dashFilterChart]);\r\n\r\n return (\r\n <div className='box' style={{ width: '100%', height: '100%', alignSelf: 'center', borderRadius: '5px', backgroundColor: 'transparent', display: 'flex', flexFlow: 'column', overflow: 'visible' }}>\r\n <Header\r\n handleSetSelected={(value) => {\r\n setFilter({ ...filter, ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n tittle={translate(\"$__\" + props.tittle)}\r\n icon={props.icon}\r\n styles={props.styles}\r\n filterConfig={{ filterItems: ['users', 'tags', 'tagsByText'] }}\r\n datafilter={true}\r\n indicators={filter ? filter : null}\r\n handleRemoveObject={() => props.handleRemoveObject(props.id)}\r\n edit={props.edit}\r\n handleSetoption={(value) => {\r\n setFilter({ ...value })\r\n props.handleSetFilter({ ...filter, ...value, id: props.id })\r\n }}\r\n />\r\n <div style={{ borderBottom: '1px solid #D3D3D3', width: '100%' }}></div>\r\n <div style={{}} >\r\n </div>\r\n <div style={{ position: 'relative', flex: '1 1 auto', fontSize: '16px' }}>\r\n <div style={{ width: '100%', height: '100%', position: 'absolute', fontWeight: 'lighter', backgroundColor: '#f5f5f5' }}>\r\n {(!props.load) ?\r\n <div className='component' style={{ width: '100%', height: '100%' }}>\r\n <ResponsiveBar\r\n data={data}\r\n // layers={[\"grid\", \"axes\", \"bars\", Line, \"markers\", \"legends\"]}\r\n keys={keysRef.current} // data\r\n colors={keysColors.current}\r\n indexBy={\"month\"} //data\r\n margin={{ top: 40, right: 20, bottom: 30, left: 40 }}\r\n padding={0.3}\r\n valueScale={{ type: 'linear' }}\r\n indexScale={{ type: 'band', round: false }}\r\n enableLabel={false}\r\n yScale={{\r\n max: 100,\r\n }}\r\n minValue={0}\r\n theme={{\r\n fontSize: '14px',\r\n color: 'white',\r\n background: '#f5f5f5',\r\n axis: {\r\n \"ticks\": {\r\n \"text\": {\r\n fill: 'rgba(0, 0, 0, 0.50)',\r\n \"fontSize\": 14,\r\n //cor dos numeros\r\n },\r\n }\r\n },\r\n }}\r\n\r\n fill={[\r\n {\r\n match: {\r\n id: 'fries'\r\n },\r\n id: 'dots'\r\n },\r\n {\r\n match: {\r\n id: 'sandwich'\r\n },\r\n id: 'lines'\r\n }\r\n ]}\r\n borderColor={{\r\n from: 'color',\r\n modifiers: [\r\n [\r\n 'darker',\r\n 1.6\r\n ]\r\n ]\r\n }}\r\n axisTop={null}\r\n axisRight={null}\r\n axisBottom={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: 32,\r\n } : null}\r\n axisLeft={!props.preview ? {\r\n tickSize: 5,\r\n tickPadding: 5,\r\n tickRotation: 0,\r\n legendPosition: 'middle',\r\n legendOffset: -40\r\n } : null}\r\n role=\"application\"\r\n /> </div> : <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center' }}>\r\n <div style={{ alignSelf: 'center' }}> <div className=\"loader\"></div></div>\r\n </div>}\r\n </div>\r\n </div>\r\n <div style={{ height: '15%', maxHeight: '60px', display: 'flex', backgroundColor: 'white' }}>\r\n <Legend\r\n legend={[...keysLabel.current.map((a, i) => {\r\n return {\r\n key: i,\r\n color: a.color,\r\n label: a.label\r\n }\r\n })]} />\r\n </div>\r\n </div >\r\n )\r\n}\r\n\r\nexport default TaskDoneBarMonth\r\n","//\"use strict\";\r\n\r\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireDefault(require(\"react\"));\r\n\r\nvar _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null ,_react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: \"M.2,11.6H0V17H.2c0,.1,0,.1.1.1H1L18,.4H16.4L1.1,15.7V12.2L12.9.4H11.3L.2,11.6Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M.2,11.6H0V17H.2c0,.1,0,.1.1.1H1L18,.4H16.4L1.1,15.7V12.2L12.9.4H11.3L.2,11.6Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M0,1V7.1H0c.1,0,.1,0,.1.1H.4a.1.1,0,0,0,.1.1H1L7.1,1.4h0l1-1H.6A.6.6,0,0,0,0,1Z\"\r\n})), 'GuidelineC');\r\n\r\nexports.default = _default;","//\"use strict\";\r\n\r\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireDefault(require(\"react\"));\r\n\r\nvar _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null ,_react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: \"M17.8,6.4H18V1H17L0,17.6H1.6L16.9,2.3V5.8L5.1,17.6H6.7L17.8,6.4Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M17.8,6.4H18V1H17L0,17.6H1.6L16.9,2.3V5.8L5.1,17.6H6.7L17.8,6.4Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M18,17V10.9H17l-6.1,6.1h0l-1,1h7.5A.6.6,0,0,0,18,17Z\"\r\n})), 'GuidelineD');\r\n\r\nexports.default = _default;","import React from 'react';\r\nimport Icon from \"@material-ui/core/Icon\";\r\nimport HtmlTooltip from \"components/Tooltip/html\";\r\nimport { translate, customApp } from \"functions/\";\r\n\r\nexport default function IconComponent(props) {\r\n // Removendo usePropagation para não ser espalhado no elemento DOM\r\n const {\r\n title,\r\n icon,\r\n children,\r\n className = \"\",\r\n static: isStatic,\r\n size = \"22px\",\r\n color,\r\n disabled,\r\n onClick,\r\n style = {},\r\n usePropagation, // removido do ...rest\r\n ...rest\r\n } = props;\r\n\r\n let nRest = { ...rest }\r\n if (nRest.iconColor)\r\n delete nRest.iconColor\r\n\r\n if (nRest.badgeColor)\r\n delete nRest.badgeColor\r\n\r\n if (nRest.badgeVisible)\r\n delete nRest.badgeVisible\r\n\r\n const tooltipTitle = title ? translate(title, 1) : \"\";\r\n const computedColor = color || customApp(\"medium\");\r\n\r\n // Estilos comuns para o ícone\r\n const commonStyle = {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n height: size,\r\n width: size,\r\n fontSize: size,\r\n color: computedColor,\r\n opacity: disabled ? \"0.5\" : \"1\",\r\n cursor: onClick ? \"pointer\" : \"\",\r\n ...style,\r\n };\r\n\r\n // Manipulador unificado para onClick\r\n const handleClick = (e) => {\r\n if (onClick) {\r\n onClick();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n\r\n // Se o ícone (ou children) for uma string, renderiza o componente Icon do Material‑UI\r\n if (typeof icon === \"string\" || typeof children === \"string\") {\r\n const iconStyle = {\r\n position: isStatic ? \"static\" : \"\",\r\n ...commonStyle,\r\n };\r\n\r\n return (\r\n <HtmlTooltip title={tooltipTitle}>\r\n <Icon\r\n className={className}\r\n style={iconStyle}\r\n onClick={onClick ? handleClick : null}\r\n {...nRest}\r\n >\r\n {icon || children}\r\n </Icon>\r\n </HtmlTooltip>\r\n );\r\n }\r\n\r\n // Caso contrário, assume que \"icon\" é um componente e o renderiza\r\n return (\r\n <HtmlTooltip title={tooltipTitle}>\r\n {React.createElement(icon, {\r\n className,\r\n style: { margin: \"auto\", ...commonStyle },\r\n onClick: onClick ? handleClick : null,\r\n ...nRest,\r\n })}\r\n </HtmlTooltip>\r\n );\r\n}\r\n","//\"use strict\";\r\n\r\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireDefault(require(\"react\"));\r\n\r\nvar _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null ,_react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: \"M6.4.2H.6l17,17V16.4L2.3,1.1H5.8L17.6,12.9V11.3L6.4.2Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M6.4.2H.6l17,17V16.4L2.3,1.1H5.8L17.6,12.9V11.3L6.4.2Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M17,0H10.5l6.1,6.1h0l1,1V.6A.6.6,0,0,0,17,0Z\"\r\n})), 'GuidelineE');\r\n\r\nexports.default = _default;","//\"use strict\";\r\n\r\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireDefault(require(\"react\"));\r\n\r\nvar _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null ,_react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: \"M11.6,17.8h5.8c.1,0,.1,0,.1-.1h-.1L.4,0V1.6L15.7,16.9H12.2L.4,5.1V6.7L11.6,17.8Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M11.6,17.8h5.8c.1,0,.1,0,.1-.1h-.1L.4,0V1.6L15.7,16.9H12.2L.4,5.1V6.7L11.6,17.8Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M1,18H7.3c0-.1,0-.1.1-.1h.1a.1.1,0,0,0,.1-.1h0a.1.1,0,0,0,.1-.1H7.6a.1.1,0,0,1-.1-.1h0L1.4,10.9h0l-1-1v7.5A.6.6,0,0,0,1,18Z\"\r\n})), 'GuidelineR');\r\n\r\nexports.default = _default;","module.exports = __webpack_public_path__ + \"static/media/machen.b9c661d3.svg\";","//\"use strict\";\r\n\r\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireDefault(require(\"react\"));\r\n\r\nvar _createSvgIcon = _interopRequireDefault(require(\"@material-ui/icons/utils/createSvgIcon\"));\r\n\r\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\r\n fill: \"none\",\r\n d: \"M20.45,5.43,19,4l-1.79,1.8,1.41,1.41ZM13,1.52H11v3h2Zm7,12h3v-2H20ZM9,17.67v4.81h6V17.67a6,6,0,1,0-6,0ZM4,13.48v-2H1v2ZM6.76,5.82,5,4,3.56,5.43l1.8,1.79Z\"\r\n}),_react.default.createElement(\"path\", {\r\n d: \"M20.45,5.43,19,4l-1.79,1.8,1.41,1.41ZM13,1.52H11v3h2Zm7,12h3v-2H20ZM9,17.67v4.81h6V17.67a6,6,0,1,0-6,0ZM4,13.48v-2H1v2ZM6.76,5.82,5,4,3.56,5.43l1.8,1.79Z\"\r\n})), 'Ideas');\r\n\r\nexports.default = _default;","import React, { useRef, useEffect, useState } from 'react';\r\n\r\n\r\nfunction ViewportChecker({ children, component }) {\r\n const [inViewport, setInViewport] = useState(false);\r\n const elementRef = useRef(null);\r\n\r\n const isSupported = () => {\r\n return 'IntersectionObserver' in window;\r\n }\r\n\r\n useEffect(() => {\r\n if (component === 'TimeLine')\r\n return <></>\r\n let newRef = elementRef.current\r\n if (!isSupported()) {\r\n setInViewport(true);\r\n return;\r\n }\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n setInViewport(entry.isIntersecting);\r\n },\r\n { threshold: 0.2 } //render at 20% of apear\r\n );\r\n\r\n if (elementRef.current) {\r\n observer.observe(elementRef.current);\r\n }\r\n\r\n return () => {\r\n if (newRef) {\r\n observer.unobserve(newRef);\r\n }\r\n };\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n if (component === 'TimeLine')\r\n return <div style={{ width: '100%', height: '100%' }} >{children(true)}</div>\r\n\r\n return <div style={{ width: '100%', height: '100%' }} ref={elementRef}>{children(inViewport)}</div>;\r\n}\r\n\r\nexport default ViewportChecker;","//CORE\r\nimport React from \"react\";\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//@MATERIAL\r\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\r\n\r\nimport api from \"api/\";\r\n//FUNCTIONS\r\nfunction Component(props) {\r\n const changeGroups = async (d, v) => {\r\n let newArray = v\r\n let data = reduxStore.getState().db[props.dbNode]\r\n if (props.ws) {\r\n const validation = await newArray.map(async (r, i) => {\r\n if (!r.value && props.dbNode && data.filter(a => (r && r.label && a.label === r.label) || (r && r === a.label)).length === 0) {\r\n let response = await api.post(props.api ? props.api : `node/add/${props.dbNode}`,\r\n { name: r.trim(), secondaryParent: props.secondaryParent ? props.secondaryParent : null })\r\n if (response) {\r\n // console.log(response)\r\n let id = response && response.data && response.data.id ? response.data.id : response.data.value\r\n if (data.filter(a => a.value === id).length === 0) {\r\n data.push({ value: id, label: r })\r\n props.reduxFunction(\"ASYNC\", \"SET_DB\", {\r\n ...reduxStore.getState().db,\r\n [props.dbNode]: data\r\n });\r\n }\r\n if (newArray.filter(a => a.value === id).length === 0) {\r\n newArray.splice(i, 1)\r\n newArray.push({ value: id, label: r })\r\n }\r\n }\r\n } else if (data.filter(a => (r && r.label && a.label === r.label) || (r && r === a.label)).length > 0) {\r\n let valueSelect = data.filter(a => (r && r.label && a.label === r.label) || (r && r === a.label))[0]\r\n if (valueSelect && newArray.filter(a => a.value === valueSelect.value).length === 0) {\r\n newArray.splice(i, 1)\r\n newArray.push({ value: valueSelect.value, label: valueSelect.label })\r\n }\r\n }\r\n var returnArray = [];\r\n newArray.forEach(a => {\r\n if (a && a.value)\r\n returnArray.push(a)\r\n })\r\n newArray = Array.from(returnArray)\r\n return newArray\r\n })\r\n Promise.all(validation).then(() => {\r\n if (props.onChange)\r\n props.onChange(d, newArray)\r\n })\r\n } else {\r\n if (props.onChange)\r\n props.onChange(d, newArray)\r\n }\r\n }\r\n let autoCompleteProps = { ...props }\r\n if (String(props.dbNode)) delete autoCompleteProps.dbNode\r\n if (String(props.onChange)) delete autoCompleteProps.onChange\r\n if (String(props.store)) delete autoCompleteProps.store\r\n if (String(props.ownProps)) delete autoCompleteProps.ownProps\r\n if (String(props.reduxFunction)) delete autoCompleteProps.reduxFunction\r\n if (String(props.ws)) delete autoCompleteProps.ws\r\n if (String(props.add)) delete autoCompleteProps.add\r\n if (props.inNode || String(props.inNode) === 'undefined' || String(props.inNode) === 'null') delete autoCompleteProps.inNode\r\n if (props.InputProps || String(props.InputProps) === 'undefined' || String(props.InputProps) === 'null') delete autoCompleteProps.InputProps\r\n if (props.dark || String(props.dark) === 'undefined' || String(props.dark) === 'null') delete autoCompleteProps.dark\r\n if (props.endAdornment || String(props.endAdornment) === 'undefined' || String(props.endAdornment) === 'null') delete autoCompleteProps.endAdornment\r\n if (props.startAdornment || String(props.startAdornment) === 'undefined' || String(props.startAdornment) === 'null') delete autoCompleteProps.startAdornment\r\n if (props.secondaryParent || String(props.secondaryParent) === 'undefined' || String(props.secondaryParent) === 'null') delete autoCompleteProps.secondaryParent\r\n\r\n return (\r\n <Autocomplete\r\n {...autoCompleteProps}\r\n onChange={\r\n (d, v) => {\r\n changeGroups(d, v)\r\n }\r\n }\r\n />\r\n )\r\n}\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(reduxActions, dispatch)\r\n\r\nexport default connect(null, mapDispatchToProps)(Component)"],"sourceRoot":""}