{"version":3,"sources":["utils/sentry.js","components/common/Nav/navList.js","images/logo.svg","images/risk-management.svg","components/common/Nav/Nav.js","icons/Analytics.js","icons/Business.js","icons/BusinessRound.js","icons/Cogwheel.js","icons/Compare.js","icons/Dashboard.js","icons/Interface.js","icons/Medal.js","icons/Paper.js","icons/Tags.js","icons/People.js","icons/Social.js","icons/Squares.js","icons/Switch.js","icons/Technology.js","icons/Time.js","icons/User.js","components/common/NavMessage/NavMessage.js","utils/groupsAccount.js","components/common/GroupsAccount/dataProvider/data-provider.js","components/common/GroupsAccount/GroupsAccount.js","components/common/Header/Header.js","components/common/ArrowScrollUp/ArrowScrollUp.js","Routes/Layout.js","registerServiceWorker.js","index.js","redux/actions/accounts.js","utils/filters.js","redux/actions/dates.js","components/common/Header/Header.scss","components/common/Nav/Nav.scss","components/common/Dropdown/Dropdown.js","modules/Tables/components/HeaderCell/HeaderCell.module.scss","utils/accounts.js","modules/Tables/components/Row/Row.module.scss","components/Dropdown/Dropdown.module.scss","components/core/Homepage/Pies/Pie.scss","components/core/Homepage/Filters/Column/Column.scss","components/core/AdminUser/EditUser/Password/Password.scss","utils/localStorage.js","redux/reducers/user.js","redux/reducers/dates.js","redux/reducers/workarea.js","redux/reducers/accounts.js","redux/constants/settings.js","redux/reducers/settings.js","redux/reducers/dictionary.js","redux/reducers/burgerMenu.js","redux/reducers/index.js","redux/configureStore.prod.js","components/common/OpenModal/OpenModal.js","components/DoughnutChart/Legend/Legend.module.scss","config/tables.js","config/dashboard.js","redux/constants/dictionary.js","utils/request.js","components/core/Dashboard/Dashboard.module.scss","utils/user.js","components/common/Note/dataProvider/data-provider.js","components/common/Note/Note.js","components/common/ErrorBoundary/dataProvider/data-provider.js","components/common/ErrorBoundary/ErrorBoundary.js","components/common/Request/Request.js","components/common/OpenRow/OpenRow.js","components/common/EditTags/dataProvider/data-provider.js","components/common/EditTags/EditTags.js","components/common/AddNewTradingPlan/AddNewTradingPlan.tsx","utils/separator.js","components/common/Symbols/Symbols.js","utils/helpersCandleStick.js","utils/trades.js","components/common/InfoRow/InfoRow.js","components/common/Trades/dataProvider/data-provider.js","components/common/Trades/OHLC/Dropdown/Dropdown.js","components/common/CandleStick/CandleStick.js","components/common/HoverTooltip/HoverTooltip.js","components/common/Trades/OHLC/Graph.js","components/common/Trades/OHLC/dataProvider/data-provider.js","components/common/Trades/OHLC/OHLC.js","components/common/Trades/Trade/dataProvider/data-provider.js","components/common/Trades/Trade/Tag/Tag.js","components/common/Trades/Trade/Dropdown/Dropdown.js","components/common/Trades/Trade/LabelTags/LabelTags.js","components/common/Trades/Trade/RemoveTag.js","components/common/Trades/InfoColumns/InfoColumns.js","components/common/Trades/Trade/EnteringTime/EnteringTime.js","components/common/Trades/Trade/Trade.js","components/common/Trades/Additional/dataProvider/data-provider.js","components/Slider/Slider.tsx","components/Spinner/Spinner.tsx","components/DragAndDrop/DragAndDrop.tsx","images/upload.svg","components/common/Trades/Additional/Photos/Photos.tsx","components/common/Trades/Additional/Additional.js","components/common/Trades/Trades.js","utils/pie.js","images/full-screen.svg","components/core/Dashboard/Dashboard.tsx","components/Field/types.ts","components/Popover/Portal.ts","components/Popover/Popover.tsx","components/Field/Field.tsx","modules/Tables/components/Cell/Cell.tsx","components/Search/assets/search.svg","components/Search/Search.tsx","modules/Tables/types.ts","modules/Tables/components/PlusButton/PlusButton.tsx","modules/Tables/components/Row/Row.tsx","modules/Tables/components/Body/Body.tsx","modules/Tables/components/Title/Title.tsx","modules/Tables/utils/tables.ts","modules/Tables/assets/hide.svg","modules/Tables/assets/sort.svg","modules/Tables/components/HeaderCell/HeaderCell.tsx","modules/Tables/components/Header/Header.tsx","components/Dropdown/Dropdown.tsx","modules/Tables/components/Actions/Actions.tsx","modules/Tables/components/HideColumns/HideColumns.tsx","modules/Tables/components/ShowColumns/ShowColumns.tsx","modules/Tables/assets/pin.svg","modules/Tables/components/Table/Table.tsx","modules/Tables/containers/TableContainer/TableContainer.tsx","modules/Tables/components/Tables/Tables.tsx","components/core/TestReport/TestReport.tsx","components/DoughnutChart/Legend/Legend.jsx","components/DoughnutChart/ActiveShape/ActiveShape.tsx","components/DoughnutChart/Label/label.tsx","components/DoughnutChart/DoughnutChart.tsx","components/common/Date/MonthElement/MonthElement.js","components/EditRiskManagement/EditRiskManagement.tsx","components/core/Signin/Signin.js","components/ErrorBoundary/ErrorBoundary.tsx","components/Request/Request.tsx","components/common/Date/presets.js","components/common/Date/DatePresets.js","components/common/Date/Date.js","components/common/Accounts/Accounts.js","components/common/Filters/dataProvider/data-provider.js","components/common/Filters/Filters.js","components/core/Reports/dataProvider/data-provider.js","components/core/Reports/Reports.js","components/core/Homepage/Pies/typies.js","components/core/Homepage/Pies/Pie.js","components/core/Homepage/Pies/Pies.js","components/core/Homepage/Tiles/Best.js","components/core/Homepage/Tiles/Tile/Tile.js","components/core/Homepage/Tiles/Summary.js","components/core/Homepage/Tiles/Switcher/Switcher.js","components/core/Homepage/Tiles/Tiles.js","components/core/Homepage/Graphs/defaultDisplayTooltip.js","components/core/Homepage/Graphs/OHLC.js","components/core/Homepage/Graphs/Graphs.js","utils/homepage.js","components/core/Homepage/Filters/Column/Column.js","components/core/Homepage/Filters/Columns.js","components/core/Homepage/Filters/dataProvider/data-provider.js","components/core/Homepage/Filters/Filters.js","components/core/Homepage/TradingDays/TradingDays.js","components/core/Homepage/WeeklyTiles/Tiles.js","components/core/Homepage/WeeklyTiles/WeeklyTiles.js","components/core/Homepage/dataProvider/data-provider.js","components/core/Homepage/HomePage.js","utils/admin.js","utils/tables.js","redux/actions/workarea.js","components/common/AdminHeader/AdminHeader.js","components/core/AdminUser/Role/Role.js","components/core/AdminUser/CreateUser/dataProvider/data-provider.js","components/core/AdminUser/CreateUser/CreateUser.js","icons/done.svg","icons/collapse-arrow.svg","components/core/AdminUser/EditUser/dataProvider/data-provider.js","components/core/AdminUser/EditUser/Password/Password.js","components/core/AdminUser/EditUser/EditUser.js","components/core/AdminUser/AdminUser.js","components/core/AdminGroup/ChangeGroup/dataProvider/data-provider.js","components/core/AdminGroup/ChangeGroup/ChangeGroup.js","components/core/AdminGroup/AdminGroup.js","components/core/AdminTags/dataProvider/data-provider.js","components/core/AdminTags/AdminTags.js","utils/summary.js","components/common/Summary/dataProvider/data-provider.js","components/common/Summary/Summary.js","components/common/SummaryByMonth/dataProvider/data-provider.js","components/common/SummaryByMonth/SummaryByMonth.js","Routes/routes.js","utils/sortable.js","images/icon-sort.js","components/common/Sortable/Filters.js","components/common/Sortable/SortableContainer.js","components/common/Sortable/Sortable.js","redux/actions/user.js","redux/actions/dictionary.js","components/common/ServicePlaceholder/ServiceErrorPlaceholder.js","components/common/ServicePlaceholder/ServiceNotFoundPlaceholder.js","components/common/ServicePlaceholder/ServiceForbiddenPlaceholder.js","components/common/ServicePlaceholder/ServiceNoContentPlaceholder.js","components/common/ServicePlaceholder/ServiceUnavailablePlaceholder.js","components/Field/Field.module.scss","components/Search/Search.module.scss","modules/Tables/components/Body/Body.module.scss","modules/Tables/components/Header/Header.module.scss","modules/Tables/components/HideColumns/HideColumns.module.scss","modules/Tables/components/ShowColumns/ShowColumns.module.scss","components/common/Loading/Loading.js","redux/constants/accounts.js","components/Popover/Popover.module.scss","components/common/Alert/Alert.js","components/common/Input/Input.js","components/Spinner/Spinner.module.scss","modules/Tables/components/Cell/Cell.module.scss","modules/Tables/components/PlusButton/PlusButton.module.scss","components/DoughnutChart/DoughnutChart.module.scss","redux/constants/user.js","redux/constants/dates.js","utils/dates.js","utils/validate.js","components/common/Loading/Loading.module.scss","images/error.png","utils/axios.ts","images/not-found.png","images/forbidden.png","images/no-content.png","images/unavailable.gif","components/common/AddNewTradingPlan/AddNewTradingPlan.module.scss","components/Slider/Slider.module.scss","components/common/Trades/Additional/Photos/Photos.module.scss","components/common/Trades/Additional/Additional.module.scss","modules/Tables/components/Title/Title.module.scss","modules/Tables/components/Actions/Actions.module.scss","components/DoughnutChart/ActiveShape/ActiveShape.module.scss","redux/configureStore.js","config/config.js","redux/constants/workarea.js","modules/Tables/components/Table/Table.module.scss"],"names":["process","REACT_APP_VERSION","REACT_APP_BRANCH","NODE_ENV","REACT_APP_SENTRY","Sentry","debug","dsn","release","environment","upperTitle","url","icon","main","title","filter","role","Roles","USER","ADMIN","children","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","createElement","stroke","strokeWidth","fill","fillRule","cx","cy","r","transform","x","y","width","height","rx","d","id","_ref","svgRef","props","viewBox","ref","ForwardRef","forwardRef","enableBackground","mappedIcons","analytics","version","business","xmlns","xmlnsXlink","businessRound","cogwheel","compare","dashboard","interface","medal","paper","tags","people","social","squares","switch","technology","time","user","riskManagement","IconRiskManagement","tooltip","isOpen","Tooltip","placement","className","hide","renderItemNav","isActive","Icon","OverlayTrigger","delayShow","delayHide","overlay","Link","to","renderParentItemsNav","item","path","handleClickDropdown","onClick","map","child","renderChildrenItemNav","connect","accounts","routing","location","pathname","reduxBurgerMenu","onStateChange","menuClassName","open","currentTarget","parentElement","classList","toggle","burgerButtonClassName","navList","index","active","right","customBurgerIcon","getAccounts","users","account","Number","name","Array","isArray","getGroups","groups","memberOf","includes","values","getAvailableAccounts","selectedAccounts","isEquals","acc","foundAcc","find","changeGroup","data","a","Promise","success","error","request","removeGroup","initState","alert","isNew","validate","isLoading","accountsSelected","group","GroupsAccount","state","handleChangeInput","value","dataset","setState","Validate","handleSelectGroup","newAccounts","handleChangeAccounts","handleChangeGroup","dataProvider","Alert","bsStyle","message","String","handleRemoveGroup","onHide","Fragment","ModalBody","Input","dataKey","colBody","component","Dropdown","items","onChange","placeholder","handleOnChange","Sortable","titleSelect","selectedItems","titleSelected","Loading","isShow","ModalFooter","disabled","Component","allAccounts","dispatch","actions","Header","isOpenGroups","handleSelectUserMenu","logOut","openNavMessage","toggleMenu","navMessage","handleHideGroups","isOpenNavigation","curPage","DropdownButton","noCaret","pullRight","onSelect","MenuItem","eventKey","type","join","token","burgerMenu","primary","ArrowScrollUp","window","pageYOffset","handleScroll","addEventListener","removeEventListener","show","scroll","scrollToTop","ScrollToTop","scrollTo","PropsRoute","exact","Route","rest","React","Layout","createRef","classNameMain","current","isHideHeader","route","Helmet","Switch","routes","moment","format","lastPath","withRouter","Boolean","hostname","match","ReactGA","initialize","set","page","search","pageview","initialState","REDUX_INITIAL_STATE","console","log","browserHistory","createBrowserHistory","store","configureStore","Index","history","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","saveAccounts","isUpdatePath","SAVE_ACCOUNTS","payload","changeAccounts","selectedAcc","getState","selected","allOptions","options","selectedGroups","groupAccounts","reduce","p","n","every","typeaheadOnChange","replace","CHANGE_STATE_ACCOUNT","setAccounts","compareWith","managerGroup","SET_ACCOUNTS","REMOVE_GROUP","CHANGE_GROUP","changeCompareWith","CHANGE_COMPARE_WITH","saveDate","SAVE_DATE","removeErrorDate","REMOVE_ERROR_DATE","focusDate","focusedInput","updatedTime","dates","diffDays","startOf","diff","unix","FOCUS_DATE","LOADING_DATE","msg","ERROR_DATE","system","setConstraintsDate","changeDate","endDate","startDate","CHANGE_DATE","removeDate","REMOVE_DATE","addNewDate","ADD_NEW_DATE","holidays","bf_holidays","minDate","min_date_fills","maxDate","max_date_fills","maxDatePosition","max_date_positions","SET_CONSTRAINTS_DATE","utc","subtract","maxDateHiLow","module","exports","isReset","isDisabled","divider","defaultProps","changeNameAccounts","nameAccounts","multiple","otherGroups","all","sortedData","sort","b","unshift","getAccountsFromPath","result","startsWith","params","URLSearchParams","get","split","getAccountsPath","setAccountsToPath","href","replaceState","substring","localStorageMock","getItem","setItem","toString","clear","removeItem","localStorage","errMessageUser","TOKEN","ROLE","axios","interceptors","response","use","status","LOG_OUT","reject","defaults","headers","common","Bearer","Authorization","constraintsDate","JSON","parse","CONSTRAINTS_DATE","holiday","datesFromPath","getDatesFromPath","getDatesFromLocalStorage","SELECTED_DATE","day","getPreviousWorkday","saved","dayBlocked","getDayBlocked","dayHighlighted","getDayHighlighted","roles","ACCOUNT","COMPARE_WITH","GROUPS","OPTIONS","ACCOUNTS","push","MEMBER_OF","USER_ACCOUNTS","MANAGER_GROUP","GROUP_BUTTONS","tables","DICTIONARY","combineReducers","SET_USER","isLoadingSignIn","LOADING_SIGN_IN","ERROR_USER","REMOVE_ERROR_USER","undefined","isLoadingLogOut","LOADING_LOG_OUT","ERROR_LOG_OUT","errMessageLogOut","setDatesToPath","unixTimes","stringify","CLEAR_DATE","splice","workarea","SET_WORKAREA","LOADING_WORKAREA","ERROR_WORKAREA","SET_DATA_USERS","rows","others","SET_DATA_GROUPS","newOptions","opt","newGroups","LOADING_ACCOUNTS","settings","LOCATION_CHANGE","fontSize","order","hideColumns","dictionary","SET_DICTIONARY","routerReducer","createStore","rootReducer","applyMiddleware","apiMiddleware","thunk","createSentryMiddleware","routerMiddleware","OpenModal","dialogClassName","Modal","bsSize","ModalHeader","closeButton","ModalTitle","checked","years","year","contentType","method","processData","beforeSend","complete","onprogress","body","xhr","XMLHttpRequest","XDomainRequest","boundary","Math","random","slice","boundaryMiddle","boundaryLast","setRequestHeader","errorCallback","send","onload","config","statusServer","responseText","e","onerror","MODERATOR","RISK_PARTNER","setNote","isOk","Note","handleChangeNote","handleClickApply","symbol","onChangeNote","memo","handleCloseModal","classNameButton","classNameApply","Title","Body","Footer","Button","variant","setError","ErrorBoundary","hasError","unavailableComponent","stack","classNameError","removeError","Request","isNeedRequest","requestToServer","action","handleResponse","nextProps","isEqual","repeat","classNameRoot","OpenRow","row","onExpand","setGlobalTags","getGlobalTags","idUser","id_users","columns","TagsTypes","EditTags","globalTags","isSaveTags","isDisabledSaveButton","selectedTags","onChangeTags","onClickSaveTags","onChangeRow","symb","renderChildren","tag","AddNewTradingPlan","useAxios","FormData","manual","loading","useState","setIsOpen","symbols","useCallback","typeObject","link","k","separatorArray","arr","attr","dom","buf","getDate","isChangeTimeZone","separator","nd","translateToUTCTime","month","getMonth","getDay","weekStart","Date","setDate","weekStartDay","weekStartMonth","previousWeek","currentWeek","getFullYear","getTime","t","floor","1","2","3","4","5","6","7","8","9","10","11","12","getTimezoneOffset","timeZone","reductionForNumber","maxValueWithoutChange","sign","thousandSeparator","meaningFullDigits","parseInt","mantissa","el","suffixNum","shortValue","parseFloat","pow","toPrecision","toFixed","parseRangeDate","startDay","endDay","typeSeparator","cell","isDom","money","parent","compareList","date","str","isNegative","abs","parts","len","output","charAt","titleToken","onRemove","titleChild","renderWithTooltip","Symbols","onKeyDown","isAllSymbols","clearButton","labelKey","showMenu","renderToken","renderMenuItemChildren","dateFormat","timeFormat3D","displayTexts","h","l","v","o","c","s","na","tickFormat","number","candlesAppearance","wickStroke","close","candleStrokeWidth","widthRatio","opacity","parseDate","yExtends","concat","stops","sell_price","buy_price","min","low","max","high","isFinite","xScaleProvider","discontinuousTimeScaleProvider","inputDateAccessor","getMaxShowItems","getShowCounterItems","maxItems","xExtentsFunc","xAccessor","last","formatMillisecond","formatSecond","formatMinute","formatHour","formatWeek","formatMonth","formatYear","multiFormat","d3","getAttrForChart","dataChart","xExtentsFunction","xScale","displayXAccessor","margin","top","left","bottom","xExtents","coeffShowItems","padding","canvas","zoomEvent","volumeHeight","xGrid","ticks","axisAt","orient","tickStrokeOpacity","innerTickSize","yGrid","paramsKeys","table","additional","endOfMonth","getDateByParams","startOfMonth","utcOffset","getParams","toLowerCase","intervals","tooltipContent","duration","currentItem","details","stock","label","durationAttr","change","line","header","execdate","side","qty","price","pos","pnl","InfoRow","cells","styleCell","style","dangerouslySetInnerHTML","__html","getTrades","reponse","allAccount","CandleStickContext","createContext","CandleStick","renderSVG","bind","drawOnCanvas","ctx","moreProps","yScale","chartConfig","plotData","candleData","getCandleData","context","nest","wick","entries","forEach","outer","strokeStyle","fillStyle","each","fillRect","y1","y2","y3","y4","strokeKey","strokeValues","lineWidth","inner","head","hexToRGBA","strokeRect","wickClassName","candleClassName","idx","trs","triangles","x1","x2","x3","points","getTriangle","getWicksSVG","fillOpacity","getCandlesSVG","clip","svgDraw","canvasDraw","canvasToDraw","getAxisCanvas","drawOn","wickStrokeProp","functor","classNames","fillProp","strokeProp","yAccessor","trueOffset","widthFunctor","offset","round","candles","isDefined","ohlc","isLong","compareData","pickBy","l_max","s_max","l_change","s_change","identity","yMax","yMin","red","some","green","blue","yellow","stop","direction","contextType","plotDataLengthBarWidth","X","HoverTooltip","pointer","helper","isNotDefined","ratio","bgFill","bgOpacity","backgroundShapeCanvas","tooltipCanvas","originX","originY","save","setTransform","scale","translate","content","centerX","pointWidth","bgSize","beginPath","rect","restore","backgroundShapeSVG","tooltipSVG","bgheight","bgwidth","bgShape","createLabel","tspans","maxLength","textAnchor","calculateTooltipSize","fontFamily","fontFill","getContext","font","textAlign","first","second","tableLength","measureText","PADDING","ceil","yHeight","yLength","getWidth","normalizeX","leftSide","normalizeY","origin","xValue","contextTypes","PropTypes","object","isRequired","bTable","hTable","startY","textY","widthCol","j","fillText","chartId","mouseXY","findIndex","yValue","chartIndex","fillBackground","hours","getHours","minutes","getMinutes","isTimeNotAllowed","startIndex","lastIndex","divide","MAX_SHOW_ITEMS","startMiddle","Graph","suffix","onReset","onRepeat","Provider","seriesName","yExtents","_","volume","at","displayFormat","timeFormat","showTicks","outerTickSize","xDisplayFormat","ohlcFormat","isIntervalMSFT","getSwitcherForMSFT","getDataMSFT","switcherDuration","selectAccounts","OHLC","getParamsOHLC","compareAcc","id_user_group","val","isUndefined","onSelectAccounts","onSelectInterval","errors","repeatRequest","selectedSwitcherDuration","getWidthChart","debounce","offsetWidth","screenHeight","screen","innerHeight","isChange","onSelectSwitcher","nextState","isOpenMenu","setTrade","removeTag","Tag","input","onShowModal","focus","handleClose","onClose","handleChange","handleClick","preventDefault","isAdd","idTrade","onChangedTag","id_tags","onShow","onSubmit","keyAdd","onClickEditTag","onClickRemoveTag","global","personal","LabelTags","labels","onRemoveTag","isEditLabel","data-name","onRemovedTag","ColumnInfo","negative","InfoColumns","gross","fees","net","EnteringTime","useMemo","Trade","nameTag","editTag","titleModal","isOpenRemoveTag","selectedTag","labelTags","handleSelectDropdowns","text","contains","handleClickApplyTag","sendTagsToServer","messages","indexTrade","handleChangeTag","changePersonalTag","newLabelTags","omit","handleRemoveTag","handleOnCLoseModal","handleRemoveLabelTag","indate","outdate","strategy","in_price","out_price","isEditTrade","classNameHandler","editable","RemoveTag","removePhoto","defaultOptions","dots","infinite","slidesToShow","slidesToScroll","Slider","Styles","slider","displayName","SpinnerKinds","DragAndDrop","dragFiles","dragCounter","dropRef","handleDrag","stopPropagation","handleDragIn","dataTransfer","handleDragOut","handleDrop","files","clearData","div","parentProps","border","backgroundColor","position","zIndex","color","Spinner","kind","ROLLER","roller","spinner","xmlSpace","Photos","photos","onRemovePhoto","onChangeImage","selectedId","setSelectedId","closeModal","clickPhoto","closest","image","remove","src","photo","isUploading","onPasteImages","isDragAndDrop","clipboardData","file","getAsFile","useEffect","hasPhotos","pictures","images","data-id","alt","data-remove","button","uploadIcon","description","accept","modal","tabIndex","aria-label","lazyLoad","initialSlide","data-slider","Additional","valueNote","isError","chagePhotos","size","MAX_SIZE_IMAGE","URL","createObjectURL","formData","append","isAxiosError","confirm","newPhotos","note","Trades","notes","currentDay","isEditTrades","setTags","trade","tradeTags","setTradeTags","infoRow","classNameInfoRow","positive","idsPhotos","rowTags","uniq","flatten","Wrapper","getDoughnutData","condition","realValue","pieColors","currentYear","previousYear","doughnutStrategyData","TypeFields","Dashboard","handle","useFullScreenHandle","fullScreenType","setFullScreenType","openFullScreen","enter","doughnutsTotalNet","doughnutTotalNet","netStrategiesCharts","accumulatedTotalNet","tickFormatterDay","dayOfYear","getDoughnutTotalNet","isFull","DoughnutChart","hideValue","legend","align","layout","verticalAlign","pie","innerRadius","outerRadius","activeShape","activeIndex","getNetPerfomanceChart","styles","netPerfomance","strokeDasharray","minTickGap","unit","labelFormatter","dot","volumePerfomance","titleVolume","entry","getChart","section","doughnuts","netCharts","slide","charts","arrows","autoplay","autoplaySpeed","doughnutCharts","fullScreenTitle","allChartsIcon","full","perfomance","perfomanceVolumeSection","totalStrategy","fullScreen","exit","WidthFields","Money","Email","List","Time","TSRange","DateTime","Month","DRange","Integer","Solid","WeekTotals","Account","Symbol","Default","useRef","dynamic","appendChild","removeChild","createPortal","setWidth","onMouseEnter","onMouseLeave","Manager","Reference","wrapper","Popper","Field","minusMoney","valueTooltip","string","datetime","months","otherProps","minWidth","field","FontSize","onChangeSearch","onClickCross","cross","RowTypes","FontSizeCoefficient","Bigger","Normal","Smaller","PlusButton","rowIndex","expandComponent","styleExpandedRow","defaultHidden","isVisible","setIsVisible","onToggleRow","rowKeys","column","hidden","isToggleRow","ToggleRow","fontSizeCoefficient","data-index-row","indexRow","cursorPointer","plusButton","addPadding","tdPlusButton","colSpan","containerPlusButton","data-expand-component","expandComponentContainer","tdExpandComponent","expandedRow","isMoreButton","isFixedHeader","rowClasses","onClickRow","onClickMoreRows","setExpandComponent","rowElement","isExpandRow","noContent","fixedHeader","isOpenRow","getChildName","camelCase","titleWidth","getRow","rowData","isTotal","isSort","indexColumn","isPlainObject","other","getRows","total","tableRows","getColumns","alwaysHidden","SortOrderMap","getTables","Data","Total","postForm","PostForm","Settings","buttons","filterTable","col","newRows","valA","valB","from","ORDER_ASCENDING","localeCompare","numeric","sensitivity","sortFunc","toUpperCase","hideData","focusable","isLeft","rowSpan","sortOrder","isSortIcon","onSort","sortIcon","rotate","ORDER_DESCENDING","cellStyles","th","withIcon","center","showIcon","data-title","hideIcon","textLeft","onChangeWidthTable","rowRef","widthRow","setWidthRow","showColumns","childrenColumns","onClickSortIcon","newSort","onClickHideIcon","useLayoutEffect","newScrollWidth","scrollWidth","headerContainer","tr","columnChildren","setIsOpenMenu","dropdown","onClickItem","handleClickOutside","event","menu","openMenu","withChildren","Actions","canAddNewRecord","canExportCSV","onClickList","activeName","selectedRow","modalExpanded","showColumnName","componentForEachTable","onHideColumn","onHideModal","onClickActions","onClickShowColumn","onChangeShowColumns","isPinFixedHead","tableRef","headerRef","setIsFixedHeader","setWidthTable","purple","orange","onScroll","scrollHeight","offsetHeight","scrollTop","onClickTableRow","onClickPinIcon","onLoadingRows","scrollDown","scrollY","tableStyle","container","containerShowColumns","pin","fixed","tableContainer","bodyClassName","TableContainer","filterData","showRows","onClickExpandRow","rowId","selector","querySelector","documentElement","getBoundingClientRect","delay","ExpandComponent","closeExpandRow","exportData","fields","csv","Parser","blob","Blob","saveAs","err","showComponentForEachTable","ComponentForEachTable","providerPropsForComponentTable","PureComponent","parentRows","setRows","handleChangeRow","newRow","onChangeTable","TestReport","newFormData","Legend","isHide","percent","huminateValue","formatValue","huminatePercent","formatPercent","RADIAN","PI","ActiveShape","midAngle","startAngle","endAngle","sin","cos","sx","sy","mx","my","ex","ey","shape","dy","emptyItem","sortNames","withActiveShape","setData","setActiveIndex","onPieEnter","onClickLegend","sum","showData","bufData","pieProps","setTimeout","labelLine","stackOffset","iconSize","formatter","LegendFormatter","MonthElement","handleToggle","onSelectYear","selectedYear","onSelectMonth","selectedMonth","onMonthSelect","onYearSelect","renderOpenElement","onClickApply","curMonth","data-value","classNameBtn","WrapperMonthElement","EditRiskManagement","baseURL","updateUser","isRiskPartner","nf","setNf","reserve","setReserve","reserveOvn","setReserveOvn","lastMonth","setLastMonth","focusedLastMonth","setFocusedLastMonth","onChangeInput","onDateChange","onFocusedLastMonth","focused","isOutsideRange","onUpdateRow","unixLastMonth","email","showDefaultInputIcon","numberOfMonths","firstDayOfWeek","renderMonthElement","onFocusChange","Signin","removeErrMessage","handlerClickForm","password","redirect","classNameValidate","data-key","required","minLength","Children","onSuccess","setStatus","setIsLoading","errorMessage","setErrorMessage","onFetch","presets","findWorkDay","endOf","DatePresets","presetsData","newDates","selectedPreset","preset","isSameDay","DateWrapper","isMoreDates","DatePicker","isSingleDate","focusSingleDate","changeSingleDate","isDayBlocked","isDayHighlighted","renderCalendarInfo","reopenPickerOnClearDates","minimumNights","small","showClearDates","onDatesChange","endDateId","startDateId","calendarInfoPosition","option","Accounts","getFilters","Filters","onClickGenerate","radioList","handleClickGenerate","dateType","mode","selectedMode","radio","selectedRadio","defaultValue","onChangeMode","onChangeRadio","errorDate","isLoadingDate","AddNewItem","addNewItem","resAccounts","modeList","isReady","compareDates","ToggleButtonGroup","ToggleButton","getTable","nameTable","Reports","handleResponseFromFilter","sendingParams","withoutAccounts","dateRange","preparationDates","getDatesWithUnixTime","acc_groups","parameter","host","protocol","cleanURI","pick","handleCloseAlert","updateAfterChangedRow","onSuccessTable","tableOptions","additionalComponent","Pies","Tabs","Pie","tab","loss","win","activeKey","Nav","NavItem","TabsName","Tab","Content","Pane","timesSorted","activeTab","PiesName","handleSelectTab","timesWin","timesLoss","strategiesWin","strategiesLoss","strategies","times","pies","week","Block","dateField","valueField","formattedDate","gridArea","Best","netPerShare","dayLoss","dayProfit","weekLoss","weekProfit","monthLoss","monthProfit","avgHighFixRate","Tile","closedFlat","closedPositive","stopLossOpening","decreasedLoss","lastStopLosses","Summary","days","netPer","maxLoss","avgLoss","avgProfit","maxProfit","trades","Switcher","percentPositive","percentNegative","Tiles","handleChangeType","best","summary","defaultDisplayTooltip","itemsToDisplay","textFill","labelFill","displayDate","handleReset","prev","onClickItemChart","interval","getDatesPath","enddate","st","onDoubleClick","Graphs","handleChangeInterval","prevState","changeAllState","isChecked","isSomeChecked","checkboxes","separateSymbolsData","selectedAll","arrowRef","tooltipRef","getArrowProps","getTooltipProps","Column","isNotAllClicked","handleChangeCheckbox","newCheckboxes","renderNameOfGroup","getTriggerProps","triggerRef","classNameAll","selectedCheckboxes","mapColumns","sortedRatio","union","showValues","Columns","time_range","global_tags","personalTags","personal_tags","weekdays","sortSymbolsWithSelected","filters","selectedSymbols","handleChangeSymbols","sel","isDisabledBtn","handleChangeColumn","handleClickRecalculate","isoWeekday","onRecalculate","handleKeyDownSymbols","keyCode","less","TradingDays","tradingDays","renderInnerData","isClassName","titleClassName","loss_days","total_net","avg_day_net","profit_days","total_volume","avg_loss_day_net","avg_profit_day_net","titles","WeeklyTiles","tile","getData","crossData","crossdata","trading_days","tradingDaysTables","normalizeTradingDays","tradesTotal","trades_made","daysTotal","exec","best_trade","tradeDesc","tradeDate","stop_loss_openings","closed_positive","closed_flat","decreased_loss_by","last_3_stop_losses","total_gross","net_per_share","net_per_day","max_day_loss","avg_net_loss_days","avg_net_profit_days","max_day_profit","net_per_trade","max_trade_loss","avg_trade_loss","trades_made_loss","avg_trade_profit","max_trade_profit","trades_made_profit","max_loss_days_row","max_profit_days_row","max_loss_week_row","max_profit_week_row","max_loss_month_row","max_profit_month_row","avg_high_fix_rate","best_day","best_day_net","best_day_desc","best_week","best_week_net","best_week_desc","best_month","best_month_net","best_month_desc","best_trade_net","getWeeklyData","getOHLC","startCase","shift","HomePage","weekParams","isChangedAccounts","oldPersonalTags","mapValues","reverse","compareStatusWithTabs","selectedIndex","newTable","selectedRole","idRoles","getGroupList","g","updateRow","indexTable","getName","parseData","renderCell","rowTable","totalRow","parseHeader","createColumn","getMaxWidthValue","parseChildren","isHaveChildren","isKey","addRowToTable","currentTable","treatmentData","totalName","isNotSort","isCustomWidth","getWorkArea","AdminHeader","onChangeRole","Role","htmlFor","createUser","CreateUser","selectedMembers","selectedManagers","overnightAccount","isShowManagers","handleChangeAccount","newAccount","handleChangeOvernightAccount","handleChangeMemberOf","handleChangeManager","handleCreateUser","addUser","m","id_roles","memberof","account_ovn","isShowCloseBtn","accountOvn","managerBy","lastLogin","isDel","handleChangeRole","newRole","managers","isBtnDisable","onInputChange","groupList","setInfoUser","Password","isLoadingParent","setAlert","setPassword","isCollpased","setIsCollapsed","repeatPassword","setRepeatPassword","setValidate","onChangePassword","pass","onChangeRepeatPassword","repeatPass","onToggleCollapsed","onGeneratePassword","is_new_pass","collapsed","ok","EditUser","handleChangeMember","onChangeCompareWith","selectedCompares","handleUpdateUser","setUpdateUsers","roleData","compare_with","handleRemoveUser","is_del","AdminUser","isOpenModal","tabs","updateData","getTableRequest","openAllUsers","ChangeGroup","onRemoveGroup","removeGroupFromTable","addGroup","setUpdateGroups","membersSelected","managersSelected","u","changeRow","members","handleChangeMembers","handleChangeManagers","valueMembers","valueManagers","created","colTitle","AdminGroup","handleAdminResponse","handleChangeSearch","addGlobalTag","AdminTags","valueNewTag","isLoadingTags","isLoadingAddTag","errorAddTag","getUserId","onCloseAlert","handleClickAddNewTag","handleChangeAddNewTag","isShowSearch","parseTable","dict","sortedRow","getTotalMonth","SummaryByMonth","coreComponents","filteredAccounts","processingAccount","moveAccount","newItems","newSelectedItems","oldIndex","newIndex","isSelected","isSelectedList","arrayMove","onClearValue","sorted","reversed","iconSort","SortableItem","SortableElement","SortableContainerList","SortableContainer","selectedBlock","selectedSearch","handleSortEnd","indexes","isParent","handleClearSearch","handleClickSort","isSortSelected","onSortEnd","helperClass","admin","acc_users","access_token","manager_group","ServiceErrorPlaceholder","ServiceNotFoundPlaceholder","noFound","ServiceForbiddenPlaceholder","ServiceNoContentPlaceholder","ServiceUnavailablePlaceholder","unavailableImg","ERROR_ACCOUNTS","isClose","onDismiss","isValidate","classNameTitle","classNameBody","data-validate","workday","blockedDays","add","getDates","moreDates","datesFromLocal","maxDayByPage","open_positions","accounts_hi_low","positions_hi_low","top_net","isHoliday","dayWeek","dayMonth","maxMomentTime","lastMonthDay","isOutMaxDate","isOutMinDate","firstDate","secondDate","re","test","isNaN","applyCaseMiddleware","axiosInstance","create","timeout","preservedKeys","caseFunctions","camel","$1","useAxiosDefault","makeUseAxios","cache","disablePreservedKeys","forbidRepeatingRequests","otherOptions","transformResponse","require","localServer","401","keyMSFT","substitutes","sum_volume","sum_pnl","trade_count","plus_trade_count","short_plus_count","long_plus_count","minus_trade_count","short_minus_count","long_minus_count","short_trade","long_trade","avg_plus","avg_minus","max_pnl","min_pnl","sum_pnl_plus","sum_pnl_minus","len_plus","len_minus","max_pnl_chain","min_pnl_chain","day_plus","day_minus","sum_days","avg_time_plus","avg_time_minus","sum_plus","sum_minus","qnt_plus","qnt_minus","Day","MOC","OPG","OPGtoDAY","Overnight","Print","AfterMarket","OPT","configProd","apiDomain"],"mappings":"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","file":"static/js/main.480b40ca.chunk.js","sourcesContent":["import * as Sentry from '@sentry/browser';\n\nconst { REACT_APP_VERSION, REACT_APP_BRANCH, NODE_ENV, REACT_APP_SENTRY } =\n process.env;\n\nif (REACT_APP_SENTRY && process.env.NODE_ENV === 'production') {\n Sentry.init({\n debug: NODE_ENV === 'development',\n dsn: REACT_APP_SENTRY,\n release: REACT_APP_VERSION,\n environment: REACT_APP_BRANCH || 'development',\n });\n}\n","import { Roles } from 'utils/user';\n\nexport default [\n {\n upperTitle: 'Dashboard',\n url: '/',\n icon: 'dashboard',\n main: true,\n },\n {\n upperTitle: 'Analytics',\n url: '/analytics',\n icon: 'analytics',\n },\n {\n upperTitle: 'Risk Management',\n url: '/risk-management',\n icon: 'riskManagement',\n },\n {\n upperTitle: 'Journal',\n url: '/journal',\n icon: 'interface',\n },\n {\n upperTitle: 'Trading',\n title: 'plans',\n url: '/trading-plans',\n icon: 'tags',\n },\n // {\n // \ttitle: 'by groups',\n // \tupperTitle: 'Compare',\n // \turl: '/compare-by-groups',\n // \ticon: 'compare',\n // \tfilter: ({ accounts }) => accounts.allAccounts.length !== 0,\n // },\n {\n title: 'by day',\n upperTitle: 'Summary',\n url: '/summary-by-day',\n icon: 'time',\n },\n {\n title: 'by strategy',\n upperTitle: 'Summary',\n url: '/summary-by-strategy',\n icon: 'businessRound',\n },\n {\n title: 'by month',\n upperTitle: 'Summary',\n url: '/summary-by-month',\n icon: 'time',\n },\n {\n title: 'by period',\n upperTitle: 'Total',\n url: '/total-by-period',\n icon: 'switch',\n },\n {\n title: 'by symbol',\n upperTitle: 'Total',\n url: '/total-by-symbol',\n icon: 'squares',\n },\n {\n title: 'by accounts',\n upperTitle: 'Total',\n url: '/total-by-accounts',\n icon: 'user',\n filter: ({ role }) => role && role !== Roles.USER,\n },\n {\n title: 'positions',\n upperTitle: 'Open',\n url: '/open-positions',\n icon: 'paper',\n },\n {\n title: 'results',\n upperTitle: 'Top',\n url: '/top-results',\n icon: 'medal',\n },\n {\n title: 'Admin',\n url: '/admin',\n icon: 'cogwheel',\n filter: ({ role }) => role === Roles.ADMIN,\n main: true,\n children: [\n {\n title: 'Users',\n url: '/admin-users',\n icon: 'social',\n },\n {\n title: 'Groups',\n url: '/admin-groups',\n icon: 'business',\n },\n {\n title: 'Tags',\n url: '/admin-tags',\n icon: 'squares',\n },\n {\n title: 'Hi / Low',\n upperTitle: 'Position',\n url: '/position-hi-low',\n icon: 'technology',\n },\n {\n title: 'Hi / Low',\n upperTitle: 'Accounts',\n url: '/accounts-hi-low',\n icon: 'people',\n },\n ],\n },\n];\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"circle\", {\n fill: \"#90CAF9\",\n cx: 2.5,\n cy: 2.5,\n r: 2.5\n}), React.createElement(\"rect\", {\n fill: \"#42A5F5\",\n transform: \"translate(5.000000, 8.000000) rotate(90.000000) translate(-5.000000, -8.000000) \",\n x: 3,\n y: 3,\n width: 4,\n height: 10,\n rx: 0.791355958\n}), React.createElement(\"rect\", {\n fill: \"#1565C0\",\n transform: \"translate(7.500000, 13.000000) rotate(90.000000) translate(-7.500000, -13.000000) \",\n x: 5.5,\n y: 5.5,\n width: 4,\n height: 15,\n rx: 0.791355958\n}), React.createElement(\"path\", {\n d: \"M31.4020683,10.0182584 L25.4550508,10.0182584 L24.1741547,12.9073034 L23,12.9073034 L27.8796041,2.09269663 L28.9927638,2.09269663 L33.8723679,12.9073034 L32.6829644,12.9073034 L31.4020683,10.0182584 Z M30.9903517,9.09129213 L28.4285595,3.28230337 L25.8667674,9.09129213 L30.9903517,9.09129213 Z M44.5617506,2.09269663 L44.5617506,12.9073034 L43.631576,12.9073034 L36.7696328,4.13202247 L36.7696328,12.9073034 L35.6412243,12.9073034 L35.6412243,2.09269663 L36.5713989,2.09269663 L43.4485909,10.8679775 L43.4485909,2.09269663 L44.5617506,2.09269663 Z M54.7326753,10.0182584 L48.7856578,10.0182584 L47.5047618,12.9073034 L46.330607,12.9073034 L51.2102111,2.09269663 L52.3233708,2.09269663 L57.2029749,12.9073034 L56.0135714,12.9073034 L54.7326753,10.0182584 Z M54.3209587,9.09129213 L51.7591666,3.28230337 L49.1973744,9.09129213 L54.3209587,9.09129213 Z M58.9718314,2.09269663 L60.1002398,2.09269663 L60.1002398,11.9185393 L66.0777548,11.9185393 L66.0777548,12.9073034 L58.9718314,12.9073034 L58.9718314,2.09269663 Z M70.4846473,9.16853933 L70.4846473,12.9073034 L69.3714876,12.9073034 L69.3714876,9.16853933 L65.101834,2.09269663 L66.3064863,2.09269663 L69.9661893,8.16432584 L73.6258924,2.09269663 L74.7543008,2.09269663 L70.4846473,9.16853933 Z M78.5054965,3.08146067 L74.7543008,3.08146067 L74.7543008,2.09269663 L83.3851006,2.09269663 L83.3851006,3.08146067 L79.6339049,3.08146067 L79.6339049,12.9073034 L78.5054965,12.9073034 L78.5054965,3.08146067 Z M85.1844546,2.09269663 L86.312863,2.09269663 L86.312863,12.9073034 L85.1844546,12.9073034 L85.1844546,2.09269663 Z M94.4252048,13 C93.367952,13 92.4149138,12.763111 91.5660618,12.2893258 C90.7172098,11.8155407 90.0513538,11.1589461 89.5684739,10.3195225 C89.085594,9.4800988 88.8441576,8.54026737 88.8441576,7.5 C88.8441576,6.45973263 89.085594,5.5199012 89.5684739,4.68047753 C90.0513538,3.84105386 90.7197512,3.1844593 91.5736862,2.71067416 C92.4276212,2.23688902 93.3832007,2 94.4404536,2 C95.2333932,2 95.9653265,2.13389379 96.6362754,2.40168539 C97.3072243,2.66947699 97.8765058,3.06085885 98.3441369,3.5758427 L97.627445,4.30196629 C96.7938418,3.4470931 95.7416877,3.01966292 94.4709511,3.01966292 C93.627182,3.01966292 92.8596686,3.21535385 92.1683879,3.60674157 C91.4771072,3.9981293 90.9357816,4.53370447 90.5443947,5.21348315 C90.1530078,5.89326183 89.9573173,6.65542649 89.9573173,7.5 C89.9573173,8.34457351 90.1530078,9.10673817 90.5443947,9.78651685 C90.9357816,10.4662955 91.4771072,11.0018707 92.1683879,11.3932584 C92.8596686,11.7846462 93.627182,11.9803371 94.4709511,11.9803371 C95.7518536,11.9803371 96.8040077,11.5477571 97.627445,10.6825843 L98.3441369,11.4087079 C97.8765058,11.9236917 97.3046829,12.3176484 96.628651,12.5905899 C95.9526192,12.8635313 95.2181444,13 94.4252048,13 Z M103.635458,13 C102.842518,13 102.082629,12.871256 101.355767,12.613764 C100.628906,12.3562721 100.067249,12.0163879 99.6707792,11.5941011 L100.112993,10.7134831 C100.499297,11.1048709 101.012667,11.4215812 101.653118,11.6636236 C102.29357,11.905666 102.954343,12.0266854 103.635458,12.0266854 C104.591051,12.0266854 105.307736,11.8490186 105.785533,11.4936798 C106.26333,11.1383409 106.502225,10.6774373 106.502225,10.1109551 C106.502225,9.67836862 106.372612,9.33333462 106.113381,9.0758427 C105.854151,8.81835077 105.536472,8.62008496 105.160334,8.48103933 C104.784196,8.34199369 104.26066,8.19007573 103.589711,8.0252809 C102.786606,7.81928736 102.146164,7.62102155 101.668367,7.43047753 C101.19057,7.2399335 100.781399,6.94897199 100.440842,6.55758427 C100.100284,6.16619654 99.9300082,5.63577114 99.9300082,4.96629213 C99.9300082,4.42040926 100.072329,3.9234573 100.356974,3.47542135 C100.641619,3.0273854 101.078745,2.66947699 101.668367,2.40168539 C102.257989,2.13389379 102.989922,2 103.864189,2 C104.474143,2 105.07138,2.08497106 105.655919,2.25491573 C106.240457,2.4248604 106.746203,2.65917454 107.17317,2.95786517 L106.791951,3.86938202 C106.344652,3.57069139 105.866862,3.34667678 105.358568,3.19733146 C104.850273,3.04798614 104.352152,2.97331461 103.864189,2.97331461 C102.928927,2.97331461 102.224949,3.15613113 101.752235,3.52176966 C101.279521,3.8874082 101.043168,4.35861135 101.043168,4.93539326 C101.043168,5.36797969 101.172781,5.71558857 101.432011,5.97823034 C101.691242,6.2408721 102.016545,6.44171348 102.407932,6.58075843 C102.799319,6.71980407 103.325396,6.87172202 103.986179,7.03651685 C104.768953,7.23221072 105.40177,7.42532676 105.88465,7.61587079 C106.36753,7.80641481 106.776701,8.09480144 107.112175,8.48103933 C107.44765,8.86727721 107.615385,9.38997798 107.615385,10.0491573 C107.615385,10.5950402 107.470523,11.0919921 107.180795,11.5400281 C106.891067,11.988064 106.446316,12.3433976 105.846528,12.6060393 C105.24674,12.8686811 104.509724,13 103.635458,13 Z\",\n id: \"ANALYTICS\",\n fill: \"#757575\",\n fillRule: \"nonzero\"\n}));\n\nvar SvgLogo = function SvgLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n width: \"108px\",\n height: \"15px\",\n viewBox: \"0 0 108 15\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/logo.25019052.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, React.createElement(\"path\", {\n d: \"M254.5,40.55c3.416,0,7-2.771,7-6.188V19.653c0-3.416-3.584-6.188-7-6.188s-7,2.771-7,6.188v14.709 C247.5,37.778,251.084,40.55,254.5,40.55z\"\n}), React.createElement(\"path\", {\n d: \"M304.469,60.081c1.584,0,3.166-0.605,4.375-1.813l10.402-10.402c2.416-2.418,2.416-6.336,0-8.75 c-2.418-2.416-6.332-2.416-8.75,0l-10.402,10.402c-2.416,2.416-2.416,6.334,0,8.75C301.303,59.476,302.885,60.081,304.469,60.081z\"\n}), React.createElement(\"path\", {\n d: \"M201.533,60.032c1.209,1.209,2.791,1.813,4.375,1.813s3.166-0.604,4.375-1.813c2.418-2.414,2.418-6.332,0-8.75 l-10.402-10.4c-2.416-2.418-6.332-2.418-8.748,0c-2.418,2.414-2.418,6.332,0,8.748L201.533,60.032z\"\n}), React.createElement(\"path\", {\n d: \"M172.318,126.876c-1.063-5.381-1.604-10.98-1.604-16.641c0-6.27,0.688-12.514,2.043-18.559 c0.748-3.332-1.348-6.643-4.684-7.391c-3.309-0.736-6.643,1.346-7.393,4.684c-1.553,6.932-2.342,14.088-2.342,21.266 c0,6.465,0.619,12.871,1.842,19.043c0.582,2.947,3.168,4.988,6.063,4.988c0.396,0,0.801-0.039,1.207-0.121 C170.803,133.485,172.982,130.228,172.318,126.876z\"\n}), React.createElement(\"path\", {\n d: \"M339.18,145.001c-3.055-1.523-6.775-0.273-8.295,2.787c-14.387,28.951-43.391,46.941-75.695,46.951 c-32.305-0.01-61.307-18-75.693-46.951c-1.523-3.061-5.244-4.311-8.295-2.787c-3.061,1.52-4.309,4.924-2.789,7.987 c16.486,33.176,49.711,53.512,86.729,53.512c0.006,0,0.014,0,0.02,0c0.018,0,0.039,0,0.057,0c0.008,0,0.014,0,0.02,0 c37.018,0,70.246-20.336,86.73-53.512C343.488,149.925,342.24,146.521,339.18,145.001z\"\n}), React.createElement(\"path\", {\n d: \"M350.166,129.288c1.244-6.236,1.875-12.645,1.875-19.053c0-7.193-0.797-14.375-2.363-21.344 c-0.75-3.336-4.064-5.436-7.395-4.678c-3.332,0.748-5.428,4.059-4.678,7.393c1.367,6.08,2.061,12.348,2.061,18.629 c0,5.594-0.553,11.191-1.639,16.631c-0.668,3.352,1.508,6.609,4.859,7.279c0.408,0.082,0.814,0.121,1.217,0.121 C346.992,134.267,349.576,132.229,350.166,129.288z\"\n}), React.createElement(\"path\", {\n d: \"M314.971,228.5H194.48c-3.711,0-7.98,4.386-7.98,8.122v2.25v253.094c0,3.713,4.27,6.534,7.98,6.534h120.49 c3.711,0,6.529-2.821,6.529-6.534V238.872v-2.25C321.5,232.886,318.682,228.5,314.971,228.5z\"\n}), React.createElement(\"path\", {\n d: \"M207.842,104.726l22.078,16.433c1.637,1.189,2.32,3.492,1.697,5.416l-8.434,26.053c-1.396,4.301,3.525,7.927,7.184,5.269 l22.078-16.019c1.637-1.189,3.852-1.177,5.488,0.012l22.078,16.049c3.658,2.658,8.58-0.917,7.182-5.217l-8.432-25.953 c-0.625-1.924,0.061-4.03,1.695-5.218l22.08-16.826c3.66-2.658,1.777-9.226-2.744-9.226h-27.291c-2.021,0-3.814-0.52-4.439-2.444 l-8.434-25.563c-1.396-4.303-7.48-4.106-8.879,0.195l-8.432,25.27c-0.627,1.924-2.42,2.542-4.441,2.542h-27.293 C206.063,95.5,204.184,102.068,207.842,104.726z\"\n}), React.createElement(\"path\", {\n d: \"M162.5,366.25c0-3.728-3.022-6.75-6.75-6.75H34.25c-3.728,0-6.75,3.022-6.75,6.75v126.5c0,3.728,3.022,6.75,6.75,6.75 h121.5c3.728,0,6.75-3.022,6.75-6.75V366.25z\"\n}), React.createElement(\"path\", {\n d: \"M81.66,284.896c1.039,0.756,1.473,2.092,1.076,3.313l-2.916,8.971c-0.885,2.729,2.236,4.996,4.557,3.311l7.633-5.545 c1.039-0.754,2.443-0.754,3.48,0l7.633,5.545c2.32,1.686,5.441-0.582,4.557-3.311l-2.916-8.971 c-0.396-1.221,0.037-2.557,1.074-3.313l7.635-5.792c2.32-1.682,1.127-5.604-1.74-5.604h-9.436c-1.281,0-2.42-0.578-2.814-1.797 l-2.916-8.848c-0.885-2.729-4.746-2.668-5.631,0.061l-2.916,8.755c-0.396,1.221-1.535,1.829-2.818,1.829H75.77 c-2.867,0-4.061,3.922-1.74,5.604L81.66,284.896z\"\n}), React.createElement(\"path\", {\n d: \"M93.75,337.503c30.131,0,54.643-24.512,54.643-54.641S123.881,228.22,93.75,228.22c-30.129,0-54.643,24.514-54.643,54.643 S63.621,337.503,93.75,337.503z M93.75,240.595c23.344,0,42.268,18.924,42.268,42.268s-18.924,42.266-42.268,42.266 c-23.342,0-42.268-18.922-42.268-42.266S70.408,240.595,93.75,240.595z\"\n}), React.createElement(\"path\", {\n d: \"M483.5,366.25c0-3.728-3.022-6.75-6.75-6.75h-121.5c-3.728,0-6.75,3.022-6.75,6.75v126.5c0,3.728,3.022,6.75,6.75,6.75 h121.5c3.728,0,6.75-3.022,6.75-6.75V366.25z\"\n}), React.createElement(\"path\", {\n d: \"M403.609,284.896c1.039,0.756,1.473,2.092,1.076,3.313l-2.914,8.971c-0.887,2.729,2.236,4.996,4.557,3.311l7.631-5.545 c1.039-0.754,2.443-0.754,3.48,0l7.633,5.545c2.32,1.686,5.443-0.582,4.559-3.311l-2.916-8.971 c-0.398-1.221,0.037-2.557,1.074-3.313l7.633-5.792c2.32-1.682,1.127-5.604-1.74-5.604h-9.436c-1.283,0-2.418-0.578-2.814-1.797 l-2.916-8.848c-0.885-2.729-4.746-2.668-5.631,0.061l-2.916,8.755c-0.396,1.221-1.533,1.829-2.816,1.829h-9.434 c-2.867,0-4.061,3.922-1.74,5.604L403.609,284.896z\"\n}), React.createElement(\"path\", {\n d: \"M415.699,337.503c30.131,0,54.645-24.512,54.645-54.641s-24.514-54.643-54.645-54.643 c-30.129,0-54.643,24.514-54.643,54.643S385.57,337.503,415.699,337.503z M415.699,240.595c23.344,0,42.27,18.924,42.27,42.268 s-18.926,42.266-42.27,42.266c-23.342,0-42.268-18.922-42.268-42.266S392.357,240.595,415.699,240.595z\"\n}));\n\nvar SvgRiskManagement = function SvgRiskManagement(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n enableBackground: \"new 0 0 512 512\",\n height: \"512px\",\n id: \"Competitive_x5F_advantage\",\n viewBox: \"0 0 512 512\",\n width: \"512px\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgRiskManagement, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/risk-management.91f5cee0.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { Tooltip, OverlayTrigger } from 'react-bootstrap';\nimport cx from 'classnames';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport { slide as Menu } from 'react-burger-menu';\nimport { decorator as reduxBurgerMenu } from 'redux-burger-menu';\n\nimport * as icons from 'icons';\nimport navList from './navList';\nimport './Nav.scss';\nimport { ReactComponent as IconLogo } from 'images/logo.svg';\nimport { ReactComponent as IconRiskManagement } from 'images/risk-management.svg';\n\nconst mappedIcons = {\n analytics: icons.Analytics,\n business: icons.Business,\n businessRound: icons.BusinessRound,\n cogwheel: icons.Cogwheel,\n compare: icons.Compare,\n dashboard: icons.Dashboard,\n interface: icons.Interface,\n medal: icons.Medal,\n paper: icons.Paper,\n tags: icons.Tags,\n people: icons.People,\n social: icons.Social,\n squares: icons.Squares,\n switch: icons.Switch,\n technology: icons.Technology,\n time: icons.Time,\n user: icons.User,\n riskManagement: IconRiskManagement,\n};\n\nconst tooltip = ({ title, upperTitle, isOpen }) => (\n \n {upperTitle} {title}\n \n);\n\nconst renderItemNav = ({ url, icon, title, upperTitle }, isActive, isOpen) => {\n const Icon = mappedIcons[icon] || null;\n if (!Icon) {\n return null;\n }\n return (\n \n \n \n \n \n\n
\n {upperTitle}\n {title}\n
\n \n \n );\n};\n\nconst renderChildrenItemNav = ({ path, children, isOpen }) =>\n children.map((child, key) => (\n
  • \n {renderItemNav(child, child.url === path, isOpen)}\n
  • \n ));\n\nconst renderParentItemsNav = ({\n item: { icon, title },\n path,\n children,\n handleClickDropdown,\n isOpen,\n}) => {\n const Icon = mappedIcons[icon] || null;\n return (\n
    \n \n \n
    \n );\n};\n\nconst Nav = (props) => {\n const { path, user, isOpen, accounts, onStateChange } = props;\n\n const menuClassName = cx({\n open: isOpen,\n });\n\n const handleClickDropdown = ({ currentTarget }) =>\n currentTarget.parentElement.classList.toggle('dropdown');\n return (\n \n \n \n \n \n\n \n
      \n {navList.map((item, index) => {\n const { url, main, filter, children } = item;\n const isActive = url === path;\n\n if (filter && !filter({ ...user, accounts })) {\n return null;\n }\n\n const className = cx({\n main,\n active: isActive,\n });\n\n return (\n
    • \n {children\n ? renderParentItemsNav({\n item,\n path,\n children,\n handleClickDropdown,\n isOpen,\n })\n : renderItemNav(item, isActive, isOpen)}\n
    • \n );\n })}\n
    \n
    \n \n \n );\n};\n\nexport default connect(({ user, accounts, routing }) => ({\n user,\n accounts,\n path: routing.location.pathname,\n}))(reduxBurgerMenu(Nav, 'primary'));\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import React from 'react';\n\nexport default ({ fill = '#878b8d' }) => (\n \n \n \n \n \n \n);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { slide as Menu } from 'react-burger-menu';\nimport { decorator as reduxBurgerMenu } from 'redux-burger-menu';\n\nimport './NavMessage.scss';\n\nconst NavMessage = ({ path, isOpen, onStateChange }) => (\n
    \n \n
    \n);\n\nexport default connect(({ routing }) => ({\n path: routing.location.pathname,\n}))(reduxBurgerMenu(NavMessage, 'navMessage'));\n","export const getAccounts = (accounts, users) =>\n accounts.map((account) => ({\n account,\n id: Number(account),\n name: Array.isArray(users[account])\n ? users[account]\n : users[account]\n ? [users[account]]\n : [],\n }));\n\nexport const getGroups = (groups, users, memberOf) =>\n Object.keys(groups)\n .filter((name) => !memberOf || !memberOf.includes(name))\n .map((name) => ({\n name,\n values: getAccounts(groups[name], users),\n }));\n\nexport const getAvailableAccounts = (\n accounts,\n selectedAccounts,\n isEquals = true\n) =>\n accounts.filter((acc) => {\n const foundAcc = selectedAccounts.find(\n ({ account }) => account === acc.account\n );\n return isEquals ? foundAcc : !foundAcc;\n });\n","import request from 'utils/request';\n\nconst API_PUT_GROUP = '/put/groups/';\nconst API_REMOVE_GROUP = '/del/groups/';\n\nexport const changeGroup = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_PUT_GROUP,\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nexport const removeGroup = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_REMOVE_GROUP,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\nimport { ModalBody, ModalFooter } from 'react-bootstrap';\n\nimport './GroupsAccount.scss';\nimport Validate from 'utils/validate';\nimport {\n getGroups,\n getAccounts,\n getAvailableAccounts,\n} from 'utils/groupsAccount';\nimport * as actions from 'redux/actions/accounts';\n\nimport Alert from 'components/common/Alert';\nimport Input from 'components/common/Input';\nimport Modal from 'components/common/OpenModal';\nimport Loading from 'components/common/Loading';\nimport Sortable from 'components/common/Sortable';\nimport Dropdown from 'components/common/Dropdown';\nimport * as dataProvider from './dataProvider';\n\nconst defaultGroupName = 'By groups';\n\nconst initState = {\n name: '',\n alert: null,\n isNew: true,\n validate: {},\n accounts: [],\n isLoading: false,\n accountsSelected: [],\n group: defaultGroupName,\n};\n\nclass GroupsAccount extends Component {\n state = initState;\n\n static getDerivedStateFromProps({ accounts, groups, isOpen }) {\n if (isOpen) {\n return {\n groups: [...groups],\n accounts: [...accounts],\n };\n }\n return initState;\n }\n\n handleChangeInput = ({ target }) => {\n const { value } = target;\n const { key } = target.dataset;\n const { validate } = this.state;\n\n this.setState({\n alert: null,\n [key]: value,\n validate: {\n ...validate,\n [key]: Validate[key](value),\n },\n });\n };\n\n handleSelectGroup = (id) => {\n const { accounts, groups } = this.props;\n const { validate } = this.state;\n\n const isNew = id === 'reset';\n const group = groups.find((group) => group.name === id);\n\n const accountsSelected = group\n ? getAvailableAccounts(accounts, group.values)\n : [];\n\n const newAccounts = group\n ? getAvailableAccounts(accounts, accountsSelected, false)\n : [...accounts];\n\n this.setState({\n isNew,\n alert: null,\n accountsSelected,\n accounts: newAccounts,\n name: isNew ? '' : id,\n validate: {\n ...validate,\n name: !isNew,\n },\n group: isNew ? defaultGroupName : id,\n });\n };\n\n handleChangeAccounts = (accounts, accountsSelected) => {\n this.setState({\n accounts,\n accountsSelected,\n });\n };\n\n handleChangeGroup = async () => {\n const { changeGroup } = this.props;\n const { name, isNew, accountsSelected } = this.state;\n\n const { error } = await dataProvider.changeGroup({\n [name]: accountsSelected.map((acc) => acc.account),\n });\n\n if (error) {\n this.setState({\n isLoading: false,\n alert: (\n \n ),\n });\n }\n\n this.setState({\n name: '',\n validate: {},\n isLoading: false,\n accountsSelected: [],\n group: defaultGroupName,\n alert: (\n \n ),\n });\n\n changeGroup({\n [name]: accountsSelected.map((acc) => String(acc.account)),\n });\n };\n\n handleRemoveGroup = async () => {\n const { removeGroup } = this.props;\n const { name } = this.state;\n\n const { error } = await dataProvider.removeGroup({\n groups: [name],\n });\n\n if (error) {\n this.setState({\n isLoading: false,\n alert: (\n \n ),\n });\n }\n\n this.setState({\n name: '',\n isNew: true,\n validate: {},\n isLoading: false,\n accountsSelected: [],\n group: defaultGroupName,\n alert: ,\n });\n\n removeGroup(name);\n };\n\n render() {\n const { isOpen, onHide, groups } = this.props;\n\n const {\n name,\n group,\n alert,\n isNew,\n accounts,\n validate,\n isLoading,\n accountsSelected,\n } = this.state;\n\n return (\n \n \n \n
    \n \n }\n />\n\n \n\n
    \n \n
    \n\n \n {alert && (\n
    \n
    \n {alert}\n
    \n
    \n )}\n
    \n
    \n\n \n \n Remove group\n \n\n \n {isNew ? 'Create' : 'Update'} group of accounts\n \n\n \n Cancel\n \n \n
    \n \n );\n }\n}\n\nexport default connect(\n ({ accounts: { allAccounts, groups, users, memberOf } }) => ({\n groups: getGroups(groups, users, memberOf),\n accounts: getAccounts(allAccounts, users),\n }),\n (dispatch) => ({\n removeGroup: (name) => dispatch(actions.removeGroup(name)),\n changeGroup: (groups) => dispatch(actions.changeGroup(groups)),\n })\n)(GroupsAccount);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { action as toggleMenu } from 'redux-burger-menu';\nimport { DropdownButton, MenuItem } from 'react-bootstrap';\nimport cx from 'classnames';\n\nimport './Header.scss';\nimport { logOut } from 'redux/actions/user';\n\nimport { Nav, navList } from 'components/common/Nav';\nimport NavMessage from 'components/common/NavMessage';\nimport GroupsAccount from 'components/common/GroupsAccount';\n\nclass Header extends Component {\n state = {\n isOpenGroups: false,\n };\n\n static getDerivedStateFromProps({ path }) {\n const curPage = navList.find(({ url }) => url === path);\n\n return {\n title: curPage && [curPage.upperTitle, curPage.title].join(' '),\n };\n }\n\n handleSelectUserMenu = (title) => {\n const { logOut } = this.props;\n\n switch (title) {\n case 'settings':\n return;\n\n case 'groups':\n this.setState({\n isOpenGroups: true,\n });\n break;\n\n case 'logOut':\n logOut();\n break;\n\n default:\n break;\n }\n };\n\n openNavMessage = () => {\n const { toggleMenu, navMessage } = this.props;\n toggleMenu(navMessage ? !navMessage.isOpen : true);\n };\n\n handleHideGroups = () => {\n this.setState({\n isOpenGroups: false,\n });\n };\n\n render() {\n const { user, main, accounts, isOpenNavigation } = this.props;\n\n const { title, curPage, isOpenGroups } = this.state;\n\n return (\n \n
    \n
    \n\n
    \n \n \n Settings\n \n\n {accounts.length !== 0 && (\n }>\n Groups\n \n )}\n Logout\n \n\n \n 5\n \n \n
    \n\n \n \n );\n }\n}\n\nexport default connect(\n ({\n accounts,\n user: { user, token },\n routing,\n burgerMenu: { navMessage, primary },\n }) => ({\n user,\n token,\n navMessage,\n path: routing.location.pathname,\n accounts: accounts.allAccounts,\n isOpenNavigation: primary && primary.isOpen,\n }),\n (dispatch) => ({\n logOut: () => logOut(dispatch),\n toggleMenu: (isOpen) => dispatch(toggleMenu(isOpen, 'navMessage')),\n })\n)(Header);\n","import React, { Component } from 'react';\nimport cx from 'classnames';\nimport { animateScroll as scroll } from 'react-scroll';\n\nimport './ArrowScrollUp.scss';\n\nclass ArrowScrollUp extends Component {\n state = {\n isShow: window.pageYOffset > 20,\n };\n\n handleScroll = () => {\n this.setState({\n isShow: window.pageYOffset > 20,\n });\n };\n\n componentDidMount() {\n window.addEventListener('scroll', this.handleScroll);\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.handleScroll);\n }\n\n render() {\n const className = cx('c-arrow-scroll-up', {\n show: this.state.isShow,\n });\n return \n )}\n\n \n \n Saving a note...\n \n\n \n

    {msg}

    \n
    \n\n \n \n \n
    \n \n );\n }\n}\n\nexport default Note;\n","import request from 'utils/request';\n\nconst SET_LOG_ERROR = '/api/put/errors/';\n\nexport const setError = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: SET_LOG_ERROR,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport cx from 'classnames';\n\nimport './ErrorBoundary.scss';\nimport Loading from 'components/common/Loading';\nimport {\n ServiceErrorPlaceholder,\n ServiceUnavailablePlaceholder,\n} from 'components/common/ServicePlaceholder';\nimport { setError } from './dataProvider';\n\nclass ErrorBoundary extends Component {\n state = {\n hasError: false,\n isLoading: false,\n unavailableComponent: null,\n };\n\n static getDerivedStateFromProps({ removeError }) {\n if (removeError) {\n return {\n hasError: false,\n };\n }\n return null;\n }\n\n async componentDidCatch({ message, stack }) {\n if (process.env.NODE_ENV !== 'production') {\n this.setState({\n hasError: true,\n });\n return;\n }\n\n this.setState({\n hasError: true,\n isLoading: true,\n });\n\n const response = await setError({\n stack,\n msg: message,\n });\n\n if (response.error) {\n this.setState({\n unavailableComponent: ,\n });\n } else {\n this.setState({\n isLoading: false,\n });\n }\n }\n\n render() {\n const { hasError, isLoading, unavailableComponent } = this.state;\n\n if (unavailableComponent) {\n return unavailableComponent;\n }\n\n const { children, className } = this.props;\n\n if (hasError) {\n const classNameError = cx('c-error-boundary', {\n [className]: className,\n });\n return (\n \n \n \n \n );\n }\n\n return children;\n }\n}\n\nexport default ErrorBoundary;\n","import React, { Component } from 'react';\nimport cx from 'classnames';\nimport { isEqual } from 'lodash';\n\nimport Loading from 'components/common/Loading';\nimport ErrorBoundary from 'components/common/ErrorBoundary';\n\nclass Request extends Component {\n static defaultProps = {\n className: '',\n };\n\n state = {\n isLoading: true,\n isNeedRequest: true,\n };\n\n static getDerivedStateFromProps({ repeat }) {\n return {\n repeat,\n };\n }\n\n shouldComponentUpdate(nextProps, state) {\n if (!isEqual(nextProps.params, this.props.params) || state.repeat) {\n state.repeat = false;\n state.response = null;\n state.isLoading = true;\n state.isNeedRequest = true;\n }\n return true;\n }\n\n async componentDidMount() {\n await this.requestToServer();\n }\n\n async componentDidUpdate() {\n if (this.state.isNeedRequest) {\n await this.requestToServer();\n }\n }\n\n requestToServer = async () => {\n const { action, params, handleResponse } = this.props;\n\n this.setState({\n isLoading: true,\n isNeedRequest: false,\n });\n\n const response = await action(params);\n handleResponse && handleResponse(response);\n\n this.setState({\n isLoading: false,\n response,\n });\n };\n\n render() {\n const { response, isLoading } = this.state;\n const { children, className } = this.props;\n let render;\n\n if (!isLoading && children) {\n render = typeof children === 'object' ? children : children(response);\n }\n\n const classNameRoot = cx(className, {\n 'is-loading': isLoading,\n response: Boolean(children),\n });\n\n return (\n \n
    \n {isLoading ? : render}\n
    \n
    \n );\n }\n}\n\nexport default Request;\n","import React from 'react';\nimport cx from 'classnames';\n\nimport './OpenRow.scss';\n\nconst OpenRow = ({ children, row, onExpand, className }) => {\n const handleClickCloseOpenRow = () => onExpand(row, false);\n\n return (\n
    \n \n {children}\n
    \n );\n};\n\nexport default OpenRow;\n","import request from 'utils/request';\n\nconst SET_GLOBAL_TAGS = '/put/admin_tags';\nconst GET_GLOBAL_TAGS = '/table/tags';\n\nexport const setGlobalTags = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: SET_GLOBAL_TAGS,\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nexport const getGlobalTags = async (idUser) => {\n try {\n const response = await new Promise((success, error) =>\n request({\n error,\n success,\n url: GET_GLOBAL_TAGS,\n data: {\n id_users: idUser,\n columns: ['id', 'name'],\n },\n })\n );\n return response || [];\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { Typeahead } from 'react-bootstrap-typeahead';\nimport { connect } from 'react-redux';\n\nimport Loading from 'components/common/Loading';\nimport Request from 'components/common/Request';\nimport OpenRow from 'components/common/OpenRow';\nimport Alert from 'components/common/Alert';\nimport { getGlobalTags, setGlobalTags } from './dataProvider';\n\nimport './EditTags.scss';\n\nexport const TagsTypes = {\n ADMIN: -1,\n GLOBAL: 0,\n};\n\nclass EditTags extends Component {\n state = {\n globalTags: [],\n isSaveTags: false,\n isDisabledSaveButton: false,\n selectedTags: this.props.row.tags.value,\n };\n\n static async getDerivedStateFromProps({ row }, state) {\n return {\n selectedTags: row.tags.value || [],\n // isDisabledSaveButton: !state.selectedTags,\n };\n }\n\n onChangeTags = (selectedTags) => {\n // const { row } = this.props;\n // const value = row.tags.value || [];\n\n this.setState({\n selectedTags,\n // isDisabledSaveButton:\n // \tselectedTags.every(tag => value.includes(tag)),\n });\n };\n\n onClickSaveTags = async () => {\n const { row, day, onChangeRow } = this.props;\n const { selectedTags } = this.state;\n\n this.setState({\n isSaveTags: true,\n });\n\n const response = await setGlobalTags({\n day,\n tags: selectedTags,\n symbol: row.symb.value,\n });\n\n if (!response.error) {\n onChangeRow({\n ...row,\n tags: {\n ...row.tags,\n value: selectedTags,\n },\n });\n // setTimeout(() => {\n // \twindow.location.reload();\n // }, 1000);\n }\n\n this.setState({\n isSaveTags: false,\n response: (\n \n ),\n });\n };\n\n renderChildren = (globalTags) => {\n const { row } = this.props;\n const { response, isSaveTags, selectedTags, isDisabledSaveButton } =\n this.state;\n\n return (\n <>\n
    \n

    {row.symb.value}

    \n Symbol\n
    \n\n
    \n tag.name)}\n />\n\n \n Save\n \n
    \n\n \n {response}\n \n );\n };\n\n render() {\n return (\n \n \n {this.renderChildren}\n \n \n );\n }\n}\n\nexport default connect(({ dates }) => ({\n day: dates.data[0].startDate.format('X'),\n}))(EditTags);\n","import React, { memo, useState, useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport cx from 'classnames';\n\nimport { useAxios } from 'utils';\nimport request from 'utils/request';\nimport Input from '../Input';\nimport Modal from '../OpenModal';\nimport { Symbols } from '../Symbols';\nimport styles from './AddNewTradingPlan.module.scss';\n\nexport const AddNewTradingPlan = memo(() => {\n const [{ loading, data }] = useAxios(\n {\n method: 'POST',\n data: new FormData(),\n url: '/db/schema/symbols',\n // headers: { 'Content-Type': 'multipart/form-data' },\n },\n { manual: true }\n );\n\n // const store = useSelector((store) => ({\n // // account: store.accounts.account,\n // }));\n\n const [isOpen, setIsOpen] = useState(false);\n const [state, setState] = useState({\n symbols: [],\n });\n\n const onClickAddPlan = useCallback(() => {\n // setIsOpen(true);\n }, []);\n\n const onHideModal = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n return null;\n\n return (\n
    \n \n {/* */}\n \n\n \n Add Trading Plan\n \n
    \n );\n});\n","import config from 'config/config';\nimport moment from 'moment';\n\nconst format = 'MM/DD/YYYY';\n\nfunction typeObject({ link, value, params }) {\n if (link && params) {\n const keys = Object.keys(params)\n .map((k) => `${k}=${params[k].toString().replace('\"', \"'\")}`)\n .join('&');\n return `${value}`;\n }\n\n return value.toString();\n}\n\nexport function separatorArray(arr, attr, tag = 'p') {\n if (arr.length > 10) {\n let dom = '';\n\n for (let i = 1, buf = [arr[0]]; i < arr.length; i++) {\n if (i % 10 === 0 || i === arr.length - 1) {\n dom += `<${tag} ${attr ? `attr = \"${attr}\"` : ''}>${buf.join(\n ', '\n )}`;\n buf = [];\n }\n\n buf.push(arr[i]);\n }\n\n return dom;\n }\n return arr.join(', ');\n}\n\nexport function getDate(d, isChangeTimeZone = true, separator = '-') {\n const nd = translateToUTCTime(d, isChangeTimeZone);\n const day = (nd.getDate() > 9 ? '' : '0') + nd.getDate().toString();\n const month =\n (nd.getMonth() + 1 > 9 ? '' : '0') + (nd.getMonth() + 1).toString();\n if (nd.getDay() === 6) {\n const weekStart = new Date(nd);\n weekStart.setDate(nd.getDate() - nd.getDay() + 1);\n const weekStartDay =\n (weekStart.getDate() > 9 ? '' : '0') + weekStart.getDate().toString();\n const weekStartMonth =\n (weekStart.getMonth() + 1 > 9 ? '' : '0') +\n (weekStart.getMonth() + 1).toString();\n let previousWeek = `${month}${separator}${weekStartDay}`;\n let currentWeek = day;\n if (weekStartMonth !== month) {\n previousWeek = `${weekStartMonth}${separator}${weekStartDay}`;\n currentWeek = `${month}${separator}${day}`;\n }\n return `WEEK - ${nd.getFullYear()}${separator}${previousWeek} - ${currentWeek}`;\n }\n return `${nd.getFullYear()}${separator}${month}${separator}${day}`;\n}\n\nexport function getTime(t) {\n return `${Math.floor(t / 60)}:${t % 60}`;\n}\n\nexport function getMonth(month) {\n // TODO: replace this to moment.months()\n const monthToText = {\n 1: 'January',\n 2: 'February',\n 3: 'March',\n 4: 'April',\n 5: 'May',\n 6: 'June',\n 7: 'July',\n 8: 'August',\n 9: 'September',\n 10: 'October',\n 11: 'November',\n 12: 'December',\n };\n\n return monthToText[month] || getDate(new Date(month * 1000));\n}\n\nexport function getMonthStart(month, year) {\n return new Date(year, month - 1, 1).getTime() / 1000;\n}\n\nexport function getMonthEnd(month, year) {\n return new Date(year, month, 0).getTime() / 1000;\n}\n\nexport function getDateWithMinutes(\n d,\n isChangeTimeZone = true,\n separator = '-'\n) {\n const nd = translateToUTCTime(d, isChangeTimeZone);\n\n const m = nd.getMinutes().toString();\n const h = nd.getHours().toString();\n return `${getDate(d, isChangeTimeZone, separator)} ${\n h.length === 2 ? h : `0${h}`\n }:${m.length === 2 ? m : `0${m}`}`;\n}\n\nexport function translateToUTCTime(d, isChangeTimeZone = true) {\n const utc = d.getTime() + d.getTimezoneOffset() * 60000;\n return new Date(utc + 3600000 * (isChangeTimeZone ? config.timeZone : 0));\n}\n\nexport function reductionForNumber(value, maxValueWithoutChange) {\n if (value === null || value === undefined) {\n return '0';\n }\n let result;\n let sign = '';\n\n if (maxValueWithoutChange && value < maxValueWithoutChange) {\n return thousandSeparator(value);\n }\n\n if (value < 0) {\n sign = '-';\n value *= -1;\n }\n\n const suffixes = ['', 'K', 'M', 'B', 'T'];\n const meaningFullDigits = parseInt(value, 10)\n .toString()\n .replace(/(\\d{3})/g, '_')\n .split('')\n .map((a) => (a === '_' ? 1 : 0));\n const mantissa = meaningFullDigits.filter((el) => !el).length;\n let suffixNum = meaningFullDigits.reduce((a, b) => a + b, 0);\n\n if (!mantissa) {\n suffixNum -= 1;\n }\n const shortValue = parseFloat(\n Number(\n suffixNum !== 0 ? value / Math.pow(1000, suffixNum) : value\n ).toPrecision(3)\n );\n\n result =\n (shortValue % 1 === 0 ? shortValue : shortValue.toFixed(2)) +\n suffixes[suffixNum];\n\n return sign + result;\n}\n\nexport const parseRangeDate = ([startDay, endDay]) => {\n endDay = moment.unix(endDay).utc();\n startDay = moment.unix(startDay).utc();\n\n // const formatEndDay = startDay.month() !== endDay.month() ? 'MM/DD' : 'DD';\n return `${startDay.format(format)} - ${endDay.format(format)}`;\n};\n\nexport function typeSeparator(cell, isDom = true) {\n if (typeof cell !== 'object') {\n return cell || '';\n }\n\n const { type, value } = cell;\n if (value === null || value === undefined) {\n return '';\n }\n\n switch (type) {\n case 'money':\n const money = thousandSeparator(value);\n return isDom\n ? `${money}`\n : money;\n\n case 'email': {\n return cell.parent\n ? `${value}`\n : value;\n }\n\n case 'array':\n return Array.isArray(value) ? separatorArray(value) : value;\n\n case 'list':\n // TODO: need to replace from: `h.list && h.list[cell] ? h.list[cell].name : ''`\n return cell.parent\n ? cell.parent.compareList\n ? cell.parent.compareList[value]\n : value\n : value;\n\n case 'time':\n return typeof value === 'number' ? getTime(value) : value;\n\n case 'tsrange':\n return Array.isArray(value)\n ? value.map((d) => getTime(new Date(d * 1000))).join(' - ')\n : value;\n\n case 'date':\n return typeof value === 'number'\n ? moment.utc(Number(value), 'X').format(format)\n : value;\n\n case 'datetime':\n return typeof value === 'number'\n ? moment.utc(Number(value), 'X').format(`${format} HH:mm`)\n : value;\n\n case 'object':\n return typeObject(cell);\n\n case 'month':\n return typeof value === 'number' ? getMonth(value) : value;\n\n case 'drange':\n return Array.isArray(value) ? parseRangeDate(value) : value;\n\n // case 'string':\n // \treturn value.length < 50\n // \t\t? value\n // \t\t: value.split('')\n // \t\t\t\t.map((s, i) => (i + 1) % 50 === 0 ? `${s}
    ` : s)\n // \t\t\t\t.join('');\n\n case 'week-totals': {\n const date = parseRangeDate(cell.values);\n return isDom ? `Week: ${date}` : `Week ${date}`;\n }\n\n default:\n return value;\n }\n}\n\nexport function thousandSeparator(str) {\n if (typeof str !== 'number') {\n return str || 0;\n }\n\n let isNegative = false;\n\n if (str < 0) {\n str = Math.abs(str);\n isNegative = true;\n }\n\n str = str.toFixed(2);\n\n const parts = `${str}`.split('.');\n const main = parts[0];\n const len = main.length;\n let output = '';\n let i = len - 1;\n\n while (i >= 0) {\n output = main.charAt(i) + output;\n if ((len - i) % 3 === 0 && i > 0) {\n output = `,${output}`;\n }\n --i;\n }\n\n if (parts.length > 1) {\n output += `.${parts[1]}`;\n }\n\n return isNegative ? `(${output})` : output;\n}\n","import React from 'react';\nimport { Typeahead, Token } from 'react-bootstrap-typeahead';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport cx from 'classnames';\n\nimport { thousandSeparator } from 'utils/separator';\n\nconst titleToken = ({ index, onRemove, className, name }) => (\n \n {name}\n \n);\n\nconst titleChild = ({ name, className }) => (\n {name}\n);\n\nconst renderWithTooltip =\n (isLoading, render, placement = 'right') =>\n ({ name, value }, onRemove, index) => {\n let tooltip;\n\n const className = cx(\n !isLoading && {\n 'red-label': value <= 0,\n 'green-label': value > 0,\n 'without-label': value === undefined,\n }\n );\n\n if (value) {\n tooltip = (\n {thousandSeparator(value)}\n );\n }\n\n const title = render({\n name,\n className,\n onRemove,\n index,\n });\n\n return !value ? (\n title\n ) : (\n \n {title}\n \n );\n };\n\nexport const Symbols = ({\n onKeyDown,\n isLoading,\n options,\n isAllSymbols,\n selected,\n onChange,\n multiple = true,\n}) => (\n \n);\n\nSymbols.defaultProps = {\n isLoading: false,\n};\n","import { format } from 'd3-format';\nimport * as d3 from 'd3-time';\nimport { timeFormat as timeFormat3D } from 'd3-time-format';\nimport { last } from 'react-stockcharts/lib/utils/index';\nimport { discontinuousTimeScaleProvider } from 'react-stockcharts/lib/scale/index';\nimport moment from 'moment';\nimport { reductionForNumber } from './separator';\n\nconst dateFormat = timeFormat3D('%m/%d/%Y');\n// const numberFormat = (number) => 0 < number && number < 1\n// ? number.toFixed(2)\n// : format('.2f')(number);\nexport const MAX_SHOW_ITEMS = 60;\n\nexport const displayTexts = {\n d: 'Date: ',\n h: ' High: ',\n l: ' Low: ',\n v: ' Volume: ',\n o: ' Open: ',\n c: ' Total Net: ',\n s: ' Stops: ',\n na: 'n/a',\n};\n\nexport const tickFormat = (number) =>\n (number > -10000 && number < 10000 ? format('.2f') : format('.4s'))(number);\n\nexport const candlesAppearance = {\n wickStroke: '#000000',\n fill(d) {\n return d.close > d.open\n ? 'rgba(82, 188, 119, .8)'\n : 'rgba(246, 109, 110, .8)';\n },\n stroke: '#000000',\n candleStrokeWidth: 1,\n widthRatio: 0.8,\n opacity: 1,\n};\n\nexport const parseDate = (date) =>\n new Date(moment.utc(date, 'X').format('MM/DD/YYYY HH:mm')); // .tz(config.timeZone)\n\nexport function yExtends(d) {\n const data = [].concat(d.stops, d.sell_price, d.buy_price);\n const min = Math.min(\n ...[].concat(data, d.low, d.open, d.close).filter(Boolean)\n );\n const max = Math.max(\n ...[].concat(data, d.high, d.open, d.close).filter(Boolean)\n );\n return [isFinite(min) ? min / 1.01 : null, isFinite(max) ? max * 1.01 : null];\n}\n\nexport function tooltipContent() {\n return ({ currentItem, xAccessor }) => {\n const { low, high, open, close, stops, gross, volume } = currentItem;\n\n return {\n x: dateFormat(xAccessor(currentItem)),\n stops:\n stops &&\n stops.length !== 0 &&\n stops.map((st) => {\n const r = Math.abs(st - open);\n\n if (r < 10000) {\n return r.toFixed(0);\n }\n\n return reductionForNumber(r);\n }),\n y: [\n {\n label: 'High',\n value: high && tickFormat(high - open),\n },\n {\n label: 'Low',\n value: low && tickFormat(low - open),\n },\n {\n label: 'Net',\n value: gross && tickFormat(gross),\n },\n {\n label: 'Total Net',\n value: close && tickFormat(close),\n },\n {\n label: 'Volume',\n value: volume && tickFormat(volume),\n },\n ].filter((line) => line.value),\n };\n };\n}\n\nfunction xScaleProvider(data) {\n const xScaleProvider = discontinuousTimeScaleProvider.inputDateAccessor(\n (d) => d.date\n );\n return xScaleProvider(data);\n}\n\nfunction getMaxShowItems(width) {\n return width < 1000 ? Math.floor(width / 40) : MAX_SHOW_ITEMS;\n}\n\nexport function getShowCounterItems(data, width) {\n const maxItems = getMaxShowItems(width);\n return maxItems < data.length ? data.length - maxItems : 0;\n}\n\nfunction xExtentsFunc(data, xAccessor, index) {\n return [xAccessor(last(data)), xAccessor(data[index])];\n}\n\nconst formatMillisecond = timeFormat3D('.%L');\nconst formatSecond = timeFormat3D(':%S');\nconst formatMinute = timeFormat3D('%I:%M');\nconst formatHour = timeFormat3D('%I %p');\nconst formatWeek = timeFormat3D('%b %d');\nconst formatMonth = timeFormat3D('%b');\nconst formatYear = timeFormat3D('%Y');\n\nfunction multiFormat(date) {\n return (\n d3.timeSecond(date) < date\n ? formatMillisecond\n : d3.timeMinute(date) < date\n ? formatSecond\n : d3.timeHour(date) < date\n ? formatMinute\n : d3.timeDay(date) < date\n ? formatHour\n : d3.timeMonth(date) < date\n ? formatWeek\n : d3.timeYear(date) < date\n ? formatMonth\n : formatYear\n )(date);\n}\n\nexport function getAttrForChart(\n dataChart,\n width,\n height,\n xExtentsFunction = xExtentsFunc\n) {\n const { data, xScale, xAccessor, displayXAccessor } =\n xScaleProvider(dataChart);\n\n const margin = {\n top: 20,\n left: 60,\n right: 60,\n bottom: 30,\n };\n\n const xExtents = xExtentsFunction(\n data,\n xAccessor,\n getShowCounterItems(data, width)\n );\n\n const maxItems = getMaxShowItems(width);\n const coeffShowItems = data.length < maxItems ? data.length * 1.25 : maxItems;\n const padding = width / (2 * coeffShowItems);\n\n return {\n canvas: {\n data,\n width,\n height,\n margin,\n xScale,\n xAccessor,\n xExtents,\n displayXAccessor,\n type: 'svg',\n zoomEvent: false,\n padding: {\n left: padding,\n right: padding,\n },\n },\n volumeHeight: Math.floor(height / 6),\n tickFormat: (\n (format) => (index) =>\n format(data[index].date)\n )(multiFormat),\n xGrid: {\n ticks: 8,\n axisAt: 'bottom',\n orient: 'bottom',\n tickStrokeOpacity: 0.1,\n innerTickSize: -1 * (height - margin.top - margin.bottom),\n },\n yGrid: {\n ticks: 5,\n tickStrokeOpacity: 0.1,\n tickFormat,\n innerTickSize: -1 * (width - margin.left - margin.right),\n },\n };\n}\n","import { timeFormat as timeFormat3D } from 'd3-time-format';\nimport moment from 'moment';\nimport { tickFormat } from './helpersCandleStick';\n\nconst paramsKeys = {\n title: ({ table }) => table.title.title,\n date: ({ additional }) => additional.date,\n accounts: ({ additional }) => additional.account,\n endOfMonth: getDateByParams,\n startOfMonth: getDateByParams,\n};\n\nfunction getDateByParams({ row, key }) {\n const date = moment()\n .year(row.year.value)\n .month(row.month.value - 1);\n return date[key === 'endDate' ? 'endOf' : 'startOf']('month')\n .utcOffset('+00:00', true)\n .unix();\n}\n\nexport const getParams = (params, row, table, additional) =>\n Object.keys(params).reduce((p, key) => {\n // TODO: remove LowerCase after when back-end replace params[key]\n const name =\n params[key].toString().charAt(0).toLowerCase() +\n params[key].toString().slice(1);\n\n p[key] = paramsKeys[name]\n ? paramsKeys[name]({\n row,\n table,\n additional,\n key,\n })\n : row[name]\n ? row[name].value\n : params[key];\n\n return p;\n }, {});\n\nexport const intervals = [1, 5, 15, 30, 60];\n\nexport const displayTexts = {\n d: 'Date: ',\n h: ' High: ',\n l: ' Low: ',\n v: ' Volume: ',\n o: ' Open: ',\n c: ' Close: ',\n na: 'n/a',\n};\n\nexport const format = {\n number: tickFormat,\n time: timeFormat3D('%H:%M'),\n date: timeFormat3D('%m/%d/%y'),\n};\n\nexport const tooltipContent =\n (duration) =>\n ({ currentItem, xAccessor }) => {\n const { low, high, open, close, details } = currentItem;\n\n const stock = [\n {\n label: 'Open',\n value: open && format.number(open),\n },\n {\n label: 'Close',\n value: close && format.number(close),\n },\n {\n label: 'High',\n value: high && format.number(high),\n },\n {\n label: 'Low',\n value: low && format.number(low),\n },\n ];\n\n if (duration) {\n const durationAttr = duration === 'Long' ? 'l' : 's';\n const max = currentItem[`${durationAttr}_max`];\n const change = currentItem[`${durationAttr}_change`];\n\n if (typeof max === 'number' && typeof change === 'number') {\n stock.push({\n label: 'Position change',\n value: `${change}%`,\n });\n stock.push({\n label: 'Total group position',\n value: `${max}%`,\n });\n }\n }\n\n const data = {\n x: format.date(xAccessor(currentItem)),\n time: format.time(currentItem.date),\n y: [].concat(stock).filter((line) => line.value || line.stroke), // , buy, sell\n };\n\n if (details) {\n data.table = {\n label: 'Table',\n header: ['Time', 'Side', 'Qty', 'Price', 'Position', 'Pnl'],\n values: details.map((r) => [\n moment.utc(r.execdate, 'X').format('HH:mm:ss'), // .tz(config.timeZone)\n r.side,\n r.qty,\n r.price,\n r.pos,\n r.pnl,\n ]),\n };\n }\n\n return data;\n };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport './InfoRow.scss';\nimport { typeSeparator } from 'utils/separator';\n\nconst InfoRow = ({ cells, styleCell, className }) => {\n const classNameRoot = cx('c-info-row', {\n [className]: !!className,\n });\n\n return (\n
    \n {cells.map(({ value, title, type, parent = {} }, index) => (\n
    \n \n {title || parent.title}\n :\n \n \n
    \n ))}\n
    \n );\n};\n\nInfoRow.defaultProps = {\n cells: [],\n styleCell: {},\n className: null,\n};\n\nInfoRow.propTypes = {\n styleCell: PropTypes.object,\n className: PropTypes.string,\n cells: PropTypes.array.isRequired,\n};\n\nexport default InfoRow;\n","import request from 'utils/request';\n\nexport const getTrades = async ({ data, url }) => {\n try {\n const reponse = await new Promise((success, error) =>\n request({\n url,\n data,\n error,\n success,\n })\n );\n\n return {\n ...reponse,\n data: reponse.data || [],\n };\n } catch (e) {\n return e;\n }\n};\n","import React from 'react';\nimport { DropdownButton, MenuItem } from 'react-bootstrap';\n\nconst Dropdown = ({ disabled, title, id, onSelect, allAccount, children }) => (\n \n {children.map((name) => (\n \n {name}\n \n ))}\n \n);\n\nexport default Dropdown;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { pickBy, identity } from 'lodash';\n\nimport { nest } from 'd3-collection';\nimport GenericChartComponent from 'react-stockcharts/lib/GenericChartComponent';\nimport { getAxisCanvas } from 'react-stockcharts/lib/GenericComponent';\n\nimport {\n hexToRGBA,\n isDefined,\n functor,\n plotDataLengthBarWidth,\n head,\n} from 'react-stockcharts/lib/utils';\n\nexport const CandleStickContext = React.createContext();\n\nclass CandleStick extends Component {\n static contextType = CandleStickContext;\n\n constructor(props) {\n super(props);\n this.renderSVG = this.renderSVG.bind(this);\n this.drawOnCanvas = this.drawOnCanvas.bind(this);\n }\n\n drawOnCanvas(ctx, moreProps) {\n drawOnCanvas(ctx, this.props, moreProps);\n }\n\n renderSVG(moreProps) {\n const { className, wickClassName, candleClassName } = this.props;\n const {\n xScale,\n chartConfig: { yScale },\n plotData,\n xAccessor,\n } = moreProps;\n\n const candleData = getCandleData(\n this.props,\n xAccessor,\n xScale,\n yScale,\n plotData,\n this.context\n );\n\n return (\n \n \n {getWicksSVG(candleData)}\n \n \n {getCandlesSVG(this.props, candleData)}\n \n \n );\n }\n\n render() {\n const { clip } = this.props;\n return (\n \n );\n }\n}\n\nCandleStick.propTypes = {\n className: PropTypes.string,\n wickClassName: PropTypes.string,\n candleClassName: PropTypes.string,\n widthRatio: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n classNames: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n fill: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n stroke: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n wickStroke: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n yAccessor: PropTypes.func,\n clip: PropTypes.bool,\n};\n\nCandleStick.defaultProps = {\n className: 'react-stockcharts-candlestick',\n wickClassName: 'react-stockcharts-candlestick-wick',\n candleClassName: 'react-stockcharts-candlestick-candle',\n yAccessor: (d) => ({\n open: d.open,\n high: d.high,\n low: d.low,\n close: d.close,\n }),\n classNames: (d) => (d.close > d.open ? 'up' : 'down'),\n width: plotDataLengthBarWidth,\n wickStroke: '#000000',\n // wickStroke: d => d.close > d.open ? \"#6BA583\" : \"#FF0000\",\n fill: (d) => (d.close > d.open ? '#6BA583' : '#FF0000'),\n // stroke: d => d.close > d.open ? \"#6BA583\" : \"#FF0000\",\n stroke: '#000000',\n candleStrokeWidth: 0.5,\n // stroke: \"none\",\n widthRatio: 0.8,\n opacity: 0.5,\n clip: true,\n};\n\nfunction getTriangle({ x1, y1, x2, y2, x3, className }) {\n const points = `${x1},${y1} ${x2},${y1} ${x3},${y2}`;\n return ;\n}\n\nfunction getWicksSVG(candleData) {\n return candleData.map(({ wick: d, className }, idx) => {\n // if (!d.isShow) {\n // \treturn null;\n // }\n\n const trs = d.triangles;\n\n return (\n \n {d.y1 < d.y2 && }\n {d.y3 < d.y4 && }\n\n {d.stops.map((s, index) => (\n \n ))}\n\n {Object.keys(trs)\n .filter((keys) => trs[keys].isShow)\n .map((keys) => getTriangle(trs[keys].pos))}\n \n );\n });\n}\n\nfunction getCandlesSVG(props, candleData) {\n /* eslint-disable react/prop-types */\n const { opacity, candleStrokeWidth } = props;\n /* eslint-enable react/prop-types */\n\n return candleData.map((d, idx) => {\n if (d.width <= 1) {\n return (\n \n );\n }\n if (d.height === 0) {\n return (\n \n );\n }\n return (\n \n );\n });\n}\n\nfunction drawOnCanvas(ctx, props, moreProps) {\n const { opacity, candleStrokeWidth } = props;\n const {\n xScale,\n chartConfig: { yScale },\n plotData,\n xAccessor,\n } = moreProps;\n\n // const wickData = getWickData(props, xAccessor, xScale, yScale, plotData);\n const candleData = getCandleData(\n props,\n xAccessor,\n xScale,\n yScale,\n plotData,\n this.context\n );\n\n const wickNest = nest()\n .key((d) => d.wick.stroke)\n .entries(candleData);\n\n wickNest.forEach((outer) => {\n const { key, values } = outer;\n ctx.strokeStyle = key;\n ctx.fillStyle = key;\n values.forEach((each) => {\n const d = each.wick;\n\n ctx.fillRect(d.x - 0.5, d.y1, 1, d.y2 - d.y1);\n ctx.fillRect(d.x - 0.5, d.y3, 1, d.y4 - d.y3);\n });\n });\n\n const candleNest = nest()\n .key((d) => d.stroke)\n .key((d) => d.fill)\n .entries(candleData);\n\n candleNest.forEach((outer) => {\n const { key: strokeKey, values: strokeValues } = outer;\n if (strokeKey !== 'none') {\n ctx.strokeStyle = strokeKey;\n ctx.lineWidth = candleStrokeWidth;\n }\n strokeValues.forEach((inner) => {\n const { key, values } = inner;\n ctx.fillStyle = head(values).width <= 1 ? key : hexToRGBA(key, opacity);\n\n values.forEach((d) => {\n if (d.width <= 1) {\n ctx.fillRect(d.x - 0.5, d.y, 1, d.height);\n } else if (d.height === 0) {\n ctx.fillRect(d.x, d.y - 0.5, d.width, 1);\n } else {\n ctx.fillRect(d.x, d.y, d.width, d.height);\n if (strokeKey !== 'none') ctx.strokeRect(d.x, d.y, d.width, d.height);\n }\n });\n });\n });\n}\n\nfunction getCandleData(props, xAccessor, xScale, yScale, plotData, duration) {\n const { wickStroke: wickStrokeProp } = props;\n const wickStroke = functor(wickStrokeProp);\n\n const { classNames, fill: fillProp, stroke: strokeProp, yAccessor } = props;\n const className = functor(classNames);\n\n const fill = functor(fillProp);\n const stroke = functor(strokeProp);\n\n const widthFunctor = functor(props.width);\n const width = widthFunctor(props, {\n xScale,\n xAccessor,\n plotData,\n });\n\n /*\n\tconst candleWidth = Math.round(width);\n\tconst offset = Math.round(candleWidth === 1 ? 0 : 0.5 * width);\n\t*/\n const trueOffset = 0.5 * width;\n const offset =\n trueOffset > 0.7 ? Math.round(trueOffset) : Math.floor(trueOffset);\n\n // eslint-disable-next-line prefer-const\n let candles = [];\n\n for (let i = 0; i < plotData.length; i++) {\n const d = plotData[i];\n if (isDefined(yAccessor(d).close)) {\n const x = Math.round(xScale(xAccessor(d)));\n // const x = Math.round(xScale(xAccessor(d)) - offset);\n\n const ohlc = yAccessor(d);\n const y = Math.round(yScale(Math.max(ohlc.open, ohlc.close)));\n const height = Math.round(\n Math.abs(yScale(ohlc.open) - yScale(ohlc.close))\n );\n\n let triangles = {};\n\n const isLong = duration === 'Long';\n\n const compareData = pickBy(\n {\n max: isLong ? d.l_max : d.s_max,\n change: isLong ? d.l_change : d.s_change,\n },\n identity\n );\n\n const yMax = Math.round(yScale(Math.max(ohlc.open, ohlc.close)));\n const yMin = Math.round(yScale(Math.min(ohlc.open, ohlc.close)));\n\n if (d.details) {\n triangles = {\n red: {\n isShow: d.details.some((d) => d.side !== 'B'),\n pos: {\n x1: x - offset,\n x2: x + offset,\n x3: x,\n y1: yMax - 15,\n y2: yMax - 5,\n className: 'sell',\n },\n },\n green: {\n isShow: d.details.some((d) => d.side === 'B'),\n pos: {\n x1: x + offset,\n x2: x - offset,\n x3: x,\n y1: yMin + 15,\n y2: yMin + 5,\n className: 'buy',\n },\n },\n };\n }\n\n if (compareData.change && compareData.max) {\n const { red, green } = triangles;\n const { change } = compareData;\n\n triangles = {\n ...triangles,\n blue: {\n isShow: isLong ? change > 0 : change < 0,\n pos: {\n x1: x - offset,\n x2: x + offset,\n x3: x,\n y1: green && green.isShow ? yMin + 30 : yMin + 15,\n y2: green && green.isShow ? yMin + 20 : yMin + 5,\n className: 'buy blue',\n },\n },\n yellow: {\n isShow: isLong ? change < 0 : change > 0,\n pos: {\n x1: x + offset,\n x2: x - offset,\n x3: x,\n y1: red && red.isShow ? yMax - 30 : yMax - 15,\n y2: red && red.isShow ? yMax - 20 : yMax - 5,\n className: 'sell yellow',\n },\n },\n };\n }\n\n candles.push({\n // type: \"line\"\n x: x - offset,\n y,\n wick: {\n // isShow: (ohlc.high || ohlc.low),\n stroke: wickStroke(ohlc),\n x,\n y1: Math.round(yScale(ohlc.high)),\n y2: y,\n y3: y + height, // Math.round(yScale(Math.min(ohlc.open, ohlc.close))),\n y4: Math.round(yScale(ohlc.low)),\n stops: plotData[i].stops\n ? plotData[i].stops.map((stop) => ({\n x1: x - offset,\n x2: x + offset,\n y: Math.round(yScale(stop)),\n }))\n : [],\n triangles,\n },\n height,\n width: offset * 2,\n className: className(ohlc),\n fill: fill(ohlc),\n stroke: stroke(ohlc),\n direction: ohlc.close - ohlc.open,\n });\n }\n }\n\n return candles;\n}\n\nexport default CandleStick;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport GenericComponent from 'react-stockcharts/lib/GenericComponent';\n\nimport {\n first,\n last,\n isNotDefined,\n isDefined,\n hexToRGBA,\n} from 'react-stockcharts/lib/utils';\n\nconst PADDING = 5;\nconst X = 10;\nconst Y = 10;\n\nclass HoverTooltip extends Component {\n constructor(props) {\n super(props);\n this.renderSVG = this.renderSVG.bind(this);\n this.drawOnCanvas = this.drawOnCanvas.bind(this);\n }\n\n drawOnCanvas(ctx, moreProps) {\n const pointer = helper(this.props, moreProps, ctx);\n const { height } = moreProps;\n\n if (isNotDefined(pointer)) return null;\n drawOnCanvas(ctx, this.props, this.context, pointer, height, moreProps);\n }\n\n render() {\n return (\n \n );\n }\n\n renderSVG(moreProps) {\n const pointer = helper(this.props, moreProps);\n\n if (isNotDefined(pointer)) return null;\n\n const { bgFill, bgOpacity, backgroundShapeSVG, tooltipSVG } = this.props;\n const { bgheight, bgwidth } = this.props;\n const { height } = moreProps;\n\n const { x, y, centerX, pointWidth, bgSize } = pointer;\n\n const bgShape =\n isDefined(bgwidth) && isDefined(bgheight)\n ? { width: bgwidth, height: bgheight }\n : bgSize;\n\n return (\n \n \n \n {backgroundShapeSVG(this.props, bgShape)}\n {tooltipSVG(this.props, pointer)}\n \n \n );\n }\n}\n\nHoverTooltip.propTypes = {\n chartId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yAccessor: PropTypes.func,\n tooltipSVG: PropTypes.func,\n backgroundShapeSVG: PropTypes.func,\n bgwidth: PropTypes.number,\n bgheight: PropTypes.number,\n bgFill: PropTypes.string.isRequired,\n bgOpacity: PropTypes.number.isRequired,\n tooltipContent: PropTypes.func.isRequired,\n origin: PropTypes.oneOfType([PropTypes.array, PropTypes.func]).isRequired,\n fontFamily: PropTypes.string,\n fontSize: PropTypes.number,\n};\n\nHoverTooltip.contextTypes = {\n margin: PropTypes.object.isRequired,\n ratio: PropTypes.number.isRequired,\n};\n\nHoverTooltip.defaultProps = {\n // bgwidth: 150,\n // bgheight: 50,\n tooltipSVG,\n tooltipCanvas,\n origin,\n fill: '#D4E2FD',\n bgFill: '#8ed7fb',\n bgOpacity: 0.5,\n stroke: '#9B9BFF',\n fontFill: '#16638f',\n opacity: 0.8,\n backgroundShapeSVG,\n backgroundShapeCanvas,\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif',\n fontSize: 12,\n};\n\nfunction backgroundShapeSVG({ fill, stroke, opacity }, { height, width }) {\n return (\n \n );\n}\n\nfunction createLabel(\n { stroke, label, value },\n i,\n x,\n y,\n tspans,\n fontSize,\n width,\n maxLength\n) {\n tspans.push(\n \n {label}:{' '}\n \n );\n tspans.push(\n \n {value}\n \n );\n}\n\nfunction tooltipSVG(props, pointer) {\n const { content, bgSize } = pointer;\n const { fontFamily, fontSize, fontFill } = props;\n\n let bTable;\n let hTable;\n const tspans = [];\n const startY = Y + fontSize;\n\n const { width } = bgSize;\n const { y, x, time, stops, table, stroke } = content;\n\n let textY = y.length ? fontSize : 0;\n const maxLength = Math.max.apply(\n null,\n y.map((el) => el.value.toString().length)\n );\n\n for (let i = 0, r = 1; i < y.length; i += 1, r += 1) {\n textY = fontSize * r + startY + 2;\n createLabel(y[i], i, X, textY, tspans, fontSize, width, maxLength);\n }\n\n if (stops) {\n textY += fontSize + fontSize;\n const arr = stops.slice(', ');\n tspans.push(\n \n Stops:\n \n );\n\n for (let i = 0, buf = []; i < arr.length; i++) {\n buf.push(arr[i]);\n\n if ((i + 1) % 3 === 0 || i === arr.length - 1) {\n tspans.push(\n \n {buf.join(', ')}\n \n );\n if (i !== arr.length - 1) textY += fontSize;\n buf = [];\n }\n }\n }\n\n if (table) {\n const h = table.header;\n const v = table.values;\n const widthCol = table.width;\n textY += fontSize;\n\n hTable = h.map((c, i) => (\n \n {c}\n \n ));\n textY += fontSize;\n bTable = v.reduce(\n (p, r, i) => [\n ...p,\n ...r.map((c, j) => (\n \n {c}\n \n )),\n ],\n []\n );\n }\n\n return (\n \n \n {x}\n \n \n {time}\n \n {tspans}\n {hTable}\n {bTable}\n \n );\n}\n\nfunction backgroundShapeCanvas(props, { width, height }, ctx) {\n const { fill, stroke, opacity } = props;\n\n ctx.fillStyle = hexToRGBA(fill, opacity);\n ctx.strokeStyle = stroke;\n ctx.beginPath();\n ctx.rect(0, 0, width, height);\n ctx.fill();\n ctx.stroke();\n}\n\nfunction tooltipCanvas({ fontFamily, fontSize, fontFill }, content, ctx) {\n const startY = Y + fontSize;\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontFill;\n ctx.textAlign = 'left';\n ctx.fillText(content.x, X, startY);\n\n for (let i = 0; i < content.y.length; i++) {\n const y = content.y[i];\n const textY = startY + fontSize * (i + 1);\n ctx.fillStyle = y.stroke || fontFill;\n ctx.fillText(y.label, X, textY);\n\n ctx.fillStyle = fontFill;\n ctx.fillText(`: ${y.value}`, X + ctx.measureText(y.label).width, textY);\n }\n}\n\nfunction drawOnCanvas(ctx, props, context, pointer, height) {\n const { margin, ratio } = context;\n const { bgFill, bgOpacity } = props;\n const { backgroundShapeCanvas, tooltipCanvas } = props;\n\n const originX = 0.5 * ratio + margin.left;\n const originY = 0.5 * ratio + margin.top;\n\n ctx.save();\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.scale(ratio, ratio);\n\n ctx.translate(originX, originY);\n\n const { x, y, content, centerX, pointWidth, bgSize } = pointer;\n\n ctx.fillStyle = hexToRGBA(bgFill, bgOpacity);\n ctx.beginPath();\n ctx.rect(centerX - pointWidth / 2, 0, pointWidth, height);\n ctx.fill();\n\n ctx.translate(x, y);\n backgroundShapeCanvas(props, bgSize, ctx);\n tooltipCanvas(props, content, ctx);\n\n ctx.restore();\n}\n\nfunction getWidth({ table, y, x, time, stops }, fontSize, ctx) {\n const length = {\n first: 0,\n second: 0,\n };\n let height = 0;\n let tableLength = 0;\n\n if (table && table.header) {\n let last = 0;\n table.width = [last];\n height += table.values.length + 2;\n\n for (let i = 0; i < table.header.length; i++) {\n const h = ctx.measureText(table.header[i]).width;\n last +=\n Math.max(h, ...table.values.map((c) => ctx.measureText(c[i]).width)) +\n PADDING * 2;\n table.width.push(last);\n }\n\n tableLength = last;\n }\n\n if (stops) {\n height += 1;\n const arr = stops.slice(', ');\n for (let i = 0; i < arr.length; i++) {\n if ((i + 1) % 3 === 0 || i === arr.length - 1) {\n height += 1;\n }\n }\n }\n\n const data = [x, time, ...y.map(({ label, value }) => `${label}: ${value}`)];\n\n for (let i = 0; i < data.length; i += 2) {\n length.first = Math.ceil(\n Math.max(length.first, ctx.measureText(data[i]).width)\n );\n }\n\n for (let i = 1; i < data.length; i += 2) {\n length.second = Math.ceil(\n Math.max(length.first, ctx.measureText(data[i]).width)\n );\n }\n\n const yHeight = y.length;\n const yLength = length.first + length.second + PADDING * 3;\n return {\n width: Math.max(yLength, tableLength),\n // height: [height, x, ...y].length / 2 * fontSize,\n height: (height + yHeight) * fontSize - 2,\n };\n}\n\nfunction calculateTooltipSize(\n { fontFamily, fontSize, fontFill },\n content,\n ctx\n) {\n if (isNotDefined(ctx)) {\n const canvas = document.createElement('canvas');\n ctx = canvas.getContext('2d');\n }\n\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontFill;\n ctx.textAlign = 'left';\n\n const { width, height } = getWidth(content, fontSize, ctx);\n\n return {\n width: width + 2 * X,\n height: height + 4 * Y,\n };\n}\n\nfunction normalizeX(x, bgSize, pointWidth, width) {\n const maxRightSide = x + pointWidth / 2 + bgSize.width;\n\n if (maxRightSide < width) {\n return x + pointWidth / 2 + PADDING;\n }\n\n const leftSide = x - bgSize.width - pointWidth / 2 - PADDING;\n\n if (leftSide > 0) {\n return leftSide;\n }\n\n return width - bgSize.width - PADDING;\n\n const maxLeftSide = width - bgSize.width;\n\n return Math.min(width - bgSize.width, x + pointWidth + bgSize.width);\n return x < bgSize.width + (X + PADDING) * 5\n ? x + pointWidth / 2 + PADDING\n : x - bgSize.width - pointWidth / 2 - PADDING;\n}\n\nfunction normalizeY(y, bgSize) {\n return y - bgSize.height <= 0 ? y + PADDING : y - bgSize.height - PADDING;\n}\n\nfunction origin(props, moreProps, bgSize, pointWidth) {\n const { chartId, yAccessor } = props;\n const { mouseXY, xAccessor, currentItem, xScale, chartConfig, width } =\n moreProps;\n let y = last(mouseXY);\n\n const xValue = xAccessor(currentItem);\n let x = Math.round(xScale(xValue));\n\n if (\n isDefined(chartId) &&\n isDefined(yAccessor) &&\n isDefined(chartConfig) &&\n isDefined(chartConfig.findIndex)\n ) {\n const yValue = yAccessor(currentItem);\n const chartIndex = chartConfig.findIndex((x) => x.id === chartId);\n\n y = Math.round(chartConfig[chartIndex].yScale(yValue));\n }\n\n x = normalizeX(x, bgSize, pointWidth, width);\n y = normalizeY(y, bgSize);\n\n return [x, y];\n}\n\nfunction helper(props, moreProps, ctx) {\n const { show, xScale, currentItem, plotData } = moreProps;\n const { origin, tooltipContent } = props;\n const { xAccessor, displayXAccessor } = moreProps;\n\n if (!show || isNotDefined(currentItem)) return;\n\n const xValue = xAccessor(currentItem);\n\n if (!show || isNotDefined(xValue)) return;\n\n const content = tooltipContent({ currentItem, xAccessor: displayXAccessor });\n const centerX = xScale(xValue);\n const pointWidth =\n Math.abs(\n xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)))\n ) /\n (plotData.length - 1);\n\n const bgSize = calculateTooltipSize(props, content, ctx);\n\n const [x, y] = origin(props, moreProps, bgSize, pointWidth);\n\n return {\n x,\n y,\n content,\n centerX,\n pointWidth,\n bgSize,\n };\n}\n\nexport default HoverTooltip;\n","import React from 'react';\nimport { format } from 'd3-format';\nimport { timeFormat } from 'd3-time-format';\nimport { BarSeries, AreaSeries } from 'react-stockcharts/lib/series';\nimport { XAxis, YAxis } from 'react-stockcharts/lib/axes';\nimport { OHLCTooltip } from 'react-stockcharts/lib/tooltip';\nimport { Chart, ChartCanvas, ZoomButtons } from 'react-stockcharts';\nimport {\n CrossHairCursor,\n MouseCoordinateX,\n MouseCoordinateY,\n} from 'react-stockcharts/lib/coordinates';\n\nimport {\n yExtends,\n tickFormat,\n getAttrForChart,\n candlesAppearance,\n MAX_SHOW_ITEMS,\n} from 'utils/helpersCandleStick';\nimport { tooltipContent, displayTexts } from 'utils/trades';\n\nimport CandleStick, { CandleStickContext } from 'components/common/CandleStick';\nimport HoverTooltip from 'components/common/HoverTooltip';\nimport { ServiceNoContentPlaceholder } from 'components/common/ServicePlaceholder';\n\nconst isTimeNotAllowed = (date) => {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n\n return hours < 9 || (hours === 9 && minutes <= 30) || 16 <= hours;\n};\n\nconst fillBackground = (height) => (d) => {\n if (isTimeNotAllowed(d.date)) {\n return height;\n }\n};\n\nfunction xExtents(data, xAccessor, index) {\n let startIndex = index;\n let lastIndex = data.length - 1;\n\n for (let i = lastIndex; i > 0; i--) {\n const hours = data[i].date.getHours();\n const minutes = data[i].date.getMinutes();\n\n if (hours < 9 || (hours === 9 && minutes <= 30)) {\n const divide = Math.floor(MAX_SHOW_ITEMS / 2);\n\n if (i + divide < lastIndex) {\n startIndex = i + divide;\n lastIndex = divide < i ? i - divide : i;\n } else {\n const startMiddle = lastIndex - (lastIndex - i) * 2;\n startIndex = 0 <= startMiddle ? startMiddle : 0;\n }\n\n break;\n }\n }\n\n return [xAccessor(data[lastIndex]), xAccessor(data[startIndex])];\n}\n\nconst Graph = (props) => {\n const { data, width, height, suffix, duration, onReset, onRepeat } = props;\n\n if (!data || data.length === 0) {\n return ;\n }\n\n const { xGrid, yGrid, canvas, volumeHeight } = getAttrForChart(\n data,\n width,\n height,\n xExtents\n );\n\n return (\n \n \n [0, h - height + 50]}\n >\n \n \n\n d.volume}\n padding={{ top: 5, bottom: 0 }}\n origin={(_, h) => [0, h - volumeHeight]}\n >\n \n \n \n \n d.volume}\n fill={(d) => (d.close > d.open ? '#6BA583' : '#FF0000')}\n />\n \n\n \n \n \n\n \n \n \n\n [0, h - height + 50]}\n >\n (d ? format('.3s')(d) : 'n/a')}\n />\n \n \n \n\n \n \n \n );\n};\n\nexport default Graph;\n","import request from 'utils/request';\n\nimport { parseDate } from 'utils/helpersCandleStick';\n\nconst MSFT_API = '/api/stock/';\n\nconst isIntervalMSFT = (data, type) =>\n data.some(\n (item) =>\n typeof item[`${type}_max`] === 'number' &&\n typeof item[`${type}_change`] === 'number'\n );\n\nfunction getSwitcherForMSFT(data) {\n return [\n isIntervalMSFT(data, 'l') && 'Long',\n isIntervalMSFT(data, 's') && 'Short',\n ].filter(Boolean);\n}\n\nexport const getDataMSFT = async (data) => {\n try {\n const response =\n (await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: MSFT_API,\n })\n )) || [];\n\n // TODO: replace to moment\n const result = response\n .filter((item) => item.close !== undefined || item.open !== undefined)\n .map((d) => ({\n ...d,\n date: parseDate(d.date),\n }));\n\n if (!result || result.length === 0) {\n return {\n data: [],\n switcherDuration: [],\n };\n }\n\n console.log('OHLC with row details:');\n console.table(\n result\n .map((data, index) => ({\n ...data,\n index,\n }))\n .filter((d) => d.details)\n );\n\n return {\n data: result,\n switcherDuration: getSwitcherForMSFT(result),\n };\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { pickBy, isUndefined, debounce } from 'lodash';\n\nimport './OHLC.scss';\nimport Request from 'components/common/Request';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\n\nimport { intervals } from 'utils/trades';\nimport Dropdown from './Dropdown';\nimport Graph from './Graph';\nimport { getDataMSFT } from './dataProvider';\n\nconst selectAccounts = 'Select accounts...';\n\nclass OHLC extends Component {\n state = {\n suffix: 0,\n data: null,\n minutes: 5,\n width: 1200,\n switcherDuration: [],\n };\n\n ohlc = React.createRef();\n\n constructor(props) {\n super(props);\n this.getWidthChart = this.getWidthChart.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.primary && props.primary !== state.isOpenMenu) {\n return {\n isOpenMenu: props.primary.isOpen,\n };\n }\n return null;\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (nextState.isOpenMenu !== this.state.isOpenMenu) {\n this.getWidthChart();\n }\n return true;\n }\n\n componentDidMount() {\n this.getWidthChart();\n window.addEventListener('resize', this.getWidthChart);\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.getWidthChart);\n }\n\n getParamsOHLC = () => {\n const { acc, params, accounts } = this.props;\n const { minutes, compareAcc } = this.state;\n\n return pickBy(\n {\n ...params,\n acc,\n minutes,\n id_user_group: accounts[compareAcc] && accounts[compareAcc][0],\n },\n (val) => !isUndefined(val)\n );\n };\n\n onSelectAccounts = (compareAcc) => {\n this.setState({\n compareAcc: compareAcc !== selectAccounts ? compareAcc : null,\n });\n };\n\n onSelectInterval = (minutes) => {\n if (minutes === this.state.minutes) {\n return;\n }\n\n this.setState({\n minutes,\n data: null,\n errors: null,\n });\n };\n\n handleResponse = (response) => {\n const { data, error, switcherDuration } = response;\n\n if (error) {\n this.setState({\n errors: ,\n });\n }\n\n this.setState({\n data: data.length === 1 ? [...data, ...data] : data,\n switcherDuration,\n repeatRequest: false,\n selectedSwitcherDuration:\n switcherDuration.length !== 0 ? switcherDuration[0] : null,\n });\n };\n\n getWidthChart = debounce(() => {\n if (!this.ohlc.current || this.ohlc.current.offsetWidth < 0) {\n return;\n }\n\n const screenHeight = window.screen.height;\n const innerHeight = window.innerHeight - 200;\n\n let height = innerHeight < 500 ? 500 : innerHeight;\n\n if (screenHeight < innerHeight) {\n height = screenHeight - 200;\n }\n\n this.setState({\n height,\n isChange: false,\n width: this.ohlc.current.offsetWidth,\n });\n }, 300);\n\n onReset = () => {\n const { suffix } = this.state;\n this.setState({\n suffix: suffix + 1,\n });\n };\n\n onRepeat = () => {\n this.setState({\n repeatRequest: true,\n });\n };\n\n onSelectSwitcher = (selectedSwitcherDuration) => {\n this.setState({\n selectedSwitcherDuration,\n });\n };\n\n // onClickCompare = () => {\n // \tthis.setState({\n // \t\tdata: null,\n // \t\terrors: null,\n // \t});\n // };\n\n render() {\n const { accounts } = this.props;\n const {\n data,\n width,\n height,\n errors,\n suffix,\n minutes,\n compareAcc,\n repeatRequest,\n switcherDuration,\n selectedSwitcherDuration,\n } = this.state;\n\n return (\n
    \n

    Trades on chart

    \n

    Compare execution with

    \n\n
    \n
    \n \n\n {switcherDuration.length !== 0 && (\n \n )}\n\n {/* */}\n
    \n\n \n
    \n\n
    \n {errors || (\n \n \n \n )}\n
    \n
    \n );\n }\n}\n\nexport default connect(({ accounts, burgerMenu }) => ({\n acc: accounts.saved[0],\n primary: burgerMenu.primary,\n accounts: {\n 'All Users': [0],\n ...accounts.compareWith,\n },\n}))(OHLC);\n","import request from 'utils/request';\n\nconst API_DEL_TAG = '/api/trade/tags/del/';\nconst API_PUT_TAG = '/api/trade/tags/put/';\n\nexport const setTrade = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_PUT_TAG,\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nexport const removeTag = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_DEL_TAG,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport {\n Modal,\n Button,\n ModalBody,\n ModalTitle,\n ModalHeader,\n ModalFooter,\n} from 'react-bootstrap';\n\nimport './Tag.scss';\nimport Alert from 'components/common/Alert';\nimport Loading from 'components/common/Loading';\nimport { setTrade } from '../dataProvider';\n\nclass Tag extends Component {\n state = {\n alert: null,\n isOpen: true,\n isLoading: false,\n value: this.props.tag.value,\n };\n\n input = React.createRef();\n\n onShowModal = () => {\n if (this.input && this.input.current) {\n this.input.current.focus();\n }\n };\n\n handleClose = () => {\n this.setState({\n isOpen: false,\n });\n const { onClose } = this.props;\n onClose && onClose('edit');\n };\n\n handleChange = ({ target }) => {\n this.setState({\n value: target.value,\n });\n };\n\n handleClick = async (e) => {\n e.preventDefault();\n const { tag, tags, isAdd, idTrade, onChangedTag } = this.props;\n const { value } = this.state;\n\n if (tags[value]) {\n this.setState({\n alert: ,\n });\n return;\n }\n\n this.setState({\n isLoading: true,\n });\n\n const data = {\n id: idTrade,\n tags: value,\n };\n\n if (tag.id) {\n data.id_tags = tag.id;\n }\n\n const response = await setTrade(data);\n\n if (response.error) {\n this.setState({\n alert: (\n \n ),\n isLoading: false,\n });\n } else {\n this.setState({\n alert: null,\n isOpen: false,\n isLoading: false,\n });\n\n onChangedTag(response || tag.id, value);\n }\n };\n\n render() {\n const { tag, isAdd } = this.props;\n\n const { alert, value, isOpen, isLoading } = this.state;\n\n const disabled = !value || value === tag.value || isLoading;\n\n return (\n \n
    \n \n {isAdd ? 'Add' : 'Edit'} personal tag\n \n\n \n \n\n {!isLoading && alert}\n \n \n\n \n \n {isAdd ? 'Create' : 'Edit'}\n \n\n \n \n
    \n \n );\n }\n}\n\nexport default Tag;\n","import React from 'react';\nimport { DropdownButton, MenuItem } from 'react-bootstrap';\n\nconst Dropdown = ({\n id,\n tags,\n title,\n keyAdd,\n onSelect,\n onClickEditTag,\n onClickRemoveTag,\n}) => (\n \n Template\n {Object.keys(tags.global).map((name) => (\n \n {name}\n \n ))}\n\n \n\n Personal\n\n {Object.keys(tags.personal)\n .sort()\n .map((name) => (\n \n {name}\n
    \n
    \n
    \n ))}\n\n \n +\n
    \n);\n\nexport default Dropdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './LabelTags.scss';\n\nconst LabelTags = ({ labels, onRemoveTag, isEditLabel }) => (\n
    \n {labels.map((label) => (\n
    \n {label}\n {isEditLabel && (\n \n )}\n
    \n ))}\n
    \n);\n\nLabelTags.defaultProps = {\n labels: [],\n};\n\nLabelTags.propTypes = {\n labels: PropTypes.array,\n isEditLabel: PropTypes.bool,\n onRemoveTag: PropTypes.func.isRequired,\n};\n\nexport default LabelTags;\n","import React, { Component } from 'react';\nimport {\n Modal,\n Button,\n ModalBody,\n ModalTitle,\n ModalHeader,\n ModalFooter,\n} from 'react-bootstrap';\n\nimport Alert from 'components/common/Alert';\nimport Loading from 'components/common/Loading';\nimport { removeTag } from './dataProvider';\n\nclass Tag extends Component {\n state = {\n alert: null,\n isOpen: true,\n isLoading: false,\n };\n\n handleClose = () => {\n this.setState({\n isOpen: false,\n });\n const { onClose } = this.props;\n onClose && onClose('remove');\n };\n\n handleClick = async () => {\n const { tag, idTrade, onRemovedTag } = this.props;\n\n this.setState({\n isLoading: true,\n });\n\n const data = {\n id: idTrade,\n id_tags: tag.id,\n };\n\n const response = await removeTag(data);\n\n if (response.error) {\n this.setState({\n alert: (\n \n ),\n isLoading: false,\n });\n } else {\n this.setState({\n alert: null,\n isOpen: false,\n isLoading: false,\n });\n onRemovedTag();\n }\n };\n\n render() {\n const { alert, isOpen, isLoading } = this.state;\n const {\n tag: { value },\n } = this.props;\n\n return (\n \n \n Remove tag\n \n\n \n

    \n Are you sure to want remove this tag: [{value}\n ]?\n

    \n {alert}\n \n
    \n\n \n \n \n \n \n );\n }\n}\n\nexport default Tag;\n","import React from 'react';\nimport cx from 'classnames';\n\nimport './InfoColumns.scss';\nimport { typeSeparator } from 'utils/separator';\n\nconst ColumnInfo = ({ value, title }) => (\n
    \n {title}\n \n
    \n);\n\nconst InfoColumns = ({ gross, volume, fees, net }) => (\n
    \n \n \n \n \n
    \n);\n\nexport default InfoColumns;\n","import React, { memo, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\n\nconst EnteringTime = memo((props) => {\n const { name, price } = props;\n\n const date = useMemo(\n () =>\n props.date\n ? moment.utc(props.date, 'X').format('MM/DD/YYYY')\n : 'Pending date',\n [props.date]\n );\n const time = useMemo(\n () =>\n props.date\n ? moment.utc(props.date, 'X').format('HH:mm:ss')\n : 'Pending date',\n [props.date]\n );\n\n return (\n
    \n {name}\n\n
    \n
    \n Date: \n {date}\n
    \n\n
    \n Time: \n {time}\n
    \n\n
    \n Price: \n {price.toFixed(2)}\n
    \n
    \n
    \n );\n});\n\nEnteringTime.propTypes = {\n date: PropTypes.number,\n name: PropTypes.string.isRequired,\n price: PropTypes.number.isRequired,\n};\n\nexport default EnteringTime;\n","import React, { Component } from 'react';\nimport cx from 'classnames';\nimport { omit } from 'lodash';\n\nimport './Trade.scss';\nimport Alert from 'components/common/Alert';\nimport Loading from 'components/common/Loading';\nimport { setTrade } from './dataProvider';\n\nimport Tag from './Tag';\nimport Dropdown from './Dropdown';\nimport LabelTags from './LabelTags';\nimport RemoveTag from './RemoveTag';\nimport InfoColumns from '../InfoColumns';\nimport EnteringTime from './EnteringTime';\n\nconst defaultTitle = 'Select tag';\nconst eventKeyAddPersonal = 'eventKeyAddPersonal';\n\nclass Trade extends Component {\n state = {\n error: null,\n nameTag: '',\n editTag: null,\n titleModal: '',\n removeTag: null,\n isLoading: false,\n isDisabled: true,\n isOpenRemoveTag: false,\n selectedTag: defaultTitle,\n labelTags: this.props.selectedTags || [],\n };\n\n handleSelectDropdowns = (selectedTag, { target, currentTarget }) => {\n const titleModal = 'Edit';\n const isAdd = eventKeyAddPersonal === selectedTag;\n\n const value = currentTarget.text;\n const { personal } = this.props.tags;\n const id = personal[value];\n\n if (target.classList.contains('edit') || isAdd) {\n this.setState({\n isAdd,\n editTag: {\n id,\n value: isAdd ? '' : value,\n },\n });\n return;\n }\n\n if (target.classList.contains('remove')) {\n this.setState({\n isOpenRemoveTag: true,\n removeTag: {\n id,\n value,\n },\n });\n return;\n }\n\n this.setState({\n titleModal,\n selectedTag,\n isAdd: false,\n editTag: null,\n isDisabled: false,\n isOpenRemoveTag: false,\n });\n };\n\n handleClickApplyTag = async () => {\n const { selectedTag, labelTags } = this.state;\n\n if (labelTags.includes(selectedTag)) {\n this.setState({\n alert: (\n \n ),\n isDisabled: true,\n selectedTag: defaultTitle,\n });\n return;\n }\n\n labelTags.push(selectedTag);\n\n await this.sendTagsToServer({\n labelTags,\n messages: {\n error: `Tag [${selectedTag}] is not saved, repeat later`,\n },\n });\n };\n\n sendTagsToServer = async ({ labelTags, messages }) => {\n const { id, onChangeTags, indexTrade } = this.props;\n\n this.setState({\n error: null,\n alert: null,\n isLoading: true,\n });\n\n const { error } = await setTrade({\n id,\n tags: labelTags,\n });\n\n const alert = {\n bsStyle: 'danger',\n message: messages.error,\n };\n\n const state = {\n isLoading: false,\n selectedTag: defaultTitle,\n };\n\n if (!error) {\n alert.bsStyle = 'success';\n alert.message = messages.success;\n\n state.labelTags = [...labelTags];\n state.isDisabled = true;\n onChangeTags(labelTags, indexTrade);\n }\n\n state.alert = ;\n this.setState({ ...state });\n };\n\n handleChangeTag = (id, tag) => {\n const { tags, indexTrade, changePersonalTag, onChangeTags } = this.props;\n const { isAdd, editTag, labelTags } = this.state;\n\n let newLabelTags = [...labelTags];\n\n if (isAdd) {\n newLabelTags.push(tag);\n } else {\n newLabelTags = newLabelTags.map((label) =>\n label === editTag.value ? tag : label\n );\n }\n\n changePersonalTag({\n ...omit(tags.personal, editTag.value),\n [tag]: id,\n });\n\n onChangeTags(newLabelTags, indexTrade);\n tags.personal[tag] = typeof id === 'number' ? id : editTag.id;\n\n this.setState({\n alert: null,\n isAdd: false,\n editTag: null,\n isDisabled: true,\n labelTags: newLabelTags,\n });\n };\n\n handleRemoveTag = () => {\n const { tags, indexTrade, onChangeTags, changePersonalTag } = this.props;\n const { labelTags, removeTag } = this.state;\n\n const newLabelTags = labelTags.filter((label) => removeTag.value !== label);\n\n changePersonalTag(omit(tags.personal, removeTag.value));\n onChangeTags(newLabelTags, indexTrade);\n\n this.setState({\n removeTag: null,\n isLoading: false,\n alert: (\n \n ),\n labelTags: newLabelTags,\n });\n };\n\n handleOnCLoseModal = (type) => {\n if (type === 'edit') {\n this.setState({\n editTag: null,\n });\n } else {\n this.setState({\n removeTag: null,\n });\n }\n };\n\n handleRemoveLabelTag = async ({ target }) => {\n const { name } = target.dataset;\n const { labelTags } = this.state;\n\n await this.sendTagsToServer({\n labelTags: labelTags.filter((label) => name !== label),\n messages: {\n success: `Tag [${name}] is removed from trade`,\n error: `Tag [${name}] is not removed from trade, repeat later`,\n },\n });\n };\n\n render() {\n const {\n id,\n type,\n tags,\n title,\n indate,\n outdate,\n strategy,\n in_price,\n out_price,\n isEditTrade,\n } = this.props;\n\n const {\n alert,\n isAdd,\n editTag,\n isLoading,\n removeTag,\n labelTags,\n isDisabled,\n selectedTag,\n } = this.state;\n\n const classNameHandler = cx('handler-server', {\n loading: isLoading,\n });\n\n return (\n
    \n
    \n

    \n {type}\n {title} {strategy}\n

    \n\n {isEditTrade && Object.keys(tags).length !== 0 && (\n
    \n \n\n \n APPLY TAG\n \n
    \n )}\n\n {Object.keys(labelTags).length !== 0 && (\n \n )}\n
    \n\n
    \n \n {alert}\n
    \n\n
    \n
    \n \n\n \n
    \n\n \n
    \n\n {editTag && (\n \n )}\n\n {removeTag && (\n \n )}\n
    \n );\n }\n}\n\nexport default Trade;\n","import request from 'utils/request';\nimport axios from 'axios';\nimport { store } from 'index';\n\nconst API_ADD_IMAGE = '/api/put/photos';\nconst API_REMOVE_IMAGE = '/api/photo/del';\nconst NOTE_API = '/put/notes';\n\nexport const setNote = async (data) => {\n try {\n const { token } = store.getState().user;\n return await axios({\n data,\n url: NOTE_API,\n method: 'post',\n headers: {\n Authorization: 'Bearer ' + token,\n Bearer: token,\n 'Content-Type': 'multipart/form-data',\n },\n });\n } catch (e) {\n return e;\n }\n};\n\nexport const removePhoto = (data) => {\n try {\n return new Promise((success, error) =>\n request({\n data,\n url: API_REMOVE_IMAGE,\n error,\n success,\n processData: false,\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nexport const addImage = async (data = {}) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_ADD_IMAGE,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { memo } from 'react';\nimport Slick, { Settings } from 'react-slick';\nimport cx from 'classnames';\n\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\nimport Styles from './Slider.module.scss';\n\nconst defaultOptions = {\n dots: true,\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n // adaptiveHeight: true,\n};\n\nexport interface SliderProps {\n children: React.ReactNode;\n options?: Settings;\n}\n\nconst Slider = memo((props: SliderProps) => {\n const { options, children } = props;\n const { className, ...others } = options || {};\n\n return (\n \n {children}\n \n );\n});\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n","import React from 'react';\n\nimport Styles from './Spinner.module.scss';\n\nexport enum SpinnerKinds {\n ROLLER = 'roller',\n}\n\ninterface SpinnerProps {\n kind?: SpinnerKinds;\n}\n\nfunction Spinner(props: SpinnerProps) {\n const { kind } = props;\n\n switch (kind) {\n case SpinnerKinds.ROLLER:\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n default:\n return (\n
    \n \n \n \n
    \n );\n }\n}\n\nexport default Spinner;\n","import React, { Component } from 'react';\n\nclass DragAndDrop extends Component {\n state = {\n dragFiles: 0,\n };\n\n dragCounter = 0;\n\n dropRef = React.createRef() as any;\n\n componentDidMount() {\n const div = this.dropRef.current as any;\n div.addEventListener('dragenter', this.handleDragIn);\n div.addEventListener('dragleave', this.handleDragOut);\n div.addEventListener('dragover', this.handleDrag);\n div.addEventListener('drop', this.handleDrop);\n }\n\n componentWillUnmount() {\n const div = this.dropRef.current as any;\n div.removeEventListener('dragenter', this.handleDragIn);\n div.removeEventListener('dragleave', this.handleDragOut);\n div.removeEventListener('dragover', this.handleDrag);\n div.removeEventListener('drop', this.handleDrop);\n }\n\n handleDrag = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n handleDragIn = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n this.dragCounter += 1;\n\n if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {\n this.setState({\n dragFiles: e.dataTransfer.items.length,\n });\n }\n };\n\n handleDragOut = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n this.dragCounter -= 1;\n\n if (this.dragCounter === 0) {\n this.setState({\n dragFiles: 0,\n });\n }\n };\n\n handleDrop = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { handleDrop } = this.props;\n\n this.setState({\n dragFiles: 0,\n });\n\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n handleDrop(e, e.dataTransfer.files);\n e.dataTransfer.clearData();\n this.dragCounter = 0;\n }\n };\n\n render() {\n const { dragFiles } = this.state;\n const { children, parentProps } = this.props;\n\n return (\n
    \n {dragFiles !== 0 && (\n \n \n
    Add {dragFiles} file(s)?
    \n
    \n
    \n )}\n\n {children}\n
    \n );\n }\n}\n\nexport default DragAndDrop;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M398.1,233.2c0-1.2,0.2-2.4,0.2-3.6c0-65-51.8-117.6-115.7-117.6c-46.1,0-85.7,27.4-104.3,67c-8.1-4.1-17.2-6.5-26.8-6.5 c-29.5,0-54.1,21.9-58.8,50.5C57.3,235.2,32,269.1,32,309c0,50.2,40.1,91,89.5,91H224v-80l-48.2,0l80.2-83.7l80.2,83.6l-48.2,0v80 h110.3c45.2,0,81.7-37.5,81.7-83.4C480,270.6,443.3,233.3,398.1,233.2z\"\n});\n\nvar SvgUpload = function SvgUpload(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n width: \"512px\",\n height: \"512px\",\n viewBox: \"0 0 512 512\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgUpload, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/upload.37e08ff6.svg\";\nexport { ForwardRef as ReactComponent };","import React, { memo, useState, useEffect, useCallback } from 'react';\nimport cx from 'classnames';\n\nimport Slider from 'components/Slider';\nimport DragAndDrop from 'components/DragAndDrop';\nimport Spinner, { SpinnerKinds } from 'components/Spinner';\nimport OpenModal from 'components/common/OpenModal';\n\nimport { ReactComponent as IconUpload } from 'images/upload.svg';\nimport { Photo } from './types';\n\nimport Styles from './Photos.module.scss';\n\ninterface Props {\n photos: Photo[];\n onRemovePhoto: any;\n onChangeImage: any;\n}\n\ntype CustomEvent = React.DragEvent & React.ClipboardEvent;\n\nconst MAX_PHOTOS = 10;\n\nconst GET_IMAGE_API =\n process.env.NODE_ENV === 'development'\n ? 'https://ta.lexxinfo.com/photos/?id='\n : '/photos/?id=';\n\nconst Photos = memo((props: Props) => {\n const { photos = [], onRemovePhoto, onChangeImage } = props;\n\n const [selectedId, setSelectedId] = useState();\n\n const closeModal = useCallback(() => setSelectedId(null), [setSelectedId]);\n\n const clickPhoto = useCallback(\n ({ target }) => {\n const parent = target.closest(`.${Styles.image}`);\n\n if (!parent) {\n return;\n }\n\n const { remove } = target.dataset;\n const id = Number(parent.dataset.id);\n\n if (remove) {\n onRemovePhoto(id);\n }\n\n const { slider } = parent.dataset;\n\n if (target.src && !slider) {\n const selectedId = photos.findIndex((photo) => photo.id === id);\n const photo = photos[selectedId];\n\n if (!photo.isUploading) {\n setSelectedId(selectedId);\n }\n }\n },\n [photos, onRemovePhoto]\n );\n\n const onPasteImages = useCallback(\n (e: CustomEvent): any => {\n const isDragAndDrop = Boolean(e.dataTransfer);\n const data = [\n ...(isDragAndDrop\n ? e.dataTransfer.files\n : (e.clipboardData.items as any)),\n ];\n\n const files = data.filter(\n ({ type }) => type === 'image/png' || type === 'image/jpeg'\n );\n\n if (MAX_PHOTOS <= photos.length) {\n // eslint-disable-next-line no-alert\n alert(`You can not download more ${MAX_PHOTOS} photos`);\n return;\n }\n\n if (files.length !== 0) {\n onChangeImage({\n target: {\n files: isDragAndDrop\n ? files\n : files.map((file) => file.getAsFile()),\n },\n });\n } else if (!data.some((file) => file.type === 'text/plain')) {\n // eslint-disable-next-line no-alert\n alert('Support only *.png and *.jpeg formats');\n }\n },\n [photos, onChangeImage]\n );\n\n useEffect(() => {\n window.addEventListener('paste', onPasteImages as any, false);\n\n return () => {\n window.removeEventListener('paste', onPasteImages as any, false);\n };\n });\n\n const hasPhotos = photos.length !== 0;\n\n return (\n \n

    Pictures

    \n\n \n {photos.map(({ id, url, name, isUploading }) => (\n \n \n\n {isUploading ? (\n \n ) : (\n \n )}\n
    \n ))}\n\n {photos.length < MAX_PHOTOS && (\n \n )}\n \n\n \n <>\n \n \n \n {photos\n .filter((photo) => photo.id)\n .map(({ id }) => (\n \n \"Journal\n
    \n ))}\n \n
    \n \n \n
    \n );\n});\n\nPhotos.displayName = 'Photos';\n\nexport default Photos;\n","import React, { Component } from 'react';\nimport cx from 'classnames';\n\nimport { Note } from 'components';\n\nimport { setNote, removePhoto } from './dataProvider';\nimport Photos from './Photos';\n\nimport './Additional.scss';\nimport Styles from './Additional.module.scss';\n\nconst MAX_SIZE_IMAGE = 1048576; // 1Mb\n\nclass Additional extends Component {\n slider = React.createRef();\n\n state = {\n valueNote: '',\n isError: false,\n isLoading: false,\n photos: this.props.photos.map((id) => ({\n id,\n isUploading: false,\n })),\n };\n\n onChangeImage = ({ target }) => {\n const { day, symbol, chagePhotos } = this.props;\n const { photos } = this.state;\n\n const files = [...target.files].filter((file) => {\n if (MAX_SIZE_IMAGE < file.size) {\n alert(\n `File [${file.name}] is too large (max ${\n MAX_SIZE_IMAGE / 1048576\n } MB)`\n );\n return false;\n }\n\n if (photos.some((photo) => photo.name === file.name)) {\n alert(`File is exist [${file.name}]`);\n return false;\n }\n return true;\n });\n\n this.setState({\n photos: [\n ...photos,\n ...files.map((file) => ({\n name: file.name,\n isUploading: true,\n url: URL.createObjectURL(file),\n })),\n ],\n });\n\n files.forEach((file) => {\n const formData = new FormData();\n formData.append('photo', file);\n formData.append('day', day);\n formData.append('symbol', symbol);\n\n setNote(formData).then(({ data, isAxiosError }) => {\n if (data.isAxiosError) {\n alert(`Can not upload photo [${file.name}] \\nERR: ${data.message}`);\n this.setState({\n photos: this.state.photos.filter(\n (photo) => photo.name !== file.name\n ),\n });\n } else {\n const photos = this.state.photos.map((photo) => {\n if (photo.name === file.name) {\n photo.isUploading = false;\n photo.id = data;\n }\n return photo;\n });\n\n chagePhotos(photos.map((photo) => photo.id));\n\n this.setState({\n photos,\n });\n }\n });\n });\n };\n\n onRemovePhoto = (id) => {\n const { photos } = this.state;\n const { chagePhotos } = this.props;\n\n if (!window.confirm(`Do you want to remove this photo [${id}]?`)) {\n return;\n }\n\n removePhoto({ id }).then((data) => {\n if (data.isAxiosError) {\n alert(`Can not remove photo ${id}, \\nERR: ${data.message}`);\n return;\n }\n\n const newPhotos = photos.filter((photo) => photo.id !== id);\n chagePhotos(newPhotos.map((photo) => photo.id));\n\n this.setState({\n photos: newPhotos,\n });\n });\n };\n\n render() {\n const { photos } = this.state;\n const { day, note, symbol, onChangeNote } = this.props;\n\n return (\n
    \n
    \n \n
    \n\n \n
    \n );\n }\n}\n\nAdditional.defaultProps = {\n day: 1571270400,\n symbol: 'NFLX',\n};\n\nexport default Additional;\n","import React, { memo, useState, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport cx from 'classnames';\nimport { uniq, flatten } from 'lodash';\n\nimport { getParams } from 'utils/trades';\nimport Request from 'components/common/Request';\nimport OpenRow from 'components/common/OpenRow';\nimport InfoRow from 'components/common/InfoRow';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\nimport { getTrades } from './dataProvider';\nimport OHLC from './OHLC';\nimport Trade from './Trade';\nimport Additional from './Additional';\n\nimport './Trades.scss';\n\nconst Trades = memo((props) => {\n const { row, data, notes, params, currentDay, isEditTrades, onChangeRow } =\n props;\n\n const [tags, setTags] = useState(props.tags || {});\n const [tradeTags, setTradeTags] = useState(data.map((trade) => trade.tags));\n\n const note = (notes && notes[0]) || [{}];\n\n const infoRow = [row.net, row.gross, row.volume, row.fees];\n\n const classNameInfoRow = cx({\n positive: row.net.value > 0,\n negative: row.net.value < 0,\n });\n\n const chagePhotos = useCallback(\n (value) => {\n onChangeRow({\n ...row,\n idsPhotos: {\n ...row.idsPhotos,\n value,\n },\n });\n },\n [row, onChangeRow]\n );\n\n const onChangeNote = useCallback(\n (value) => {\n onChangeRow({\n ...row,\n memo: {\n ...row.memo,\n value,\n },\n });\n },\n [onChangeRow, row]\n );\n\n const onChangeTags = useCallback(\n (value, index) => {\n tradeTags[index] = value;\n const rowTags = uniq(flatten(tradeTags));\n\n onChangeRow({\n ...row,\n tags: {\n ...row.tags,\n value: rowTags,\n },\n });\n\n setTradeTags([...tradeTags]);\n },\n [onChangeRow, row, setTradeTags, tradeTags]\n );\n\n const changePersonalTag = useCallback(\n (personal) => {\n setTags({\n ...tags,\n personal,\n });\n },\n [tags, setTags]\n );\n\n if (props.error) {\n return ;\n }\n\n return (\n <>\n
    \n

    {row.symbol.value}

    \n Symbol\n
    \n\n
    \n \n
    \n\n
    \n {data.map((trade, index) => (\n \n ))}\n\n {data.length === 0 && (\n

    \n No bidding for\n {currentDay}\n

    \n )}\n
    \n\n \n\n {isEditTrades && (\n \n )}\n \n );\n});\n\nTrades.displayName = 'Trades';\n\nconst Wrapper = memo((props) => {\n const { row, date, table, account, settings } = props;\n\n const additional = {\n date,\n account,\n };\n\n const params = {\n url: settings.link,\n data: {\n ...getParams(settings.params, row, table, additional),\n },\n };\n\n return (\n \n \n {(data) => }\n \n \n );\n});\n\nWrapper.displayName = 'WrapperTrades';\n\nexport default connect(({ dates, accounts, routing }) => ({\n account: accounts.saved[0],\n date: dates.saved[0].startDate.unix(),\n currentDay: dates.saved[0].startDate.format('MM/DD/YYYY'),\n isEditTrades:\n accounts.saved[0] === accounts.account &&\n routing.location.pathname.startsWith('/journal'),\n}))(Wrapper);\n","import config from 'config/config';\nimport { reductionForNumber } from './separator';\n\nexport const getDoughnutProps = (centerProps, width) => ({\n responsive: true,\n legend: {\n position: 'right',\n labels: {\n fontColor: '#546c78',\n padding: Math.min(width / 30, 15),\n fontSize: Math.min(width / 30, 14),\n },\n reverse: false,\n },\n options: {\n elements: {\n center: {\n color: '#546c78',\n fontStyle: 'Arial',\n sidePadding: 20,\n ...centerProps,\n },\n },\n tooltips: {\n xPadding: 10,\n yPadding: 10,\n bodyFontSize: 14,\n titleFontSize: 16,\n titleMarginBottom: 5,\n displayColors: false,\n callbacks: {\n label: ({ index, datasetIndex }, { datasets }) => {\n const { data } = datasets[datasetIndex];\n return reductionForNumber(data[index]);\n },\n title: ([{ index }], { labels }) => labels[index],\n beforeBody: ([{ datasetIndex, index }], { datasets }) => {\n const dataset = datasets[datasetIndex];\n const value = dataset.data[index];\n const totalValue = dataset.data.reduce((a, b) => a + b, 0);\n return `${((value / totalValue) * 100).toFixed(2)}%`;\n },\n },\n },\n },\n});\n\nexport const getDoughnutData = ({ condition, data = {} }) => {\n return Object.keys(data).reduce((p, key) => {\n if (condition(data[key])) {\n p.push({\n name: key,\n value: Math.abs(data[key]),\n realValue: Math.abs(data[key]),\n fill: config.pieColors[key],\n isNegative: data[key] <= 0,\n });\n }\n return p;\n }, []);\n};\n\nexport const getCenterTextPlugin = (chart) => {\n if (!chart.config.options.elements.center) {\n return;\n }\n // Get ctx from string\n const { ctx } = chart.chart;\n\n // Get options from the center object in options\n const centerConfig = chart.config.options.elements.center;\n const fontStyle = centerConfig.fontStyle || 'Arial';\n const color = centerConfig.color || '#000';\n const sidePadding = centerConfig.sidePadding || 20;\n const sidePaddingCalculated = (sidePadding / 100) * (chart.innerRadius * 2);\n // Start with a base font of 30px\n ctx.font = `30px ${fontStyle}`;\n\n const stringWidth = ctx.measureText(centerConfig.label).width;\n const elementWidth = chart.innerRadius * 2 - sidePaddingCalculated;\n\n const widthRatio = elementWidth / stringWidth;\n const newFontSize = Math.floor(26 * widthRatio);\n const elementHeight = chart.innerRadius * 2;\n\n const fontSizeToUse = Math.min(newFontSize, elementHeight);\n\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n const centerX = (chart.chartArea.left + chart.chartArea.right) / 2;\n const centerY = (chart.chartArea.top + chart.chartArea.bottom) / 2;\n ctx.font = `bold ${fontSizeToUse}px ${fontStyle}`;\n ctx.fillStyle = color;\n\n ctx.font = `${fontSizeToUse - 2}px ${fontStyle}`;\n ctx.fillText(centerConfig.label, centerX, centerY - newFontSize * 0.6);\n ctx.font = `bold ${fontSizeToUse}px ${fontStyle}`;\n ctx.fillText(centerConfig.value, centerX, centerY + newFontSize * 0.6);\n};\n\nexport const getCenterLabel = ({ datasets: [{ data }] }, isWin) => ({\n label: isWin ? 'Total profit' : 'Total loss',\n value: `$ ${isWin ? '' : '-'}${reductionForNumber(\n data.reduce((a, b) => a + b, 0)\n )}`,\n});\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Full Screen\"\n}, React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M29.92,2.62a1.15,1.15,0,0,0-.21-.33,1.15,1.15,0,0,0-.33-.21A1,1,0,0,0,29,2H21a1,1,0,0,0,0,2h5.59l-8.3,8.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L28,5.41V11a1,1,0,0,0,2,0V3A1,1,0,0,0,29.92,2.62Z\"\n}), React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M5.41,4H11a1,1,0,0,0,0-2H3a1,1,0,0,0-.38.08,1.15,1.15,0,0,0-.33.21,1.15,1.15,0,0,0-.21.33A1,1,0,0,0,2,3v8a1,1,0,0,0,2,0V5.41l8.29,8.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z\"\n}), React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M29,20a1,1,0,0,0-1,1v5.59l-8.29-8.3a1,1,0,0,0-1.42,1.42L26.59,28H21a1,1,0,0,0,0,2h8a1,1,0,0,0,.38-.08.9.9,0,0,0,.54-.54A1,1,0,0,0,30,29V21A1,1,0,0,0,29,20Z\"\n}), React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M12.29,18.29,4,26.59V21a1,1,0,0,0-2,0v8a1,1,0,0,0,.08.38,1.15,1.15,0,0,0,.21.33,1.15,1.15,0,0,0,.33.21A1,1,0,0,0,3,30h8a1,1,0,0,0,0-2H5.41l8.3-8.29a1,1,0,0,0-1.42-1.42Z\"\n}));\n\nvar SvgFullScreen = function SvgFullScreen(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgFullScreen, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/full-screen.a2705691.svg\";\nexport { ForwardRef as ReactComponent };","import React, { memo, useState, useMemo, useCallback } from 'react';\nimport moment from 'moment';\nimport {\n Bar,\n Cell,\n Line,\n XAxis,\n YAxis,\n Legend,\n Tooltip,\n BarChart,\n LineChart,\n CartesianGrid,\n ResponsiveContainer,\n} from 'recharts';\nimport cx from 'classnames';\nimport config from 'config/config';\nimport { FullScreen, useFullScreenHandle } from 'react-full-screen';\n\nimport { useAxios } from 'utils';\nimport { getDoughnutData } from 'utils/pie';\nimport { ReactComponent as FullScreenIcon } from 'images/full-screen.svg';\n\nimport Slider from 'components/Slider';\nimport Spinner from 'components/Spinner';\nimport { DoughnutChart } from 'components';\nimport { ServiceErrorPlaceholder } from 'components/common/ServicePlaceholder';\n\nimport styles from './Dashboard.module.scss';\nimport { mockData } from './mock';\n\nconst currentYear = moment().format('YYYY');\nconst previousYear = moment().subtract(1, 'year').format('YYYY');\n\nconst doughnutStrategyData = new FormData();\n[currentYear].forEach((y) => {\n doughnutStrategyData.append('years', y);\n});\n\ntype NetType = {\n date: number;\n current: number;\n previous: number;\n};\n\ntype AccumulatedNetTotalType = {\n date: number;\n middle: number;\n current: number;\n previous: number;\n};\n\ntype DoughnutType = Record;\n\ntype FullScreenType =\n | 'net'\n | 'volumes'\n | 'doughnutTotalNet'\n | 'accumulatedTotalNet'\n | 'all';\n\ninterface DashboardType {\n net: Record;\n volume: Record[];\n doughnutTotalNet: Record;\n accumulatedTotalNet: AccumulatedNetTotalType[];\n}\n\nconst mock: DashboardType = mockData;\n\nexport const Dashboard = memo(() => {\n const handle = useFullScreenHandle();\n\n const [fullScreenType, setFullScreenType] = useState<{\n type: FullScreenType;\n key?: string;\n } | null>();\n\n const [dashboard] = useAxios(\n {\n method: 'POST',\n data: doughnutStrategyData,\n url: '/chart/dashboard/',\n }\n // { manual: true }\n );\n\n const openFullScreen = useCallback(\n (type: FullScreenType, key?: string) => () => {\n setFullScreenType({ type, key });\n handle.enter();\n },\n [handle]\n );\n\n const doughnutsTotalNet = useMemo(() => {\n const doughnutTotalNet = dashboard.data?.doughnutTotalNet;\n // const { doughnutTotalNet } = mock;\n\n if (!doughnutTotalNet) {\n return [];\n }\n\n return Object.keys(doughnutTotalNet)\n .reduce((acc, key) => {\n const data = doughnutTotalNet[key];\n\n if (data) {\n acc.push({\n key,\n title: key,\n data: getDoughnutData({\n data,\n condition: () => true,\n }),\n });\n }\n\n return acc;\n }, [] as any[])\n .sort((a, b) => (a.title < b.title ? 1 : 0));\n }, [dashboard.data]);\n\n const netStrategiesCharts = useMemo(() => {\n const net = dashboard.data?.net;\n // const { net } = mock;\n\n if (!net) {\n return [];\n }\n\n return Object.keys(net)\n .sort()\n .map((key) => ({\n key,\n title: key,\n net: net[key],\n }));\n }, [dashboard.data]);\n\n const volume = useMemo(() => {\n return dashboard.data?.volume;\n // return mock.volume;\n }, [dashboard.data]);\n\n const accumulatedTotalNet = useMemo(() => {\n return dashboard.data?.accumulatedTotalNet;\n // return mock.accumulatedTotalNet;\n }, [dashboard.data]);\n\n const tickFormatterDay = useCallback(\n (value) => moment().dayOfYear(value).format('DD MMM'),\n []\n );\n\n const getDoughnutTotalNet = useCallback(\n (data = [], isFull = false) => (\n \n ),\n []\n );\n\n const getNetPerfomanceChart = useCallback(\n (data: NetType[], key: string) => (\n <>\n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n\n
    \n
    Volume
    \n \n \n \n \n \n \n \n {volume?.map((entry, index) => (\n \n ))}\n \n \n \n
    \n \n ),\n [tickFormatterDay, volume]\n );\n\n const getChart = useCallback(\n (type: FullScreenType, key?: string) => {\n switch (type) {\n case 'accumulatedTotalNet':\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n\n case 'net':\n if (key) {\n const data = netStrategiesCharts.find((c) => c.key === key)?.net;\n return data ? getNetPerfomanceChart(data, key) : null;\n }\n\n return netStrategiesCharts?.map((c) => (\n
  • \n

    \n {c.title}\n \n

    \n\n
    \n {getNetPerfomanceChart(c.net, c.key)}\n
    \n
  • \n ));\n\n case 'volumes':\n return (\n \n \n \n \n \n \n \n\n {volume?.[0] &&\n Object.keys(volume[0]).map((key, index) =>\n key === 'label' ? null : (\n \n )\n )}\n \n \n );\n\n case 'doughnutTotalNet':\n if (key) {\n const data = doughnutsTotalNet.find((c) => c.key === key)?.data;\n return data ? getDoughnutTotalNet(data, true) : null;\n }\n\n return doughnutsTotalNet?.map((d) => (\n
  • \n

    \n {d.title}\n \n

    \n\n
    \n {getDoughnutTotalNet(d.data)}\n
    \n
  • \n ));\n\n case 'all': {\n const netCharts = netStrategiesCharts\n .reduce((acc, n, i) => {\n // separate each 4 charts\n const index = Math.floor(i / 4);\n\n if (!acc[index]) {\n acc.push([]);\n }\n\n acc[index].push(n);\n\n return acc;\n }, [] as typeof netStrategiesCharts[])\n .map((n, i, arr) => (\n // eslint-disable-next-line react/no-array-index-key\n
    \n

    \n Net by Strategy {i + 1}/{arr.length}\n

    \n\n
      \n {n.map((c) => (\n
    • \n

      {c.title}

      \n\n
      \n {getChart('net', c.key)}\n
      \n
    • \n ))}\n
    \n
    \n ));\n\n return (\n \n
    \n

    General Chart: Total Net

    \n {getChart('accumulatedTotalNet')}\n
    \n\n {netCharts}\n\n
    \n

    Volumes

    \n {getChart('volumes')}\n
    \n\n
    \n

    Total Net by Strategy

    \n\n
      \n {doughnutsTotalNet.map((d) => (\n \n

      {d.title}

      \n
      \n {getDoughnutTotalNet(d.data)}\n
      \n \n ))}\n
    \n
    \n \n );\n }\n\n default:\n return null;\n }\n },\n [\n accumulatedTotalNet,\n doughnutsTotalNet,\n getDoughnutTotalNet,\n getNetPerfomanceChart,\n netStrategiesCharts,\n openFullScreen,\n tickFormatterDay,\n volume,\n ]\n );\n\n const fullScreenTitle = useMemo(() => {\n switch (fullScreenType?.type) {\n case 'accumulatedTotalNet':\n return 'General Chart: Total Net';\n\n case 'net':\n case 'doughnutTotalNet':\n return fullScreenType.key;\n\n case 'volumes':\n return 'Volumes';\n\n default:\n return null;\n }\n }, [fullScreenType?.key, fullScreenType?.type]);\n\n if (dashboard.error) {\n return (\n \n );\n }\n\n if (dashboard.loading) {\n return ;\n }\n\n return (\n
    \n \n\n
    \n
      \n
    • \n

      \n General Chart: Total Net\n \n

      \n\n
      \n {getChart('accumulatedTotalNet')}\n
      \n
    • \n
    \n
    \n\n
    \n

    Net by Strategy

    \n\n
      \n {getChart('net')}\n\n \n

      \n Volumes\n \n

      \n\n
      {getChart('volumes')}
      \n \n
    \n
    \n\n
    \n

    Total Net by Strategy

    \n\n
      {getChart('doughnutTotalNet')}
    \n
    \n\n \n {fullScreenType && handle.active && (\n <>\n \n ✕\n \n\n {fullScreenTitle &&

    {fullScreenTitle}

    }\n {getChart(fullScreenType.type, fullScreenType.key)}\n \n )}\n \n
    \n );\n});\n","export enum TypeFields {\n Money = 'money',\n String = 'string',\n Email = 'email',\n Array = 'array',\n List = 'list',\n Time = 'time',\n TSRange = 'tsrange',\n Date = 'date',\n DateTime = 'datetime',\n Month = 'month',\n Object = 'object',\n DRange = 'drange',\n Integer = 'int',\n Solid = 'solid',\n Boolean = 'bool',\n WeekTotals = 'week-totals',\n Account = 'account',\n Symbol = 'symbol',\n Default = 'default',\n}\n\nexport interface ObjectField {\n link: string;\n params: any;\n value: string;\n}\n\nexport const WidthFields = {\n [TypeFields.Money]: 100,\n [TypeFields.String]: 250,\n [TypeFields.Email]: 250,\n [TypeFields.Array]: 250,\n [TypeFields.List]: 120,\n [TypeFields.Time]: 120,\n [TypeFields.TSRange]: 120,\n [TypeFields.Date]: 220,\n [TypeFields.DateTime]: 120,\n [TypeFields.Month]: 120,\n [TypeFields.Object]: 120,\n [TypeFields.DRange]: 225,\n [TypeFields.Integer]: 150,\n [TypeFields.Solid]: 120,\n [TypeFields.Boolean]: 140,\n [TypeFields.WeekTotals]: 120,\n [TypeFields.Account]: 180,\n [TypeFields.Symbol]: 180,\n [TypeFields.Default]: 200,\n};\n","import { memo, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nconst Portal = (props: any) => {\n const { id, className, children } = props;\n\n const el = useRef(\n document.getElementById(id) || document.createElement('div')\n );\n\n const [dynamic] = useState(!el.current.parentElement);\n\n useEffect(() => {\n if (dynamic) {\n el.current.id = id;\n if (className) {\n el.current.className = className;\n }\n document.body.appendChild(el.current);\n }\n\n return () => {\n if (dynamic && el.current.parentElement) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n el.current.parentElement.removeChild(el.current);\n }\n };\n }, [dynamic, className, id]);\n\n return createPortal(children, el.current);\n};\n\nexport default memo(Portal);\n","import React, { memo, useState, useCallback } from 'react';\nimport { Manager, Reference, Popper } from 'react-popper';\n\nimport Portal from './Portal';\n\nimport Styles from './Popover.module.scss';\n\nfunction Popover(props: any) {\n const { children, value, id } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const [width, setWidth] = useState();\n\n const onMouseEnter = useCallback((e: React.SyntheticEvent) => {\n setWidth(e.currentTarget.offsetWidth);\n setIsOpen(true);\n }, []);\n\n const onMouseLeave = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n return (\n \n \n {({ ref }) => (\n \n {children}\n \n )}\n \n\n {isOpen && (\n \n \n {({ ref, style }) => (\n
    \n {value}\n
    \n )}\n
    \n
    \n )}\n
    \n );\n}\n\nexport default memo(Popover);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport cx from 'classnames';\nimport moment from 'moment';\n\nimport { getTime, parseRangeDate, thousandSeparator } from 'utils/separator';\nimport { TypeFields, ObjectField } from './types';\n\nimport Popover from '../Popover';\n\nimport Styles from './Field.module.scss';\n\nexport interface FieldProps {\n value: number | string | ObjectField;\n type?: TypeFields;\n parent?: any;\n params?: any;\n values?: number[];\n}\n\nconst format = 'MM/DD/YYYY';\n\nfunction Field(props: FieldProps) {\n const { type, parent, values, value = '' } = props;\n\n switch (type) {\n case TypeFields.Money: {\n const money = thousandSeparator(value);\n return (\n \n {money}\n \n );\n }\n\n case TypeFields.Boolean: {\n if (typeof value === 'boolean') {\n return value ? '+' : '-';\n }\n return value;\n }\n\n case TypeFields.Email: {\n return parent ? (\n value\n ) : (\n \n {value}\n \n );\n }\n\n case TypeFields.Array: {\n if (Array.isArray(value)) {\n const valueTooltip = value.join(', ').slice(0, 300);\n\n if (valueTooltip.length < 90) {\n return valueTooltip;\n }\n\n return (\n = 300 ? valueTooltip : `${valueTooltip}...`\n }\n >\n \n {String(value.join(', ')).slice(0, 90)}\n ...\n \n \n );\n }\n return value;\n }\n\n case TypeFields.List: {\n return Boolean(parent) && parent.compareList\n ? parent.compareList[String(value)]\n : value;\n }\n\n case TypeFields.Time: {\n return typeof value === 'number' ? getTime(value) : value;\n }\n\n case TypeFields.TSRange: {\n // TODO: need to replace date format\n return Array.isArray(value)\n ? value.map((d) => getTime(new Date(d * 1000))).join(' - ')\n : value;\n }\n\n case TypeFields.Date: {\n return typeof value === 'number'\n ? moment.utc(Number(value), 'X').format(format)\n : value;\n }\n\n case TypeFields.DateTime: {\n return (\n \n {typeof value === 'number'\n ? moment.utc(Number(value), 'X').format(`${format} HH:mm`)\n : value}\n \n );\n }\n\n case TypeFields.Object: {\n const { params } = props;\n const { link } = parent as ObjectField;\n\n if (link && params) {\n const keys = Object.keys(params)\n .map((k) => `${k}=${params[k].toString().replace('\"', `'`)}`)\n .join('&');\n\n return (\n \n {value}\n \n );\n }\n\n return value;\n }\n\n case TypeFields.DRange: {\n return Array.isArray(value) ? parseRangeDate(value as any) : value;\n }\n\n case TypeFields.Month: {\n return typeof value === 'number' ? moment.months(value - 1) : value;\n }\n\n case TypeFields.WeekTotals: {\n const date = parseRangeDate(values as any);\n return date;\n }\n\n case TypeFields.String:\n default: {\n if (String(value).length > 90) {\n const valueTooltip = String(value).slice(0, 300);\n return (\n \n \n {String(value).slice(0, 90)}\n ...\n \n \n );\n }\n\n return value;\n }\n }\n}\n\nexport default Field;\n","import React, { memo } from 'react';\nimport Field from 'components/Field';\n\nimport Styles from './Cell.module.scss';\n\nfunction Cell(props: any) {\n const { width, value, ...otherProps } = props;\n\n return (\n \n \n \n \n \n );\n}\n\nexport default memo(Cell);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.194,3.46c-4.613-4.613-12.121-4.613-16.734,0c-4.612,4.614-4.612,12.121,0,16.735 c4.108,4.107,10.506,4.547,15.116,1.34c0.097,0.459,0.319,0.897,0.676,1.254l6.718,6.718c0.979,0.977,2.561,0.977,3.535,0 c0.978-0.978,0.978-2.56,0-3.535l-6.718-6.72c-0.355-0.354-0.794-0.577-1.253-0.674C24.743,13.967,24.303,7.57,20.194,3.46z M18.073,18.074c-3.444,3.444-9.049,3.444-12.492,0c-3.442-3.444-3.442-9.048,0-12.492c3.443-3.443,9.048-3.443,12.492,0 C21.517,9.026,21.517,14.63,18.073,18.074z\"\n});\n\nvar SvgSearch = function SvgSearch(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n width: \"30.239px\",\n height: \"30.239px\",\n viewBox: \"0 0 30.239 30.239\",\n style: {\n enableBackground: \"new 0 0 30.239 30.239\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgSearch, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/search.f92da509.svg\";\nexport { ForwardRef as ReactComponent };","import React, { memo, useCallback } from 'react';\n\nimport { ReactComponent as IconSearch } from './assets/search.svg';\nimport Styles from './Search.module.scss';\n\nexport interface SearchProps {\n value: string;\n onChange: (value: string) => void;\n}\n\nfunction Search(props: SearchProps) {\n const { value, onChange } = props;\n\n const onChangeSearch = useCallback(\n (e: React.ChangeEvent) => {\n onChange(e.target.value);\n },\n [onChange]\n );\n const onClickCross = useCallback(() => {\n onChange('');\n }, [onChange]);\n\n return (\n \n );\n}\n\nexport default memo(Search);\n","export enum FontSize {\n Bigger = 18,\n Normal = 14,\n Smaller = 10,\n}\n\nexport const FontSizeCoefficient = {\n [FontSize.Bigger]: 1.29,\n [FontSize.Normal]: 1,\n [FontSize.Smaller]: 0.8,\n};\n\nexport enum RowTypes {\n ToggleRow = 'toggle-row',\n}\n","import React, { memo } from 'react';\n\nimport Styles from './PlusButton.module.scss';\n\ninterface PlusButtonProps {\n isOpen: boolean;\n onClick(): void;\n}\n\nexport const PlusButton = memo((props: PlusButtonProps) => {\n const { isOpen, onClick } = props;\n\n return (\n \n );\n});\n","import React, { memo, useMemo, useCallback, useState } from 'react';\nimport cx from 'classnames';\n\nimport Cell from '../Cell';\n\nimport { FontSize, RowTypes, FontSizeCoefficient } from '../../types';\n\nimport { PlusButton } from '../PlusButton';\nimport Styles from './Row.module.scss';\n\ninterface RowProps {\n type: RowTypes;\n defaultHidden: boolean;\n}\n\nfunction Row(props: any) {\n const {\n row,\n columns,\n fontSize,\n rowIndex,\n className,\n expandComponent,\n styleExpandedRow,\n } = props;\n\n const [isVisible, setIsVisible] = useState(!row.defaultHidden);\n\n const onToggleRow = useCallback(() => {\n setIsVisible((s) => !s);\n }, []);\n\n const rowKeys = useMemo(\n () =>\n columns.reduce((rowKeys: any, column: any) => {\n if (column.hidden) {\n return rowKeys;\n }\n\n if (column.children) {\n rowKeys.push(\n ...column.children\n .filter((child: any) => !child.hidden)\n .map((child: any) => ({\n name: child.name,\n width: child.width,\n }))\n );\n } else {\n rowKeys.push({\n name: column.name,\n width: column.width,\n });\n }\n\n return rowKeys;\n }, []),\n [columns]\n );\n\n const isToggleRow = row.type === RowTypes.ToggleRow;\n const fontSizeCoefficient = FontSizeCoefficient[fontSize as FontSize];\n\n return (\n <>\n \n {isVisible &&\n rowKeys.map((cell: any) => (\n \n ))}\n \n\n {isToggleRow && (\n \n \n
    \n \n
    \n \n \n )}\n\n {isVisible && expandComponent && (\n \n \n
    \n {expandComponent}\n
    \n \n \n )}\n \n );\n}\n\nexport default memo(Row);\n","import React, { memo, useState, useCallback } from 'react';\nimport cx from 'classnames';\n\nimport Row from '../Row';\n\nimport Styles from './Body.module.scss';\n\nfunction Body(props: any) {\n const {\n rows,\n columns,\n fontSize,\n expandedRow,\n isMoreButton,\n isFixedHeader,\n styleExpandedRow,\n rowClasses,\n className,\n onClickRow,\n onClickMoreRows,\n } = props;\n\n const [expandComponent, setExpandComponent] = useState();\n\n const onClick = useCallback(\n (e: React.SyntheticEvent) => {\n const target = e.target as HTMLElement;\n const expandComponent = target.closest(\n '[data-expand-component]'\n ) as HTMLElement;\n const rowElement = target.closest('[data-index-row]') as HTMLElement;\n\n if (\n expandComponent &&\n expandComponent.parentElement === e.currentTarget\n ) {\n return;\n }\n\n if (rowElement) {\n const indexRow = Number(rowElement.dataset.indexRow);\n const row = rows.find((row: any) => row.indexRow === indexRow);\n\n if (row) {\n const isExpandRow = onClickRow(row, indexRow) || false;\n setExpandComponent(isExpandRow);\n }\n }\n },\n [onClickRow, rows]\n );\n\n if (rows.length === 0) {\n return (\n \n \n No content\n \n \n );\n }\n\n return (\n \n \n {rows.map((row: any, rowIndex: number) => {\n const className = rowClasses(row, row.indexRow);\n const isOpenRow = expandedRow === row.indexRow;\n\n return (\n \n );\n })}\n\n {isMoreButton && (\n \n \n \n )}\n \n
    \n Loading...\n
    \n );\n}\n\nexport default memo(Body);\n","import React from 'react';\n\nimport Field, { TypeFields } from 'components/Field';\nimport Styles from './Title.module.scss';\n\ninterface TitleProps {\n title: string;\n}\n\nfunction Title(props: any) {\n const { title } = props;\n\n if (!title) {\n return null;\n }\n\n return (\n

    \n {typeof title === 'string' ? (\n title\n ) : (\n \n )}\n

    \n );\n}\n\nexport default Title;\n","import { camelCase, isPlainObject } from 'lodash';\nimport { WidthFields, TypeFields } from 'components/Field';\n\nconst font = '400 14px OpenSans-Regular';\n\nfunction getChildName(parent: string, child: string) {\n return camelCase(parent + child);\n}\n\nconst getWidth = (() => {\n const c = document.createElement('canvas');\n const ctx = c.getContext('2d') as CanvasRenderingContext2D;\n\n return ({ name, width }: { name: string; width: number }) => {\n ctx.font = font;\n const titleWidth = ctx.measureText(name).width + 88;\n return Math.max(width, titleWidth);\n };\n})();\n\nfunction getRow(data: any) {\n const { rowData, columns, indexRow, isTotal = false, isSort = true } = data;\n const { values, ...others } = Array.isArray(rowData)\n ? { values: rowData }\n : rowData;\n let indexColumn = 0;\n\n return columns.reduce(\n (row: any, cell: any) => {\n if (cell.children) {\n cell.children.forEach((name: any) => {\n row[getChildName(cell.name, name)] = {\n type: cell.type,\n value: values[indexColumn++],\n parent: cell,\n };\n });\n\n indexColumn -= 1;\n }\n\n const value = values[indexColumn];\n const name = camelCase(cell.name);\n\n row[name] = {\n type: cell.type,\n parent: cell,\n };\n\n if (isPlainObject(value)) {\n const { type, title, ...other } = value;\n\n row[value.type] = true;\n\n row[name] = {\n ...row[name],\n value: title,\n type: type || cell.type,\n ...other,\n };\n } else {\n row[name].value = value;\n }\n\n indexColumn += 1;\n\n return row;\n },\n { isTotal, indexRow, isSort, ...(others || {}) }\n );\n}\n\nfunction getRows(data: any) {\n const { rows, total, columns } = data;\n\n const tableRows = rows.map((rowData: any, indexRow: number) =>\n getRow({ rowData, columns, indexRow })\n );\n\n if (total) {\n tableRows.push(\n getRow({\n columns,\n isSort: false,\n isTotal: true,\n indexRow: tableRows.length,\n rowData: ['Total', ...total],\n })\n );\n }\n\n return tableRows;\n}\n\nfunction getColumns(data: any, rows: any) {\n return data.map((column: any) => {\n if (column.children) {\n column.children = column.children.map((child: string) => {\n const name = getChildName(column.name, child);\n const values = rows\n .map((row: any) => row[name].value)\n .filter((value: any) =>\n Boolean(Array.isArray(value) ? value.toString() : value)\n );\n\n return {\n name,\n title: child,\n width: getWidth({\n name: child,\n width:\n values.length !== 0\n ? (WidthFields[column.type as TypeFields] ||\n WidthFields[TypeFields.Default]) - 25\n : 0, // remove HideIcon,\n }),\n };\n });\n } else {\n const values = rows\n .map((row: any) => row[camelCase(column.name)].value)\n .filter((value: any) =>\n Boolean(Array.isArray(value) ? value.toString() : value)\n );\n\n column.width =\n column.width ||\n getWidth({\n name: column.title,\n width:\n values.length !== 0\n ? WidthFields[column.type as TypeFields] ||\n WidthFields[TypeFields.Default]\n : 0,\n });\n }\n\n column.name = camelCase(column.name);\n column.alwaysHidden = column.hidden || false;\n column.hidden = column.defaultHidden || false;\n\n return column;\n });\n\n // return data.map((columns: any, column: any) => {\n // const children = column.children || [];\n\n // if (children.length !== 0) {\n // columns.push(\n // ...children.map((child: string) => ({\n // formatter: Field,\n // text: child,\n // hidden: column.hidden,\n // dataField: getChildName(column.name, child),\n // }))\n // );\n\n // return columns;\n // }\n\n // columns.push({\n // // headerAttrs: {\n // // colspan: children.length,\n // // rowspan: isHaveChildren && children.length === 0 ? 2 : 1,\n // // },\n // children,\n // formatter: Field,\n // text: column.title,\n // hidden: column.hidden,\n // // headerFormatter: HeaderCell,\n // dataField: camelCase(column.name),\n // });\n\n // return columns;\n // }, []);\n}\n\nexport const getTables = (tables: any[], index = 0) => {\n return (\n tables?.map((table: any) => {\n const {\n id,\n Data: data,\n Total: total,\n Title: title,\n Header: header,\n PostForm: postForm,\n options = {},\n Settings: settings = {},\n } = table;\n\n const rows = getRows({\n total,\n rows: data,\n columns: header,\n });\n\n const columns = getColumns(header, rows);\n\n if (settings.buttons) {\n const { columns } = settings.buttons;\n\n Object.keys(settings.buttons.columns).forEach((key: string) => {\n columns[key] = columns[key].map(camelCase);\n });\n }\n\n if (settings.sort) {\n settings.sort.name = camelCase(settings.sort.name);\n }\n\n return {\n rows,\n title,\n options,\n columns,\n settings,\n postForm,\n id: id ? `table-${id}` : undefined,\n };\n }) ?? []\n );\n};\n\nexport enum SortOrderMap {\n ORDER_ASCENDING = 'asc',\n ORDER_DESCENDING = 'desc',\n}\n\nexport function getAvailableColumns(columns: any) {\n const parentColumns = columns.map((col: any) => col.name);\n\n columns.forEach((col: any) => {\n if (col.children) {\n parentColumns.push(...col.children.map((child: any) => child.name));\n }\n });\n\n const uniqueColumns = [...(new Set(parentColumns) as any)];\n\n return uniqueColumns;\n}\n\nfunction sortFunc(data: any) {\n const { name, rows, order } = data;\n\n return rows.sort((a: any, b: any) => {\n const valA = a[name].value || a[name].title || 0;\n const valB = b[name].value || b[name].title || 0;\n\n const from = order === SortOrderMap.ORDER_ASCENDING ? valA : valB;\n const to = order === SortOrderMap.ORDER_ASCENDING ? valB : valA;\n\n if (typeof valA === 'number' && typeof valB === 'number') {\n return from - to;\n }\n\n return from.toString().localeCompare(to.toString(), undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n });\n}\n\n// TODO: search !== search doesn't need to filter rows\nexport const filterTable = (data: any) => {\n const { rows, name, order, search, columns } = data;\n\n const keys = columns.reduce((keys: any, col: any) => {\n if (col.children) {\n return [...keys, ...col.children.map((child: any) => child.name)];\n }\n return [...keys, col.name];\n }, []);\n\n let newRows = rows;\n\n if (name && order) {\n newRows = sortFunc({\n name,\n order,\n rows: rows.filter((row: any) => row.isSort),\n });\n\n rows\n .filter((row: any) => !row.isSort)\n .forEach((row: any) => newRows.splice(row.indexRow, 0, row));\n }\n\n return newRows.filter((row: any) =>\n keys.some(\n (key: string) =>\n row[key] &&\n String(row[key].value || row[key].title)\n .toUpperCase()\n .includes(search)\n )\n );\n};\n\nexport function hideData(props: any) {\n const { columns, hideColumns } = props;\n\n return columns.map((column: any) => {\n const { children } = column;\n\n if (children) {\n column.children = children.map((child: any) => ({\n ...child,\n hidden: hideColumns.some((col: any) =>\n col.name.includes(child.name.replace(column.name, ''))\n ),\n }));\n }\n\n return {\n ...column,\n hidden:\n column.alwaysHidden ||\n hideColumns.some((col: any) => col.name === column.name),\n };\n });\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M435.667,54.311c-7-7.1-18.4-7-25.5,0l-64,64c-79.3-36-163.9-27.2-244.6,25.5c-60.1,39.2-96.6,88.5-98.1,90.6 c-4.8,6.6-4.6,15.6,0.5,22c34.2,42,70,74.7,106.6,97.5l-56.3,56.3c-7,7-7,18.4,0,25.5c3.5,3.5,8.1,5.3,12.7,5.3s9.2-1.8,12.7-5.3 l356-355.9C442.667,72.811,442.667,61.411,435.667,54.311z M200.467,264.011c-2.6-5.9-3.9-12.3-3.9-19c0-12.9,5-25.1,14.2-34.3 c14.4-14.4,35.7-17.8,53.3-10.3L200.467,264.011z M290.667,173.911c-32.7-21-76.8-17.2-105.3,11.3c-16,16-24.7,37.2-24.7,59.7 c0,16.4,4.7,32.1,13.4,45.6l-37.1,37.1c-32.5-18.8-64.5-46.6-95.6-82.9c13.3-15.6,41.4-45.7,79.9-70.8 c66.6-43.4,132.9-52.8,197.5-28.1L290.667,173.911z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M486.067,233.611c-24.7-30.4-50.3-56-76.3-76.3c-7.9-6.1-19.2-4.7-25.4,3.1c-6.1,7.8-4.7,19.1,3.1,25.3 c20.6,16.1,41.2,36.1,61.2,59.5c-11.8,13.8-34.8,38.6-66,61.3c-60.1,43.7-120.8,59.5-180.3,46.9c-9.7-2.1-19.3,4.2-21.3,13.9 c-2.1,9.7,4.2,19.3,13.9,21.3c15.5,3.3,31.1,4.9,46.8,4.9c23.6,0,47.4-3.7,71.1-11.1c31.1-9.7,62-25.7,91.9-47.5 c50.4-36.9,80.5-77.6,81.8-79.3C491.367,249.011,491.167,240.011,486.067,233.611z\"\n});\n\nvar SvgHide = function SvgHide(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 490.034 490.034\",\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgHide, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/hide.8e1bbe24.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n});\n\nvar SvgSort = function SvgSort(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n focusable: \"false\",\n viewBox: \"0 0 24 24\",\n \"aria-hidden\": \"true\",\n role: \"presentation\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgSort, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/sort.91bbb579.svg\";\nexport { ForwardRef as ReactComponent };","import React, { memo, useMemo } from 'react';\nimport cx from 'classnames';\n\nimport { ReactComponent as IconHide } from '../../assets/hide.svg';\nimport { ReactComponent as IconSort } from '../../assets/sort.svg';\n\nimport { SortOrderMap } from '../../utils';\nimport { FontSize, FontSizeCoefficient } from '../../types';\n\nimport Styles from './HeaderCell.module.scss';\n\nfunction HeaderCell(props: any) {\n const {\n isLeft,\n column,\n rowSpan,\n colSpan,\n fontSize,\n sortOrder,\n isSortIcon,\n onSort,\n onHide,\n } = props;\n\n const icon = useMemo(\n () =>\n isSortIcon && (\n \n ),\n [isSortIcon, sortOrder]\n );\n\n const cellStyles = useMemo(() => {\n const width = Math.ceil(\n FontSizeCoefficient[fontSize as FontSize] * column.width\n );\n\n return {\n minWidth: width ? `${width}px` : undefined,\n };\n }, [column.width, fontSize]);\n\n return (\n \n \n {onHide && (\n \n )}\n\n \n {icon}\n {column.title}\n \n
    \n \n );\n}\n\nexport default memo(HeaderCell);\n","import React, {\n memo,\n useMemo,\n useRef,\n useCallback,\n useLayoutEffect,\n useState,\n useEffect,\n} from 'react';\nimport { flatten } from 'lodash';\nimport cx from 'classnames';\n\nimport { SortOrderMap } from '../../utils';\nimport HeaderCell from '../HeaderCell';\n\nimport Styles from './Header.module.scss';\n\nexport interface TableSort {\n name?: string | null;\n order?: SortOrderMap;\n}\n\nfunction Header(props: any) {\n const { sort, columns, fontSize, onSort, onHide, onChangeWidthTable } = props;\n\n const rowRef = useRef(null);\n const [widthRow, setWidthRow] = useState(0);\n\n const showColumns = useMemo(\n () => columns.filter((column: any) => !column.hidden),\n [columns]\n );\n\n const childrenColumns = useMemo(\n () =>\n flatten(\n showColumns.map((column: any) => column.children).filter(Boolean)\n ).filter((column: any) => !column.hidden),\n [showColumns]\n );\n\n const onClickSortIcon = useCallback(\n (e: React.SyntheticEvent) => {\n const { name } = e.currentTarget.dataset;\n\n if (!name) {\n return;\n }\n\n const newSort: TableSort = {\n name,\n };\n\n if (sort.name !== name) {\n newSort.order = SortOrderMap.ORDER_ASCENDING;\n\n onSort(newSort);\n return;\n }\n\n if (sort.order === SortOrderMap.ORDER_ASCENDING) {\n newSort.order = SortOrderMap.ORDER_DESCENDING;\n } else if (!sort.order) {\n newSort.order = SortOrderMap.ORDER_ASCENDING;\n }\n\n onSort(newSort);\n },\n [onSort, sort]\n );\n\n const onClickHideIcon = useCallback(\n (e: React.SyntheticEvent) => {\n const { name, title } = e.currentTarget.dataset;\n name && onHide({ name, title });\n },\n [onHide]\n );\n\n useLayoutEffect(() => {\n if (rowRef.current) {\n const newScrollWidth = rowRef.current.scrollWidth;\n\n onChangeWidthTable(newScrollWidth);\n setWidthRow(widthRow !== newScrollWidth ? newScrollWidth : 0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showColumns]);\n\n useEffect(() => {\n onChangeWidthTable(widthRow);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [widthRow]);\n\n return (\n \n \n \n {showColumns\n .filter((column: any) =>\n column.children ? childrenColumns.length : true\n )\n .map((column: any, index: number) => {\n const { children } = column;\n const isSortIcon = !children;\n const sortOrder = column.name === sort.name && sort.order;\n const colSpan =\n children &&\n children.filter((child: any) => !child.hidden).length;\n const columnChildren = column.children ? 1 : 2;\n\n return (\n \n );\n })}\n \n\n {childrenColumns.length !== 0 && (\n \n {childrenColumns.map((column: any, index: number) => (\n \n ))}\n \n )}\n \n
    \n );\n}\n\nexport default memo(Header);\n","import React, { useCallback, useState, useRef, useEffect } from 'react';\nimport cx from 'classnames';\n\nimport Styles from './Dropdown.module.scss';\n\n// TODO: separate component Menu/List\nfunction Dropdown(props: any) {\n const { title, items, className, onChange } = props;\n\n const [isOpenMenu, setIsOpenMenu] = useState(false);\n\n const dropdown = useRef(null);\n\n const toggleMenu = useCallback(() => {\n setIsOpenMenu(!isOpenMenu);\n }, [isOpenMenu]);\n\n const onClickItem = useCallback(\n (e: React.MouseEvent) => {\n const { id } = (e.target as HTMLLIElement).dataset;\n\n if (id) {\n toggleMenu();\n onChange(id);\n }\n },\n [onChange, toggleMenu]\n );\n\n function handleClickOutside(event: any) {\n if (dropdown.current && !(dropdown as any).current.contains(event.target)) {\n setIsOpenMenu(false);\n }\n }\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n });\n\n return (\n
    \n \n\n \n {items.map((item: any) => (\n \n {item.name}\n\n {item.children && (\n
      \n {item.children.map((child: any) => (\n
    • \n {child.name}\n
    • \n ))}\n
    \n )}\n \n ))}\n \n
    \n );\n}\n\nexport default Dropdown;\n","import React, { useMemo } from 'react';\n\nimport Dropdown from 'components/Dropdown';\nimport Styles from './Actions.module.scss';\n\nfunction Actions(props: any) {\n const { canAddNewRecord, canExportCSV = true, onClick } = props;\n\n const actions = useMemo(\n () =>\n [\n canAddNewRecord && {\n id: 'newRecord',\n name: 'Add a new record',\n },\n {\n name: 'Change font',\n children: [\n {\n id: 'bigger',\n name: 'Bigger',\n },\n {\n id: 'normal',\n name: 'Normal',\n },\n {\n id: 'smaller',\n name: 'Smaller',\n },\n ],\n },\n canExportCSV && {\n id: 'export',\n name: 'Export to CSV',\n },\n {\n id: 'reset',\n name: 'Reset settings',\n },\n ].filter(Boolean),\n [canAddNewRecord, canExportCSV]\n );\n\n return (\n \n );\n}\n\nexport default Actions;\n","import React, { memo, useCallback } from 'react';\n\nimport Styles from './HideColumns.module.scss';\n\nfunction HideColumns(props: any) {\n const { columns, onClick } = props;\n\n const onClickList = useCallback(\n (e: React.SyntheticEvent) => {\n const { name } = (e.target as HTMLElement).dataset;\n if (name) {\n onClick(name);\n }\n },\n [onClick]\n );\n\n return (\n
    \n
    Hidden Columns:
    \n\n
      \n {columns.map((column: any) => (\n
    • \n {column.title}\n\n \n
    • \n ))}\n
    \n
    \n );\n}\n\nexport default memo(HideColumns);\n","import React, { memo, useMemo, useCallback } from 'react';\nimport cx from 'classnames';\n\nimport Styles from './ShowColumns.module.scss';\n\nfunction ShowColumns(props: any) {\n const { activeName, onChange } = props;\n\n const columns = useMemo(\n () => Object.keys(props.columns).sort(),\n [props.columns]\n );\n\n const onClick = useCallback(\n (e: React.SyntheticEvent) => {\n const { name } = (e.target as HTMLElement).dataset;\n\n if (name === activeName) {\n onChange();\n return;\n }\n\n if (name) {\n onChange(props.columns[name], name);\n }\n },\n [activeName, props.columns, onChange]\n );\n\n return (\n
    \n
    Show columns:
    \n\n
      \n {columns.map((name: string) => (\n \n {name}\n \n ))}\n
    \n
    \n );\n}\n\nexport default memo(ShowColumns);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"metadata\", null, \" Svg Vector Icons : http://www.onlinewebfonts.com/icon \");\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(0.000000,511.000000) scale(0.100000,-0.100000)\"\n}, React.createElement(\"path\", {\n d: \"M6930.4,4545.1c-242.1-244.7-443-455.9-443-468.8s67-90.1,146.8-172.6l149.4-149.4l-656.8-656.8L5470,2440.9H4530h-940.1l-579.5-579.5l-579.5-579.5l783-783l785.5-785.6l-273-291C3577-737.4,2701.3-1680,1776.7-2671.6L100-4474.5l146.8-146.8c82.4-82.4,154.5-149.4,162.3-149.4s953,873.1,2101.7,1942l2083.6,1942l785.5-782.9l785.5-783l574.3,574.3l571.8,571.8v940.1v940.1l661.9,661.9L8638,1900l159.7-159.7l162.3-162.3l471.3,471.3l468.8,468.8L8663.7,3754.4c-680,679.9-1246.6,1236.3-1262,1236.3S7175.1,4789.8,6930.4,4545.1z M8349.5,3450.5L9269,2531l-154.5-154.5l-154.5-152l-154.5,152L8650.8,2531l-888.6-888.6l-888.6-888.6v-940.1v-940.1l-355.4-355.4l-352.9-352.9L4607.2-276.3L3049,1281.9l355.4,352.9l352.9,355.4l945.2,5.2l945.2,5.1l870.5,870.5c479,479,870.5,883.4,870.5,896.3c0,15.5-64.4,90.1-141.7,167.4l-141.7,139.1l146.8,149.4c82.4,82.4,154.5,149.4,162.3,149.4C7422.3,4372.5,7842.1,3957.9,8349.5,3450.5z\"\n})));\n\nvar SvgPin = function SvgPin(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 1000 1000\",\n enableBackground: \"new 0 0 1000 1000\",\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgPin, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/pin.f4a5a37c.svg\";\nexport { ForwardRef as ReactComponent };","import React, {\n memo,\n useRef,\n useState,\n useEffect,\n useMemo,\n useCallback,\n} from 'react';\nimport cx from 'classnames';\nimport { debounce } from 'lodash';\n\nimport Search from 'components/Search';\nimport { TypeFields } from 'components/Field';\nimport Modal from 'components/common/OpenModal';\nimport Body from '../Body';\nimport Title from '../Title';\nimport Header from '../Header';\nimport Actions from '../Actions';\nimport HideColumns from '../HideColumns';\nimport ShowColumns from '../ShowColumns';\nimport { FontSize } from '../../types';\nimport { ReactComponent as IconPin } from '../../assets/pin.svg';\n\nimport Styles from './Table.module.scss';\n\nexport interface TableProps {\n id: string;\n sort: any;\n rows: any;\n title: string | any;\n search: string;\n columns: any;\n options: any;\n width: number;\n fontSize: FontSize;\n isMoreButton: boolean;\n isPinFixedHead: boolean;\n hideColumns: string[];\n expandedRow: any;\n selectedRow: any;\n onHideColumn: any;\n onSort: any;\n onClickRow: any;\n modalExpanded: any;\n onClickActions: any;\n onChangeSearch: any;\n onClickMoreRows: any;\n onClickShowColumn: any;\n onHideModal: () => void;\n onChangeShowColumns?: any;\n showColumns?: any[];\n showColumnName?: string;\n componentForEachTable?: any;\n}\n\nfunction Table(props: TableProps) {\n const {\n id,\n sort,\n rows,\n title,\n width,\n search,\n columns,\n fontSize,\n hideColumns,\n showColumns,\n expandedRow,\n selectedRow,\n isMoreButton,\n modalExpanded,\n showColumnName,\n componentForEachTable,\n onHideColumn,\n onSort,\n onClickRow,\n onHideModal,\n onClickActions,\n onChangeSearch,\n onClickMoreRows,\n onClickShowColumn,\n onChangeShowColumns,\n options = {},\n isPinFixedHead = true,\n } = props;\n\n const tableRef = useRef(null);\n const headerRef = useRef(null);\n const [isFixedHeader, setIsFixedHeader] = useState(isPinFixedHead);\n const [widthTable, setWidthTable] = useState(0);\n\n const rowClasses = useCallback(\n (row: any, rowIndex: number) => {\n if (row.isTotal) {\n return Styles.total;\n }\n\n if (expandedRow === rowIndex) {\n return Styles.purple;\n }\n\n if (selectedRow === rowIndex) {\n return Styles.orange;\n }\n\n return cx(\n Object.values(TypeFields).reduce((acc: any, key: string) => {\n acc[Styles[key]] = row[key];\n return acc;\n }, {})\n );\n },\n [expandedRow, selectedRow]\n );\n\n const onScroll = useCallback(() => {\n const { current: table } = tableRef;\n\n if (!table) {\n return;\n }\n\n const height = table.scrollHeight - table.offsetHeight - 100;\n\n if (height < table.scrollTop) {\n onClickMoreRows();\n }\n }, [onClickMoreRows]);\n\n const onClickTableRow = useCallback(\n (...args) => onClickRow(...args),\n [onClickRow]\n );\n\n const onClickPinIcon = useCallback(() => {\n setIsFixedHeader(!isFixedHeader);\n }, [isFixedHeader]);\n\n useEffect(() => {\n const onLoadingRows = debounce(() => {\n if (isFixedHeader || !isMoreButton) {\n return;\n }\n\n const { current: table } = headerRef as any;\n const scrollDown = window.innerHeight + window.scrollY;\n\n if (table.offsetHeight - scrollDown < 0) {\n onClickMoreRows();\n }\n }, 100);\n\n window.addEventListener('scroll', onLoadingRows, false);\n return () => {\n window.removeEventListener('scroll', onLoadingRows, false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onChangeWidthTable = useCallback((widthRow: number) => {\n setWidthTable(widthRow);\n }, []);\n\n const styleExpandedRow = useMemo(\n () => ({\n width: tableRef.current ? `${tableRef.current.offsetWidth}px` : '100%',\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [tableRef.current?.offsetWidth]\n );\n\n const tableStyle = useMemo(\n () => ({\n fontSize: `${fontSize || FontSize.Normal}px`,\n }),\n [fontSize]\n );\n\n return (\n
    \n
    \n \n\n <div className={Styles.additional}>\n <Search value={search} onChange={onChangeSearch} />\n <Actions\n canExportCSV={options.canExportCSV}\n canAddNewRecord={options.canAddNewRecord}\n onClick={onClickActions}\n />\n </div>\n </div>\n\n <div className={Styles.containerShowColumns}>\n {showColumns && (\n <ShowColumns\n columns={showColumns}\n activeName={showColumnName}\n onChange={onChangeShowColumns}\n />\n )}\n\n {options?.canAddNewRecord && <div />}\n </div>\n\n {hideColumns.length !== 0 && (\n <HideColumns columns={hideColumns} onClick={onClickShowColumn} />\n )}\n\n <div className={Styles.wrapper}>\n <IconPin\n className={cx(Styles.pin, {\n [Styles.active]: isFixedHeader,\n })}\n onClick={onClickPinIcon}\n />\n\n <div\n ref={tableRef}\n className={cx(Styles.table, { [Styles.fixed]: isFixedHeader })}\n onScroll={onScroll}\n >\n <Header\n id={id}\n sort={sort}\n columns={columns}\n fontSize={fontSize}\n onSort={onSort}\n onHide={onHideColumn}\n onChangeWidthTable={onChangeWidthTable}\n />\n\n <div className={Styles.tableContainer}>\n <Body\n id={id}\n rows={rows}\n columns={columns}\n fontSize={fontSize}\n expandedRow={expandedRow}\n isMoreButton={isMoreButton}\n isFixedHeader={isFixedHeader}\n className={options.bodyClassName}\n styleExpandedRow={styleExpandedRow}\n rowClasses={rowClasses}\n onClickRow={onClickTableRow}\n onClickMoreRows={onClickMoreRows}\n />\n </div>\n </div>\n </div>\n\n {componentForEachTable}\n\n {modalExpanded && (\n <Modal isOpen onHide={onHideModal}>\n {modalExpanded}\n </Modal>\n )}\n </div>\n );\n}\n\nexport default memo(Table);\n","import React, { PureComponent } from 'react';\nimport { Parser } from 'json2csv';\nimport { saveAs } from 'file-saver';\nimport { animateScroll as scroll } from 'react-scroll';\nimport cx from 'classnames';\nimport { isEqual, camelCase } from 'lodash';\n\nimport { FontSize } from '../../types';\nimport { filterTable, hideData } from '../../utils';\nimport { Table } from '../../components';\n\nconst STEP_SHOW_ROWS = 50;\n\ninterface State {\n rows: any;\n sort: any;\n columns: any;\n search: string;\n showRows: number;\n fontSize: FontSize;\n hideColumns: any[];\n expandedRow: number | null;\n selectedRow: number | null;\n modalExpanded: React.ReactElement | null;\n showColumnName?: string;\n}\n\nclass TableContainer extends PureComponent<any, State> {\n constructor(props: any) {\n super(props);\n\n const hideColumns =\n props.columns\n ?.filter((c: any) => c.hidden)\n .map((c: any) => ({ name: c.name, title: c.title })) ?? [];\n\n this.state = {\n sort: {\n ...(props.settings.sort || {}),\n },\n search: '',\n showRows: STEP_SHOW_ROWS,\n selectedRow: null,\n expandedRow: null,\n modalExpanded: null,\n showColumnName: undefined,\n fontSize: FontSize.Normal,\n rows: [],\n hideColumns,\n columns: hideData({ columns: props.columns, hideColumns }),\n };\n }\n\n static getDerivedStateFromProps(props: any, state: State) {\n if (isEqual(props.rows, state.rows)) {\n return null;\n }\n\n const { sort, search, columns } = state;\n\n return {\n rows: filterTable({\n ...sort,\n columns,\n rows: props.rows,\n search: search.toUpperCase(),\n }),\n };\n }\n\n filterData = () => {\n const rows = [...this.props.rows];\n const { sort, search, columns } = this.state;\n\n this.setState({\n showRows: STEP_SHOW_ROWS,\n rows: filterTable({\n ...sort,\n rows,\n columns,\n search: search.toUpperCase(),\n }),\n });\n };\n\n hideData = () => {\n const { columns, hideColumns } = this.state;\n\n this.setState({\n showColumnName: undefined,\n columns: hideData({ columns, hideColumns }),\n });\n };\n\n onChangeSearch = (search: string) => {\n this.setState(\n {\n search,\n },\n this.filterData\n );\n };\n\n onSort = (sort: any) => {\n this.setState(\n {\n sort,\n },\n this.filterData\n );\n };\n\n onHideColumn = ({ name, title }: any) => {\n const { hideColumns } = this.state;\n\n this.setState(\n {\n hideColumns: [...hideColumns, { name, title }],\n },\n this.hideData\n );\n };\n\n onClickRow = (row: any, rowIndex: number): void | any => {\n const { settings } = this.props;\n const { selectedRow, expandedRow } = this.state;\n const handle = row.handle || settings.handle;\n\n switch (handle) {\n case 'open': {\n const { link, params } = settings;\n const keys = Object.keys(params)\n .map((k) => `${k}=${row[camelCase(params[k])].value}`)\n .join('&');\n\n window.open(`${link}?${keys}`);\n return;\n }\n\n case 'click': {\n if (!this.props.expandComponent) {\n return;\n }\n\n if (expandedRow === rowIndex || row.isTotal) {\n this.setState({\n expandedRow: null,\n });\n return;\n }\n\n this.setState({\n expandedRow: rowIndex,\n });\n\n // eslint-disable-next-line consistent-return\n return this.onClickExpandRow(row);\n }\n\n case 'scroll': {\n const { params } = settings;\n const id = row[params.table];\n const rowId = row[params.row];\n\n const selector = cx({\n [`#table-${id && id.value}`]: !!params.table,\n [`.row-${rowId && rowId.value}`]: !!params.row,\n });\n\n const dom = document.querySelector(selector) as any;\n\n if (dom) {\n const { scrollTop } = document.documentElement;\n scroll.scrollTo(dom.getBoundingClientRect().y + scrollTop - 60, {\n delay: 0,\n duration: 1000,\n });\n }\n break;\n }\n\n case 'modal': {\n this.setState({\n modalExpanded: this.onClickExpandRow(row),\n });\n break;\n }\n\n default: {\n // const isModal = handle === 'modal';\n\n // this.focusIndexRow[table.index] =\n // this.focusIndexRow[table.index] === row.indexRow && !isModal\n // ? null\n // : row.indexRow;\n\n // const { expanding } = this.state;\n // expanding[table.index] = [];\n\n // this.setState({\n // expanding: [...expanding],\n // modal: {\n // row,\n // table: table,\n // isOpen: isModal,\n // settings: table.settings\n // }\n // });\n break;\n }\n }\n\n this.setState({\n selectedRow: selectedRow === rowIndex ? null : rowIndex,\n });\n };\n\n onClickMoreRows = () => {\n const { showRows } = this.state;\n\n this.setState({\n showRows: showRows + STEP_SHOW_ROWS,\n });\n };\n\n onClickExpandRow = (row: any): React.ReactElement => {\n const { expandComponent: ExpandComponent } = this.props;\n\n const { rows, title, columns, settings, onChangeRow } = this.props;\n\n const table = {\n rows,\n title,\n columns,\n };\n\n return (\n <ExpandComponent\n row={row}\n table={table}\n settings={settings}\n onHide={this.onHideModal}\n onChangeRow={onChangeRow}\n onExpand={this.closeExpandRow}\n />\n );\n };\n\n closeExpandRow = () => {\n this.setState({\n expandedRow: null,\n });\n };\n\n onClickActions = (id: string) => {\n switch (id) {\n case 'export':\n this.exportData();\n break;\n\n case 'smaller': {\n this.setState({\n fontSize: FontSize.Smaller,\n });\n break;\n }\n\n case 'normal': {\n this.setState({\n fontSize: FontSize.Normal,\n });\n break;\n }\n\n case 'bigger': {\n this.setState({\n fontSize: FontSize.Bigger,\n });\n break;\n }\n\n case 'reset': {\n this.setState({\n sort: '',\n search: '',\n fontSize: 14,\n selectedRow: null,\n hideColumns: [],\n rows: [...this.props.rows],\n columns: [...this.props.columns],\n });\n break;\n }\n\n default:\n break;\n }\n };\n\n onClickShowColumn = (name: string) => {\n const { hideColumns } = this.state;\n this.setState(\n {\n hideColumns: hideColumns.filter((column: any) => column.name !== name),\n },\n this.hideData\n );\n };\n\n onChangeShowColumns = (showColumns: string[], showColumnName: string) => {\n const { columns } = this.state;\n\n if (!showColumns) {\n this.setState({\n showColumnName,\n });\n this.hideData();\n return;\n }\n\n const hideColumns = columns\n .map((column: any) => ({ name: column.name }))\n .filter((column: any) => !showColumns.includes(column.name));\n\n this.setState({\n hideColumns: [],\n showColumnName,\n columns: hideData({ columns, hideColumns }),\n });\n };\n\n onHideModal = () => {\n this.setState({\n selectedRow: null,\n modalExpanded: null,\n });\n };\n\n exportData = () => {\n const { rows, columns } = this.state;\n\n try {\n const fields = columns.reduce((fields: any, col: any) => {\n if (col.children) {\n fields.push(\n ...col.children.map((child: any) => ({\n label: child.title,\n value: `${child.name}.value`,\n }))\n );\n } else {\n fields.push({\n label: col.title,\n value: `${col.name}.value`,\n });\n }\n\n return fields;\n }, []);\n\n const json2csvParser = new Parser({ fields });\n const csv = json2csvParser.parse(rows);\n const blob = new Blob([csv], { type: 'data:text/csv;charset=utf-8' });\n saveAs(blob, 'scv.csv');\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n };\n\n render() {\n const {\n sort,\n rows,\n search,\n columns,\n fontSize,\n showRows,\n hideColumns,\n expandedRow,\n selectedRow,\n modalExpanded,\n showColumnName,\n } = this.state;\n const {\n id,\n title,\n options,\n settings,\n isPinFixedHead,\n showComponentForEachTable,\n componentForEachTable: ComponentForEachTable,\n providerPropsForComponentTable,\n } = this.props;\n\n return (\n <Table\n id={id}\n sort={sort}\n title={title}\n search={search}\n columns={columns}\n options={options}\n fontSize={fontSize}\n width={settings.width}\n hideColumns={hideColumns}\n expandedRow={expandedRow}\n selectedRow={selectedRow}\n modalExpanded={modalExpanded}\n rows={rows.slice(0, showRows)}\n showColumnName={showColumnName}\n isPinFixedHead={isPinFixedHead}\n isMoreButton={showRows < rows.length}\n showColumns={settings.buttons && settings.buttons.columns}\n onSort={this.onSort}\n onClickRow={this.onClickRow}\n onHideModal={this.onHideModal}\n onHideColumn={this.onHideColumn}\n onClickActions={this.onClickActions}\n onChangeSearch={this.onChangeSearch}\n onClickMoreRows={this.onClickMoreRows}\n onClickShowColumn={this.onClickShowColumn}\n onChangeShowColumns={this.onChangeShowColumns}\n componentForEachTable={\n ComponentForEachTable &&\n showComponentForEachTable(this.props) && (\n <ComponentForEachTable\n {...providerPropsForComponentTable(this.props)}\n />\n )\n }\n />\n );\n }\n}\n\nexport default TableContainer;\n","import React, { memo, useState, useEffect, useCallback } from 'react';\n\nimport { ServiceNoContentPlaceholder } from 'components/common/ServicePlaceholder';\nimport { TableContainer } from '../../containers';\n\ninterface TablesProps {\n data: any;\n title: string;\n options?: any;\n expandComponent?: any;\n onChangeTable?: any;\n isPinFixedHead?: boolean;\n componentForEachTable?: any;\n showComponentForEachTable?: any;\n providerPropsForComponentTable?: any;\n onChangeRow?(row: any): void;\n}\n\nfunction Wrapper(props: any) {\n const { rows: parentRows, onChangeRow, ...others } = props;\n\n const [rows, setRows] = useState(parentRows);\n\n const handleChangeRow = useCallback(\n (newRow: any) => {\n setRows((r: any) =>\n r.map((row: any) => (row.indexRow === newRow.indexRow ? newRow : row))\n );\n onChangeRow(newRow);\n },\n [onChangeRow]\n );\n\n useEffect(() => {\n setRows(parentRows);\n }, [parentRows]);\n\n return (\n <TableContainer {...others} rows={rows} onChangeRow={handleChangeRow} />\n );\n}\n\nfunction Tables(props: TablesProps) {\n const {\n data,\n title,\n options,\n isPinFixedHead,\n expandComponent,\n onChangeTable,\n onChangeRow,\n componentForEachTable,\n showComponentForEachTable = () => false,\n providerPropsForComponentTable = () => ({}),\n } = props;\n\n if (data.length === 0) {\n return <ServiceNoContentPlaceholder />;\n }\n\n return data.map((table: any, index: number) => (\n <Wrapper\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n {...table}\n options={options}\n title={table.title || title}\n isPinFixedHead={isPinFixedHead}\n onChangeRow={onChangeRow}\n onChangeTable={onChangeTable}\n expandComponent={expandComponent}\n componentForEachTable={componentForEachTable}\n showComponentForEachTable={showComponentForEachTable}\n providerPropsForComponentTable={providerPropsForComponentTable}\n />\n ));\n}\n\nexport default memo(Tables);\n","import React, { memo, useMemo } from 'react';\nimport { useAxios } from 'utils';\n\nimport { Tables, getTables } from 'modules';\nimport Loading from 'components/common/Loading';\nimport { ServiceErrorPlaceholder } from 'components/common/ServicePlaceholder';\n\nconst API_TABLE = '/report/';\n\nexport const TestReport = memo(() => {\n const params: { [key: string]: string } = useMemo(\n () =>\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n [...new URLSearchParams(window.location.search).entries()].reduce(\n (p, n) => ({ ...p, [n[0]]: n[1] }),\n {}\n ),\n []\n );\n\n const formData = useMemo(() => {\n const newFormData = new FormData();\n\n Object.keys(params).forEach((key) => {\n if (key !== 'name') {\n newFormData.append(key, params[key]);\n }\n });\n\n return newFormData;\n }, [params]);\n\n const [{ loading, data, error }] = useAxios({\n method: 'POST',\n data: formData,\n url: `${API_TABLE}?name=${params.name}`,\n });\n\n if (loading) {\n return <Loading isShow />;\n }\n\n if (error) {\n return (\n <ServiceErrorPlaceholder\n title={error.response?.data ? error.message : undefined}\n description={\n error.response?.data\n ? JSON.stringify(error.response?.data)\n : error.message\n }\n />\n );\n }\n\n return (\n <Tables\n data={getTables(data || [])}\n title={params.name || 'Not found [name] parameter in path'}\n />\n );\n});\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { reductionForNumber } from 'utils/separator';\n\nimport styles from './Legend.module.scss';\n\nconst Legend = (name, entry) => {\n const {\n isHide,\n hideValue,\n percent,\n realValue = 0,\n isNegative,\n } = entry.payload;\n\n const huminateValue = reductionForNumber(realValue);\n const formatValue = isNegative ? `(${huminateValue})` : huminateValue;\n const huminatePercent = (percent * 100)?.toFixed(2);\n const formatPercent = isNegative ? `(${huminatePercent})` : huminatePercent;\n\n return (\n <span className={cx(styles.legend, { [styles.hide]: isHide })}>\n {name}\n\n {hideValue ? (\n <span\n className={cx(styles.value, {\n [styles.negative]: isNegative && realValue !== 0,\n })}\n >\n {formatPercent}%\n </span>\n ) : (\n <span\n className={cx(styles.value, {\n [styles.negative]: isNegative && realValue !== 0,\n })}\n >\n {formatValue}\n </span>\n )}\n </span>\n );\n};\n\nexport default Legend;\n","import React from 'react';\nimport { Sector } from 'recharts';\n\nimport { reductionForNumber } from 'utils/separator';\nimport styles from './ActiveShape.module.scss';\n\nconst RADIAN = Math.PI / 180;\n\nconst ActiveShape = (props: any) => {\n const {\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n fill,\n payload,\n percent,\n value,\n hideValue,\n isNegative,\n } = props;\n\n const sin = Math.sin(-RADIAN * midAngle);\n const cos = Math.cos(-RADIAN * midAngle);\n const textAnchor = cos >= 0 ? 'start' : 'end';\n const sx = cx + (outerRadius + 10) * cos;\n const sy = cy + (outerRadius + 10) * sin;\n const mx = cx + (outerRadius + 45) * cos;\n const my = cy + (outerRadius + 45) * sin;\n const ex = mx + (cos >= 0 ? 1 : -1) * 22;\n const ey = my;\n\n const x = ex + (cos >= 0 ? 1 : -1) * 12;\n\n return (\n <g className={styles.shape}>\n <Sector\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n startAngle={startAngle}\n endAngle={endAngle}\n fill={fill}\n />\n\n <Sector\n cx={cx}\n cy={cy}\n startAngle={startAngle}\n endAngle={endAngle}\n innerRadius={outerRadius + 6}\n outerRadius={outerRadius + 12}\n fill={fill}\n />\n\n <path\n d={`M${sx},${sy}L${mx},${my}L${ex},${ey}`}\n stroke={fill}\n fill=\"none\"\n />\n <circle cx={ex} cy={ey} r={2} fill={fill} stroke=\"none\" />\n\n <text x={x} y={ey} textAnchor={textAnchor} fill=\"#333\">\n {payload.name}\n </text>\n\n {!hideValue && (\n <text x={x} y={ey} dy={18} textAnchor={textAnchor} fill=\"#666\">\n {isNegative ? '-' : ''}\n {reductionForNumber(value)}\n </text>\n )}\n\n <text\n x={x}\n y={ey}\n dy={hideValue ? 18 : 36}\n textAnchor={textAnchor}\n fill=\"#999\"\n >\n {`${(percent * 100).toFixed(2)}%`}\n </text>\n </g>\n );\n};\n\nActiveShape.displayName = 'ActiveShape';\n\nexport default ActiveShape;\n","import React from 'react';\n\nimport { reductionForNumber } from 'utils/separator';\n\nconst RADIAN = Math.PI / 180;\n\nexport const label = (props: any): JSX.Element | null => {\n const {\n cx,\n cy,\n fill,\n value,\n payload,\n midAngle,\n hideValue,\n isNegative,\n outerRadius,\n } = props;\n\n if (payload.isHide) {\n return null;\n }\n\n const sin = Math.sin(-RADIAN * midAngle);\n const cos = Math.cos(-RADIAN * midAngle);\n const textAnchor = cos >= 0 ? 'start' : 'end';\n\n const scale = outerRadius / 100;\n\n const isLessValue = cos > 0.5 && sin > -0.001 && sin < 0.1;\n const delta = isLessValue\n ? Math.min(Math.abs(Math.log(sin) || 10) * 5.5 * scale, 60 * scale)\n : 0;\n\n const sx = cx + (outerRadius - 0) * cos;\n const sy = cy + (outerRadius - 0) * sin;\n const mx = cx + (outerRadius + 20) * cos;\n const my = cy + (outerRadius + 20) * sin - delta;\n\n const ex = mx + (cos >= 0 ? 1 : -1) * 28 * scale;\n const ey = my;\n\n const x = ex + (cos >= 0 ? 1 : -1) * 12 * scale;\n const percent = `${(props.percent * 100).toFixed(2)}%`;\n\n return (\n <g>\n <path\n d={`M${sx},${sy}L${mx},${my}L${ex},${ey}`}\n stroke={fill}\n strokeWidth={scale}\n fill=\"none\"\n />\n\n <circle cx={ex} cy={ey} r={2 * scale} fill={fill} stroke=\"none\" />\n\n <g className=\"doughnut-chart__label--text\">\n {!hideValue && (\n <>\n <text\n x={x}\n y={ey}\n fill=\"#333\"\n fontSize={14 * scale}\n textAnchor={textAnchor}\n >\n {payload.name}\n </text>\n <text\n x={x}\n y={ey}\n fill=\"#666\"\n dy={18 * scale}\n fontSize={14 * scale}\n textAnchor={textAnchor}\n >\n {isNegative ? '-' : ''}\n {reductionForNumber(value)}\n </text>\n </>\n )}\n\n <text\n x={x}\n y={ey}\n fill={fill}\n fontSize={14 * scale}\n textAnchor={textAnchor}\n dy={(hideValue ? 4 : 36) * scale}\n >\n {isNegative ? `(${percent})` : percent}\n </text>\n </g>\n </g>\n );\n};\n","import React, { memo, useMemo, useState, useCallback } from 'react';\nimport {\n PieChart,\n Pie,\n PieProps,\n Legend,\n Label,\n LegendProps,\n ResponsiveContainer,\n} from 'recharts';\n\nimport { reductionForNumber } from 'utils/separator';\nimport Styles from './DoughnutChart.module.scss';\nimport LegendFormatter from './Legend';\nimport ActiveShape from './ActiveShape';\nimport { label } from './Label';\n\ninterface Doughnut {\n fill: string;\n name: string;\n value: number;\n realValue: number;\n isHide?: boolean;\n}\n\ninterface DoughnutChartProps {\n data: Doughnut[];\n sortNames?: string[];\n hideValue?: boolean;\n isNegative?: boolean;\n pie?: Partial<PieProps>;\n withActiveShape?: boolean;\n legend?: Partial<LegendProps>;\n}\n\nconst EMPTY_NAME = '__empty__';\n\nconst emptyItem = {\n value: 0,\n fill: '#fff',\n isHide: true,\n realValue: 0,\n name: EMPTY_NAME,\n};\n\nexport const DoughnutChart = memo((props: DoughnutChartProps) => {\n const {\n hideValue,\n sortNames,\n isNegative,\n withActiveShape,\n pie = {},\n legend = {},\n } = props;\n\n const [data, setData] = useState([emptyItem, ...props.data]);\n const [activeIndex, setActiveIndex] = useState<null | number>();\n\n const onPieEnter = useCallback(\n (_, index) => setActiveIndex(index),\n [setActiveIndex]\n );\n\n const onClickLegend = useCallback(\n ({ value }) => {\n const isHide = data.find((item) => item.name === value)?.isHide;\n\n if (!isHide && data.filter((item) => !item.isHide).length === 1) {\n return;\n }\n\n setData(\n data.map((item) => ({\n ...item,\n isHide: item.name === value ? !item.isHide : item.isHide,\n }))\n );\n setActiveIndex(null);\n },\n [data, setData, setActiveIndex]\n );\n\n const sum = useMemo(\n () =>\n data\n .filter((item) => !item.isHide)\n .reduce((p, n) => p + n.value, 0)\n .toFixed(2),\n [data]\n );\n\n const showData = useMemo(() => {\n const bufData = data.map((item) => ({\n ...item,\n hideValue,\n value: item.isHide ? 0 : item.value,\n }));\n\n if (sortNames) {\n return bufData.sort(\n (a, b) => sortNames.indexOf(a.name) - sortNames.indexOf(b.name)\n );\n }\n\n return bufData.sort((a, b) => {\n if (a.name === EMPTY_NAME || b.name === EMPTY_NAME) {\n return 1;\n }\n\n return a.value < b.value ? 1 : -1;\n });\n }, [data, hideValue, sortNames]);\n\n const pieProps = useMemo(() => {\n if (withActiveShape) {\n setTimeout(() => {\n setActiveIndex?.(1);\n }, 500);\n return {\n activeShape: ActiveShape,\n };\n }\n\n return {\n label,\n labelLine: false,\n };\n }, [withActiveShape]);\n\n return (\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n className={Styles.container}\n >\n <PieChart stackOffset=\"sign\">\n <Pie\n activeIndex={activeIndex || undefined}\n data={showData}\n innerRadius=\"40%\"\n outerRadius=\"60%\"\n dataKey=\"value\"\n {...pieProps}\n {...pie}\n onMouseEnter={onPieEnter}\n >\n {!hideValue && (\n <Label position=\"center\" className={Styles.total}>\n {`Total ${isNegative ? '-' : ''}${reductionForNumber(sum)}`}\n </Label>\n )}\n </Pie>\n\n <Legend\n height={36}\n align=\"right\"\n layout=\"vertical\"\n verticalAlign=\"top\"\n iconSize={16}\n {...legend}\n formatter={LegendFormatter}\n onClick={onClickLegend}\n />\n </PieChart>\n </ResponsiveContainer>\n );\n});\n","import React, { Component } from 'react';\nimport { DropdownButton, MenuItem } from 'react-bootstrap';\nimport moment from 'moment';\nimport cx from 'classnames';\n\nimport './MonthElement.scss';\n\nclass MonthElement extends Component {\n constructor(props) {\n super(props);\n\n const years = [];\n\n for (let i = 2015; i <= moment().year(); i++) {\n years.push(i);\n }\n\n this.state = {\n years,\n isOpen: false,\n selectedYear: null,\n selectedMonth: null,\n months: moment.months(),\n };\n }\n\n static getDerivedStateFromProps({ focusDate }) {\n if (focusDate === null) {\n return {\n isOpen: false,\n selectedYear: null,\n selectedMonth: null,\n };\n }\n return null;\n }\n\n handleToggle = (e) => {\n e.preventDefault();\n const { isOpen } = this.state;\n this.setState({\n isOpen: !isOpen,\n });\n };\n\n onSelectYear = (selectedYear) => {\n this.setState({\n selectedYear,\n });\n };\n\n onSelectMonth = (e) => {\n e.preventDefault();\n const { value } = e.target.dataset;\n if (!value) {\n return;\n }\n this.setState({\n selectedMonth: Number(value),\n });\n };\n\n handleClickApply =\n ({ month, onMonthSelect, onYearSelect }) =>\n () => {\n const { selectedYear, selectedMonth } = this.state;\n\n if (selectedYear !== null) {\n month =\n selectedMonth === null\n ? onYearSelect(month, selectedYear)\n : month.year(selectedYear);\n }\n\n if (selectedMonth !== null) {\n onMonthSelect(month, selectedMonth);\n }\n\n this.setState({\n isOpen: false,\n selectedYear: null,\n selectedMonth: null,\n });\n };\n\n renderOpenElement = (onClickApply, year, month) => {\n const { years, months, selectedYear, selectedMonth } = this.state;\n\n const curMonth = selectedMonth !== null ? selectedMonth : month;\n\n return (\n <div className=\"c-dates__month-elements__body\">\n <div className=\"c-dates__month-elements__body--years c-dropdown\">\n <DropdownButton\n noCaret\n title={selectedYear || year}\n onSelect={this.onSelectYear}\n id=\"c-dates__month-elements--dropdown\"\n >\n {years.map((year) => (\n <MenuItem key={year} eventKey={year} className=\"dropdown-item\">\n {year}\n </MenuItem>\n ))}\n </DropdownButton>\n </div>\n\n <div\n className=\"c-dates__month-elements__body--months\"\n onClick={this.onSelectMonth}\n >\n {months.map((label, index) => (\n <button\n key={index}\n data-value={index}\n className={index === curMonth ? 'active' : ''}\n >\n {label.substring(0, 3)}\n </button>\n ))}\n </div>\n\n <button\n onClick={onClickApply}\n className=\"btn btn-apply\"\n disabled={!(selectedYear !== null || selectedMonth !== null)}\n >\n Apply\n </button>\n </div>\n );\n };\n\n render = () => {\n const { isOpen, months } = this.state;\n const { month, onMonthSelect, onYearSelect } = this.props;\n\n const year = month.year();\n const curMonth = month.month();\n const onClickApply = this.handleClickApply({\n month,\n onMonthSelect,\n onYearSelect,\n });\n\n const classNameBtn = cx('c-dates__month-elements__header', {\n active: isOpen,\n });\n\n return (\n <div className=\"c-dates__month-elements\">\n <button className={classNameBtn} onClick={this.handleToggle}>\n <span>{months[curMonth]}</span>\n <span>{year}</span>\n </button>\n\n {isOpen && this.renderOpenElement(onClickApply, year, curMonth)}\n </div>\n );\n };\n}\n\nconst WrapperMonthElement = (props) => {\n return <MonthElement {...props} />;\n};\n\nexport default WrapperMonthElement;\n","import React, { memo, useMemo, useState, useEffect, useCallback } from 'react';\nimport { ModalBody, ModalHeader, ModalFooter } from 'react-bootstrap';\nimport { SingleDatePicker } from 'react-dates';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n\nimport { useAxios, Roles } from 'utils';\n\nimport Alert from 'components/common/Alert';\nimport Input from 'components/common/Input';\nimport Loading from 'components/common/Loading';\nimport MonthElement from 'components/common/Date/MonthElement';\n\ninterface Row {\n value: number | string;\n parent: {\n title: string;\n };\n}\n\ntype FieldTypes =\n | 'nf'\n | 'name'\n | 'email'\n | 'reserve'\n | 'lastMonth'\n | 'reserveOvn';\n\ninterface EditRiskManagementProps {\n user: any;\n row: Record<FieldTypes, Row>;\n onHide(): void;\n onChangeRow(row: Record<FieldTypes, Row>): void;\n}\n\nexport const EditRiskManagement = connect(({ user }: any) => ({ user }))(\n memo((props: EditRiskManagementProps) => {\n const { row, user, onHide, onChangeRow } = props;\n\n const [{ loading, error }, updateUser] = useAxios(\n {\n method: 'POST',\n url: '/put/user/',\n baseURL: '',\n },\n { manual: true }\n );\n\n const isRiskPartner = useMemo(\n () => user.role === Roles.RISK_PARTNER,\n [user.role]\n );\n\n const [nf, setNf] = useState(row.nf.value);\n const [reserve, setReserve] = useState(row.reserve.value);\n const [reserveOvn, setReserveOvn] = useState(row.reserveOvn.value);\n const [lastMonth, setLastMonth] = useState(\n moment.utc(row.lastMonth.value, 'X')\n );\n\n const [focusedLastMonth, setFocusedLastMonth] = useState(false);\n\n const onChangeInput = useCallback((e) => {\n const { target } = e;\n\n switch (target?.dataset?.key) {\n case 'nf': {\n setNf(target.value);\n break;\n }\n case 'reserve': {\n setReserve(target.value);\n break;\n }\n case 'reserveOvn': {\n setReserveOvn(target.value);\n break;\n }\n }\n }, []);\n\n const onDateChange = useCallback((date) => {\n setLastMonth(date);\n }, []);\n\n const onFocusedLastMonth = useCallback(({ focused }) => {\n setFocusedLastMonth(focused);\n }, []);\n\n const isOutsideRange = useCallback((day) => day.diff(moment()) > 0, []);\n\n const onUpdateRow = useCallback(async () => {\n try {\n const data = new FormData();\n const unixLastMonth = lastMonth.utcOffset('+00:00', true).unix();\n\n data.append('nf', String(nf));\n data.append('reserve', String(reserve));\n data.append('reserveOvn', String(reserveOvn));\n data.append('email', String(row.email.value));\n data.append('last_month', String(unixLastMonth));\n\n await updateUser({\n data,\n });\n\n onChangeRow({\n ...row,\n nf: {\n ...row.nf,\n value: Number(nf),\n },\n reserve: {\n ...row.reserve,\n value: Number(reserve),\n },\n reserveOvn: {\n ...row.reserveOvn,\n value: Number(reserveOvn),\n },\n lastMonth: {\n ...row.lastMonth,\n value: unixLastMonth,\n },\n });\n\n onHide();\n // eslint-disable-next-line no-empty\n } catch {}\n }, [\n nf,\n row,\n reserve,\n lastMonth,\n reserveOvn,\n onHide,\n updateUser,\n onChangeRow,\n ]);\n\n useEffect(() => {\n if (!isRiskPartner) {\n onHide();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isRiskPartner]);\n\n if (!isRiskPartner) {\n return null;\n }\n\n return (\n <div className=\"\">\n <ModalHeader closeButton>\n <h3>Edit user [{row.name.value}]</h3>\n </ModalHeader>\n\n <ModalBody>\n <div className=\"form-horizontal\">\n <Input\n type=\"number\"\n value={nf}\n dataKey=\"nf\"\n disabled={loading}\n title={row.nf.parent.title}\n handleOnChange={onChangeInput}\n />\n\n <Input\n type=\"number\"\n value={reserve}\n dataKey=\"reserve\"\n disabled={loading}\n title={row.reserve.parent.title}\n handleOnChange={onChangeInput}\n />\n\n <Input\n type=\"number\"\n value={reserveOvn}\n dataKey=\"reserveOvn\"\n disabled={loading}\n title={row.reserveOvn.parent.title}\n handleOnChange={onChangeInput}\n />\n\n <div className=\"c-dates\">\n <Input\n title={row.lastMonth.parent.title}\n component={\n <SingleDatePicker\n id=\"lastMonth\"\n showDefaultInputIcon\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n date={lastMonth}\n focused={focusedLastMonth}\n numberOfMonths={1}\n firstDayOfWeek={1}\n disabled={loading}\n onDateChange={onDateChange}\n isOutsideRange={isOutsideRange}\n renderMonthElement={MonthElement}\n onFocusChange={onFocusedLastMonth}\n />\n }\n />\n </div>\n\n <Loading isShow={loading} />\n\n {error && (\n <div className=\"form-group alert-form\">\n <div className=\"col-sm-offset-3 col-sm-9 col-md-6\">\n <Alert\n bsStyle=\"danger\"\n message={`User isn't updated, repeat later [${error.message}]`}\n />\n </div>\n </div>\n )}\n </div>\n </ModalBody>\n\n <ModalFooter>\n <button\n type=\"button\"\n className=\"btn btn-success\"\n onClick={onUpdateRow}\n disabled={loading}\n >\n Update User\n </button>\n\n <button\n type=\"button\"\n onClick={onHide}\n disabled={loading}\n className=\"btn btn-default\"\n >\n Cancel\n </button>\n </ModalFooter>\n </div>\n );\n })\n);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport Validate from 'utils/validate';\nimport cx from 'classnames';\nimport { browserHistory } from 'index';\n\nimport './Signin.scss';\nimport { removeErrMessage, user } from 'redux/actions/user';\nimport Alert from 'components/common/Alert';\nimport Spinner from 'components/Spinner';\n\n// TODO: need to check when response from server 401 then clear token and user\n\nclass Signin extends Component {\n constructor(props) {\n super(props);\n\n const { user, token, history } = props;\n\n const { state } = history.location;\n\n const searchParams = new URLSearchParams(history.location.search);\n\n const redirect = searchParams.get('redirectUrl');\n\n this.state = {\n email: '',\n redirect,\n password: '',\n validate: {},\n };\n\n if (token && user && (!state || state.status !== 401)) {\n browserHistory.push(redirect || '/');\n }\n }\n\n handleChange = ({ target }) => {\n const { value } = target;\n const { key } = target.dataset;\n\n if (this.props.errMessageUser) {\n this.props.removeErrMessage();\n }\n\n this.setState(({ validate }) => ({\n [key]: value,\n validate: {\n ...validate,\n [key]: Validate[key](value),\n },\n }));\n };\n\n handlerClickForm = (e) => {\n const { email, password, redirect } = this.state;\n\n this.props.user({\n email,\n redirect,\n key: password,\n });\n\n e.preventDefault();\n };\n\n render() {\n const { email, password, validate } = this.state;\n\n const { errMessageUser, isLoadingSignIn, removeErrMessage } = this.props;\n\n const classNameValidate = (key) =>\n cx({\n success: validate[key] && !errMessageUser,\n error:\n (typeof validate[key] === 'boolean' && !validate[key]) ||\n errMessageUser,\n });\n\n const classNameButton = cx('btn btn-success', {\n active: validate.email && validate.password,\n });\n\n return (\n <div className=\"c-signup\">\n <h1>Welcome</h1>\n\n <form className=\"form\" onSubmit={this.handlerClickForm}>\n <label className={classNameValidate('email')}>\n <input\n type=\"email\"\n name=\"email\"\n data-key=\"email\"\n placeholder=\"Email\"\n value={email}\n onChange={this.handleChange}\n required\n />\n </label>\n\n <label className={classNameValidate('password')}>\n <input\n minLength=\"8\"\n type=\"password\"\n name=\"password\"\n data-key=\"password\"\n placeholder=\"Password\"\n onChange={this.handleChange}\n value={password}\n required\n />\n </label>\n\n <Alert\n bsStyle=\"danger\"\n close={removeErrMessage}\n message={errMessageUser}\n />\n\n <button\n type=\"submit\"\n disabled={!validate.email || !validate.password || errMessageUser}\n className={classNameButton}\n >\n Sign in\n </button>\n </form>\n\n {isLoadingSignIn && (\n <div className=\"spinner\">\n <Spinner />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default connect((state) => state.user, {\n user,\n removeErrMessage,\n})(Signin);\n","import React, { PureComponent } from 'react';\n\nimport { ServiceErrorPlaceholder } from 'components/common/ServicePlaceholder';\n\nclass ErrorBoundary extends PureComponent {\n state = {\n hasError: false,\n };\n\n componentDidCatch() {\n this.setState({\n hasError: true,\n });\n }\n\n render() {\n const { children } = this.props;\n const { hasError } = this.state;\n\n if (hasError) {\n return <ServiceErrorPlaceholder />;\n }\n\n return children;\n }\n}\n\nexport default ErrorBoundary;\n","import React, { memo, useEffect, useState, useCallback } from 'react';\n\nimport Spinner from 'components/Spinner';\nimport ErrorBoundary from 'components/ErrorBoundary';\nimport {\n ServiceErrorPlaceholder,\n ServiceForbiddenPlaceholder,\n} from 'components/common/ServicePlaceholder';\n\nexport interface RequestProps {\n children: (data: any) => React.ReactElement | React.ReactNode;\n params?: any;\n onSuccess(data: any): void;\n action: (params: any) => {\n status: number;\n data?: any;\n errorMessage?: string;\n };\n}\n\ninterface ChildrenProps\n extends Omit<RequestProps, 'params' | 'action' | 'onSuccess'> {\n data: any;\n}\n\n// Need for optimization rendering\nconst Children = memo((props: ChildrenProps) => (\n <ErrorBoundary>\n {typeof props.children === 'function'\n ? props.children(props.data)\n : props.children}\n </ErrorBoundary>\n));\n\nconst Request = memo((props: RequestProps) => {\n const { params, action, children, onSuccess } = props;\n\n const [data, setData] = useState<null>();\n const [status, setStatus] = useState<number>();\n const [isLoading, setIsLoading] = useState(true);\n const [errorMessage, setErrorMessage] = useState<null | string>();\n\n const onFetch = useCallback(async () => {\n setData(null);\n setIsLoading(true);\n setErrorMessage(null);\n\n const { data, errorMessage, status = 200 } = await action(params);\n\n setStatus(status);\n setErrorMessage(errorMessage);\n\n if (status < 400 && data) {\n setData(data);\n onSuccess?.(data);\n }\n\n setIsLoading(false);\n }, [action, onSuccess, params]);\n\n useEffect(() => {\n if (params) {\n onFetch();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [params]);\n\n if (!params) {\n return null;\n }\n\n if (isLoading) {\n return <Spinner />;\n }\n\n if (status === 403) {\n return <ServiceForbiddenPlaceholder />;\n }\n\n return errorMessage ? (\n <ServiceErrorPlaceholder description={errorMessage} />\n ) : (\n <Children data={data}>{children}</Children>\n );\n});\n\nexport default Request;\n","import moment from 'moment';\nimport { findWorkDay } from 'utils/dates';\n\nconst presets = [\n {\n text: 'Previous day',\n onClick({ dayBlocked }) {\n const date = findWorkDay(dayBlocked);\n return {\n endDate: date,\n startDate: date,\n };\n },\n },\n {\n text: 'Current Week',\n onClick({ dayBlocked }) {\n const date = findWorkDay(dayBlocked);\n return {\n endDate: date,\n startDate: moment(date).startOf('isoWeek').utcOffset('+00:00', true),\n };\n },\n },\n {\n text: 'Current Month',\n onClick({ dayBlocked }) {\n const date = findWorkDay(dayBlocked);\n return {\n endDate: date,\n startDate: moment(date).startOf('month').utcOffset('+00:00', true),\n };\n },\n },\n {\n text: 'Current Quater',\n onClick({ dayBlocked }) {\n const date = findWorkDay(dayBlocked);\n return {\n endDate: date,\n startDate: moment().startOf('quarter').utcOffset('+00:00', true),\n };\n },\n },\n {\n text: 'Current Year',\n onClick({ dayBlocked }) {\n const date = findWorkDay(dayBlocked);\n return {\n endDate: date,\n startDate: moment(date).startOf('year').utcOffset('+00:00', true),\n };\n },\n },\n {\n text: 'Previous Week',\n onClick: () => ({\n endDate: moment()\n .subtract(1, 'weeks')\n .endOf('isoWeek')\n .utcOffset('+00:00', true),\n startDate: moment()\n .subtract(1, 'weeks')\n .startOf('isoWeek')\n .utcOffset('+00:00', true),\n }),\n },\n {\n text: 'Previous Month',\n onClick: () => ({\n endDate: moment()\n .subtract(1, 'month')\n .endOf('month')\n .utcOffset('+00:00', true),\n startDate: moment()\n .subtract(1, 'month')\n .startOf('month')\n .utcOffset('+00:00', true),\n }),\n },\n {\n text: 'Previous Quater',\n onClick: () => ({\n endDate: moment()\n .subtract(1, 'quarter')\n .endOf('quarter')\n .utcOffset('+00:00', true),\n startDate: moment()\n .subtract(1, 'quarter')\n .startOf('quarter')\n .utcOffset('+00:00', true),\n }),\n },\n {\n text: 'Previous Year',\n onClick: () => ({\n endDate: moment()\n .subtract(1, 'year')\n .endOf('year')\n .utcOffset('+00:00', true),\n startDate: moment()\n .subtract(1, 'year')\n .startOf('year')\n .utcOffset('+00:00', true),\n }),\n },\n];\n\nexport default presets;\n","import React from 'react';\nimport { isSameDay } from 'react-dates';\nimport cx from 'classnames';\n\nimport presets from './presets';\n\nconst DatePresets = (props) => () => {\n const { endDate, startDate, className, changeDate, dayBlocked } = props;\n\n const presetsData = presets.map(({ text, onClick }) => {\n const newDates = onClick({\n endDate,\n startDate,\n dayBlocked,\n });\n\n return {\n text,\n newDates,\n };\n });\n\n const selectedPreset =\n presetsData.find(\n (preset) =>\n isSameDay(preset.newDates.endDate, endDate) &&\n isSameDay(preset.newDates.startDate, startDate)\n ) || {};\n\n return (\n <div className={cx('c-dates__presets', className)}>\n <div className=\"c-dates__presets--container\">\n {presetsData.map(({ text, newDates }) => {\n const className = cx('c-dates__presets--button', {\n selected: selectedPreset.text === text,\n });\n\n return (\n <button\n key={text}\n type=\"button\"\n className={className}\n onClick={() => changeDate(newDates)}\n >\n {text}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default DatePresets;\n","import React, { memo, useEffect, useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { DateRangePicker, SingleDatePicker } from 'react-dates';\nimport cx from 'classnames';\n\nimport {\n focusDate,\n changeDate,\n removeDate,\n addNewDate,\n} from 'redux/actions/dates';\n\nimport './Date.scss';\nimport DatePresets from './DatePresets';\nimport MonthElement from './MonthElement';\n\nconst DateWrapper = memo(({ children, isMoreDates, removeDate, index }) => (\n <span className=\"date\">\n {children}\n {isMoreDates && index > 0 && (\n <span onClick={removeDate} className=\"button-close\">\n ×\n </span>\n )}\n </span>\n));\n\nconst DatePicker = memo((props) => {\n const {\n dates,\n focusDate,\n dayBlocked,\n changeDate,\n removeDate,\n isMoreDates,\n isSingleDate,\n dayHighlighted,\n focusSingleDate,\n changeSingleDate,\n } = props;\n\n if (isSingleDate) {\n const [{ startDate, focusedInput }] = dates;\n\n return (\n <SingleDatePicker\n id=\"single-date\"\n date={startDate}\n numberOfMonths={1}\n focused={focusedInput}\n isDayBlocked={dayBlocked}\n showDefaultInputIcon\n firstDayOfWeek={1}\n isOutsideRange={() => false}\n onDateChange={changeSingleDate}\n onFocusChange={focusSingleDate}\n isDayHighlighted={dayHighlighted}\n renderMonthElement={MonthElement}\n />\n );\n }\n\n return dates\n .filter((_, i) => isMoreDates || (!isMoreDates && i === 0))\n .map((date, index) => ({\n ...date,\n focusDate: focusDate(index),\n removeDate: removeDate(index),\n onDateChange: changeDate(index),\n }))\n .map((date, index) => {\n const {\n endDate,\n startDate,\n focusDate,\n onDateChange,\n focusedInput = null,\n } = date;\n\n const renderCalendarInfo = DatePresets({\n endDate,\n startDate,\n dayBlocked,\n changeDate: onDateChange,\n });\n\n return (\n <DateWrapper\n {...date}\n key={index}\n index={index}\n isMoreDates={isMoreDates}\n >\n <DateRangePicker\n reopenPickerOnClearDates\n endDate={endDate}\n minimumNights={0}\n numberOfMonths={1}\n small={isMoreDates}\n showClearDates\n firstDayOfWeek={1}\n startDate={startDate}\n onFocusChange={focusDate}\n showDefaultInputIcon\n isDayBlocked={dayBlocked}\n onDatesChange={onDateChange}\n isOutsideRange={() => false}\n endDateId={`end-date${index}`}\n isDayHighlighted={dayHighlighted}\n renderMonthElement={MonthElement}\n startDateId={`start-date${index}`}\n renderCalendarInfo={renderCalendarInfo}\n calendarInfoPosition=\"after\"\n focusedInput={\n typeof focusedInput === 'boolean' ? null : focusedInput\n }\n />\n </DateWrapper>\n );\n });\n});\n\nconst Date = memo((props) => {\n const { dates, actions, isMoreDates } = props;\n\n const className = cx('c-dates', {\n small: isMoreDates,\n });\n\n return (\n <div className={className}>\n <DatePicker {...actions} {...props} isMoreDates={isMoreDates} />\n\n {isMoreDates && (\n <button\n onClick={actions.addNewDate}\n className=\"plus-date btn btn-primary\"\n disabled={!dates.every((date) => date.startDate && date.endDate)}\n >\n +\n </button>\n )}\n </div>\n );\n});\n\nDate.propTypes = {\n isMoreDates: PropTypes.bool,\n isSingleDate: PropTypes.bool,\n};\n\nexport default connect(\n ({ dates }) => ({\n dates: dates.data,\n dayHighlighted: dates.dayHighlighted,\n }),\n (dispatch) => ({\n actions: {\n addNewDate: () => dispatch(addNewDate()),\n removeDate: (index) => () => dispatch(removeDate({ index })),\n focusDate: (index) => (focusedInput) =>\n focusDate({ dispatch, index, focusedInput }),\n focusSingleDate: ({ focused }) =>\n focusDate({ dispatch, index: 0, focusedInput: focused }),\n changeSingleDate: (startDate) =>\n dispatch(changeDate({ startDate, endDate: startDate, index: 0 })),\n changeDate:\n (index) =>\n ({ startDate, endDate }) =>\n dispatch(changeDate({ startDate, endDate, index })),\n },\n })\n)(Date);\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Typeahead, Token } from 'react-bootstrap-typeahead';\nimport cx from 'classnames';\n\nimport { changeAccounts } from 'redux/actions/accounts';\nimport { nameAccounts, changeNameAccounts } from 'utils/accounts';\nimport './Accounts.scss';\n\nconst renderToken = (groups) => (option, onRemove, index) =>\n (\n <Token\n key={index}\n onRemove={onRemove}\n className={cx({ group: groups[option] })}\n >\n {option}\n </Token>\n );\n\nconst renderChildren = (groups, option) => {\n if (!groups[option]) return option;\n\n return (\n <div className=\"groups\">\n <span>{option}</span>\n <div>\n <small>\n Included accounts:\n {groups[option].join(', ')}\n </small>\n </div>\n </div>\n );\n};\n\n// TODO: need to add modal view for create group\n// TODO: when selected group, then for multiple=false error in Journal\n\nconst Accounts = memo(\n ({\n groups,\n options,\n onChange,\n multiple,\n selected,\n allAccounts,\n renderChildren,\n changeAccounts,\n }) => {\n if (allAccounts.length === 0) {\n return null;\n }\n\n const onChangeAcc = (selectedAcc) => {\n onChange && onChange(selectedAcc);\n changeAccounts(selectedAcc);\n };\n\n return (\n <div className=\"c-accounts\">\n <Typeahead\n clearButton\n options={options}\n multiple={multiple}\n selected={selected}\n onChange={onChangeAcc}\n className=\"typeahead-accounts\"\n placeholder=\"Choose accounts...\"\n renderToken={renderToken(groups)}\n renderMenuItemChildren={renderChildren}\n />\n {/* <button className=\"btn btn-default\" onClick={this.handleModalGroups}>Groups</button> */}\n </div>\n );\n }\n);\n\nAccounts.propTypes = {\n onChange: PropTypes.func,\n multiple: PropTypes.bool,\n};\n\nexport default connect(\n (\n {\n accounts: {\n users,\n groups,\n options,\n selected,\n allOptions,\n allAccounts,\n selectedAccounts,\n },\n },\n { multiple = true }\n ) => ({\n groups,\n multiple,\n allAccounts,\n selectedAccounts,\n selected: changeNameAccounts({ accounts: selected, users, groups }),\n options: nameAccounts({\n users,\n groups,\n multiple,\n allAccounts,\n }),\n renderChildren: multiple ? renderChildren.bind(null, groups) : undefined,\n }),\n { changeAccounts }\n)(Accounts);\n","import request from 'utils/request';\n\nconst DEFAULT_FILTER_API = '/api/report/filter/';\n\nexport const getFilters = async (name) => {\n try {\n return await new Promise((success, error) =>\n request({\n error,\n success,\n data: {},\n url: `${DEFAULT_FILTER_API}?name=${name}`,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { ToggleButton, ToggleButtonGroup } from 'react-bootstrap';\nimport cx from 'classnames';\n\nimport { removeErrorDate } from 'redux/actions/dates';\nimport { compareDates } from 'utils/dates';\n\nimport Date from 'components/common/Date';\nimport Alert from 'components/common/Alert';\nimport Loading from 'components/common/Loading';\nimport Request from 'components/common/Request';\nimport Accounts from 'components/common/Accounts';\nimport Dropdown from 'components/common/Dropdown';\n\nimport {\n ServiceForbiddenPlaceholder,\n ServiceUnavailablePlaceholder,\n} from 'components/common/ServicePlaceholder';\nimport { getFilters } from './dataProvider';\n\nimport './Filters.scss';\n\nclass Filters extends Component {\n state = {\n response: {},\n };\n\n handleResponse = (response) => {\n const { handleResponse, removeErrorDate } = this.props;\n\n if (!response.error && handleResponse) {\n handleResponse(response);\n }\n\n removeErrorDate && removeErrorDate();\n this.setState({\n response,\n });\n };\n\n onClickGenerate = (e) => {\n e.preventDefault();\n\n const { date, accounts, radioList = {} } = this.state.response;\n const { handleClickGenerate } = this.props;\n const { selectedMode, selectedRadio } = this.state;\n\n handleClickGenerate({\n dateType: date,\n account: accounts,\n mode: selectedMode,\n radio: selectedRadio || radioList.defaultValue,\n });\n };\n\n onChangeMode = (id) => {\n this.setState({\n selectedMode: id === 'reset' ? null : id,\n });\n };\n\n onChangeRadio = (id) => {\n this.setState({\n selectedRadio: id === 'reset' ? null : id,\n });\n };\n\n render() {\n const {\n name,\n dates,\n saved,\n dateType,\n multiple,\n accounts,\n errorDate,\n dayBlocked,\n isMoreDates,\n isLoadingDate,\n removeErrorDate,\n addNewItem: AddNewItem,\n } = this.props;\n const { response, selectedRadio, selectedMode } = this.state;\n\n const classNameBtn = cx('generate btn btn-primary', {\n 'btn-lg': !isMoreDates,\n });\n\n if (response.error) {\n if (response.status === 403) {\n return <ServiceForbiddenPlaceholder />;\n }\n\n return <ServiceUnavailablePlaceholder {...response} />;\n }\n\n const { accounts: resAccounts, mode, radioList } = response;\n\n const modeList = mode && mode.map((id) => ({ id, name: id }));\n\n const isReady =\n (!resAccounts ||\n (saved.accounts.length ===\n accounts.selectedGroups.length + accounts.selectedAccounts.length &&\n saved.accounts.every(\n (acc) =>\n accounts.selectedGroups.includes(acc) ||\n accounts.selectedAccounts.includes(acc)\n ))) &&\n (dateType === 'none' ||\n dates.some(\n (date) => date.startDate === null || date.endDate === null\n ) ||\n (saved.dates.length === dates.length &&\n saved.dates.every((date) =>\n dates.find(\n (d) =>\n compareDates(d.startDate, date.startDate) &&\n compareDates(d.endDate, date.endDate)\n )\n ))) &&\n !mode &&\n !selectedRadio;\n\n return (\n <Request\n params={name}\n action={getFilters}\n className=\"c-filters\"\n handleResponse={this.handleResponse}\n >\n <form onSubmit={this.onClickGenerate}>\n {resAccounts && (\n <Accounts multiple={resAccounts.multiple || multiple} />\n )}\n\n <div className=\"main-filters\">\n {dateType !== 'none' && (\n <Date\n dayBlocked={dayBlocked}\n isMoreDates={isMoreDates}\n isSingleDate={dateType === 'single'}\n />\n )}\n\n {radioList && (\n <ToggleButtonGroup\n type=\"radio\"\n name=\"radioList\"\n value={selectedRadio}\n defaultValue={radioList.defaultValue}\n onChange={this.onChangeRadio}\n >\n {radioList.options.map((radio) => (\n <ToggleButton key={radio.value} value={radio.value}>\n {radio.label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n )}\n\n {mode && (\n <Dropdown\n id=\"c-filters-mode\"\n items={modeList}\n title={selectedMode || 'Mode'}\n onChange={this.onChangeMode}\n />\n )}\n\n {AddNewItem && <AddNewItem />}\n\n <button\n type=\"button\"\n disabled={isReady}\n className={classNameBtn}\n onClick={this.onClickGenerate}\n >\n Generate\n </button>\n </div>\n\n {errorDate && (\n <Alert\n bsStyle=\"danger\"\n message={errorDate}\n close={removeErrorDate}\n />\n )}\n\n {isReady &&\n resAccounts &&\n accounts.selectedAccounts.length === 0 &&\n accounts.selectedGroups.length === 0 && (\n <Alert message=\"You didn't select account/group, now you're seeing table without account/group\" />\n )}\n </form>\n\n <Loading isShow={isLoadingDate} />\n </Request>\n );\n }\n}\n\nFilters.defaultProps = {\n multiple: true,\n dateType: 'none',\n isMoreDates: false,\n};\n\nFilters.propTypes = {\n name: PropTypes.string,\n multiple: PropTypes.bool,\n isMoreDates: PropTypes.bool,\n dateType: PropTypes.string,\n handleResponse: PropTypes.func,\n};\n\nexport default connect(\n ({ dates, accounts }, { name }) => ({\n accounts,\n dates: dates.data,\n saved: {\n dates: dates.saved,\n accounts: accounts.saved,\n },\n errorDate: dates.error,\n isLoadingDate: dates.isLoading,\n dayBlocked: dates.dayBlocked(name),\n }),\n {\n removeErrorDate,\n }\n)(Filters);\n","import request from 'utils/request';\n\nconst API_TABLE = '/api/report/';\n\nexport const getTable = async (params) => {\n try {\n const { nameTable, ...data } = params;\n\n const response = await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: `${API_TABLE}?name=${nameTable}`,\n })\n );\n\n return { data: response || [] };\n } catch (e) {\n return { errorMessage: e.msg, status: e.status };\n }\n};\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { pick } from 'lodash';\n\nimport './Reports.scss';\nimport { getTables, Tables as NewTables } from 'modules';\nimport { getDatesWithUnixTime } from 'utils/dates';\nimport { saveDate } from 'redux/actions/dates';\nimport { saveAccounts } from 'redux/actions/accounts';\n\nimport Request from 'components/Request';\nimport Filters from 'components/common/Filters';\nimport { getTable } from './dataProvider';\n\nexport const DefaultSendingParams = [\n 'nameTable',\n 'endDate',\n 'startDate',\n 'accounts',\n 'acc_groups',\n 'mode',\n 'radio',\n];\n\nclass Reports extends PureComponent {\n static defaultProps = {\n getTable,\n sendingParams: DefaultSendingParams,\n };\n\n state = {\n multiple: false,\n dateType: 'none',\n };\n\n handleResponseFromFilter = (response) => {\n const { date, radioList = {} } = response;\n\n const { dates, accounts } = this.props;\n\n const isReady =\n dates.every((date) => date.startDate && date.endDate) &&\n (!response.accounts || accounts.selected.length !== 0);\n\n if (isReady) {\n this.handleClickGenerate({\n dateType: date,\n account: response.accounts,\n radio: radioList.defaultValue,\n });\n }\n\n this.setState({\n dateType: date || 'none',\n multiple: response.accounts && response.accounts.multiple,\n });\n };\n\n handleClickGenerate = async (options = {}) => {\n const {\n dates,\n saveDate,\n nameTable,\n saveAccounts,\n sendingParams,\n withoutAccounts,\n accounts: { selected, selectedGroups, selectedAccounts },\n } = this.props;\n\n const { dateRange, account, mode, radio } = options;\n\n const preparationDates = getDatesWithUnixTime(\n dates,\n dateRange && dateRange.type\n );\n\n const params = {\n nameTable,\n ...preparationDates,\n };\n\n if (mode) {\n params.mode = mode;\n }\n\n if (radio) {\n params.mode = radio; // TODO: maybe need to change parameter for scaling filters?\n }\n\n const { multiple = true } = account || {};\n\n if (selected.length !== 0) {\n if (!multiple) {\n const parameter =\n selectedGroups.length !== 0 && selectedGroups[0] === selected[0]\n ? 'acc_groups'\n : 'accounts';\n params[parameter] = selected[0];\n } else {\n if (selectedAccounts.length) {\n params.accounts = selectedAccounts.map((acc) => Number(acc));\n }\n\n if (selectedGroups.length) {\n params.acc_groups = selectedGroups;\n }\n }\n }\n\n const { host, protocol, pathname } = window.location;\n const cleanURI = `${protocol}//${host}${pathname}`;\n window.history.replaceState({}, null, cleanURI);\n\n saveDate();\n\n if (!withoutAccounts) {\n saveAccounts();\n }\n\n this.setState({\n params: pick(params, sendingParams),\n });\n };\n\n handleCloseAlert = () => {\n this.setState({\n errors: null,\n });\n };\n\n onChangeRow = () => {\n if (this.props.updateAfterChangedRow) {\n this.setState(({ params }) => ({\n params: { ...params },\n }));\n }\n };\n\n onSuccessTable = (data) => {\n this.setState({\n table: getTables(data || []),\n });\n };\n\n render() {\n const {\n title,\n nameTable,\n isMoreDates,\n getTable,\n tableOptions,\n addNewItem,\n additionalComponent: Additional,\n ...otherProps\n } = this.props;\n const { table, params, multiple, dateType } = this.state;\n\n return (\n <div className=\"c-reports\">\n <div className=\"container\">\n <div className=\"wrapper\">\n <h1>{title}</h1>\n\n <Filters\n name={nameTable}\n multiple={multiple}\n dateType={dateType}\n addNewItem={addNewItem}\n isMoreDates={isMoreDates}\n handleResponse={this.handleResponseFromFilter}\n handleClickGenerate={this.handleClickGenerate}\n />\n </div>\n\n <div className=\"wrapper-tables\">\n <Request\n action={getTable}\n params={params}\n onSuccess={this.onSuccessTable}\n >\n {table && (\n <>\n <NewTables\n data={table}\n title={title}\n onChangeRow={this.onChangeRow}\n options={tableOptions}\n {...otherProps}\n />\n {Additional && table.length !== 0 && <Additional />}\n </>\n )}\n </Request>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default connect(\n ({ dates, accounts }) => ({\n accounts,\n dates: dates.data,\n }),\n {\n saveDate,\n saveAccounts,\n }\n)(Reports);\n","export const Pies = {\n TIMES: 'TIMES',\n STRATEGIES: 'STRATEGIES',\n};\n\nexport const Tabs = {\n FIRST: 'FIRST',\n SECOND: 'SECOND',\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Tabs, Tab, Nav, NavItem } from 'react-bootstrap';\n\nimport './Pie.scss';\n\nimport { DoughnutChart } from 'components/DoughnutChart';\nimport Loading from 'components/common/Loading';\nimport { Tabs as TabsName } from './typies';\n\nfunction Pie(props) {\n const { tab, type, loss, win, title, isLoading, sortNames, onSelect } = props;\n\n return (\n <Tabs\n className=\"right\"\n id=\"c-homepage__pie--right\"\n activeKey={tab}\n onSelect={onSelect(type)}\n >\n <div className=\"title\">\n <h4>{title}</h4>\n <Nav bsStyle=\"pills\" className=\"buttons\">\n {win.length !== 0 && (\n <NavItem eventKey={TabsName.FIRST}>Profit</NavItem>\n )}\n {loss.length !== 0 && (\n <NavItem active={win.length === 0} eventKey={TabsName.SECOND}>\n Loss\n </NavItem>\n )}\n </Nav>\n </div>\n\n <div className=\"content\">\n {isLoading ? (\n <Loading isShow />\n ) : (\n <Tab.Content>\n {win.length !== 0 && (\n <Tab.Pane eventKey={TabsName.FIRST} className=\"tab\">\n <DoughnutChart\n withActiveShape\n data={win}\n sortNames={sortNames}\n />\n </Tab.Pane>\n )}\n\n {loss.length !== 0 && (\n <Tab.Pane eventKey={TabsName.SECOND} className=\"tab\">\n <DoughnutChart\n isNegative\n withActiveShape\n data={loss}\n sortNames={sortNames}\n />\n </Tab.Pane>\n )}\n </Tab.Content>\n )}\n </div>\n </Tabs>\n );\n}\n\nPie.propTypes = {\n win: PropTypes.array,\n tab: PropTypes.string,\n loss: PropTypes.array,\n type: PropTypes.string,\n title: PropTypes.string,\n onSelect: PropTypes.func,\n};\n\nexport default Pie;\n","import React, { Component, memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { getDoughnutData } from 'utils/pie';\nimport Pie from './Pie';\n\nimport { Pies as PiesName, Tabs } from './typies';\n\nconst timesSorted = [\n 'before 8:30',\n '8:30 - 9:30',\n '9:30 - 9:50',\n '9:50 - 10:10',\n '10:10 - 11:15',\n '11:15 - 13:30',\n '13:30 - 15:30',\n '15:30 - 16:00',\n 'after 16:00',\n 'adjust',\n];\n\nclass Pies extends Component {\n state = {\n activeTab: {\n [PiesName.TIMES]: Tabs.FIRST,\n [PiesName.STRATEGIES]: Tabs.FIRST,\n },\n };\n\n static getDerivedStateFromProps({ strategies, times }) {\n const pies = {\n strategiesLoss: getDoughnutData({\n condition: (key) => key < 0,\n data: strategies,\n }),\n strategiesWin: getDoughnutData({\n data: strategies,\n condition: (key) => key >= 0,\n }),\n timesLoss: getDoughnutData({\n data: times,\n condition: (key) => key < 0,\n }),\n timesWin: getDoughnutData({\n data: times,\n condition: (key) => key >= 0,\n }),\n };\n\n return {\n ...pies,\n };\n }\n\n handleSelectTab = (type) => (key) => {\n const { activeTab } = this.state;\n\n this.setState({\n activeTab: {\n ...activeTab,\n [type]: key,\n },\n });\n };\n\n render() {\n const { isLoading } = this.props;\n const { timesWin, activeTab, timesLoss, strategiesWin, strategiesLoss } =\n this.state;\n\n return (\n <div className=\"c-homepage__pie\">\n <Pie\n win={strategiesWin}\n loss={strategiesLoss}\n isLoading={isLoading}\n type={PiesName.STRATEGIES}\n title=\"Total by Strategy\"\n onSelect={this.handleSelectTab}\n tab={activeTab[PiesName.STRATEGIES]}\n />\n\n <Pie\n win={timesWin}\n loss={timesLoss}\n isLoading={isLoading}\n type={PiesName.TIMES}\n title=\"Total by Time\"\n sortNames={timesSorted}\n onSelect={this.handleSelectTab}\n tab={activeTab[PiesName.TIMES]}\n />\n </div>\n );\n }\n}\n\nPies.defaultProps = {\n times: {},\n strategies: {},\n};\n\nPies.propTypes = {\n times: PropTypes.object,\n isLoading: PropTypes.bool,\n strategies: PropTypes.object,\n};\n\nexport default memo(Pies);\n","import React, { memo, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport moment from 'moment';\n\nimport config from 'config/config';\nimport { reductionForNumber } from 'utils/separator';\n\nconst map = {\n day: 'Best Day',\n week: 'Best Week',\n month: 'Best Month',\n trade: 'Best Trade',\n};\n\nconst Block = memo((props) => {\n const { date, field, value, description, format = config.dateFormat } = props;\n const dateField = `date-${field}`;\n const valueField = `value-${field}`;\n\n const formattedDate = useMemo(() => {\n if (typeof date === 'number') {\n return date <= 0 ? '-' : moment.utc(date, 'X').format(format);\n }\n\n return date;\n }, [format, date]);\n\n return (\n <React.Fragment>\n <div\n style={{ gridArea: valueField }}\n className={cx('data', { [valueField]: field })}\n >\n <span className=\"value\">${reductionForNumber(value)}</span>\n <p className=\"title\">{map[field]}</p>\n </div>\n\n <div\n style={{ gridArea: dateField }}\n className={cx('data', { [dateField]: field })}\n >\n <span className=\"value\">{formattedDate}</span>\n <p className=\"title\">{description}</p>\n </div>\n </React.Fragment>\n );\n});\n\nconst Best = ({ data }) => (\n <div className=\"c-tile best\">\n <Block {...data.trade} field=\"trade\" />\n <Block {...data.day} field=\"day\" />\n <Block {...data.week} field=\"week\" />\n <Block {...data.month} field=\"month\" format=\"MMMM YYYY\" />\n </div>\n);\n\nBest.defaultProps = {\n data: {},\n};\n\nBest.propTypes = {\n data: PropTypes.object,\n};\n\nexport default Best;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport './Tile.scss';\nimport { reductionForNumber } from 'utils/separator';\n\nconst map = {\n net: {\n title: 'Total Net',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n gross: {\n title: 'Total Gross',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n volume: {\n title: 'Total volume',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n netPerShare: {\n title: 'Net per share',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n dayLoss: {\n title: 'Max Loss<br>Days Row',\n value: (data) => data,\n },\n dayProfit: {\n title: 'Max Profit<br>Days Row',\n value: (data) => data,\n },\n weekLoss: {\n title: 'Max Loss<br>Week Row',\n value: (data) => data,\n },\n weekProfit: {\n title: 'Max Profit<br>Week Row',\n value: (data) => data,\n },\n monthLoss: {\n title: 'Max Loss<br>Month Row',\n value: (data) => data,\n },\n monthProfit: {\n title: 'Max Profit<br>Month Row',\n value: (data) => data,\n },\n avgHighFixRate: {\n title: 'Avg High<br>Fix Rate',\n value: (data) => Number(data).toFixed(2),\n },\n};\n\nconst Tile = ({ data, className }) => (\n <div className={cx('c-tile', { [className]: className })}>\n {Object.keys(data).map((key) => {\n const { title, value } = map[key];\n\n return (\n <div\n key={key}\n style={{ gridArea: key }}\n className={cx('data', { [key]: key })}\n >\n <span className=\"value\">{value(data[key])}</span>\n <p className=\"title\" dangerouslySetInnerHTML={{ __html: title }} />\n </div>\n );\n })}\n </div>\n);\n\nTile.defaultProps = {\n data: {},\n};\n\nTile.propTypes = {\n data: PropTypes.object,\n className: PropTypes.string,\n};\n\nexport default Tile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nconst map = {\n closedFlat: 'Closed Flat',\n closedPositive: 'Closed Positive',\n stopLossOpening: 'Stop Loss Openings',\n decreasedLoss: 'Closed negative',\n lastStopLosses: 'Lost 3 or more Stop Losses',\n};\n\nconst Block = (props) => {\n const { field, value, percent } = props;\n\n return (\n <div className={cx('data', { [field]: field })}>\n <p className=\"value\">\n {(value && Math.round(value)) || 0}\n {typeof percent === 'number' && (\n <span>\n ({(percent && Math.round(percent * 100)) || 0}\n %)\n </span>\n )}\n </p>\n <p className=\"title\">{map[field]}</p>\n </div>\n );\n};\n\nconst Summary = ({ data }) => (\n <div className=\"c-tile summary\">\n <Block {...data.stopLossOpening} field=\"stopLossOpening\" />\n <Block {...data.closedPositive} field=\"closedPositive\" />\n <Block {...data.closedFlat} field=\"closedFlat\" />\n <Block {...data.decreasedLoss} field=\"decreasedLoss\" />\n <Block {...data.lastStopLosses} field=\"lastStopLosses\" />\n </div>\n);\n\nSummary.defaultProps = {\n data: {},\n};\n\nSummary.propTypes = {\n data: PropTypes.object,\n};\n\nexport default Summary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { reductionForNumber } from 'utils/separator';\nimport cx from 'classnames';\n\nimport './Switcher.scss';\n\nconst map = {\n days: {\n total: {\n title: 'Total days',\n value: (data) => data,\n },\n netPer: {\n title: 'Net per day',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n maxLoss: {\n title: 'Max day loss',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n avgLoss: {\n title: 'Avg. day loss',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n negative: {\n title: 'Loss days',\n value: (data) => data,\n },\n positive: {\n title: 'Profit days',\n value: (data) => data,\n },\n avgProfit: {\n title: 'Avg. day profit',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n maxProfit: {\n title: 'Max day profit',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n },\n trades: {\n total: {\n title: 'Trades made',\n value: (data) => data,\n },\n netPer: {\n title: 'Net per trade',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n maxLoss: {\n title: 'Max trade loss',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n avgLoss: {\n title: 'Avg. trade loss',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n negative: {\n title: 'Trades-',\n value: (data) => data,\n },\n positive: {\n title: 'Trades+',\n value: (data) => data,\n },\n avgProfit: {\n title: 'Avg. trade profit',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n maxProfit: {\n title: 'Max trade profit',\n value: (data) => `$ ${reductionForNumber(data)}`,\n },\n },\n};\n\nconst Switcher = ({ data, type, onChange }) => (\n <div className=\"c-tile switcher\">\n <div className=\"switcher__buttons\">\n <span\n data-key=\"days\"\n onClick={onChange}\n className={cx('switch', { active: type === 'days' })}\n >\n D\n </span>\n\n <span\n data-key=\"trades\"\n onClick={onChange}\n className={cx('switch', { active: type === 'trades' })}\n >\n T\n </span>\n </div>\n\n <div className=\"content\">\n {Object.keys(data).map((key) => {\n if (!map[type][key]) {\n return null;\n }\n\n const { title, value } = map[type][key];\n return (\n <div\n key={key}\n style={{ gridArea: key }}\n className={cx('data', { [key]: key })}\n >\n <span className=\"value\">{value(data[key])}</span>\n <p className=\"title\">{title}</p>\n </div>\n );\n })}\n\n <div className=\"circle\">\n <div className=\"left\">\n <span className=\"value\">{data.percentPositive.toFixed(2)}</span>\n <p className=\"title\">%</p>\n </div>\n\n <div className=\"right\">\n <span className=\"value\">{data.percentNegative.toFixed(2)}</span>\n <p className=\"title\">%</p>\n </div>\n </div>\n </div>\n </div>\n);\n\nSwitcher.defaultProps = {\n data: {},\n};\n\nSwitcher.propTypes = {\n type: PropTypes.string,\n data: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nexport default Switcher;\n","import React, { Component } from 'react';\n\nimport './Tiles.scss';\nimport Loading from 'components/common/Loading';\nimport { ServiceNoContentPlaceholder } from 'components/common/ServicePlaceholder';\nimport Best from './Best';\nimport Tile from './Tile';\nimport Summary from './Summary';\nimport Switcher from './Switcher';\n\nclass Tiles extends Component {\n state = {\n type: 'days',\n };\n\n handleChangeType = ({ target }) => {\n const { key } = target.dataset;\n this.setState({\n type: key,\n });\n };\n\n render() {\n const { isLoading } = this.props;\n\n const { type } = this.state;\n\n const data = this.props.data || {};\n\n const { max, best, days, total, trades, summary } = data;\n\n return (\n <div className=\"c-homepage__tiles\">\n <h2>Total Data</h2>\n\n {isLoading ? (\n <Loading isShow />\n ) : Object.keys(data).length !== 0 ? (\n <div className=\"tiles\">\n <Tile data={total} className=\"total\" />\n\n <Switcher\n type={type}\n onChange={this.handleChangeType}\n data={type === 'days' ? days : trades}\n />\n\n <Tile data={max} className=\"max\" />\n <Best data={best} />\n <Summary data={summary} />\n </div>\n ) : (\n <ServiceNoContentPlaceholder />\n )}\n </div>\n );\n }\n}\n\nexport default Tiles;\n","import React from 'react';\n\nimport { ToolTipText, ToolTipTSpanLabel } from 'react-stockcharts/lib/tooltip';\n\nimport { reductionForNumber } from 'utils/separator';\n\nexport function defaultDisplayTooltip(props, moreProps, itemsToDisplay) {\n const {\n className,\n textFill,\n labelFill,\n onClick,\n fontFamily,\n fontSize,\n displayTexts,\n } = props;\n\n const { currentItem } = moreProps;\n const { displayDate, open, high, low, close, volume, x, y } = itemsToDisplay;\n\n return (\n <g\n className={`react-stockcharts-tooltip-hover ${className}`}\n transform={`translate(${x}, ${y})`}\n onClick={onClick}\n >\n <ToolTipText x={0} y={0} fontFamily={fontFamily} fontSize={fontSize}>\n <ToolTipTSpanLabel fill={labelFill} key=\"label\" x={0} dy=\"5\">\n {displayTexts.d}\n </ToolTipTSpanLabel>\n <tspan key=\"value\" fill={textFill}>\n {displayDate}\n </tspan>\n\n <ToolTipTSpanLabel fill={labelFill} key=\"label_O\">\n {displayTexts.o}\n </ToolTipTSpanLabel>\n <tspan key=\"value_O\" fill={textFill}>\n {open}\n </tspan>\n\n <ToolTipTSpanLabel fill={labelFill} key=\"label_H\">\n {displayTexts.h}\n </ToolTipTSpanLabel>\n <tspan key=\"value_H\" fill={textFill}>\n {high}\n </tspan>\n\n <ToolTipTSpanLabel fill={labelFill} key=\"label_L\">\n {displayTexts.l}\n </ToolTipTSpanLabel>\n <tspan key=\"value_L\" fill={textFill}>\n {low}\n </tspan>\n\n <ToolTipTSpanLabel fill={labelFill} key=\"label_C\">\n {displayTexts.c}\n </ToolTipTSpanLabel>\n <tspan key=\"value_C\" fill={textFill}>\n {close}\n </tspan>\n\n <ToolTipTSpanLabel fill={labelFill} key=\"label_Vol\">\n {displayTexts.v}\n </ToolTipTSpanLabel>\n <tspan key=\"value_Vol\" fill={textFill}>\n {volume}\n </tspan>\n\n {currentItem && currentItem.stops && currentItem.stops.length !== 0 && (\n <>\n <ToolTipTSpanLabel fill={labelFill} key=\"label_Stops\">\n {displayTexts.s}\n </ToolTipTSpanLabel>\n <tspan key=\"value_Stops\" fill={textFill}>\n {currentItem.stops\n .map((s) => {\n const r = Math.abs(s - currentItem.open);\n if (r < 10000) return r.toFixed(0);\n return reductionForNumber(r);\n })\n .join(', ')}\n </tspan>\n </>\n )}\n </ToolTipText>\n </g>\n );\n}\n","import React, { Component, memo } from 'react';\nimport { format } from 'd3-format';\nimport { timeFormat } from 'd3-time-format';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\n\nimport {\n parseDate,\n displayTexts,\n candlesAppearance,\n getAttrForChart,\n tooltipContent,\n yExtends,\n} from 'utils/helpersCandleStick';\n\nimport HoverTooltip from 'components/common/HoverTooltip';\nimport { BarSeries } from 'react-stockcharts/lib/series';\nimport { XAxis, YAxis } from 'react-stockcharts/lib/axes';\nimport { ClickCallback } from 'react-stockcharts/lib/interactive';\nimport { Chart, ChartCanvas, ZoomButtons } from 'react-stockcharts';\nimport CandleStick from 'components/common/CandleStick';\nimport { OHLCTooltip } from 'react-stockcharts/lib/tooltip';\nimport {\n CrossHairCursor,\n MouseCoordinateX,\n MouseCoordinateY,\n} from 'react-stockcharts/lib/coordinates';\n\nimport { ServiceNoContentPlaceholder } from 'components/common/ServicePlaceholder';\nimport { getDatesPath } from 'utils/dates';\nimport { getAccountsPath } from 'utils/accounts';\n\nimport { defaultDisplayTooltip } from './defaultDisplayTooltip';\n\nclass OHLC extends Component {\n static defaultProps = {\n data: [],\n };\n\n constructor(props) {\n super(props);\n\n const data = props.data.map((el) => ({\n ...el,\n date: parseDate(el.date),\n }));\n\n this.state = {\n data: data.length === 1 ? [...data, ...data] : data,\n suffix: 0,\n isChange: false,\n };\n }\n\n handleReset = () => {\n this.setState((prev) => ({\n suffix: ++prev.suffix,\n }));\n };\n\n onClickItemChart = (data) => {\n const { accounts, interval } = this.props;\n const { currentItem } = data;\n\n if (interval === 'day') {\n const startDate = moment(currentItem.date).utcOffset('+00:00', true);\n let path = getDatesPath([\n {\n startDate,\n endDate: startDate,\n },\n ]);\n\n path += getAccountsPath(accounts);\n path = path.substring(1);\n window.open(`/journal?${path}`);\n return;\n }\n\n const startDate = moment(currentItem.date).utcOffset('+00:00', true);\n const endDate = moment.utc(currentItem.enddate, 'X');\n\n let path = getDatesPath([\n {\n endDate,\n startDate,\n },\n ]);\n\n path += getAccountsPath(accounts);\n path = path.substring(1);\n\n if (interval === 'day') {\n window.open(`/journal?${path}`);\n } else {\n window.open(`/summary-by-day?${path}`);\n }\n };\n\n render() {\n const { data, suffix } = this.state;\n const { width, height, onRepeat } = this.props;\n\n if (width === 0) {\n return null;\n }\n\n if (!data || data.length === 0) {\n return <ServiceNoContentPlaceholder onRepeat={onRepeat} />;\n }\n\n const { tickFormat, xGrid, yGrid, canvas, volumeHeight } = getAttrForChart(\n data,\n width,\n height\n );\n\n return (\n <ChartCanvas {...canvas} ratio={1} seriesName={`MSFT_${suffix}`}>\n <Chart\n id={1}\n height={volumeHeight}\n yExtents={(d) => d.volume}\n padding={{ top: 5, bottom: 0 }}\n origin={(_, h) => [0, h - volumeHeight]}\n >\n <XAxis {...xGrid} tickFormat={tickFormat} />\n <YAxis axisAt=\"left\" orient=\"left\" {...yGrid} />\n <MouseCoordinateY\n at=\"left\"\n orient=\"left\"\n displayFormat={format('.4s')}\n />\n <MouseCoordinateX\n at=\"bottom\"\n orient=\"bottom\"\n displayFormat={timeFormat('%m/%d/%Y')}\n />\n <BarSeries\n yAccessor={(d) => d.volume}\n fill={(d) => (d.close > d.open ? '#6BA583' : '#FF0000')}\n />\n </Chart>\n\n <Chart\n id={2}\n yExtents={yExtends}\n padding={{ top: 5, bottom: 5 }}\n height={height - volumeHeight - 50}\n >\n <XAxis\n axisAt=\"bottom\"\n orient=\"bottom\"\n showTicks={false}\n outerTickSize={0}\n />\n <YAxis axisAt=\"right\" orient=\"right\" {...yGrid} />\n\n <CandleStick {...candlesAppearance} />\n <MouseCoordinateY\n at=\"right\"\n orient=\"right\"\n displayFormat={format('.4s')}\n />\n </Chart>\n\n <Chart\n id={3}\n yExtents={yExtends}\n origin={(_, h) => [0, h - height + 50]}\n >\n <OHLCTooltip\n origin={[-40, -20]}\n stops=\"\"\n displayTexts={displayTexts}\n xDisplayFormat={timeFormat('%m/%d/%Y')}\n ohlcFormat={(d) => (d ? format('.3s')(d) : 'n/a')}\n >\n {defaultDisplayTooltip}\n </OHLCTooltip>\n\n <HoverTooltip\n fontSize={12}\n opacity={1}\n bgOpacity={0.5}\n tooltipContent={tooltipContent()}\n />\n <ZoomButtons onReset={this.handleReset} />\n <ClickCallback onDoubleClick={this.onClickItemChart} />\n </Chart>\n\n <CrossHairCursor />\n </ChartCanvas>\n );\n }\n}\n\nexport default memo(\n connect(({ accounts, dates }) => ({\n accounts: accounts.selected,\n dayBlocked: dates.dayBlocked(),\n }))(OHLC)\n);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\nimport './Graphs.scss';\nimport Loading from 'components/common/Loading';\nimport Dropdown from 'components/common/Dropdown';\nimport ErrorBoundary from 'components/common/ErrorBoundary';\nimport OHLC from './OHLC';\n\nexport const intervals = [\n {\n id: 'day',\n name: 'Day',\n },\n {\n id: 'week',\n name: 'Week',\n },\n {\n id: 'month',\n name: 'Month',\n },\n];\n\nclass Graphs extends Component {\n state = {\n width: 1200,\n };\n\n header = React.createRef();\n\n componentDidMount() {\n this.getWidthChart();\n window.addEventListener('resize', this.getWidthChart);\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.getWidthChart);\n }\n\n static getDerivedStateFromProps({ primary }, prevState) {\n if (primary) {\n return {\n ...prevState,\n isChange: true,\n };\n }\n\n return null;\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (nextState.isChange) {\n setTimeout(this.getWidthChart, 300);\n }\n return true;\n }\n\n getWidthChart = () => {\n const { current: header } = this.header;\n const screenHeight = window.screen.height;\n const innerHeight = window.innerHeight - 200;\n\n let height = innerHeight < 500 ? 500 : innerHeight;\n\n if (screenHeight < innerHeight) {\n height = screenHeight - 200;\n }\n\n this.setState({\n height,\n isChange: false,\n width: header && header.offsetWidth,\n });\n };\n\n handleChangeInterval = async (name) => {\n const interval = intervals.find((i) => i.name === name);\n await this.props.handleChangeInterval(interval);\n };\n\n render() {\n const { data, interval, isLoading } = this.props;\n const { width, height } = this.state;\n\n return (\n <div className=\"c-homepage__graphs\">\n <div className=\"c-dropdown\" ref={this.header}>\n <h2>OHLC</h2>\n <Dropdown\n isReset={false}\n title={interval.name}\n pullRight\n items={intervals}\n id=\"graphs-interval\"\n onChange={this.handleChangeInterval}\n isDisabled={!data || data.length === 0}\n />\n </div>\n\n <ErrorBoundary\n removeError={isLoading}\n onRepeat={this.handleChangeInterval}\n >\n <div className=\"charts\" style={{ height: `${height}px` }}>\n {isLoading ? (\n <Loading isShow />\n ) : (\n <OHLC\n data={data}\n width={width}\n height={height}\n interval={interval.id}\n />\n )}\n </div>\n </ErrorBoundary>\n </div>\n );\n }\n}\n\nexport default connect((state) => state.burgerMenu)(Graphs);\n","export const changeAllState = (content, isChecked, checked = []) => {\n const isSomeChecked =\n checked.length !== 0 && content.length !== checked.length;\n\n const checkboxes = {\n all: isSomeChecked ? false : isChecked,\n };\n\n for (const item of content) {\n if (checked.includes(item)) {\n checkboxes[item] = true;\n } else {\n checkboxes[item] = isSomeChecked ? false : isChecked;\n }\n }\n\n return checkboxes;\n};\n\nexport const separateSymbolsData = ({\n symbols,\n values,\n selectedAll,\n summary,\n}) =>\n symbols.map((symbol) => ({\n ...symbol,\n value: selectedAll === symbol.name ? summary : values.symbols[symbol.name],\n }));\n\nexport const sortSymbols = (selectedAll) => (a, b) => {\n if (a.name === selectedAll) {\n return -1;\n }\n if (b.name === selectedAll) {\n return 1;\n }\n\n if (!a.value) {\n return 1;\n }\n if (!b.value) {\n return -1;\n }\n\n return b.value - a.value;\n};\n","import React, { memo, useMemo, useEffect, useCallback } from 'react';\n// import { isEqual } from 'lodash';\nimport TooltipTrigger from 'react-popper-tooltip';\nimport cx from 'classnames';\n\nimport './Column.scss';\nimport { changeAllState } from 'utils/homepage';\nimport { thousandSeparator, reductionForNumber } from 'utils/separator';\n\nconst tooltip = (value) => (props) => {\n const { arrowRef, tooltipRef, getArrowProps, getTooltipProps, placement } =\n props;\n\n return (\n <div\n {...getTooltipProps({\n ref: tooltipRef,\n className: 'tooltip-container-new',\n })}\n >\n {thousandSeparator(value)}\n <div\n {...getArrowProps({\n ref: arrowRef,\n className: 'tooltip-arrow-new',\n 'data-placement': placement,\n })}\n />\n </div>\n );\n};\n\nexport const Column = memo((props) => {\n const {\n ratio = {},\n width = 150,\n title,\n field,\n checkboxes,\n content,\n isNotAllClicked,\n onChange,\n } = props;\n\n const handleChangeCheckbox = useCallback(\n ({ target }) => {\n const { checked, dataset } = target;\n const { key } = dataset;\n\n let newCheckboxes = { ...checkboxes };\n\n if (key === 'all') {\n newCheckboxes = changeAllState(content, checked);\n } else {\n newCheckboxes[key] = checked;\n\n if (!isNotAllClicked && content.length !== 1) {\n newCheckboxes.all = Object.keys(newCheckboxes)\n .filter((k) => k !== 'all')\n .every((k) => newCheckboxes[k]);\n } else {\n newCheckboxes.all = false;\n }\n }\n\n onChange(newCheckboxes, field);\n },\n [checkboxes, content, field, isNotAllClicked, onChange]\n );\n\n const renderNameOfGroup = useCallback((name, value) => {\n if (value === undefined) {\n return <p className=\"without-label\">{name}</p>;\n }\n\n return (\n <TooltipTrigger placement=\"right\" tooltip={tooltip(value)}>\n {({ getTriggerProps, triggerRef }) => (\n <p\n {...getTriggerProps({\n ref: triggerRef,\n className: 'trigger',\n })}\n className={cx({\n 'red-label': value < 0,\n 'green-label': value > 0,\n })}\n >\n {name}\n\n <span className=\"label-value\">({reductionForNumber(value)})</span>\n </p>\n )}\n </TooltipTrigger>\n );\n }, []);\n\n const summary = useMemo(\n () =>\n Object.keys(ratio).length !== 0\n ? content.reduce((p, item, index) => {\n const value = ratio[item] || ratio[index + 1];\n return value ? p + value : p;\n }, 0)\n : '',\n [content, ratio]\n );\n\n const classNameAll = cx('checkbox', {\n active: checkboxes.all,\n });\n\n useEffect(() => {\n if (content.length !== 0) {\n const selectedCheckboxes = {};\n\n content.forEach((key) => {\n if (typeof checkboxes[key] !== 'boolean') {\n selectedCheckboxes[key] = checkboxes.all;\n }\n });\n\n if (Object.keys(selectedCheckboxes).length !== 0) {\n onChange({ ...checkboxes, ...selectedCheckboxes }, field);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [content]);\n\n return (\n <li\n className=\"c-homepage__filters__column\"\n style={{ minWidth: `${width}px` }}\n >\n <h4>{title}</h4>\n\n <ul className=\"content\">\n {content.length === 0 ? (\n <>No content</>\n ) : (\n <>\n <label className={classNameAll}>\n <input\n type=\"checkbox\"\n data-key=\"all\"\n checked={checkboxes.all}\n onChange={handleChangeCheckbox}\n />\n {renderNameOfGroup('All', summary || undefined)}\n </label>\n\n {content.map((name, index) => (\n <label\n key={name}\n className={cx('checkbox', { active: checkboxes[name] })}\n >\n <input\n type=\"checkbox\"\n data-key={name}\n checked={checkboxes[name]}\n onChange={handleChangeCheckbox}\n />\n\n {renderNameOfGroup(name, ratio[name] || ratio[index + 1])}\n </label>\n ))}\n </>\n )}\n </ul>\n </li>\n );\n});\n","import React, { memo } from 'react';\nimport { union } from 'lodash';\n\nimport { Column } from './Column';\n\nconst mapColumns = [\n {\n width: 100,\n field: 'years',\n title: 'Years',\n },\n {\n width: 150,\n field: 'months',\n title: 'Months',\n },\n {\n width: 150,\n field: 'weekdays',\n title: 'Days',\n },\n {\n width: 150,\n field: 'hours',\n title: 'Time',\n },\n {\n width: 150,\n field: 'strategies',\n title: 'Strategy',\n },\n {\n width: 100,\n field: 'side',\n title: 'Type',\n },\n {\n width: 100,\n field: 'globalTags',\n title: 'Global Tags',\n isNotAllClicked: true,\n onSort: ({ content, ratio }) => {\n const sortedRatio = Object.keys(ratio).sort(\n (a, b) => ratio[b] - ratio[a]\n );\n return union(sortedRatio, content);\n },\n },\n {\n width: 100,\n field: 'personalTags',\n title: 'Personal Tags',\n showValues: true,\n isNotAllClicked: true,\n onSort: ({ content, ratio }) => content.sort((a, b) => ratio[b] - ratio[a]),\n },\n];\n\nconst Columns = (props) => {\n const { values, checkboxes, onChange, columns = {} } = props;\n\n return mapColumns\n .filter((col) => columns[col.field])\n .map((col) => {\n const ratio = values[col.field] || {};\n const content = col.showValues\n ? columns[col.field].filter((col) => typeof ratio[col] !== 'undefined')\n : columns[col.field];\n\n return (\n <Column\n {...col}\n key={col.field}\n ratio={ratio}\n content={col.onSort ? col.onSort({ content, ratio }) : content}\n onChange={onChange}\n checkboxes={checkboxes[col.field]}\n />\n );\n });\n};\n\nColumns.defaultProps = {\n values: {},\n columns: {},\n checkboxes: {},\n};\n\nexport default memo(Columns);\n","import request from 'utils/request';\n\nconst API_INIT_FILTERS = '/api/big_picture/filter/';\n\nexport const getFilters = async (data = {}) => {\n try {\n const response = await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_INIT_FILTERS,\n })\n );\n\n const { to, from } = response.years;\n\n return {\n side: response.side,\n hours: response.hours,\n symbols: response.symbols,\n strategies: response.time_range,\n globalTags: response.global_tags || {},\n personalTags: response.personal_tags,\n years: Array.from({ length: to - from + 1 }, (_, i) => from + i),\n };\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport cx from 'classnames';\n\nimport {\n sortSymbols,\n changeAllState,\n separateSymbolsData,\n} from 'utils/homepage';\nimport { dashboard } from 'config';\n\nimport './Filters.scss';\nimport { Symbols } from 'components/common';\nimport Request from 'components/common/Request';\nimport Accounts from 'components/common/Accounts';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\n\nimport Columns from './Columns';\nimport { getFilters } from './dataProvider';\n\nconst selectedAll = 'Selected All';\nconst weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];\nconst sortSymbolsWithSelected = sortSymbols(selectedAll);\n\nclass Filters extends Component {\n state = {\n columns: {},\n symbols: [],\n filters: null,\n selectedSymbols: [],\n };\n\n static getDerivedStateFromProps(props, state) {\n const { values, selectedAccounts } = props;\n const { symbols, selectedSymbols } = state;\n\n if (values.symbols) {\n const summary = Object.keys(values.symbols).reduce(\n (p, key) => values.symbols[key] + p,\n 0\n );\n\n const newSymbols = separateSymbolsData({\n values,\n summary,\n symbols,\n selectedAll,\n }).sort(sortSymbolsWithSelected);\n\n const newSelectedSymbols = separateSymbolsData({\n values,\n summary,\n selectedAll,\n symbols: selectedSymbols,\n });\n\n return {\n symbols: newSymbols,\n selectedSymbols: newSelectedSymbols,\n isDisabledBtn: state.isDisabledBtn || selectedAccounts.length === 0,\n };\n }\n\n return null;\n }\n\n handleChangeSymbols = (selected) => {\n const all = selected.find((sel) => sel.name === selectedAll);\n\n this.setState({\n isDisabledBtn: false,\n isAllSymbols: Boolean(all),\n selectedSymbols: all ? [all] : selected,\n });\n };\n\n handleChangeColumn = (checkboxes, key) => {\n const { selected } = this.state;\n selected[key] = checkboxes;\n\n this.setState({\n isDisabledBtn: false,\n selected: { ...selected },\n });\n };\n\n handleResponse = (response) => {\n if (response.error) {\n this.setState({\n error: <ServiceUnavailablePlaceholder {...response} />,\n });\n return;\n }\n\n const {\n side,\n hours,\n years,\n symbols,\n strategies,\n globalTags,\n personalTags,\n } = response;\n\n const columns = {\n side,\n hours,\n years,\n weekdays,\n strategies,\n months: moment.months(),\n globalTags: Object.keys(globalTags),\n personalTags: Object.keys(personalTags),\n };\n\n const { checked } = dashboard;\n\n const selected = Object.keys(columns).reduce(\n (p, key) => ({\n ...p,\n [key]: changeAllState(columns[key], true, checked[key]),\n }),\n {}\n );\n\n this.setState({\n columns,\n selected,\n globalTags,\n personalTags,\n isDisabledBtn: true,\n symbols: [selectedAll, ...symbols].map((symbol) => ({ name: symbol })),\n });\n };\n\n changeAccounts = (selectedAccounts) => {\n this.setState({\n isDisabledBtn: selectedAccounts.length === 0,\n });\n };\n\n handleClickRecalculate = async (e) => {\n e.preventDefault();\n\n const { selected, globalTags, personalTags, selectedSymbols } = this.state;\n const { values: ratio } = this.props;\n\n const data = {};\n\n Object.keys(selected).forEach((key) => {\n const map = selected[key];\n if (map.all) {\n return;\n }\n\n const values = Object.keys(map).filter((key) => map[key]);\n\n switch (key) {\n case 'years': {\n data.years = values.map((val) => Number(val));\n break;\n }\n\n case 'months': {\n data.months = values.map((val) =>\n Number(moment().month(String(val)).format('M'))\n );\n break;\n }\n\n case 'weekdays': {\n data.weekdays = values.map((val) =>\n Number(moment().isoWeekday(val).isoWeekday())\n );\n break;\n }\n\n case 'globalTags': {\n data.global_tags = values.map((val) => globalTags[val]);\n break;\n }\n\n case 'personalTags': {\n data.personal_tags = values\n .filter((val) => typeof ratio.personalTags[val] !== 'undefined')\n .map((val) => personalTags[val]);\n break;\n }\n\n default: {\n data[key] = values;\n break;\n }\n }\n });\n\n if (\n selectedSymbols.length !== 0 &&\n !selectedSymbols.some((sel) => sel.name === selectedAll)\n ) {\n data.symbols = selectedSymbols.map((sel) => sel.name);\n }\n\n this.setState({\n isDisabledBtn: true,\n });\n\n await this.props.onRecalculate(data);\n };\n\n handleKeyDownSymbols = (e) => {\n if (e.keyCode === 17) {\n }\n };\n\n render() {\n const {\n columns,\n symbols,\n selected,\n isAllSymbols,\n isDisabledBtn,\n selectedSymbols,\n } = this.state;\n\n const {\n // account,\n values,\n accounts,\n isLoading,\n isDisabled,\n // selectedAccounts,\n } = this.props;\n\n // if (\n // \tselectedAccounts.length === 1 &&\n // \tselectedAccounts[0] === account\n // ) {\n // \tresultColumns = columns;\n // } else {\n // \tresultColumns = {\n // \t\t...columns,\n // \t\tpersonalTags: null,\n // \t}\n // }\n\n return (\n <Request\n action={getFilters}\n className=\"c-homepage__filters\"\n handleResponse={this.handleResponse}\n >\n <form onSubmit={this.handleClickRecalculate}>\n {accounts.length !== 0 && (\n <div>\n <h4>Accounts</h4>\n <Accounts multiple onChange={this.changeAccounts} />\n </div>\n )}\n\n <div className=\"typeahead-block\">\n <h4>Symbols</h4>\n <Symbols\n options={symbols}\n isLoading={isLoading}\n selected={selectedSymbols}\n isAllSymbols={isAllSymbols}\n onChange={this.handleChangeSymbols}\n onKeyDown={this.handleKeyDownSymbols}\n />\n </div>\n\n <ul\n className={cx('list-filters', {\n less: columns.length === 7,\n })}\n >\n <Columns\n values={values}\n columns={columns}\n checkboxes={selected}\n onChange={this.handleChangeColumn}\n />\n </ul>\n\n <div className=\"recalculate\">\n <button\n type=\"button\"\n className=\"btn btn-primary btn-lg\"\n onClick={this.handleClickRecalculate}\n disabled={isDisabledBtn || isDisabled}\n >\n Recalculate\n </button>\n </div>\n </form>\n </Request>\n );\n }\n}\n\nFilters.propTypes = {\n onRecalculate: PropTypes.func.isRequired,\n};\n\nexport default connect(({ accounts }) => ({\n account: accounts.account,\n accounts: accounts.allAccounts,\n selectedAccounts: accounts.selected,\n}))(Filters);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Tables } from 'modules';\nimport Loading from 'components/common/Loading';\n\nimport './TradingDays.scss';\n\nfunction TradingDays(props) {\n const { isLoading, tradingDays } = props;\n\n return (\n <div className=\"c-trading-days\">\n <Loading isShow={isLoading} />\n {!isLoading && <Tables data={tradingDays} />}\n </div>\n );\n}\n\nTradingDays.propTypes = {\n isLoading: PropTypes.bool.isRequired,\n tradingDays: PropTypes.array.isRequired,\n};\n\nexport default TradingDays;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport { reductionForNumber } from 'utils/separator';\nimport { ServiceNoContentPlaceholder } from 'components/common/ServicePlaceholder';\n\nconst renderInnerData = (data, label, isClassName) => {\n const titleClassName = cx(\n isClassName && {\n red: data < 0,\n green: data > 0,\n }\n );\n\n return (\n <div className=\"inner\">\n <h3 className={titleClassName}>{reductionForNumber(data)}</h3>\n <span>{label}</span>\n </div>\n );\n};\n\nconst Tile = ({ data, title }) => {\n if (!data) {\n return (\n <div className=\"c-tiles no-content\">\n <ServiceNoContentPlaceholder />\n </div>\n );\n }\n\n const {\n days,\n loss_days,\n total_net,\n avg_day_net,\n profit_days,\n total_volume,\n avg_loss_day_net,\n avg_profit_day_net,\n } = data;\n\n const className = cx('tile', {\n red: total_net < 0,\n green: total_net > 0,\n });\n\n return (\n <li className=\"c-tiles\">\n <h3 className=\"title\">{title}</h3>\n\n <div className={className}>\n <div className=\"content\">\n {renderInnerData(total_net, 'Total Net', true)}\n {renderInnerData(total_volume, 'Total Volume')}\n </div>\n\n <div className=\"content\">\n {renderInnerData(days, 'Trading Days')}\n {renderInnerData(avg_day_net, 'Avg. Day Net', true)}\n </div>\n\n <div className=\"content\">\n {renderInnerData(profit_days, 'Profit Days')}\n {renderInnerData(avg_profit_day_net, 'Avg. Pr. Net', true)}\n </div>\n\n <div className=\"content\">\n {renderInnerData(loss_days, 'Loss Days')}\n {renderInnerData(avg_loss_day_net, 'Avg. L. Net', true)}\n </div>\n </div>\n </li>\n );\n};\n\nTile.propTypes = {\n data: PropTypes.object,\n title: PropTypes.string.isRequired,\n};\n\nexport default Tile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './WeeklyTiles.scss';\nimport Tile from './Tiles';\n\nconst titles = ['Current week', 'Previous week', 'Pre-previous week', 'fdd'];\n\nconst WeeklyTiles = ({ data }) => (\n <ul>\n {data?.map((tile, index) => (\n <Tile key={index} data={tile} title={titles[index]} />\n ))}\n </ul>\n);\n\nWeeklyTiles.propTypes = {\n data: PropTypes.arrayOf(\n PropTypes.shape({\n days: PropTypes.number,\n loss_days: PropTypes.number,\n total_net: PropTypes.number,\n profit_days: PropTypes.number,\n avg_day_net: PropTypes.number,\n total_volume: PropTypes.number,\n avg_loss_day_net: PropTypes.number,\n avg_profit_day_net: PropTypes.number,\n })\n ),\n};\n\nexport default WeeklyTiles;\n","import { startCase } from 'lodash';\nimport moment from 'moment';\n\nimport request from 'utils/request';\nimport config from 'config/config';\n\nconst API_UPDATE_OHLC = '/api/ohlc/';\nconst API_GET_BIG_TABLE = '/api/big_picture/';\nconst API_GET_WEEKLY_DATA = '/api/compare/week/';\n\nexport const getData = async (data) => {\n try {\n const response = await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_GET_BIG_TABLE,\n })\n );\n\n if (!response) {\n return {\n ohlc: [],\n values: {},\n crossData: [],\n tradingDays: [],\n };\n }\n\n const {\n side,\n hours,\n years,\n months,\n symbols,\n weekdays,\n crossdata,\n strategies,\n global_tags: globalTags,\n personal_tags: personalTags,\n trading_days: tradingDaysTables = [],\n } = response;\n\n const tradingDays = normalizeTradingDays(\n Array.isArray(tradingDaysTables) ? tradingDaysTables : [tradingDaysTables]\n );\n\n const ohlc = response.ohlc || [];\n\n if (Object.keys(crossdata).length === 0) {\n return {\n ohlc,\n side,\n hours,\n years,\n months,\n symbols,\n weekdays,\n strategies,\n tradingDays,\n globalTags,\n personalTags,\n crossData: crossdata,\n };\n }\n\n const tradesTotal = crossdata.trades_made;\n const daysTotal = crossdata.profit_days + crossdata.loss_days;\n\n const [, tradeDesc = '', tradeDate = ''] =\n /(.*)(\\d{4}-\\d{2}-\\d{2})/g.exec(crossdata.best_trade || '') || [];\n\n const crossData = {\n summary: {\n stopLossOpening: {\n value: crossdata.stop_loss_openings || 0,\n },\n closedPositive: {\n value: crossdata.closed_positive || 0,\n percent: crossdata.closed_positive / crossdata.stop_loss_openings,\n },\n closedFlat: {\n value: crossdata.closed_flat,\n percent: crossdata.closed_flat / crossdata.stop_loss_openings,\n },\n decreasedLoss: {\n value: crossdata.decreased_loss_by,\n percent: crossdata.decreased_loss_by / crossdata.stop_loss_openings,\n },\n lastStopLosses: {\n value: crossdata.last_3_stop_losses,\n percent: crossdata.last_3_stop_losses / crossdata.stop_loss_openings,\n },\n },\n total: {\n net: crossdata.total_net,\n gross: crossdata.total_gross,\n volume: crossdata.total_volume,\n netPerShare: crossdata.net_per_share,\n },\n days: {\n netPer: crossdata.net_per_day,\n negative: crossdata.loss_days,\n maxLoss: crossdata.max_day_loss,\n avgLoss: crossdata.avg_net_loss_days,\n positive: crossdata.profit_days,\n avgProfit: crossdata.avg_net_profit_days,\n maxProfit: crossdata.max_day_profit,\n total: daysTotal,\n percentNegative: (crossdata.loss_days / daysTotal) * 100 || 0,\n percentPositive: (crossdata.profit_days / daysTotal) * 100 || 0,\n },\n trades: {\n total: tradesTotal,\n netPer: crossdata.net_per_trade,\n maxLoss: crossdata.max_trade_loss,\n avgLoss: crossdata.avg_trade_loss,\n negative: crossdata.trades_made_loss,\n avgProfit: crossdata.avg_trade_profit,\n maxProfit: crossdata.max_trade_profit,\n positive: crossdata.trades_made_profit,\n percentNegative: (crossdata.trades_made_loss / tradesTotal) * 100 || 0,\n percentPositive:\n (crossdata.trades_made_profit / tradesTotal) * 100 || 0,\n },\n max: {\n dayLoss: crossdata.max_loss_days_row,\n dayProfit: crossdata.max_profit_days_row,\n weekLoss: crossdata.max_loss_week_row,\n weekProfit: crossdata.max_profit_week_row,\n monthLoss: crossdata.max_loss_month_row,\n monthProfit: crossdata.max_profit_month_row,\n avgHighFixRate: crossdata.avg_high_fix_rate,\n },\n best: {\n day: {\n date: crossdata.best_day,\n value: crossdata.best_day_net,\n description: crossdata.best_day_desc,\n },\n week: {\n date: crossdata.best_week,\n value: crossdata.best_week_net,\n description: crossdata.best_week_desc,\n },\n month: {\n date: crossdata.best_month,\n value: crossdata.best_month_net,\n description: crossdata.best_month_desc,\n },\n trade: {\n date: tradeDate ? moment(tradeDate).format(config.dateFormat) : 0,\n value: crossdata.best_trade_net,\n description: tradeDesc,\n },\n },\n };\n\n return {\n ohlc,\n side,\n hours,\n years,\n months,\n symbols,\n weekdays,\n crossData,\n strategies,\n globalTags,\n personalTags,\n tradingDays,\n };\n } catch (e) {\n return e;\n }\n};\n\nexport const getWeeklyData = async (data = {}) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_GET_WEEKLY_DATA,\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nexport const getOHLC = async (data = {}) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_UPDATE_OHLC,\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nfunction normalizeTradingDays(tradingDays) {\n return tradingDays.map((table) => {\n const Data = table.Data.map((row) => {\n const color = row[row.length - 1];\n const title = startCase(row.shift());\n return {\n color,\n values: [title, ...row],\n };\n });\n\n const Header = table.Header.map((column) => {\n return {\n ...column,\n width: column.name === 'name' ? 100 : undefined,\n };\n });\n\n return {\n ...table,\n Data,\n Header,\n };\n });\n}\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\nimport { mapValues, omit } from 'lodash';\n\nimport { setAccountsToPath } from 'utils/accounts';\nimport { saveAccounts } from 'redux/actions/accounts';\nimport Request from 'components/common/Request';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\nimport { getTables } from 'modules';\nimport Pies from './Pies';\nimport Tiles from './Tiles';\nimport Graphs, { intervals } from './Graphs';\nimport Filters from './Filters';\nimport TradingDays from './TradingDays';\nimport WeeklyTiles from './WeeklyTiles';\n\nimport './HomePage.scss';\nimport { getOHLC, getData, getWeeklyData } from './dataProvider';\nimport { dashboard } from 'config';\n\nclass HomePage extends Component {\n state = {\n table: [],\n ohlc: null,\n values: {},\n crossData: {},\n weekParams: null,\n isLoading: true,\n tradingDays: [],\n interval: intervals[0],\n };\n\n async componentDidMount() {\n const { accounts } = this.props;\n\n if (accounts.selected.length !== 0) {\n await this.onRecalculate(dashboard.checked);\n } else {\n // this.setState({\n // \tisLoading: false\n // });\n }\n }\n\n onRecalculate = async (data = {}) => {\n const {\n saveAccounts,\n accounts: { saved, selected, selectedGroups, selectedAccounts },\n } = this.props;\n const { values } = this.state;\n\n const accounts = {};\n\n if (selectedAccounts.length) {\n accounts.accounts = selectedAccounts.map((acc) => Number(acc));\n }\n\n if (selectedGroups.length) {\n accounts.acc_groups = selectedGroups;\n }\n\n const isChangedAccounts =\n selected.length === saved.length &&\n !selected.every((acc) => saved.includes(acc));\n saveAccounts(false);\n\n let oldPersonalTags;\n\n if (isChangedAccounts) {\n data.personal_tags = [];\n } else {\n oldPersonalTags = mapValues(values.personalTags || {}, () => 0);\n }\n\n const filters = { ...data, ...accounts };\n\n this.setState({\n filters,\n values: {\n personalTags: oldPersonalTags,\n },\n isLoading: true,\n interval: intervals[0],\n weekParams: {\n ...accounts,\n },\n });\n\n const { host, protocol, pathname } = window.location;\n const cleanURI = protocol + '//' + host + pathname;\n window.history.replaceState({}, null, cleanURI);\n\n setAccountsToPath(selected);\n\n const response = await getData(filters);\n\n if (response.error) {\n this.setState({\n ohlc: null,\n isLoading: false,\n error: <ServiceUnavailablePlaceholder {...response} />,\n });\n return;\n }\n\n const {\n ohlc,\n side,\n hours,\n years,\n months,\n symbols,\n weekdays,\n crossData,\n strategies,\n globalTags,\n personalTags,\n tradingDays,\n } = response;\n\n const endDate = {};\n const startDate = {};\n\n if (Array.isArray(data.years) && Array.isArray(data.months)) {\n startDate.year = data.years[0];\n startDate.month = data.months[0] - 1;\n endDate.year = data.years.reverse()[0];\n endDate.month = data.months.reverse()[0] - 1;\n } else if (years && typeof years === 'object') {\n startDate.year = Number(Object.keys(years)[0]);\n startDate.month = 0;\n endDate.year = Number(Object.keys(years).reverse()[0]);\n endDate.month = 11;\n }\n\n this.setState({\n ohlc,\n values: {\n side,\n hours,\n years,\n months,\n symbols,\n weekdays,\n strategies,\n globalTags,\n personalTags: isChangedAccounts\n ? personalTags\n : Object.assign(oldPersonalTags, personalTags),\n },\n crossData,\n isLoading: false,\n tradingDays: getTables(tradingDays),\n startDate: moment.utc([startDate.year, startDate.month, 1]).unix(),\n endDate: moment.utc([endDate.year, endDate.month]).endOf('month').unix(),\n });\n };\n\n handleChangeInterval = async (interval) => {\n const { filters } = this.state;\n\n const data = {\n group: interval.id,\n ...filters,\n };\n\n this.setState({\n interval,\n isLoading: true,\n });\n\n const response = await getOHLC(data);\n\n if (response.error) {\n this.setState({\n isLoading: false,\n error: <ServiceUnavailablePlaceholder {...response} />,\n });\n return;\n }\n\n this.setState({\n ohlc: response,\n isLoading: false,\n });\n };\n\n render() {\n const {\n ohlc,\n error,\n values,\n interval,\n isLoading,\n crossData,\n weekParams,\n tradingDays,\n } = this.state;\n\n return (\n <div className=\"c-homepage\">\n {weekParams && (\n <Request\n params={weekParams}\n action={getWeeklyData}\n className=\"c-homepage__weekly-tiles\"\n >\n {(response) =>\n response.error ? (\n <ServiceUnavailablePlaceholder {...response} />\n ) : (\n <WeeklyTiles data={response} />\n )\n }\n </Request>\n )}\n\n <Filters\n values={values}\n isLoading={isLoading}\n onRecalculate={this.onRecalculate}\n />\n\n {error || (\n <>\n <Graphs\n data={ohlc}\n interval={interval}\n isLoading={isLoading}\n handleChangeInterval={this.handleChangeInterval}\n />\n\n <Tiles data={crossData} isLoading={isLoading} />\n\n <Pies\n isLoading={isLoading}\n times={omit(values.hours, 'adjust')}\n strategies={omit(values.strategies, 'Adjust')}\n />\n\n <TradingDays isLoading={isLoading} tradingDays={tradingDays} />\n </>\n )}\n </div>\n );\n }\n}\n\nexport default connect(\n ({ accounts }) => ({\n accounts,\n }),\n {\n saveAccounts,\n }\n)(HomePage);\n","const compareStatusWithTabs = {\n 1: 'Inactive',\n 2: 'Deleted',\n};\n\nexport const filterTable = (\n { role, selectedIndex, table: [table] },\n { roles, table: [newTable] }\n) => {\n if (!newTable || !newTable.rows) {\n return [];\n }\n\n const selectedRole = roles.find((r) => r.name === role);\n\n return [\n {\n ...(newTable || table),\n rows: newTable.rows.filter(\n ({ status, idRoles }) =>\n (!status ||\n (selectedIndex === 0 && status.value !== 'Deleted') ||\n compareStatusWithTabs[selectedIndex] === status.value) &&\n (!selectedRole || selectedRole.id === idRoles.value)\n ),\n },\n ];\n};\n\nexport const getGroupList = (groups) =>\n groups.map((g) => ({ id: g.id.value, name: g.name.value }));\n\nexport const updateRow = (rows, props) =>\n rows.map((row) => {\n if (props.id === row.id.value) {\n Object.keys(props).forEach((key) => {\n row[key] = {\n ...row[key],\n value: props[key],\n };\n });\n return { ...row };\n }\n return row;\n });\n\nexport const getAccounts = (rows, accounts) =>\n accounts\n .map((acc) => Number(acc))\n .map((acc) => {\n const group = rows\n .filter((row) => row.account.value === acc)\n .reduce(\n (group, user) => {\n group.id.push(user.id.value);\n group.name.push(user.name.value);\n\n return group;\n },\n { id: [], name: [] }\n );\n\n group.account = acc;\n return group;\n });\n","import { typeSeparator } from './separator';\n\nlet indexTable = 0;\n\nexport const getName = (name) => name.charAt(0).toLowerCase() + name.slice(1);\nexport const getChildName = (parent, child) =>\n getName(parent) + child.charAt(0).toUpperCase() + child.slice(1);\n\nfunction parseData(header, data) {\n const renderCell = ({ column, value, type, indexRow }) => {\n let cell = {};\n\n // For custom row\n if (!Array.isArray(value) && typeof value === 'object') {\n cell = { ...value };\n type = cell.type;\n value = cell.title;\n }\n\n const render = typeSeparator({\n type,\n value,\n ...column,\n ...cell,\n parent: {\n ...column,\n },\n });\n\n return {\n parent: {\n ...column,\n },\n ...cell,\n type,\n value,\n render,\n indexRow,\n };\n };\n\n return data.reduce((prev, row, indexRow) => {\n let indexColumn = 0;\n const rowTable = {};\n\n for (const column of header) {\n const { type, parent, values, name } = { ...column, ...row };\n\n if (column.children) {\n for (let i = 0; i < column.children; i++, indexColumn += 1) {\n rowTable[name] = renderCell({\n type,\n column,\n indexRow,\n value: (values || row)[indexColumn],\n });\n }\n } else {\n rowTable[name] = renderCell({\n column,\n indexRow,\n value: (values || row)[indexColumn],\n type: parent ? parent.type : type,\n });\n\n indexColumn += 1;\n }\n }\n\n let totalRow = {\n ...rowTable,\n indexRow,\n };\n\n if (Array.isArray(row.values)) {\n totalRow = {\n ...totalRow,\n ...row,\n };\n }\n\n prev.push(totalRow);\n return prev;\n }, []);\n}\n\nfunction parseHeader(header = []) {\n let index = 0;\n const result = [];\n const c = document.createElement('canvas');\n const ctx = c.getContext('2d');\n\n const createColumn = (props) => {\n const {\n link,\n name,\n type,\n title,\n rowSpan,\n colSpan,\n row,\n isShow,\n hidden,\n compareList,\n } = props;\n\n const getMaxWidthValue = (data, name) =>\n data\n .map((row) => {\n if (!row[name].render) {\n return '';\n }\n\n const tags = row[name].render\n .toString()\n .match(/<[^>]+>([\\s\\S]*?)<\\/[^>]+>/gi);\n\n return tags && tags.length > 1\n ? tags\n .map((tag) => tag.replace(/(<([^>]+)>)/gi, ''))\n .reduce((p, n) => (n.length < p.length ? p : n), '')\n : row[name].render.toString().replace(/(<([^>]+)>)/gi, '');\n })\n .reduce((a, b) => {\n const { width } = ctx.measureText(b);\n return a > width ? a : width;\n }, 0);\n\n const getWidth = (data) => (font) => {\n ctx.font = `${font}px OpenSans-Regular, Comic Sans MS`;\n const titleWidth = ctx.measureText(title).width + 22;\n return Math.max(getMaxWidthValue(data, name), titleWidth) + 20;\n };\n\n const result = {\n name,\n index,\n title,\n getWidth,\n };\n\n if (hidden) {\n result.hidden = hidden;\n }\n\n if (compareList) {\n result.compareList = compareList;\n }\n\n if (link) {\n result.link = link;\n }\n\n if (type) {\n result.type = type;\n result.title = typeSeparator({ ...result, value: result.title }, false);\n }\n\n if (rowSpan) {\n result.rowSpan = rowSpan;\n }\n\n if (colSpan) {\n result.colSpan = colSpan;\n }\n\n if (row) {\n result.row = row;\n }\n\n if (isShow) {\n result.isShow = isShow;\n }\n\n index += 1;\n return result;\n };\n\n const parseChildren = (parent) =>\n parent.children.map((name) => ({\n ...createColumn({\n row: 1,\n title: name,\n name: getChildName(parent.name, name),\n }),\n parent,\n }));\n\n const isHaveChildren = header.some((column) => column.children);\n\n for (const column of header) {\n const name = getName(column.name);\n\n if (column.children) {\n const parent = {\n ...createColumn({\n ...column,\n name,\n row: 0,\n colSpan: column.children.length,\n }),\n children: column.children,\n };\n\n const children = parseChildren(parent);\n parent.children = children;\n\n for (const child of children) {\n result.push(child);\n }\n\n result.push(parent);\n } else {\n const params = {\n ...column,\n name,\n };\n\n if (isHaveChildren) {\n params.row = 0;\n params.rowSpan = 2;\n }\n\n result.push(createColumn(params));\n }\n }\n\n if (result.length) {\n result[0].isKey = true;\n }\n\n return result;\n}\n\nexport const addRowToTable = (row, table) => {\n const keys = table.columns.map((column) => column.name);\n const [newRow] = parseData(table.columns, [keys.map((key) => row[key])]);\n\n keys.forEach((key) => {\n newRow[key].indexRow = table.rows.length;\n });\n\n newRow.indexRow = table.rows.length;\n newRow.currentTable = table;\n return [...table.rows, newRow];\n};\n\nexport const treatmentData = (props, index = 0) => {\n const {\n Header,\n Data,\n Total,\n Title,\n id,\n PostForm: postForm,\n Settings = {},\n } = props;\n\n const columns = parseHeader(Header);\n const body = parseData(columns, Data);\n\n let total;\n const isTotal = !!Total;\n\n if (isTotal) {\n const row = parseData(columns, [['Total', ...Total]])[0];\n\n total = Object.keys(row).reduce((p, cell) => {\n p[cell] = {\n ...row[cell],\n isSort: false,\n indexRow: body.length,\n };\n return p;\n }, {});\n\n const totalName = getName(Header[0].name);\n total[totalName] = {\n ...total[totalName],\n type: 'string',\n isSort: false,\n title: 'Total',\n render: '<span class=\"cell-total\">Total</span>',\n };\n\n total.isTotal = true;\n total.isNotSort = true;\n total.indexRow = body.length;\n }\n\n let title;\n const rows = isTotal ? [...body, total] : [...body];\n\n if (Title) {\n // TODO: need to review dataField\n title =\n typeof Title !== 'object'\n ? {\n value: Title,\n render: Title,\n }\n : {\n ...Title,\n value: Title.title,\n name: Title.name,\n render: typeSeparator({\n ...Title,\n type: Title.type,\n value: Title.title,\n }),\n };\n }\n\n indexTable += 1;\n const table = {\n rows,\n title,\n index,\n isTotal,\n postForm,\n columns,\n settings: Settings,\n id: `table-${id || indexTable}`,\n isCustomWidth: Boolean(Settings.width),\n };\n\n for (const row of rows) {\n row.currentTable = table;\n }\n\n return table;\n};\n\nexport const getAvailableColumns = (tables, hideColumns = []) => {\n const childrenArr = [];\n const parents = [];\n\n for (const { columns } of tables) {\n for (const { name, title, children, parent, hidden } of columns) {\n if (\n !hidden &&\n !parents.some((col) => col.title === title) &&\n !childrenArr.some((col) => col.title === title)\n ) {\n const isHide = !hideColumns.some((col) => col === name);\n\n if (parent) {\n childrenArr.push({\n title,\n parent,\n name,\n checked: isHide,\n });\n } else {\n parents.push({\n title,\n children,\n name,\n checked: isHide,\n });\n }\n }\n }\n }\n // TODO: separate parents and children for add divided in dropdown\n return [...parents, ...childrenArr];\n};\n\nexport const getAvailableData = ({\n title,\n parent,\n colSpan,\n availableColumns,\n children,\n hidden,\n}) => {\n const result = {\n colSpan,\n hidden: false,\n };\n const hiddenCol = (availableColumns || []).find((col) => title === col.title);\n\n if (hiddenCol) {\n result.hidden = !hiddenCol.checked;\n\n if (children) {\n for (const col of availableColumns) {\n if (\n !col.checked &&\n children.find((child) => col.title === child.title)\n ) {\n result.colSpan -= 1;\n }\n }\n\n if (colSpan === 0) {\n result.hidden = true;\n }\n } else if (parent) {\n const column = availableColumns.find((col) => parent.title === col.title);\n if (column && !column.checked) {\n result.hidden = true;\n }\n }\n }\n\n if (hidden) {\n result.hidden = hidden;\n }\n\n return result;\n};\n\nexport const getFieldAvailableColumns = (columns, availableColumns) => {\n const result = new Set();\n\n for (const { title, name, children, parent } of columns) {\n const hiddenCol = availableColumns.find((col) => title === col.title);\n\n if (!children && hiddenCol && hiddenCol.checked) {\n if (\n !parent ||\n (parent &&\n availableColumns.find((col) => parent.title === col.title).checked)\n ) {\n result.add(name);\n }\n }\n }\n\n return result;\n};\n\nexport const getFieldAvailableColumnsByArray = (columns, availableColumns) => {\n if (columns === 'Reset') {\n return availableColumns\n .filter((column) => !column.hidden)\n .map((column) => ({ ...column, checked: true }));\n }\n\n for (const column of availableColumns) {\n column.checked = columns.some(\n (col) =>\n column.parent ||\n col === column.name ||\n (column.children && column.name === col)\n );\n }\n\n return availableColumns;\n};\n\nexport const conditionHandle = ({ type, handle, table }) =>\n handle === type || table.settings.handle === type;\n\nconst sortFunc = (a, b, order) => {\n const valA = typeof a.value === 'number' ? a.value : '';\n const valB = typeof b.value === 'number' ? b.value : '';\n const from = order === 'desc' ? valA : valB;\n const to = order === 'desc' ? valB : valA;\n\n if (typeof valA === 'number' && typeof valB === 'number') {\n return from - to;\n }\n\n return from.toString().localeCompare(to.toString(), undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n};\n\nexport const filterTable = (table, name, order, search) => {\n const keys = table.columns\n .filter((col) => !col.children)\n .map((col) => col.name);\n\n let rows = table.rows;\n\n if (name && order) {\n rows = table.rows\n .filter((row) => !row.isNotSort)\n .sort((a, b) => sortFunc(a[name], b[name], order));\n\n table.rows\n .filter((row) => row.isNotSort)\n .forEach((row) => rows.splice(row.indexRow, 0, row));\n }\n\n return rows.filter((row) =>\n keys.some((key) => String(row[key].render).toUpperCase().includes(search))\n );\n};\n\nexport const getSortAttr = (settings, tables, attr) =>\n tables.map(\n (_, index) =>\n (settings[index] || settings.all) &&\n (settings[index] || settings.all)[attr]\n );\n","import request from 'utils/request';\nimport { addRowToTable } from 'utils/tables';\nimport { getTables } from 'modules';\nimport { updateRow } from 'utils/admin';\nimport {\n SET_WORKAREA,\n ERROR_WORKAREA,\n SET_DATA_USERS,\n LOADING_WORKAREA,\n SET_DATA_GROUPS,\n} from '../constants/workarea';\n\nexport const getWorkArea = () => (dispatch) => {\n const error = (payload) => dispatch({ type: ERROR_WORKAREA, payload });\n const success = (data) => {\n const { users, roles, groups } = data;\n\n return dispatch({\n type: SET_WORKAREA,\n payload: {\n roles,\n users: getTables([users]),\n groups: getTables([groups]),\n },\n });\n };\n\n dispatch({\n type: LOADING_WORKAREA,\n });\n\n request({\n error,\n success,\n url: '/api/workarea/admin/',\n data: {},\n });\n};\n\nexport const addUser = (props) => (dispatch, getState) => {\n const [table] = getState().workarea.users;\n dispatch({\n type: SET_DATA_USERS,\n payload: {\n rows: addRowToTable(props, table),\n },\n });\n};\n\nexport const setUpdateUsers = (props) => (dispatch, getState) => {\n const [{ rows }] = getState().workarea.users;\n dispatch({\n type: SET_DATA_USERS,\n payload: {\n rows: updateRow(rows, props),\n },\n });\n};\n\nexport const addGroup = (props) => (dispatch, getState) => {\n const [table] = getState().workarea.groups;\n dispatch({\n type: SET_DATA_GROUPS,\n payload: {\n rows: addRowToTable(props, table),\n },\n });\n};\n\nexport const removeGroupFromTable = (id) => (dispatch, getState) => {\n const [{ rows }] = getState().workarea.groups;\n\n dispatch({\n type: SET_DATA_GROUPS,\n payload: {\n rows: rows.filter((row) => row.id.value !== id),\n },\n });\n};\n\nexport const setUpdateGroups = (props) => (dispatch, getState) => {\n const [{ rows }] = getState().workarea.groups;\n dispatch({\n type: SET_DATA_GROUPS,\n payload: {\n rows: updateRow(rows, props),\n },\n });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './AdminHeader.scss';\nimport Dropdown from 'components/common/Dropdown';\n\nconst AdminHeader = ({ role, roles, title, onChangeRole }) => (\n <div className=\"c-admin-user__header\">\n <h1>{title}</h1>\n\n <div className=\"c-admin-user__header--filters c-dropdown\">\n {onChangeRole && (\n <Dropdown\n title={role}\n items={roles}\n id=\"admin-roles\"\n pullRight\n onChange={onChangeRole}\n isLoading={roles.length === 0}\n />\n )}\n </div>\n </div>\n);\n\nAdminHeader.defaultProps = {\n roles: [],\n role: 'By role',\n};\n\nAdminHeader.propTypes = {\n role: PropTypes.string,\n roles: PropTypes.array,\n onChangeRole: PropTypes.func,\n title: PropTypes.string.isRequired,\n};\n\nexport default AdminHeader;\n","import React from 'react';\n\nimport './Role.scss';\nimport Dropdown from 'components/common/Dropdown';\n\nconst Role = ({ id, role, roles, onChangeRole }) => (\n <div className=\"c-role form-group\">\n <div className=\"col-sm-3 control-label\">\n <label htmlFor={id}>\n <h5>Role</h5>\n </label>\n </div>\n\n <div className=\"col-sm-9 col-md-6 c-dropdown\">\n <Dropdown\n id={id}\n title={role}\n items={roles}\n isReset={false}\n onChange={onChangeRole}\n isLoading={roles.length === 0}\n />\n </div>\n </div>\n);\n\nexport default Role;\n","import request from 'utils/request';\n\nconst API_CREATE_USER = '/put/signup/';\n\nexport const createUser = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_CREATE_USER,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Typeahead } from 'react-bootstrap-typeahead';\nimport moment from 'moment';\n\nimport './CreateUser.scss';\nimport Validate from 'utils/validate';\nimport { getGroupList } from 'utils/admin';\nimport { addUser } from 'redux/actions/workarea';\n\nimport Input from 'components/common/Input';\nimport Alert from 'components/common/Alert';\nimport Loading from 'components/common/Loading';\nimport Role from '../Role';\nimport { createUser } from './dataProvider';\n\nclass CreateUser extends Component {\n state = {\n email: '',\n alert: null,\n account: [],\n validate: {},\n role: 'By role',\n displayName: '',\n selectedMembers: [],\n selectedManagers: [],\n overnightAccount: [],\n isShowManagers: false,\n };\n\n handleChangeInput = ({ target }) => {\n const { value } = target;\n const { state } = this;\n const { key, validate } = target.dataset;\n\n if (validate !== 'false') {\n state.validate[key] = Validate[key](value, state.password);\n }\n\n state[key] = value;\n state.alert = null;\n this.setState(state);\n };\n\n handleChangeAccount = (selectedAcc) => {\n const { validate, account } = this.state;\n const newAccount = Array.isArray(selectedAcc) ? selectedAcc : [selectedAcc];\n\n this.setState({\n alert: null,\n account: newAccount || account,\n validate: {\n ...validate,\n account: Validate.account(newAccount[0] || account[0]),\n },\n });\n };\n\n handleChangeOvernightAccount = (selectedAcc) => {\n const { validate, overnightAccount } = this.state;\n const newAccount = Array.isArray(selectedAcc) ? selectedAcc : [selectedAcc];\n\n this.setState({\n alert: null,\n overnightAccount: newAccount || overnightAccount,\n validate: {\n ...validate,\n overnightAccount: Validate.account(\n newAccount[0] || overnightAccount[0]\n ),\n },\n });\n };\n\n handleChangeMemberOf = (selectedMembers) => {\n this.setState({\n selectedMembers,\n });\n };\n\n handleChangeManager = (selectedManagers) => {\n this.setState({\n selectedManagers,\n });\n };\n\n handleCreateUser = async () => {\n const { roles, addUser } = this.props;\n const {\n email,\n role,\n validate,\n displayName,\n selectedMembers,\n selectedManagers,\n overnightAccount,\n account: [account],\n } = this.state;\n\n const errors = ['email', 'account', 'role', 'displayName'].filter(\n (key) => !this.state[key] || this.state[key].length === 0\n );\n\n if (errors.length !== 0) {\n this.setState({\n validate: {\n ...validate,\n ...errors.reduce((acc, key) => ({ ...acc, [key]: false }), {}),\n },\n });\n return;\n }\n\n this.setState({\n isLoading: true,\n });\n\n const groups = selectedManagers.map((m) => m.name);\n const memberOf = selectedMembers.map((m) => m.name);\n const idRoles = roles.find((r) => r.name === role).id;\n\n const data = {\n email,\n groups,\n acc: account,\n name: displayName,\n id_roles: idRoles,\n memberof: memberOf,\n };\n\n if (memberOf.length !== 0) {\n data.memberof = memberOf;\n }\n\n if (overnightAccount.length !== 0 && overnightAccount[0]) {\n // eslint-disable-next-line prefer-destructuring\n data.account_ovn = overnightAccount[0];\n }\n\n const { error, key, id } = await createUser(data);\n\n if (error) {\n this.setState({\n isLoading: false,\n alert: (\n <Alert bsStyle=\"danger\" message=\"User isn't created, repeat later\" />\n ),\n });\n return;\n }\n\n this.setState({\n isLoading: false,\n alert: (\n <Alert\n isShowCloseBtn={false}\n message={\n <p>\n You created password:\n <span className=\"bold\">{key}</span>\n </p>\n }\n />\n ),\n });\n\n addUser({\n id: id || 0,\n name: displayName,\n account,\n memberOf,\n accountOvn: overnightAccount,\n managerBy: groups,\n lastLogin: moment().unix(),\n email,\n idRoles,\n isDel: false,\n status: 'Active',\n });\n };\n\n handleChangeRole = (newRole) => {\n const { roles } = this.props;\n const { validate, selectedManagers } = this.state;\n\n let isShowManagers = false;\n\n const role = roles.find((r) => r.name === newRole);\n\n if (role.id === 1 || role.id === 2) {\n isShowManagers = true;\n }\n\n this.setState({\n role: newRole,\n alert: null,\n isShowManagers,\n selectedManagers: isShowManagers ? selectedManagers : [],\n validate: {\n ...validate,\n role: !!role,\n },\n });\n };\n\n render() {\n const {\n role,\n alert,\n email,\n account,\n validate,\n isLoading,\n displayName,\n isShowManagers,\n selectedMembers,\n overnightAccount,\n selectedManagers,\n } = this.state;\n\n const { roles, accounts, memberOf, managers } = this.props;\n\n const selectedRole = roles.find((r) => r.name === role);\n const keys = Object.keys(validate);\n const isBtnDisable =\n !keys.every((k) => validate[k]) || !!alert || !selectedRole;\n\n return (\n <div className=\"c-admin__create-user\">\n <h3>Account details</h3>\n\n <div className=\"form-horizontal\">\n <Input\n type=\"email\"\n value={email}\n title=\"Email\"\n dataKey=\"email\"\n className={validate.email}\n handleOnChange={this.handleChangeInput}\n />\n\n <Input\n value={displayName}\n title=\"Display Name\"\n dataKey=\"displayName\"\n className={validate.displayName}\n handleOnChange={this.handleChangeInput}\n />\n\n <Input\n title=\"Account\"\n className={validate.account}\n component={\n <Typeahead\n clearButton\n options={accounts}\n selected={account}\n className=\"typeahead-account\"\n onChange={this.handleChangeAccount}\n onInputChange={this.handleChangeAccount}\n />\n }\n />\n\n <Input\n title=\"Member of\"\n component={\n <Typeahead\n multiple\n clearButton\n labelKey=\"name\"\n options={memberOf}\n selected={selectedMembers}\n onChange={this.handleChangeMemberOf}\n />\n }\n />\n\n <Input\n title=\"Overnight account\"\n component={\n <Typeahead\n clearButton\n options={accounts}\n selected={overnightAccount}\n className=\"typeahead-account\"\n onChange={this.handleChangeOvernightAccount}\n onInputChange={this.handleChangeOvernightAccount}\n />\n }\n />\n\n <Role\n role={role}\n roles={roles}\n id=\"admin-create-user\"\n onChangeRole={this.handleChangeRole}\n />\n\n {isShowManagers && (\n <Input\n title=\"Manager\"\n component={\n <Typeahead\n multiple\n clearButton\n labelKey=\"name\"\n options={managers}\n selected={selectedManagers}\n onChange={this.handleChangeManager}\n />\n }\n />\n )}\n\n <Loading isShow={isLoading} />\n {alert && (\n <div className=\"form-group alert-form\">\n <div className=\"col-sm-offset-3 col-sm-9 col-md-6\">{alert}</div>\n </div>\n )}\n </div>\n\n <div className=\"create-user\">\n <button\n type=\"button\"\n disabled={isBtnDisable}\n className=\"btn btn-success\"\n onClick={this.handleCreateUser}\n >\n Create User\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default connect(\n ({ accounts, workarea }) => {\n const groupList = getGroupList(workarea.groups[0].rows);\n return {\n ...workarea,\n managers: [...groupList],\n memberOf: [...groupList],\n accounts: accounts.allAccounts,\n };\n },\n {\n addUser,\n }\n)(CreateUser);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"defs\", null, React.createElement(\"style\", null, \".cls-1{fill:#10a64a;fill-rule:evenodd;}.cls-2{fill:#fff;}\"));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"title\", null, \"verified-symbol\");\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"cls-1\",\n points: \"61.37 8.24 80.43 0 90.88 17.79 111.15 22.32 109.15 42.85 122.88 58.43 109.2 73.87 111.15 94.55 91 99 80.43 116.87 61.51 108.62 42.45 116.87 32 99.08 11.73 94.55 13.73 74.01 0 58.43 13.68 42.99 11.73 22.32 31.88 17.87 42.45 0 61.37 8.24 61.37 8.24\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M37.92,65c-6.07-6.53,3.25-16.26,10-10.1,2.38,2.17,5.84,5.34,8.24,7.49L74.66,39.66C81.1,33,91.27,42.78,84.91,49.48L61.67,77.2a7.13,7.13,0,0,1-9.9.44C47.83,73.89,42.05,68.5,37.92,65Z\"\n});\n\nvar SvgDone = function SvgDone(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n viewBox: \"0 0 122.88 116.87\",\n ref: svgRef\n }, props), _ref2, title === undefined ? _ref3 : title ? React.createElement(\"title\", null, title) : null, _ref4, _ref5);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgDone, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/done.5eb63159.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, React.createElement(\"path\", {\n d: \"M22.72,0h77.45c6.25,0,11.93,2.56,16.05,6.67c4.11,4.11,6.67,9.79,6.67,16.05v74.29c0,6.25-2.56,11.93-6.67,16.05 l-0.32,0.29c-4.09,3.94-9.64,6.38-15.73,6.38H22.72c-6.25,0-11.93-2.56-16.05-6.67l-0.3-0.32C2.43,108.64,0,103.09,0,97.01V22.71 c0-6.25,2.55-11.93,6.67-16.05C10.78,2.55,16.46,0,22.72,0L22.72,0z M75.83,73.05L75.83,73.05c-3.28-3.26-5.54-5.99-7.79-8.72 c-1.95-2.35-3.9-4.72-6.52-7.41L46.03,73.77c-0.1,0.11-0.22,0.2-0.36,0.27c-1.06,0.54-2.25,0.73-3.4,0.55 c-1.12-0.17-2.2-0.68-3.07-1.54c-1.09-1.07-1.65-2.5-1.66-3.92c-0.01-1.44,0.52-2.87,1.6-3.97c5.83-6.43,12.07-13.94,18.11-19.99 c1.24-1.23,2.69-1.84,4.15-1.83c1.44,0.01,2.85,0.6,4.05,1.76c5.34,4.94,13.32,14.33,18.28,20.06c1.06,1.08,1.6,2.49,1.6,3.9 c0,1.39-0.51,2.78-1.53,3.86l-0.1,0.1c-1.08,1.08-2.51,1.63-3.94,1.63c-1.39,0-2.78-0.51-3.86-1.54L75.83,73.05L75.83,73.05z M100.16,10.24H22.72c-3.43,0-6.54,1.41-8.81,3.67c-2.26,2.26-3.67,5.38-3.67,8.81v74.29c0,3.33,1.31,6.35,3.43,8.59l0.24,0.22 c2.26,2.26,5.38,3.67,8.81,3.67h77.45c3.32,0,6.35-1.31,8.59-3.44l0.21-0.23c2.26-2.26,3.67-5.38,3.67-8.81V22.71 c0-3.42-1.41-6.54-3.67-8.81C106.71,11.65,103.59,10.24,100.16,10.24L100.16,10.24z\"\n}));\n\nvar SvgCollapseArrow = function SvgCollapseArrow(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 122.88 119.72\",\n style: {\n enableBackground: \"new 0 0 122.88 119.72\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgCollapseArrow, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/collapse-arrow.bbb98879.svg\";\nexport { ForwardRef as ReactComponent };","import request from 'utils/request';\n\nconst API_UPDATE_USER = '/put/user/';\n\nexport const setInfoUser = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_UPDATE_USER,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { memo, useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport { ReactComponent as DoneIcon } from 'icons/done.svg';\nimport { ReactComponent as CollapseArrowIcon } from 'icons/collapse-arrow.svg';\n\nimport Validate from 'utils/validate';\n\nimport Alert from 'components/common/Alert';\nimport Input from 'components/common/Input';\nimport Spinner, { SpinnerKinds } from 'components/Spinner';\n\nimport { setInfoUser } from '../dataProvider';\n\nimport './Password.scss';\n\nconst Password = memo((props) => {\n const { email, isLoading: isLoadingParent } = props;\n\n const [alert, setAlert] = useState(null);\n const [password, setPassword] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isCollpased, setIsCollapsed] = useState(false);\n const [repeatPassword, setRepeatPassword] = useState('');\n const [validate, setValidate] = useState(Validate.password(''));\n\n const onChangePassword = useCallback(\n (e) => {\n const pass = e.target.value;\n\n setPassword(pass);\n setRepeatPassword('');\n setValidate(Validate.password(pass, repeatPassword));\n },\n [repeatPassword]\n );\n\n const onChangeRepeatPassword = useCallback(\n (e) => {\n const repeatPass = e.target.value;\n setRepeatPassword(repeatPass);\n setValidate(Validate.password(password, repeatPass));\n },\n [password]\n );\n\n const onToggleCollapsed = useCallback(() => {\n setIsCollapsed((c) => !c);\n }, []);\n\n const onGeneratePassword = useCallback(async () => {\n setIsLoading(true);\n setAlert(null);\n\n const data = {\n email,\n };\n\n if (password) {\n data.password = password;\n } else {\n data.is_new_pass = true;\n }\n\n const { key, error } = await setInfoUser(data);\n\n if (error) {\n setAlert({\n type: 'danger',\n message: error || \"You can't generate password, repeat later\",\n });\n return;\n }\n\n setAlert({\n type: 'success',\n message: (\n <p>\n New password saved:\n <span className=\"bold\">{key}</span>\n </p>\n ),\n });\n\n setPassword('');\n setRepeatPassword('');\n setIsLoading(false);\n }, [email, password]);\n\n const loading = isLoadingParent || isLoading;\n\n return (\n <div className=\"c-edit-user__password\">\n <h4\n className=\"col-sm-offset-3 col-sm-9 col-md-6 c-edit-user__password--title\"\n onClick={onToggleCollapsed}\n >\n Change password\n <CollapseArrowIcon\n className={cx('c-edit-user__password--title-icon', {\n collapsed: isCollpased,\n })}\n />\n </h4>\n\n <div\n className={cx('c-edit-user__password--content', {\n collapsed: isCollpased,\n })}\n >\n <Input\n type=\"password\"\n value={password}\n title=\"Password\"\n placeholder=\"Password or press on generate random password\"\n handleOnChange={onChangePassword}\n disabled={loading}\n />\n\n <Input\n type=\"password\"\n value={repeatPassword}\n title=\"Password (again)\"\n placeholder=\"Repeat password\"\n handleOnChange={onChangeRepeatPassword}\n disabled={loading || !password}\n />\n\n <ul className=\"col-sm-offset-3 col-sm-9 col-md-6\">\n {validate.map((v) => (\n <li key={v.message}>\n <DoneIcon\n className={cx('c-edit-user__password__icon-done', {\n 'c-edit-user__password__icon-done--ok': v.ok,\n })}\n />\n\n {v.message}\n </li>\n ))}\n </ul>\n\n <div className=\"c-edit-user__password--generate form-group\">\n <div className=\"col-sm-offset-3 col-sm-9 col-md-6\">\n <button\n type=\"button\"\n disabled={loading || (password && !validate.every((v) => v.ok))}\n onClick={onGeneratePassword}\n className=\"btn btn-default\"\n >\n {password ? 'Saved Password' : 'Generate Password'}\n {loading && <Spinner kind={SpinnerKinds.ROLLER} />}\n </button>\n </div>\n\n <div className=\"col-sm-offset-3 col-sm-9 col-md-6\">\n {alert && <Alert bsStyle={alert.type} message={alert.message} />}\n </div>\n </div>\n </div>\n </div>\n );\n});\n\nPassword.propTypes = {\n email: PropTypes.string.isRequired,\n};\n\nexport default Password;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Typeahead } from 'react-bootstrap-typeahead';\n\nimport { ModalBody, ModalHeader, ModalFooter } from 'react-bootstrap';\n\nimport './EditUser.scss';\nimport Validate from 'utils/validate';\nimport { getGroupList } from 'utils/admin';\nimport { setUpdateUsers } from 'redux/actions/workarea';\nimport { changeCompareWith } from 'redux/actions/accounts';\n\nimport Alert from 'components/common/Alert';\nimport Input from 'components/common/Input';\nimport Loading from 'components/common/Loading';\nimport Password from './Password';\nimport Role from '../Role';\nimport { setInfoUser } from './dataProvider';\n\nclass EditUser extends Component {\n constructor(props) {\n super(props);\n\n const { row, roles, groupList } = props;\n\n const {\n id,\n name,\n email,\n account,\n idRoles,\n memberOf,\n managerBy,\n accountOvn,\n } = row;\n\n const compareWith = row.compareWith.value || [];\n const role = roles.find((r) => r.id === idRoles.value);\n\n this.state = {\n alert: null,\n isLoading: false,\n id: id.value,\n name: name.value,\n email: email.value,\n validate: {\n name: true,\n account: true,\n },\n memberOf: [...groupList],\n managers: [...groupList],\n compareWith: [...groupList],\n role: role ? role.name : 'By role',\n account: [account.value.toString()],\n selectedMembers: groupList.filter((g) =>\n memberOf.value.find((m) => m === g.name)\n ),\n selectedManagers: groupList.filter((g) =>\n managerBy.value.find((m) => m === g.name)\n ),\n selectedCompares: groupList.filter((g) =>\n compareWith.find((m) => m === g.id)\n ),\n overnightAccount: accountOvn.value ? [accountOvn.value.toString()] : [],\n };\n }\n\n handleChangeInput = ({ target }) => {\n let { value, checked } = target;\n const { state } = this;\n const { key, validate } = target.dataset;\n\n if (validate !== 'false') {\n state.validate[key] = Validate[key](value);\n }\n\n if (value === 'true' || value === 'false') {\n value = checked;\n }\n\n state[key] = value;\n state.alert = null;\n this.setState(state);\n };\n\n handleChangeAccount = (selectedAcc) => {\n const { validate, account } = this.state;\n const newAccount = Array.isArray(selectedAcc) ? selectedAcc : [selectedAcc];\n\n this.setState({\n alert: null,\n account: newAccount || account,\n validate: {\n ...validate,\n selectedAccounts: Validate.account(newAccount[0] || account[0]),\n },\n });\n };\n\n handleChangeOvernightAccount = (selectedAcc) => {\n const { validate, overnightAccount } = this.state;\n const newAccount = Array.isArray(selectedAcc) ? selectedAcc : [selectedAcc];\n\n this.setState({\n alert: null,\n overnightAccount: newAccount || overnightAccount,\n validate: {\n ...validate,\n overnightAccount: Validate.account(\n newAccount[0] || overnightAccount[0]\n ),\n },\n });\n };\n\n handleChangeMember = (selectedMembers) => {\n this.setState({\n alert: null,\n selectedMembers,\n });\n };\n\n handleChangeManager = (selectedManagers) => {\n this.setState({\n alert: null,\n selectedManagers,\n });\n };\n\n onChangeCompareWith = (selectedCompares) => {\n this.setState({\n alert: null,\n selectedCompares,\n });\n };\n\n handleChangeRole = (role) => {\n const { roles } = this.props;\n const { validate } = this.state;\n this.setState({\n role,\n alert: null,\n validate: {\n ...validate,\n role: roles.some((r) => r.name === role),\n },\n });\n };\n\n handleUpdateUser = async () => {\n const {\n id,\n role,\n name,\n email,\n account,\n overnightAccount,\n selectedMembers,\n selectedManagers,\n selectedCompares,\n } = this.state;\n const { roles, setUpdateUsers, changeCompareWith } = this.props;\n\n const data = {\n name,\n email,\n acc: Number(account),\n };\n\n const roleData = roles.find((r) => r.name === role);\n\n if (selectedManagers.length !== 0) {\n data.groups = selectedManagers.map((m) => m.name);\n }\n\n if (selectedMembers.length !== 0) {\n data.memberof = selectedMembers.map((m) => m.name);\n }\n\n if (overnightAccount.length !== 0 && overnightAccount[0]) {\n // eslint-disable-next-line prefer-destructuring\n data.account_ovn = overnightAccount[0];\n }\n\n if (selectedCompares.length !== 0) {\n data.compare_with = selectedCompares.map((m) => m.id);\n changeCompareWith({\n compareWith: selectedCompares.reduce((p, n) => {\n p[n.name] = [n.id];\n return p;\n }, {}),\n });\n }\n\n if (roleData) {\n data.id_roles = roleData.id;\n }\n\n const error = await this.requestToServer(data);\n\n if (!error) {\n setUpdateUsers({\n id,\n name,\n email,\n account,\n idRoles: roleData.id,\n managerBy: data.groups || [],\n memberOf: data.memberof || [],\n compareWith: data.compare_with || [],\n accountOvn: data.account_ovn ? Number(data.account_ovn) : null,\n });\n }\n\n // need to update global state\n setTimeout(() => {\n this.props.onHide();\n }, 300);\n };\n\n handleRemoveUser = async () => {\n await this.requestToServer({\n is_del: true,\n email: this.state.email,\n });\n\n this.props.onHide();\n };\n\n requestToServer = async (data) => {\n this.setState({\n isLoading: true,\n });\n\n const { error } = await setInfoUser(data);\n\n if (error) {\n this.setState({\n isLoading: false,\n alert: (\n <Alert bsStyle=\"danger\" message=\"User isn't updated, repeat later\" />\n ),\n });\n return error;\n }\n };\n\n render() {\n const {\n name,\n role,\n email,\n alert,\n account,\n memberOf,\n managers,\n validate,\n isLoading,\n selectedMembers,\n selectedManagers,\n overnightAccount,\n selectedCompares,\n compareWith,\n } = this.state;\n\n const { row, roles, onHide, accounts } = this.props;\n\n return (\n <div className=\"c-admin-user__edit-user\">\n <ModalHeader closeButton>\n <h3>Edit user [{row.name.value}]</h3>\n </ModalHeader>\n\n <ModalBody>\n <div className=\"form-horizontal\">\n <Input\n type=\"email\"\n value={email}\n title=\"Email\"\n dataKey=\"email\"\n disabled\n />\n\n <Input\n value={name}\n dataKey=\"name\"\n title=\"Display Name\"\n className={validate.name}\n handleOnChange={this.handleChangeInput}\n />\n\n <Input\n title=\"Account\"\n className={validate.selectedAccounts}\n component={\n <Typeahead\n clearButton\n options={accounts}\n selected={account}\n className=\"typeahead-account\"\n onChange={this.handleChangeAccount}\n onInputChange={this.handleChangeAccount}\n />\n }\n />\n\n <Input\n title=\"Overnight account\"\n className={validate.selectedAccounts}\n component={\n <Typeahead\n clearButton\n options={accounts}\n selected={overnightAccount}\n className=\"typeahead-account\"\n onChange={this.handleChangeOvernightAccount}\n onInputChange={this.handleChangeOvernightAccount}\n />\n }\n />\n\n <Input\n title=\"Compare With\"\n className={validate.compareWith}\n component={\n <Typeahead\n multiple\n clearButton\n labelKey=\"name\"\n options={compareWith}\n selected={selectedCompares}\n onChange={this.onChangeCompareWith}\n />\n }\n />\n\n <Input\n title=\"Member of\"\n component={\n <Typeahead\n multiple\n clearButton\n labelKey=\"name\"\n options={memberOf}\n selected={selectedMembers}\n onChange={this.handleChangeMember}\n />\n }\n />\n\n <Input\n title=\"Manager\"\n component={\n <Typeahead\n multiple\n clearButton\n labelKey=\"name\"\n options={managers}\n selected={selectedManagers}\n onChange={this.handleChangeManager}\n />\n }\n />\n\n <Role\n role={role}\n roles={roles}\n id=\"admin-edit-user\"\n onChangeRole={this.handleChangeRole}\n />\n\n <Loading isShow={isLoading} />\n {alert && (\n <div className=\"form-group alert-form\">\n <div className=\"col-sm-offset-3 col-sm-9 col-md-6\">{alert}</div>\n </div>\n )}\n\n <Password email={email} />\n </div>\n </ModalBody>\n\n <ModalFooter>\n <button\n type=\"button\"\n disabled={isLoading}\n className=\"btn btn-danger\"\n onClick={this.handleRemoveUser}\n >\n Remove User\n </button>\n\n <button\n type=\"button\"\n className=\"btn btn-success\"\n onClick={this.handleUpdateUser}\n disabled={!(validate.name && validate.account) || isLoading}\n >\n Update User\n </button>\n\n <button\n type=\"button\"\n onClick={onHide}\n disabled={isLoading}\n className=\"btn btn-default\"\n >\n Cancel\n </button>\n </ModalFooter>\n </div>\n );\n }\n}\n\nexport default connect(\n ({ accounts, workarea }) => ({\n ...workarea,\n accounts: accounts.allAccounts,\n groupList: getGroupList(workarea.groups[0].rows),\n }),\n {\n setUpdateUsers,\n changeCompareWith,\n }\n)(EditUser);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs';\n\nimport { filterTable } from 'utils/admin';\nimport { getWorkArea } from 'redux/actions/workarea';\n\nimport { Tables } from 'modules';\nimport Spinner from 'components/Spinner';\nimport AdminHeader from 'components/common/AdminHeader';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\nimport CreateUser from './CreateUser';\nimport EditUser from './EditUser';\n\nimport './AdminUser.scss';\n\nclass AdminUser extends Component {\n state = {\n users: [],\n table: [],\n selectedIndex: 0,\n isOpenModal: false,\n tabs: ['All Users', 'Inactive', 'Deleted'],\n };\n\n constructor(props) {\n super(props);\n props.getWorkArea();\n }\n\n static getDerivedStateFromProps(props, state) {\n return {\n table: filterTable(state, props),\n };\n }\n\n handleSelectTab = (selectedIndex) => {\n this.setState({\n selectedIndex,\n table: filterTable({ ...this.state, selectedIndex }, this.props),\n });\n };\n\n handleChangeRole = (id) => {\n const role = id !== 'reset' ? id : undefined;\n\n this.setState({\n role,\n table: filterTable({ ...this.state, role }, this.props),\n });\n };\n\n render() {\n const { tabs, role, table, selectedIndex } = this.state;\n const { roles, error, groups, isLoading } = this.props;\n\n return (\n <div className=\"c-admin\">\n <AdminHeader\n role={role}\n roles={roles}\n title=\"Users\"\n onChangeRole={this.handleChangeRole}\n />\n\n <Tabs selectedIndex={selectedIndex} onSelect={this.handleSelectTab}>\n <TabList>\n {tabs.map((title) => (\n <Tab key={title}>{title}</Tab>\n ))}\n <Tab>Create user</Tab>\n </TabList>\n\n {tabs.map((title) => (\n <TabPanel key={title}>\n {error && <ServiceUnavailablePlaceholder {...error} />}\n {isLoading ? (\n <Spinner />\n ) : (\n <Tables data={table} expandComponent={EditUser} />\n )}\n </TabPanel>\n ))}\n\n <TabPanel>\n {isLoading && <Spinner />}\n\n {groups.length !== 0 && (\n <CreateUser\n roles={roles}\n groups={groups}\n updateData={this.getTableRequest}\n openAllUsers={this.handleSelectTab}\n handleSelectTab={this.handleSelectTab}\n />\n )}\n </TabPanel>\n </Tabs>\n </div>\n );\n }\n}\n\nexport default connect(\n ({ workarea }) => ({\n ...workarea,\n table: workarea.users,\n }),\n {\n getWorkArea,\n }\n)(AdminUser);\n","import request from 'utils/request';\n\nconst API_CREATE_GROUP = '/put/groups/users/';\nconst API_REMOVE_GROUP = '/del/groups/users/';\n\nexport const changeGroup = async (data) => {\n try {\n return await new Promise((success, error) =>\n request({\n data,\n error,\n success,\n url: API_CREATE_GROUP,\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nexport const removeGroup = async (id) => {\n try {\n return await new Promise((success, error) =>\n request({\n data: {\n id,\n },\n error,\n success,\n url: API_REMOVE_GROUP,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport cx from 'classnames';\n\nimport { ModalBody, ModalHeader, ModalFooter } from 'react-bootstrap';\n\nimport Validate from 'utils/validate';\nimport { getAccounts } from 'utils/admin';\nimport {\n addGroup,\n setUpdateGroups,\n removeGroupFromTable,\n} from 'redux/actions/workarea';\n\nimport Alert from 'components/common/Alert';\nimport Input from 'components/common/Input';\nimport Loading from 'components/common/Loading';\nimport Sortable from 'components/common/Sortable';\nimport { changeGroup, removeGroup } from './dataProvider';\n\nimport './ChangeGroup.scss';\n\nclass ChangeGroup extends Component {\n constructor(props) {\n super(props);\n\n const { row, accounts } = props;\n\n const users = accounts.filter((acc) => acc.id.length !== 0);\n\n const valueMembers = (row && row.members.value) || [];\n const valueManagers = (row && row.managers.value) || [];\n\n const managers = row\n ? users.filter(({ id }) => !valueManagers.some((m) => id.includes(m)))\n : users;\n\n const members = row\n ? accounts.filter(({ account }) => !valueMembers.includes(account))\n : accounts;\n\n const managersSelected = row\n ? users.filter(({ id }) => valueManagers.some((m) => id.includes(m)))\n : [];\n\n const membersSelected = row\n ? accounts.filter(({ account }) => valueMembers.includes(account))\n : [];\n\n this.state = {\n members,\n managers,\n alert: null,\n validate: {},\n membersSelected,\n managersSelected,\n isLoading: false,\n name: row ? row.name.value : '',\n };\n }\n\n handleChangeInput = ({ target }) => {\n const { value } = target;\n const { state } = this;\n const { key, validate } = target.dataset;\n\n if (validate !== 'false') {\n state.validate[key] = Validate[key](value);\n }\n\n state[key] = value;\n state.alert = null;\n this.setState(state);\n };\n\n onRemoveGroup = async () => {\n const { row, onHide, removeGroupFromTable } = this.props;\n\n const id = row.id.value;\n\n this.setState({\n isLoading: true,\n });\n\n const response = await removeGroup(id);\n\n if (response.error) {\n this.setState({\n isLoading: false,\n alert: (\n <Alert bsStyle=\"danger\" message=\"Group isn't remove, repeat later\" />\n ),\n });\n return;\n }\n\n removeGroupFromTable(id);\n onHide();\n };\n\n handleChangeGroup = async () => {\n const { row, onHide, addGroup, setUpdateGroups } = this.props;\n const { membersSelected, managersSelected } = this.state;\n\n const { name } = this.state;\n const managers = managersSelected.reduce((p, n) => {\n p.push(...n.id);\n return p;\n }, []);\n\n const data = {\n name,\n users: [...managers],\n accounts: membersSelected.map((u) => u.account),\n };\n\n if (this.props.row) {\n data.id = this.props.row.id.value;\n }\n\n const response = await changeGroup(data);\n\n if (response.error) {\n this.setState({\n isLoading: false,\n alert: (\n <Alert\n bsStyle=\"danger\"\n message={`Group isn't ${row ? 'updated' : 'created'}, repeat later`}\n />\n ),\n });\n return;\n }\n\n const changeRow = {\n name,\n id: response || data.id || 0,\n managers: data.users || [],\n members: data.accounts || [],\n };\n\n if (row) {\n setUpdateGroups(changeRow);\n onHide();\n return;\n }\n\n addGroup(changeRow);\n\n this.setState({\n validate: {},\n isLoading: false,\n alert: <Alert bsStyle=\"success\" message=\"You created group\" />,\n });\n };\n\n handleChangeMembers = (members, membersSelected) => {\n this.setState({\n members,\n membersSelected,\n });\n };\n\n handleChangeManagers = (managers, managersSelected) => {\n this.setState({\n managers,\n managersSelected,\n });\n };\n\n responseFromServer() {\n const { data, updateData, onClose, handleSelectTab } = this.props;\n\n updateData(true);\n\n if (data) {\n onClose();\n } else {\n handleSelectTab();\n }\n }\n\n render() {\n const {\n name,\n alert,\n members,\n managers,\n validate,\n isLoading,\n membersSelected,\n managersSelected,\n } = this.state;\n\n const { row, onHide } = this.props;\n\n const className = cx('c-admin-group__change-group', {\n created: !row,\n });\n\n return (\n <div className={className}>\n <ModalHeader closeButton>\n <h3>{row ? `Edit group [${row.name.value}]` : 'Group details'}</h3>\n </ModalHeader>\n\n <ModalBody>\n <div className=\"form-horizontal\">\n <Input\n value={name}\n dataKey=\"name\"\n title=\"Name group\"\n colTitle=\"col-sm-2\"\n colBody=\"col-sm-10\"\n className={validate.name}\n handleOnChange={this.handleChangeInput}\n />\n\n <div className=\"form-group users\">\n <div className=\"col-sm-2 control-label\">\n <h5>Group Users</h5>\n </div>\n\n <Sortable\n items={members}\n titleSelect=\"Users\"\n titleSelected=\"Members\"\n selectedItems={membersSelected}\n onChange={this.handleChangeMembers}\n />\n </div>\n\n <div className=\"form-group manages\">\n <div className=\"col-sm-2 control-label\">\n <h5>Group Managers</h5>\n </div>\n\n <Sortable\n items={managers}\n titleSelect=\"Users\"\n titleSelected=\"Managers\"\n selectedItems={managersSelected}\n onChange={this.handleChangeManagers}\n />\n </div>\n\n <Loading isShow={isLoading} />\n {alert && (\n <div className=\"form-group alert-form\">\n <div className=\"col-sm-12 col-md-offset-2 col-md-10\">\n {alert}\n </div>\n </div>\n )}\n </div>\n </ModalBody>\n\n <ModalFooter>\n {row && (\n <button\n className=\"btn btn-danger\"\n onClick={this.onRemoveGroup}\n disabled={isLoading}\n >\n Remove Group\n </button>\n )}\n\n <button\n className=\"btn btn-success\"\n onClick={this.handleChangeGroup}\n disabled={name.length === 0 || isLoading}\n >\n {row ? 'Update' : 'Create'} Group\n </button>\n\n {onHide && (\n <button\n onClick={onHide}\n disabled={isLoading}\n className=\"btn btn-default\"\n >\n Cancel\n </button>\n )}\n </ModalFooter>\n </div>\n );\n }\n}\n\nexport default connect(\n ({ workarea: { users }, accounts }) => ({\n accounts: getAccounts(users[0].rows, accounts.allAccounts),\n }),\n {\n addGroup,\n setUpdateGroups,\n removeGroupFromTable,\n }\n)(ChangeGroup);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs';\n\nimport './AdminGroup.scss';\nimport { filterTable } from 'utils/admin';\nimport { treatmentData } from 'utils/tables';\nimport { getWorkArea } from 'redux/actions/workarea';\n\nimport { Tables } from 'modules';\nimport Loading from 'components/common/Loading';\nimport AdminHeader from 'components/common/AdminHeader';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\nimport ChangeGroup from './ChangeGroup';\n\nclass AdminGroup extends Component {\n state = {\n table: [],\n search: '',\n selectedIndex: 0,\n };\n\n constructor(props) {\n super(props);\n props.getWorkArea();\n }\n\n static getDerivedStateFromProps(props, state) {\n return {\n table: filterTable(state, props),\n };\n }\n\n handleSelectTab = (selectedIndex) => {\n this.setState({\n selectedIndex,\n });\n };\n\n handleAdminResponse = ({ roles, users, groups }) => {\n const checked = true;\n this.setState({\n roles: roles.map((role) => Object.assign(role, { checked })),\n users: [users].map(treatmentData),\n groups: [groups].map(treatmentData),\n });\n };\n\n handleChangeSearch = ({ target }) => {\n const search = target.value;\n const selectedIndex = search.length > 2 ? 0 : this.state.selectedIndex;\n\n this.setState({\n search,\n selectedIndex,\n table: filterTable({ ...this.state, search, selectedIndex }, this.props),\n });\n };\n\n render() {\n const { error, roles, groups, isLoading } = this.props;\n const { table, search, selectedIndex } = this.state;\n\n return (\n <div className=\"c-admin-group\">\n <AdminHeader\n title=\"Groups\"\n search={search}\n onChangeSearch={this.handleChangeSearch}\n />\n\n <Tabs selectedIndex={selectedIndex} onSelect={this.handleSelectTab}>\n <TabList>\n <Tab>All groups</Tab>\n <Tab>Create group</Tab>\n </TabList>\n\n <TabPanel>\n {error && <ServiceUnavailablePlaceholder {...error} />}\n {isLoading ? (\n <Loading isShow={isLoading} />\n ) : (\n <Tables data={table} expandComponent={ChangeGroup} />\n )}\n </TabPanel>\n\n <TabPanel>\n <Loading isShow={isLoading} />\n {groups.length !== 0 && (\n <ChangeGroup\n roles={roles}\n groups={groups}\n updateData={this.getTableRequest}\n openAllUsers={this.handleSelectTab}\n handleSelectTab={this.handleSelectTab}\n />\n )}\n </TabPanel>\n </Tabs>\n </div>\n );\n }\n}\n\nexport default connect(\n ({ workarea }) => ({\n ...workarea,\n table: workarea.groups,\n }),\n {\n getWorkArea,\n }\n)(AdminGroup);\n","import request from 'utils/request';\n\nconst ADD_GLOBAL_TAG = '/put/tags';\nconst GET_GLOBAL_TAGS = '/table/tags';\n\nexport const getGlobalTags = async (idUser) => {\n try {\n return await new Promise((success, error) =>\n request({\n error,\n success,\n url: GET_GLOBAL_TAGS,\n data: {\n id_users: idUser,\n columns: ['id', 'name'],\n },\n })\n );\n } catch (e) {\n return e;\n }\n};\n\nexport const addGlobalTag = async (name, idUser) => {\n try {\n return await new Promise((success, error) =>\n request({\n error,\n success,\n url: ADD_GLOBAL_TAG,\n data: {\n name,\n id_users: idUser,\n },\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs';\n\nimport Reports from 'components/core/Reports';\n\nimport Alert from 'components/common/Alert';\nimport Loading from 'components/common/Loading';\nimport { ServiceNoContentPlaceholder } from 'components/common/ServicePlaceholder';\nimport { EditTags, getGlobalTags, TagsTypes } from 'components';\nimport { addGlobalTag } from './dataProvider';\n\nimport './AdminTags.scss';\n\nclass AdminTags extends Component {\n state = {\n globalTags: [],\n valueNewTag: '',\n selectedIndex: 0,\n isLoadingTags: false,\n isLoadingAddTag: false,\n };\n\n static getUserId = (selectedIndex) => {\n // eslint-disable-next-line\n switch (selectedIndex) {\n case 0:\n return TagsTypes.ADMIN;\n\n case 1:\n return TagsTypes.ADMIN;\n\n case 2:\n return TagsTypes.GLOBAL;\n }\n };\n\n handleSelectTab = async (selectedIndex) => {\n const isLoadingTags = selectedIndex !== 0;\n\n this.setState({\n selectedIndex,\n isLoadingTags,\n valueNewTag: '',\n errorAddTag: null,\n });\n\n if (isLoadingTags) {\n const globalTags =\n (await getGlobalTags(AdminTags.getUserId(selectedIndex))) || [];\n\n this.setState({\n globalTags,\n isLoadingTags: false,\n });\n }\n };\n\n onCloseAlert = () => {\n this.setState({\n errorAddTag: null,\n });\n };\n\n handleClickAddNewTag = async () => {\n const { selectedIndex } = this.state;\n let { globalTags, valueNewTag } = this.state;\n\n if (globalTags.some((t) => t.name === valueNewTag)) {\n this.setState({\n errorAddTag: (\n <Alert\n bsStyle=\"warning\"\n message={`Tag [${valueNewTag}] is exist`}\n close={this.onCloseAlert}\n />\n ),\n });\n return;\n }\n\n this.setState({\n errorAddTag: null,\n isLoadingAddTag: true,\n });\n\n const response = await addGlobalTag(\n valueNewTag,\n AdminTags.getUserId(selectedIndex)\n );\n\n if (!response.error) {\n globalTags = [...globalTags, { name: valueNewTag, id: response }];\n valueNewTag = '';\n }\n\n this.setState({\n globalTags,\n valueNewTag,\n isLoadingAddTag: false,\n errorAddTag: response.error && (\n <Alert message={response.msg} bsStyle=\"danger\" />\n ),\n });\n };\n\n handleChangeAddNewTag = ({ target }) => {\n this.onCloseAlert();\n this.setState({\n valueNewTag: target.value,\n });\n };\n\n render() {\n const {\n globalTags,\n valueNewTag,\n selectedIndex,\n isLoadingTags,\n isLoadingAddTag,\n errorAddTag,\n } = this.state;\n\n const tags =\n globalTags.length !== 0 ? (\n <ul className=\"global-tags__list\">\n {globalTags.map((tag) => (\n <li key={tag.id}>\n <span>{tag.name}</span>\n </li>\n ))}\n </ul>\n ) : (\n <ServiceNoContentPlaceholder description=\"You do not have any global tags.\" />\n );\n\n return (\n <div className=\"c-admin-tags\">\n <h1>Tags</h1>\n\n <Tabs selectedIndex={selectedIndex} onSelect={this.handleSelectTab}>\n <TabList>\n <Tab>All Tags</Tab>\n <Tab>Create Global Tag</Tab>\n <Tab>Create Template Tag</Tab>\n </TabList>\n\n <TabPanel>\n <Reports\n isShowSearch\n isSingleDate\n withoutAccounts\n multiple={false}\n nameTable=\"admin_tags\"\n expandComponent={EditTags}\n />\n </TabPanel>\n\n <TabPanel className=\"global-tags\">\n <form\n className=\"global-tags__add\"\n onSubmit={this.handleClickAddNewTag}\n >\n <input\n type=\"text\"\n value={valueNewTag}\n className=\"form-control\"\n disabled={isLoadingAddTag}\n placeholder=\"Add new global tag...\"\n onChange={this.handleChangeAddNewTag}\n />\n\n <button\n type=\"button\"\n className=\"btn btn-apply\"\n onClick={this.handleClickAddNewTag}\n disabled={isLoadingAddTag || valueNewTag.length === 0}\n >\n Add new global tag\n </button>\n </form>\n\n {errorAddTag}\n\n <div className=\"global-tags__container\">\n <Loading isShow={isLoadingTags} />\n\n <h3>All global tags</h3>\n\n {!isLoadingTags && tags}\n </div>\n </TabPanel>\n\n <TabPanel className=\"global-tags\">\n <form\n className=\"global-tags__add\"\n onSubmit={this.handleClickAddNewTag}\n >\n <input\n type=\"text\"\n value={valueNewTag}\n className=\"form-control\"\n disabled={isLoadingAddTag}\n placeholder=\"Add new template tag...\"\n onChange={this.handleChangeAddNewTag}\n />\n\n <button\n type=\"button\"\n className=\"btn btn-apply\"\n onClick={this.handleClickAddNewTag}\n disabled={isLoadingAddTag || valueNewTag.length === 0}\n >\n Add new template tag\n </button>\n </form>\n\n {errorAddTag}\n\n <div className=\"global-tags__container\">\n <Loading isShow={isLoadingTags} />\n\n <h3>All template tags</h3>\n\n {!isLoadingTags && tags}\n </div>\n </TabPanel>\n </Tabs>\n </div>\n );\n }\n}\n\nexport default AdminTags;\n","export const parseTable = (values, dict) => {\n const table = [];\n const sortedRow = Object.keys(dict)\n .map((key) => ({ ...dict[key], key }))\n .sort((a, b) => a.row - b.row);\n\n let row = 1;\n let buf = [];\n for (const item of sortedRow) {\n if (item.row !== row) {\n table.push(buf.sort((a, b) => a.col - b.col));\n row++;\n buf = [];\n }\n\n buf.push({\n ...item,\n value: values[item.key],\n });\n }\n\n return {\n table,\n maxLength: Math.max(...table.map((cells) => cells.length)),\n };\n};\n","import request from 'utils/request';\nimport { parseTable } from 'utils/summary';\n\nexport const getData = async ({ url, data, dictionary }) => {\n try {\n const response = await new Promise((success, error) =>\n request({\n url,\n data,\n error,\n success,\n })\n );\n\n return parseTable(response, dictionary);\n } catch (e) {\n return e;\n }\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport InfoRow from 'components/common/InfoRow';\nimport Request from 'components/common/Request';\nimport OpenRow from 'components/common/OpenRow';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\nimport { getData } from './dataProvider';\n\nimport './Summary.scss';\n\nconst children = (response) => {\n if (response.error) {\n return <ServiceUnavailablePlaceholder {...response} />;\n }\n\n const { table, maxLength } = response;\n\n return table.map((cells, index) => (\n <InfoRow\n key={index}\n cells={cells}\n styleCell={{\n width: `${100 / maxLength - 1}%`,\n }}\n />\n ));\n};\n\nconst Summary = (props) => {\n const { row, dictionary } = props;\n const { date, link: url, params: data } = row;\n\n const params = {\n url,\n data,\n dictionary,\n };\n\n return (\n <OpenRow {...props}>\n <div className=\"title\">\n <h3 dangerouslySetInnerHTML={{ __html: date.render }} />\n </div>\n\n <Request params={params} action={getData} className=\"c-summary\">\n {children}\n </Request>\n </OpenRow>\n );\n};\n\nexport default connect(({ dictionary }) => ({\n dictionary,\n}))(Summary);\n","import request from 'utils/request';\n\nexport const getTotalMonth = async ({ data, url }) => {\n try {\n return await new Promise((success, error) =>\n request({\n url,\n data,\n error,\n success,\n })\n );\n } catch (e) {\n return e;\n }\n};\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n\nimport { getParams } from 'utils/trades';\n\nimport './SummaryByMonth.scss';\nimport { Tables, getTables } from 'modules';\nimport OpenRow from 'components/common/OpenRow';\nimport Request from 'components/common/Request';\nimport Summary from 'components/common/Summary';\nimport { ServiceUnavailablePlaceholder } from 'components/common/ServicePlaceholder';\nimport { getTotalMonth } from './dataProvider';\n\nclass SummaryByMonth extends Component {\n constructor(props) {\n super(props);\n\n const { row, date, table, account, settings } = props;\n\n const additional = {\n date,\n account,\n };\n\n this.state = {\n params: {\n url: settings.link,\n data: {\n ...getParams(settings.params, row, table, additional),\n },\n },\n };\n }\n\n renderChildren = (response) => {\n if (response.error) {\n return <ServiceUnavailablePlaceholder {...response} />;\n }\n\n const { row } = this.props;\n const title = moment([row.year.value, row.month.value - 1]).format(\n 'MMMM YYYY'\n );\n\n const data = response.map((table, index) => ({\n ...table,\n id: `summary-by-month-${index}`,\n }));\n\n return (\n <React.Fragment>\n <div className=\"title\">\n <h3>{row.month.render}</h3>\n <span>{row.year.render}</span>\n </div>\n\n <Tables\n data={getTables(data)}\n title={title}\n isPinFixedHead={false}\n expandComponent={Summary}\n />\n </React.Fragment>\n );\n };\n\n render() {\n const { params } = this.state;\n\n return (\n <OpenRow {...this.props}>\n <Request\n params={params}\n action={getTotalMonth}\n className=\"c-summary-by-month\"\n >\n {this.renderChildren}\n </Request>\n </OpenRow>\n );\n }\n}\n\nexport default connect(({ dates, accounts }) => ({\n account: accounts.saved[0],\n date: dates.saved[0].startDate.unix(),\n currentDay: dates.saved[0].startDate.format('MM/DD/YYYY'),\n}))(SummaryByMonth);\n","/*\n * import ./components/core\n */\nimport { Dashboard, TestReport, EditRiskManagement } from 'components';\nimport Signin from 'components/core/Signin';\nimport Reports from 'components/core/Reports';\nimport HomePage from 'components/core/Homepage';\nimport AdminUser from 'components/core/AdminUser';\nimport AdminGroup from 'components/core/AdminGroup';\nimport AdminTags from 'components/core/AdminTags';\n\n/*\n * Additional components\n * */\nimport Note from 'components/common/Note';\nimport Trades from 'components/common/Trades';\nimport Summary from 'components/common/Summary';\nimport SummaryByMonth from 'components/common/SummaryByMonth';\nimport { AddNewTradingPlan } from 'components/common/AddNewTradingPlan';\n\nconst coreComponents = [\n {\n exact: true,\n path: '/',\n component: Dashboard,\n props: {\n title: 'Dashboard',\n },\n },\n {\n exact: true,\n path: '/test-report',\n component: TestReport,\n props: {\n title: 'Test Report',\n },\n },\n {\n exact: true,\n path: '/analytics',\n component: HomePage,\n props: {\n title: 'Analytics',\n },\n },\n {\n exact: true,\n path: '/risk-management',\n props: {\n title: 'Risk Management',\n nameTable: 'rpt_rmp_stat',\n updateAfterChangedRow: true,\n expandComponent: EditRiskManagement,\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/signin',\n component: Signin,\n props: {\n title: 'Sign In',\n },\n },\n {\n exact: true,\n path: '/total-by-accounts',\n props: {\n isShowSearch: true,\n title: 'Total by Accounts',\n nameTable: 'total_by_account',\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/position-hi-low',\n props: {\n title: 'Position Hi/Low',\n nameTable: 'positions_hi_low',\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/open-positions',\n props: {\n title: 'Open positions',\n nameTable: 'open_positions',\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/accounts-hi-low',\n props: {\n title: 'Accounts Hi/Low',\n nameTable: 'accounts_hi_low',\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/total-by-symbol',\n props: {\n isShowSearch: true,\n title: 'Total by Symbol',\n nameTable: 'total_by_symbol',\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/summary-by-day',\n props: {\n title: 'Summary by Day',\n nameTable: 'total_by_day',\n expandComponent: Summary,\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/summary-by-strategy',\n props: {\n title: 'Summary by Strategy',\n nameTable: 'sum_by_strategy',\n expandComponent: Summary,\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/total-by-period',\n props: {\n title: 'Total by Period',\n nameTable: 'total_by_period',\n isMoreDates: true,\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/summary-by-month',\n props: {\n title: 'Summary by Month',\n nameTable: 'sum_by_month',\n isPinFixedHead: false,\n expandComponent: SummaryByMonth,\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/journal',\n props: {\n title: 'Journal',\n nameTable: 'journal',\n isPinFixedHead: false,\n expandComponent: Trades,\n componentForEachTable: Note,\n showComponentForEachTable: ({ title }) => title !== 'Total',\n providerPropsForComponentTable: ({ title, postForm = [] }) => ({\n value: postForm.length !== 0 && postForm[0].fields.memo.value,\n day: title.title,\n }),\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/trading-plans',\n props: {\n title: 'Trading plans',\n nameTable: 'trading_plans',\n isPinFixedHead: false,\n addNewItem: AddNewTradingPlan,\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/top-results',\n props: {\n title: 'Top results',\n nameTable: 'top_net',\n withoutAccounts: true,\n tableOptions: {\n canExportCSV: false,\n },\n expandComponent: Trades,\n },\n component: Reports,\n },\n {\n exact: true,\n path: '/admin-users',\n component: AdminUser,\n props: {\n title: 'Admin Users',\n },\n },\n {\n exact: true,\n path: '/admin-groups',\n component: AdminGroup,\n props: {\n title: 'Admin Groups',\n },\n },\n {\n exact: true,\n path: '/admin-tags',\n component: AdminTags,\n props: {\n title: 'Admin Tags',\n },\n },\n];\n\nexport default coreComponents;\n","import { arrayMove } from 'react-sortable-hoc';\n\nexport const filteredAccounts = (items, search) => {\n if (search.length < 3) {\n return items;\n }\n\n search = search.toUpperCase();\n\n return items.filter(\n (acc) =>\n acc.account.toString().toUpperCase().includes(search) ||\n acc.name.some((name) => name.toUpperCase().includes(search))\n );\n};\n\nfunction processingAccount({ item, items, selectedItems }) {\n return [\n items.filter((i) => i.id !== item.id),\n [item, ...selectedItems].filter((item) => item),\n ];\n}\n\nexport const moveAccount = ({\n items,\n search,\n oldIndex,\n newIndex,\n isSelected,\n selectedItems,\n isSelectedList,\n}) => {\n if (isSelected === isSelectedList) {\n return {\n items: !isSelected ? arrayMove(items, oldIndex, newIndex) : items,\n selectedItems: isSelected\n ? arrayMove(selectedItems, oldIndex, newIndex)\n : selectedItems,\n };\n }\n\n let newItems;\n let newSelectedItems;\n\n if (isSelected) {\n [newItems, newSelectedItems] = processingAccount({\n items,\n selectedItems,\n item: filteredAccounts(items, search)[oldIndex],\n });\n } else {\n [newSelectedItems, newItems] = processingAccount({\n items: selectedItems,\n selectedItems: items,\n item: filteredAccounts(selectedItems, search)[oldIndex],\n });\n }\n\n return {\n items: newItems,\n selectedItems: newSelectedItems,\n };\n};\n","import React from 'react';\n\nexport default (\n <svg\n viewBox=\"0 0 446 448\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g\n className=\"icon-sort\"\n transform=\"translate(0.000000, -1.000000)\"\n fillRule=\"nonzero\"\n >\n <path\n d=\"M82.78125,0.0625 C75.78044,14.46089 69.03142,29.21258 62.53125,44.3125 C56.030945,59.41274 49.420358,75.35646 42.71875,92.15625 C36.017051,108.95628 29.185149,126.87484 22.1875,145.875 C15.189801,164.87529 7.800282,185.56887 0,207.96875 L48.59375,207.96875 C50.797065,200.76661 53.23969,193.34889 55.9375,185.75 C58.635194,178.15116 61.27484,170.56767 63.875,162.96875 L144.875,162.96875 C147.47494,170.56767 150.14584,178.15116 152.84375,185.75 C155.54135,193.34889 157.98397,200.76661 160.1875,207.96875 L210.28125,207.96875 C202.48075,185.56887 195.09429,164.87529 188.09375,145.875 C181.09284,126.87484 174.22968,108.95628 167.53125,92.15625 C160.83248,75.35646 154.19455,59.41274 147.59375,44.3125 C140.99265,29.21258 134.26793,14.46089 127.46875,0.0625 L82.78125,0.0625 Z\"\n fillRule=\"nonzero\"\n />\n <path\n d=\"M104.09375,47.15625 C105.29603,50.15934 106.87599,54.2687 108.875,59.46875 C110.87378,64.66908 113.23658,70.66957 115.9375,77.46875 C118.63818,84.26819 121.46874,91.76879 124.46875,99.96875 C127.46849,108.16892 130.58287,116.77865 133.78125,125.78125 L74.6875,125.78125 C77.88566,116.77865 81.02433,108.16892 84.125,99.96875 C87.22549,91.76879 90.08731,84.26819 92.6875,77.46875 C95.28751,70.66957 97.59475,64.66908 99.59375,59.46875 C101.59254,54.2687 103.09266,50.15934 104.09375,47.15625 Z\"\n fill=\"#FFFFFF\"\n />\n <path\n className=\"arrow\"\n d=\"M322.125,78.0625 C320.16156,78.06276 318.20086,79.14884 316.8125,81 C315.42413,82.85115 314.62519,85.44458 314.625,88.0625 L314.625,274.0625 L287.34375,246.78125 C285.51036,244.94915 282.90412,243.89905 280.3125,243.9375 C277.81985,243.9765 275.35712,245.01905 273.59375,246.78125 L246.09375,274.28125 C244.29345,276.08088 243.25,278.61072 243.25,281.15625 C243.25,283.70177 244.29345,286.23161 246.09375,288.03125 L337.75,379.65625 C339.54965,381.45653 342.07948,382.5 344.625,382.5 C347.17053,382.5 349.70037,381.45653 351.5,379.65625 L443.125,288.03125 C444.92528,286.23162 446,283.70178 446,281.15625 C446,278.61073 444.92528,276.08089 443.125,274.28125 L415.625,246.78125 C413.82593,244.9856 411.32311,243.9375 408.78125,243.9375 C406.23941,243.9375 403.70533,244.9856 401.90625,246.78125 L374.625,274.0625 L374.625,88.0625 C374.6248,85.44458 373.82587,82.85115 372.4375,81 C371.04913,79.14884 369.08844,78.06276 367.125,78.0625 L322.125,78.0625 Z\"\n />\n <path d=\"M28.1875,240.03125 L28.1875,279.34375 L121.46875,279.34375 C113.66836,288.74333 105.22525,299.37954 96.125,311.28125 C87.02459,323.18323 78.0794,335.48925 69.28125,348.1875 C60.482985,360.88595 52.039878,373.46882 43.9375,385.96875 C35.83506,398.46883 28.971907,409.82625 23.375,420.03125 L23.375,447.9375 L186.875,447.9375 L186.875,408.625 L80.96875,408.625 C88.17083,396.6255 96.39262,384.04266 105.59375,370.84375 C114.7947,357.64498 124.10047,344.83689 133.5,332.4375 C142.89928,320.03833 151.9829,308.59499 160.78125,298.09375 C169.57932,287.59281 177.191,279.03557 183.59375,272.4375 L183.59375,240.03125 L28.1875,240.03125 Z\" />\n </g>\n </g>\n </svg>\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport iconSort from 'images/icon-sort';\n\nconst Filters = ({\n value,\n onChange,\n dataKey,\n onClearValue,\n isSort,\n onSort,\n}) => (\n <div className=\"c-list-sortable__filters\" data-key={dataKey}>\n <div className=\"input\">\n <input\n type=\"search\"\n value={value}\n placeholder=\"Search...\"\n className=\"form-control\"\n onChange={({ target }) => onChange(target.value, dataKey)}\n />\n <span\n onClick={() => onClearValue(dataKey)}\n className={cx(\n 'form-control-clear form-control-feedback',\n 'glyphicon glyphicon-remove',\n {\n show: value.length !== 0,\n }\n )}\n />\n </div>\n\n <span\n onClick={() => onSort(dataKey)}\n className={cx(\n 'icon-sort',\n typeof isSort !== 'undefined' && {\n sorted: isSort,\n reversed: !isSort,\n }\n )}\n >\n {iconSort}\n </span>\n </div>\n);\n\nFilters.propTypes = {\n isSort: PropTypes.bool,\n onSort: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n dataKey: PropTypes.string.isRequired,\n onClearValue: PropTypes.func.isRequired,\n};\n\nexport default Filters;\n","import React from 'react';\nimport { SortableContainer, SortableElement } from 'react-sortable-hoc';\nimport cx from 'classnames';\n\nconst SortableItem = SortableElement(({ name, account }) => (\n <li className=\"c-list-sortable__item\">\n <span>{account}</span>\n <span>{name.join(', ')}</span>\n </li>\n));\n\nconst SortableContainerList = SortableContainer(\n ({ items, isSelected = false }) => {\n const className = cx({\n 'c-list-sortable__select': !isSelected,\n 'c-list-sortable__selected': isSelected,\n });\n\n return (\n <ul className={className}>\n {items.map(({ name, account }, index) => (\n <SortableItem\n name={name}\n index={index}\n account={account}\n key={`${className}-${index}`}\n />\n ))}\n </ul>\n );\n }\n);\n\nexport default SortableContainerList;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport './Sortable.scss';\nimport { filteredAccounts, moveAccount } from 'utils/sortable';\n\nimport Filters from './Filters';\nimport SortableContainer from './SortableContainer';\n\nclass Sortable extends Component {\n parent = React.createRef();\n\n selectedBlock = React.createRef();\n\n state = {\n items: [],\n search: '',\n selectedItems: [],\n selectedSearch: '',\n };\n\n static getDerivedStateFromProps({ items, selectedItems }) {\n return {\n items,\n selectedItems,\n isSort: undefined,\n isSortSelected: undefined,\n };\n }\n\n handleSortEnd = (indexes, { target }, isSelectedList = false) => {\n const isParent = this.parent.current.contains(target);\n\n if (!isParent) {\n return;\n }\n\n const { onChange } = this.props;\n\n const { items, selectedItems } = moveAccount({\n ...indexes,\n ...this.state,\n isSelectedList,\n isSelected: this.selectedBlock.current.contains(target),\n });\n\n if (onChange) {\n onChange(items, selectedItems);\n } else {\n this.setState({\n items,\n selectedItems,\n });\n }\n };\n\n handleChangeSearch = (value, dataKey) => {\n const key = dataKey === 'items' ? 'search' : 'selectedSearch';\n this.setState({\n [key]: value,\n });\n };\n\n handleClearSearch = (dataKey) => {\n const key = dataKey === 'items' ? 'search' : 'selectedSearch';\n this.setState({\n [key]: '',\n });\n };\n\n handleClickSort = (dataKey) => {\n const key = dataKey === 'items' ? 'isSort' : 'isSortSelected';\n const { [key]: isSort, [dataKey]: items } = this.state;\n\n this.setState({\n [key]: !isSort,\n [dataKey]: items.sort((a, b) =>\n !isSort ? a.account - b.account : b.account - a.account\n ),\n });\n };\n\n // TODO: need to add enter ctrl selected more than one items\n render() {\n const { className, titleSelect, titleSelected } = this.props;\n\n const {\n items,\n isSort,\n search,\n selectedItems,\n isSortSelected,\n selectedSearch,\n } = this.state;\n\n const classNameRoot = cx('c-list-sortable', {\n [className]: !!className,\n });\n\n return (\n <div className={classNameRoot} ref={this.parent}>\n <div className=\"c-list-sortable__block\">\n <h5>{titleSelect}</h5>\n\n <Filters\n value={search}\n isSort={isSort}\n dataKey=\"items\"\n onSort={this.handleClickSort}\n onChange={this.handleChangeSearch}\n onClearValue={this.handleClearSearch}\n />\n\n <SortableContainer\n onSortEnd={this.handleSortEnd}\n helperClass=\"c-list-sortable__clicked\"\n items={filteredAccounts(items, search)}\n />\n </div>\n\n <div\n className=\"c-list-sortable__block selected\"\n ref={this.selectedBlock}\n >\n <h5>{titleSelected}</h5>\n\n <Filters\n value={selectedSearch}\n isSort={isSortSelected}\n dataKey=\"selectedItems\"\n onSort={this.handleClickSort}\n onChange={this.handleChangeSearch}\n onClearValue={this.handleClearSearch}\n />\n\n <SortableContainer\n isSelected\n helperClass=\"c-list-sortable__clicked\"\n onSortEnd={(index, e) => this.handleSortEnd(index, e, true)}\n items={filteredAccounts(selectedItems, selectedSearch)}\n />\n </div>\n </div>\n );\n }\n}\n\nconst propItem = PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.array, PropTypes.number]),\n name: PropTypes.array,\n account: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n })\n).isRequired;\n\nSortable.defaultProps = {\n className: 'col-sm-10',\n};\n\nSortable.propTypes = {\n items: propItem,\n selectedItems: propItem,\n className: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default Sortable;\n","import { push } from 'react-router-redux';\nimport request from 'utils/request';\nimport {\n LOG_OUT,\n SET_USER,\n ERROR_USER,\n ERROR_LOG_OUT,\n LOADING_LOG_OUT,\n LOADING_SIGN_IN,\n REMOVE_ERROR_USER,\n} from '../constants/user';\n\nimport { setAccounts } from './accounts';\nimport { setDictionary } from './dictionary';\nimport { setConstraintsDate } from './dates';\n\nexport const user =\n ({ email, key, redirect = '/' }) =>\n (dispatch) => {\n const error = ({ msg }) => dispatch({ type: ERROR_USER, payload: msg });\n const success = ({\n role,\n user,\n dict,\n admin,\n system,\n account,\n accounts,\n memberof,\n acc_users,\n acc_groups,\n access_token,\n manager_group,\n compare_with,\n }) => {\n dispatch({\n payload: {\n user,\n role,\n admin,\n token: access_token,\n },\n type: SET_USER,\n });\n\n accounts = accounts.map((acc) => acc.toString());\n const groups = Object.keys(acc_groups).reduce((p, n) => {\n p[n] = (acc_groups[n] || []).map((acc) => acc.toString());\n return p;\n }, {});\n\n dispatch(setConstraintsDate(system));\n dispatch(\n setAccounts({\n groups,\n accounts,\n users: acc_users,\n memberOf: memberof,\n compareWith: compare_with,\n account: account.toString(),\n managerGroup: manager_group,\n options: [...Object.keys(groups), ...accounts],\n })\n );\n dispatch(push(redirect || '/'));\n dispatch(setDictionary(dict));\n };\n\n dispatch({ type: LOADING_SIGN_IN });\n\n request({\n error,\n success,\n data: {\n key,\n email,\n },\n url: '/get/token/',\n });\n };\n\nexport const removeErrMessage = () => ({\n type: REMOVE_ERROR_USER,\n});\n\nexport const logOut = (dispatch) => {\n const error = () => dispatch({ type: ERROR_LOG_OUT });\n const success = () => {\n dispatch({ type: LOG_OUT });\n dispatch(push('/signin'));\n };\n\n dispatch({ type: LOADING_LOG_OUT });\n\n request({\n error,\n success,\n data: {},\n url: '/api/logout/',\n });\n};\n\n// TODO: need remove token if it is incorrect\n//\n// export function removeTokenFromLocal() {\n// \treturn {\n// \t\ttype: REMOVE_TOKEN_LOCAL,\n// \t}\n// }\n","import { SET_DICTIONARY } from '../constants/dictionary';\n\nexport const setDictionary = (payload) => ({\n type: SET_DICTIONARY,\n payload,\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport './ServicePlaceholder.scss';\nimport error from 'images/error.png';\n\nconst ServiceErrorPlaceholder = ({ title, description, className }) => {\n const classNameRoot = cx('c-service-placeholder c-error', {\n [className]: className,\n });\n\n return (\n <div className={classNameRoot}>\n <div className=\"content\">\n <img src={error} alt=\"error\" />\n\n <h1>{title}</h1>\n <p dangerouslySetInnerHTML={{ __html: description }} />\n </div>\n </div>\n );\n};\n\nServiceErrorPlaceholder.propTypes = {\n title: PropTypes.string,\n className: PropTypes.string,\n description: PropTypes.string,\n};\n\nServiceErrorPlaceholder.defaultProps = {\n title: 'Something wrong here...',\n description:\n 'Sorry, we are having some technical issues (as you can see) try to refresh the page, sometime works ;)',\n};\n\nexport default ServiceErrorPlaceholder;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport cx from 'classnames';\n\nimport './ServicePlaceholder.scss';\nimport noFound from 'images/not-found.png';\n\nconst ServiceNotFoundPlaceholder = ({\n title,\n description,\n token,\n className,\n}) => {\n const classNameRoot = cx('c-service-placeholder c-no-found', {\n 'no-header': !token,\n [className]: className,\n });\n\n return (\n <div className={classNameRoot}>\n <div className=\"content\">\n <img src={noFound} alt=\"no-found\" />\n\n <h1>{title}</h1>\n <p>{description}</p>\n\n {!token && (\n <Link to=\"/\" className=\"back\">\n {' '}\n → back to Dashboard\n </Link>\n )}\n </div>\n </div>\n );\n};\n\nServiceNotFoundPlaceholder.propTypes = {\n title: PropTypes.string,\n className: PropTypes.string,\n description: PropTypes.string,\n};\n\nServiceNotFoundPlaceholder.defaultProps = {\n title: 'Ooops 404!',\n description:\n 'Sorry about that, but he page you are looking for just disappear... bad magic?',\n};\n\nexport default connect(({ user }) => user)(ServiceNotFoundPlaceholder);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport './ServicePlaceholder.scss';\nimport error from 'images/forbidden.png';\n\nconst ServiceForbiddenPlaceholder = ({ title, description, className }) => {\n const classNameRoot = cx('c-service-placeholder c-error', {\n [className]: className,\n });\n\n return (\n <div className={classNameRoot}>\n <div className=\"content\">\n <img src={error} alt=\"error\" />\n\n <h1>{title}</h1>\n <p>{description}</p>\n </div>\n </div>\n );\n};\n\nServiceForbiddenPlaceholder.propTypes = {\n title: PropTypes.string,\n className: PropTypes.string,\n description: PropTypes.string,\n};\n\nServiceForbiddenPlaceholder.defaultProps = {\n title: 'We are sorry...',\n description:\n 'The page you are trying to access has restricted access.\\nPlease refer to your system administrator',\n};\n\nexport default ServiceForbiddenPlaceholder;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './ServicePlaceholder.scss';\nimport noContent from 'images/no-content.png';\n\nconst ServiceNoContentPlaceholder = ({ title, description, onRepeat }) => (\n <div className=\"c-service-placeholder c-no-content\">\n <div className=\"content\">\n {onRepeat && <button onClick={onRepeat} className=\"repeat-button\" />}\n\n <img src={noContent} alt=\"no-content\" />\n\n <h1>{title}</h1>\n <p>{description}</p>\n </div>\n </div>\n);\n\nServiceNoContentPlaceholder.propTypes = {\n title: PropTypes.string,\n onRepeat: PropTypes.func,\n description: PropTypes.string,\n};\n\nServiceNoContentPlaceholder.defaultProps = {\n title: 'Sad no result!',\n description:\n 'We cannot find some content you are searching for, maybe you need to change something?',\n};\n\nexport default ServiceNoContentPlaceholder;\n","import React, { memo } from 'react';\n\nimport './ServicePlaceholder.scss';\nimport unavailableImg from 'images/unavailable.gif';\n\nconst isShowURI = process.env.NODE_ENV === 'development';\n\nconst ServiceUnavailablePlaceholder = ({ title, status, msg, url }) => (\n <div className=\"c-service-placeholder c-service-unavailable-placeholder\">\n <div className=\"content\">\n <img src={unavailableImg} alt=\"unavailable\" />\n\n <h1>{title}</h1>\n <h2>\n {status}\n {isShowURI && <span> -{url}</span>}\n </h2>\n <p>{msg}</p>\n </div>\n </div>\n);\n\nServiceUnavailablePlaceholder.defaultProps = {\n title: 'Service Unavailable',\n};\n\nexport default memo(ServiceUnavailablePlaceholder);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"minusMoney\":\"Field_minusMoney__3UTb3\",\"string\":\"Field_string__3ij-C\",\"datetime\":\"Field_datetime__2gT62\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"search\":\"Search_search__3Q-BZ\",\"icon\":\"Search_icon__2He--\",\"input\":\"Search_input__3iTQH\",\"cross\":\"Search_cross__2VZQV\",\"fadeIn\":\"Search_fadeIn__2Ne5Y\",\"fadeOutIn\":\"Search_fadeOutIn__3AWgZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"body\":\"Body_body__3Lt37\",\"fixedHeader\":\"Body_fixedHeader__3_j6C\",\"expandedRow\":\"Body_expandedRow__W9MEh\",\"loading\":\"Body_loading__1omNC\",\"noContent\":\"Body_noContent__8b_Qt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"headerContainer\":\"Header_headerContainer__1EJYi\",\"header\":\"Header_header__1Uajr\",\"allWidth\":\"Header_allWidth__2s1U7\",\"children\":\"Header_children__1D5pJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"hideColumns\":\"HideColumns_hideColumns__2zCQ5\",\"columns\":\"HideColumns_columns__3NZs1\",\"column\":\"HideColumns_column__M8s-S\",\"cross\":\"HideColumns_cross__2u8DQ\",\"fadeIn\":\"HideColumns_fadeIn__3kyWg\",\"fadeOutIn\":\"HideColumns_fadeOutIn__2drrq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"showColumns\":\"ShowColumns_showColumns__1csHK\",\"columns\":\"ShowColumns_columns__1zWPd\",\"column\":\"ShowColumns_column__zxnPk\",\"active\":\"ShowColumns_active__WFZs8\"};","import React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport Styles from './Loading.module.scss';\n\nconst Loading = ({ isShow }) => {\n if (!isShow) return null;\n return (\n <div className={cx(Styles.spinner, 'c-loading')}>\n <span />\n <span />\n <span />\n </div>\n );\n};\n\nLoading.propTypes = {\n isShow: PropTypes.bool,\n};\n\nexport default Loading;\n","export const GROUPS = 'GROUPS';\nexport const ACCOUNT = 'ACCOUNT';\nexport const OPTIONS = 'OPTIONS';\nexport const ACCOUNTS = 'ACCOUNTS';\nexport const MEMBER_OF = 'MEMBER_OF';\nexport const COMPARE_WITH = 'COMPARE_WITH';\n\nexport const REMOVE_GROUP = 'REMOVE_GROUP';\nexport const CHANGE_GROUP = 'CHANGE_GROUP';\nexport const CHANGE_COMPARE_WITH = 'CHANGE_COMPARE_WITH';\n\nexport const SET_ACCOUNTS = 'SET_ACCOUNTS';\nexport const USER_ACCOUNTS = 'USER_ACCOUNTS';\nexport const SAVE_ACCOUNTS = 'SAVE_ACCOUNTS';\nexport const MANAGER_GROUP = 'MANAGER_GROUP';\nexport const ERROR_ACCOUNTS = 'ERROR_ACCOUNTS';\nexport const LOADING_ACCOUNTS = 'LOADING_ACCOUNTS';\nexport const CHANGE_STATE_ACCOUNT = 'CHANGE_STATE_ACCOUNT';\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"content\":\"Popover_content__37uVX\",\"fadeInUp\":\"Popover_fadeInUp__11C9i\"};","import React, { Component } from 'react';\nimport { Alert as AlertBox } from 'react-bootstrap';\nimport PropTypes from 'prop-types';\n\nimport './Alert.scss';\n\nclass Alert extends Component {\n state = {\n isClose: false,\n };\n\n shouldComponentUpdate({ message }, nextState) {\n if (message !== this.props.message) {\n nextState.isClose = false;\n }\n return true;\n }\n\n handleClose = () => {\n const { close } = this.props;\n\n if (close) {\n close();\n }\n\n this.setState({\n isClose: true,\n });\n };\n\n render() {\n const { message, bsStyle, isShowCloseBtn } = this.props;\n const { isClose } = this.state;\n\n if (!message || isClose) return null;\n\n return (\n <AlertBox\n bsStyle={bsStyle}\n className=\"c-alert\"\n onDismiss={isShowCloseBtn ? this.handleClose : undefined}\n >\n {message}\n </AlertBox>\n );\n }\n}\n\nAlert.defaultProps = {\n bsStyle: 'info',\n isShowCloseBtn: true,\n};\n\nAlert.propTypes = {\n close: PropTypes.func,\n bsStyle: PropTypes.string,\n isShowCloseBtn: PropTypes.bool,\n message: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n};\n\nexport default Alert;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\nimport './Input.scss';\n\nconst Input = ({\n type,\n value,\n title,\n dataKey,\n colBody,\n colTitle,\n disabled,\n className,\n isValidate,\n placeholder,\n handleOnChange,\n component: Component,\n}) => {\n const classNameRoot = cx(\n 'c-input form-group',\n typeof className === 'boolean' && {\n 'has-error': !className,\n 'has-success': className,\n }\n );\n\n const classNameTitle = cx('control-label', {\n [colTitle]: colTitle,\n });\n\n const classNameBody = cx({\n [colBody]: colBody,\n });\n\n const id = `c-input-${dataKey}`;\n\n return (\n <div className={classNameRoot}>\n <label className={classNameTitle} htmlFor={id}>\n <h5>{title}</h5>\n </label>\n\n <div className={classNameBody}>\n {Component || (\n <input\n id={id}\n type={type}\n value={value}\n data-key={dataKey}\n disabled={disabled}\n className=\"form-control\"\n onChange={handleOnChange}\n placeholder={placeholder}\n data-validate={isValidate}\n />\n )}\n </div>\n </div>\n );\n};\n\nInput.propTypes = {\n type: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n colBody: PropTypes.string,\n dataKey: PropTypes.string,\n colTitle: PropTypes.string,\n isValidate: PropTypes.bool,\n component: PropTypes.element,\n placeholder: PropTypes.string,\n handleOnChange: PropTypes.func,\n};\n\nInput.defaultProps = {\n type: 'text',\n className: null,\n placeholder: '',\n disabled: false,\n isValidate: true,\n colTitle: 'col-sm-3',\n colBody: 'col-sm-9 col-md-6',\n};\n\nexport default Input;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"c-loading\":\"Spinner_c-loading__2-2yK\",\"dot\":\"Spinner_dot__1y1kf\",\"moveit\":\"Spinner_moveit__E2fQB\",\"spinner\":\"Spinner_spinner__1Nh-g\",\"ballScaleRippleMultiple\":\"Spinner_ballScaleRippleMultiple__2l8uC\",\"roller\":\"Spinner_roller__2ELc6\",\"lds-roller\":\"Spinner_lds-roller__1kfMj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"cell\":\"Cell_cell__1CwIw\",\"field\":\"Cell_field__XLSXK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"button\":\"PlusButton_button__Z9hKn\",\"text\":\"PlusButton_text__co3dw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"doughnut\":\"DoughnutChart_doughnut__1fB1h\",\"total\":\"DoughnutChart_total__35cgg\",\"number\":\"DoughnutChart_number__28l_W\",\"container\":\"DoughnutChart_container__hdPvP\"};","export const USER = 'USER';\nexport const TOKEN = 'TOKEN';\nexport const ROLE = 'ROLE';\n\nexport const SET_USER = 'SET_USER';\nexport const ERROR_USER = 'ERROR_USER';\nexport const LOADING_SIGN_IN = 'LOADING_SIGN_IN';\nexport const REMOVE_ERROR_USER = 'REMOVE_ERROR_USER';\n\nexport const LOG_OUT = 'LOG_OUT';\nexport const ERROR_LOG_OUT = 'ERROR_LOG_OUT';\nexport const LOADING_LOG_OUT = 'LOADING_LOG_OUT';\n","export const SAVE_DATE = 'SAVE_DATE';\nexport const ERROR_DATE = 'ERROR_DATE';\nexport const FOCUS_DATE = 'FOCUS_DATE';\nexport const CLEAR_DATE = 'CLEAR_DATE';\nexport const CHANGE_DATE = 'CHANGE_DATE';\nexport const REMOVE_DATE = 'REMOVE_DATE';\nexport const ADD_NEW_DATE = 'ADD_NEW_DATE';\nexport const LOADING_DATE = 'LOADING_DATE';\nexport const SELECTED_DATE = 'SELECTED_DATE';\nexport const CONSTRAINTS_DATE = 'CONSTRAINTS_DATE';\nexport const REMOVE_ERROR_DATE = 'REMOVE_ERROR_DATE';\nexport const SET_CONSTRAINTS_DATE = 'SET_CONSTRAINTS_DATE';\n","import moment from 'moment';\nimport routes from 'Routes/routes';\nimport { isSameDay } from 'react-dates';\n\nexport const getPreviousWorkday = (constraintsDate) => {\n const workday = moment();\n const day = workday.day();\n let diff = 1;\n\n if (day === 0 || day === 1) {\n diff = day + 2;\n }\n\n const result = workday.subtract(diff, 'days');\n\n const { pathname } = window.location;\n const route = routes.find((route) => route.path === pathname);\n\n if (!route) {\n return result;\n }\n\n const date = findWorkDay(\n getDayBlocked(constraintsDate)(route.props && route.props.nameTable)\n );\n\n return date || result;\n};\n\nexport const getNextWorkDay = (date, blockedDays) => {\n for (let i = 0; i < 365; i++) {\n const day = moment(date).add(i, 'days');\n if (!blockedDays(day)) {\n return day;\n }\n }\n};\n\nexport const findWorkDay = (blockedDays) => {\n for (let i = 0; i < 365; i++) {\n const date = moment().add(-1 * i, 'days');\n\n if (!blockedDays(date)) {\n return date.utcOffset('+00:00', true);\n }\n }\n};\n\nconst getDates = (dates) =>\n dates.reduce(\n (p, { startDate, endDate }) => {\n p.endDate.push(moment(endDate).utc().endOf('day').unix());\n p.startDate.push(moment(startDate).utc().startOf('day').unix());\n return p;\n },\n { startDate: [], endDate: [] }\n );\n\nexport const getDatesWithUnixTime = (dates, moreDates) => {\n switch (moreDates) {\n case 'range':\n return getDates([dates[0]]);\n\n case 'ranges':\n return getDates(dates);\n\n default:\n return getDates([dates[0]]);\n }\n};\n\nexport const getDatesFromPath = () => {\n const result = [];\n const { search } = window.location;\n\n if (!search.startsWith('?')) {\n return result;\n }\n\n const endDate = new URLSearchParams(search).get('endDate');\n const startDate = new URLSearchParams(search).get('startDate');\n\n if (startDate) {\n startDate.split(',').forEach((day) => {\n result.push({\n endDate: null,\n focusedInput: null,\n startDate: moment.utc(Number(day), 'X'),\n });\n });\n }\n\n if (endDate) {\n endDate.split(',').forEach((day, index) => {\n if (index < result.length) {\n result[index].endDate = moment.utc(Number(day), 'X');\n } else {\n result.push({\n startDate: null,\n focusedInput: null,\n endDate: moment.utc(Number(day), 'X'),\n });\n }\n });\n }\n\n return result;\n};\n\nexport const getDatesFromLocalStorage = (key) => {\n const result = [];\n const datesFromLocal = localStorage.getItem(key);\n\n if (!datesFromLocal) {\n return result;\n }\n\n try {\n const dates = JSON.parse(datesFromLocal);\n const endDate = dates.map((d) => d.endDate);\n const startDate = dates.map((d) => d.startDate);\n\n if (startDate) {\n startDate.forEach((day) => {\n result.push({\n endDate: null,\n focusedInput: null,\n startDate: moment.utc(Number(day), 'X'),\n });\n });\n }\n\n if (endDate) {\n endDate.forEach((day, index) => {\n if (index < result.length) {\n result[index].endDate = moment.utc(Number(day), 'X');\n } else {\n result.push({\n startDate: null,\n focusedInput: null,\n endDate: moment.utc(Number(day), 'X'),\n });\n }\n });\n }\n } catch (e) {\n console.log(e);\n }\n\n return result;\n};\n\nexport const getDatesPath = (selected) => {\n let path = '';\n const dates = {};\n\n if (window.location.pathname !== '/total-by-period') {\n dates.endDate = [selected[0].endDate.unix()];\n dates.startDate = [selected[0].startDate.unix()];\n } else {\n dates.endDate = selected.map((date) => date.endDate.unix());\n dates.startDate = selected.map((date) => date.startDate.unix());\n }\n path += `&endDate=${dates.endDate.join(',')}`;\n path += `&startDate=${dates.startDate.join(',')}`;\n\n return path;\n};\n\nexport const setDatesToPath = (selected) => {\n const path = getDatesPath(selected);\n const { href } = window.location;\n\n window.history.replaceState(\n null,\n '',\n `${href.includes('?') ? href + path : `${href}?${path.substring(1)}`}`\n );\n};\n\nconst maxDayByPage = {\n open_positions: ({ maxDatePosition }) => moment.unix(maxDatePosition),\n accounts_hi_low: () => moment(),\n positions_hi_low: () => moment(),\n top_net: () => moment().subtract(1, 'days'),\n};\n\nconst isHoliday = ({ holidays, date }) =>\n Array.isArray(holidays) &&\n holidays.some((holiday) => isSameDay(holiday, date));\nexport const getDayHighlighted = (holidays) => (date) =>\n isHoliday({ holidays, date });\n\nexport const getDayBlocked =\n ({ holidays, maxDate, minDate, ...others }) =>\n (page) =>\n (date) => {\n const dayWeek = date.day();\n const dayMonth = date.date();\n const maxMomentTime =\n (maxDayByPage[page] && maxDayByPage[page](others)) || moment(maxDate);\n\n const lastMonthDay = moment(date).endOf('month').date();\n const isOutMaxDate = maxMomentTime.startOf('day').diff(date, 'days') < 0;\n const isOutMinDate =\n moment.unix(minDate).startOf(dayWeek).diff(date, 'days') >= 0;\n\n if (\n (dayMonth === 1 || dayMonth === lastMonthDay) &&\n !(isOutMinDate || isOutMaxDate)\n ) {\n return false;\n }\n\n return (\n dayWeek === 0 || // Monday\n dayWeek === 6 || // Sunday\n isOutMinDate ||\n isOutMaxDate ||\n isHoliday({ holidays, date }) // Holidays from backend\n );\n };\n\nexport const compareDates = (firstDate, secondDate) =>\n firstDate.year() === secondDate.year() &&\n firstDate.month() === secondDate.month() &&\n firstDate.date() === secondDate.date();\n","const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nclass Validate {\n static email(val) {\n return re.test(val);\n }\n\n static password(pass, repeatPass) {\n return [\n {\n ok: /[a-z]/.test(pass),\n message: 'Password should contain a small (lowercase) letter',\n },\n {\n ok: /[A-Z]/.test(pass),\n message: 'Password should contain a capital (uppercase) letter',\n },\n {\n ok: /[0-9]/.test(pass),\n message: 'Password should be alphanumeric',\n },\n {\n ok: /[!@#$%^&*=]/.test(pass),\n message:\n 'Password must contain a special character (!, @, #, $, %, ^, &, *, =)',\n },\n {\n ok: pass.length > 7,\n message: 'Password length must be greater than 8 characters',\n },\n {\n ok: pass.length > 7 && pass === repeatPass,\n message: 'Passwords match',\n },\n ];\n }\n\n static repeatPassword(val, pass) {\n return val === pass;\n }\n\n static name(val) {\n return val.length > 2;\n }\n\n static username(val) {\n return val.length > 2;\n }\n\n static account(val) {\n return val.length === 0 || (!isNaN(Number(val)) && val.length > 2);\n }\n\n static displayName(val) {\n return val.length > 2;\n }\n\n static memberOf(val) {\n return val.length > 2;\n }\n}\n\nexport default Validate;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"c-loading\":\"Loading_c-loading__2LRbF\",\"dot\":\"Loading_dot__2T0vQ\",\"moveit\":\"Loading_moveit__12ffo\",\"spinner\":\"Loading_spinner__cJ2x9\",\"ballScaleRippleMultiple\":\"Loading_ballScaleRippleMultiple__18Cm0\"};","module.exports = __webpack_public_path__ + \"static/media/error.a8016321.png\";","import { useMemo } from 'react';\n\nimport applyCaseMiddleware from 'axios-case-converter';\nimport axiosInstance, { AxiosPromise, AxiosRequestConfig } from 'axios';\nimport {\n Options,\n makeUseAxios,\n ResponseValues,\n RefetchOptions,\n} from 'axios-hooks';\n\nconst { REACT_APP_API_ENDPOINT } = process.env;\n\nexport const axios = applyCaseMiddleware(\n axiosInstance.create({\n timeout: 60000,\n baseURL: REACT_APP_API_ENDPOINT,\n }),\n {\n preservedKeys: (input: string) =>\n input.includes('-') || input.includes(' '),\n caseFunctions: {\n // overrides change-case to only replace words like `one_two`\n camel: (input: string) =>\n input.replace(/([_][a-z])/gi, ($1) =>\n $1.toUpperCase().replace('_', '')\n ),\n },\n }\n);\n\naxios.interceptors.response.use((response) => {\n if (response.status === 204) {\n return {\n ...response,\n data: undefined,\n };\n }\n\n return response;\n});\n\nexport const useAxiosDefault = makeUseAxios({\n axios,\n cache: false,\n});\n\n// recall requests when changed language\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useAxios = <T = any, TError = any>(\n config: AxiosRequestConfig | string,\n options?: Options & {\n disablePreservedKeys?: boolean;\n forbidRepeatingRequests?: boolean;\n }\n): [\n ResponseValues<T, TError>,\n (config?: AxiosRequestConfig, options?: RefetchOptions) => AxiosPromise<T>\n] => {\n const { forbidRepeatingRequests, disablePreservedKeys, ...otherOptions } =\n options || {};\n let newOptions = config;\n\n const url = useMemo(\n () => (typeof config === 'string' ? config : config.url),\n [config]\n );\n\n if (disablePreservedKeys) {\n if (typeof newOptions === 'object') {\n newOptions.transformResponse = axiosInstance.defaults.transformResponse;\n } else {\n newOptions = {\n url,\n transformResponse: axiosInstance.defaults.transformResponse,\n };\n }\n }\n\n const [data, execute] = useAxiosDefault<T>(newOptions, otherOptions);\n\n return [data, execute];\n};\n","module.exports = __webpack_public_path__ + \"static/media/not-found.32c47ab2.png\";","module.exports = __webpack_public_path__ + \"static/media/forbidden.5f69888b.png\";","module.exports = __webpack_public_path__ + \"static/media/no-content.53a9e6ab.png\";","module.exports = __webpack_public_path__ + \"static/media/unavailable.eee5c618.gif\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"AddNewTradingPlan_button__2PqHC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"slider\":\"Slider_slider__3kVKd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"pictures\":\"Photos_pictures__1Fuzw\",\"hasPhotos\":\"Photos_hasPhotos__1zgCz\",\"images\":\"Photos_images__Z1OOL\",\"button\":\"Photos_button__Z96Pw\",\"uploadIcon\":\"Photos_uploadIcon__2ZJVy\",\"title\":\"Photos_title__3-gcs\",\"image\":\"Photos_image__11gvb\",\"remove\":\"Photos_remove__1EkRz\",\"isUploading\":\"Photos_isUploading__30qQQ\",\"description\":\"Photos_description__3dYEA\",\"input\":\"Photos_input__2L6Ko\",\"slider\":\"Photos_slider__3nVpc\",\"modal\":\"Photos_modal__389TN\",\"closeModal\":\"Photos_closeModal__3Xi3V\",\"fadeIn\":\"Photos_fadeIn__2gV2X\",\"fadeOutIn\":\"Photos_fadeOutIn__UYRHj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"pictures\":\"Additional_pictures__58t1N\",\"hasPhotos\":\"Additional_hasPhotos__20k7E\",\"images\":\"Additional_images__3P0DO\",\"button\":\"Additional_button__3Gn17\",\"uploadIcon\":\"Additional_uploadIcon__2yvbR\",\"title\":\"Additional_title__3diEl\",\"image\":\"Additional_image__3i3j1\",\"isUploading\":\"Additional_isUploading__1GV9l\",\"remove\":\"Additional_remove__1qMB1\",\"description\":\"Additional_description__mkOS7\",\"input\":\"Additional_input__1CMbW\",\"slider\":\"Additional_slider__2RKa2\",\"fadeIn\":\"Additional_fadeIn__3IcBi\",\"fadeOutIn\":\"Additional_fadeOutIn__3Hwrk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"Title_title__22gC1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"Actions_actions__X_VQO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"#cb80fc\",\"orange\":\"#fdc02f\",\"shape\":\"ActiveShape_shape__3hASp\",\"tooltip\":\"ActiveShape_tooltip__1BJD9\"};","// @ts-ignore\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./configureStore.prod');\n} else {\n module.exports = require('./configureStore.dev');\n}\n","const config = {\n localServer: 'http://localhost:3000',\n statusServer: {\n 401: '/signin',\n },\n\n /**\n * Time zone for date, More: https://www.timeanddate.com/time/zones/est\n * */\n timeZone: 'America/New_York',\n dateFormat: 'MM/DD/YYYY',\n\n /**\n * Key for API from https://www.alphavantage.co/\n * */\n keyMSFT: 'ZUVXVIRDMBNT6JY6',\n\n substitutes: {\n sum_volume: 'Проторговано акций',\n sum_pnl: 'Результат без комиссии (Gross)',\n trade_count: 'Всего сделок',\n plus_trade_count: {\n title: 'Прибыльных сделок',\n value: (s) => s.short_plus_count + s.long_plus_count,\n },\n minus_trade_count: {\n title: 'Убыточных сделок',\n value: (s) => s.short_minus_count + s.long_minus_count,\n },\n short_trade: {\n title: 'SHORT-сделок',\n value: (s) => s.short_plus_count + s.long_plus_count,\n },\n short_plus_count: 'Прибыльных SHORT-сделок',\n long_trade: {\n title: 'LONG-сделок',\n value: (s) => s.long_plus_count + s.long_minus_count,\n },\n long_plus_count: 'Прибыльных LONG-сделок',\n avg_plus: 'Средняя прибыльная сделка',\n avg_minus: 'Средняя убыточная сделка',\n max_pnl: 'Максимальная прибыльная сделка',\n min_pnl: 'Максимальная убыточная сделка',\n sum_pnl_plus: 'Сумма прибыльных сделок',\n sum_pnl_minus: 'Сумма убыточных сделок',\n len_plus: 'Максимальная серия прибыльных сделок',\n len_minus: 'Максимальная серия убыточных сделок',\n max_pnl_chain: 'Максимальная прибыль в серии сделок',\n min_pnl_chain: 'Максимальный убыток в серии сделок',\n day_plus: 'Прибыльных дней',\n day_minus: 'Убыточных дней',\n sum_days: {\n title: 'Всего дней',\n value: (s) => s.day_plus + s.day_minus,\n },\n avg_time_plus: 'Среднее время нахождения в прибыльных сделках',\n avg_time_minus: 'Среднее время нахождения в убыточных сделках',\n\n short_minus_count: 'Убыточных SHORT-сделок',\n long_minus_count: 'Убыточных LONG-сделок',\n sum_plus: '',\n sum_minus: '',\n qnt_plus: '',\n qnt_minus: '',\n },\n pieColors: {\n // for strategies\n Day: '#67c2dc',\n MOC: '#fdc02f',\n OPG: '#546c78',\n OPGtoDAY: '#52bc77',\n Overnight: '#1B5E20',\n Print: '#f66d6e',\n AfterMarket: '#757575',\n OPT: '#673AB7',\n\n // for times\n '8:30 - 9:30': '#2196F3',\n '9:30 - 9:50': '#67c2dc',\n '9:50 - 10:10': '#fdc02f',\n '10:10 - 11:15': '#546c78',\n '11:15 - 13:30': '#52bc77',\n '13:30 - 15:30': '#1B5E20',\n '15:30 - 16:00': '#673AB7',\n 'after 16:00': '#009688',\n 'before 8:30': '#CDDC39',\n other: '#f66d6e',\n },\n};\n\nconst configProd = {\n apiDomain:\n typeof window !== 'undefined'\n ? window.location.origin\n : 'https://ta.lexxinfo.com', //'http://takion.irongenius.com'\n};\n\n// const configDev = {\n// \tapiDomain: 'https://ta.lexxinfo.com',\n// };\n\nObject.assign(config, configProd);\n\nexport default config;\n","export const SET_WORKAREA = 'SET_WORKAREA';\nexport const SET_DATA_USERS = 'SET_DATA_USERS';\nexport const ERROR_WORKAREA = 'ERROR_WORKAREA';\nexport const SET_DATA_GROUPS = 'SET_DATA_GROUPS';\nexport const LOADING_WORKAREA = 'LOADING_WORKAREA';\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"#f66d6e\",\"green\":\"#4caf50\",\"blue\":\"#2196f3\",\"purple\":\"Table_purple__2vzGM\",\"orange\":\"Table_orange___KdYb\",\"container\":\"Table_container__2uRPB\",\"pin\":\"Table_pin__3UaI2\",\"active\":\"Table_active__3zoX7\",\"table\":\"Table_table__2sgdY\",\"fixed\":\"Table_fixed__2xQW0\",\"additional\":\"Table_additional__2vDJ0\",\"wrapper\":\"Table_wrapper__3R7P5\",\"tableContainer\":\"Table_tableContainer__3faLi\",\"total\":\"Table_total__3wgvX\",\"week-totals\":\"Table_week-totals__oLNjP\",\"allWidth\":\"Table_allWidth__36Lpa\",\"overflow\":\"Table_overflow__8Bd7H\",\"header\":\"Table_header__EeURR\"};"],"sourceRoot":""}