{"version":3,"sources":["components/grid-container/grid-actionbar.js","components/grid-container/popover-action.js","components/grid-container/head-click.js","components/grid-container/grid-container.js","components/libs/dgn-core/index.js","components/filter/filter.js","components/libs/dgn-core/link-products/index.js","components/header/profile.js","components/grid-container/paging.js","components/header/push-notification.js","components/libs/history.js","components/libs/org-chart/orgchart-webcomponents.js","components/header/header.js","components/grid-container/template/dropdown-toolbar.js","components/filter/search.js"],"names":["GridActionBar","_React$Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","resizeWindow","actionbar","Config","isMobile","classList","remove","closest","width","offsetWidth","grid","container","contains","td","colIndex","Number","getAttribute","style","minWidth","maxWidth","add","containerHeader","querySelectorAll","length","forEach","cont","table","querySelector","height","setTimeout","col","display","paddingTop","paddingBottom","_createClass","key","value","_this2","nextSibling","borderLeft","t","window","addEventListener","this","removeEventListener","_this3","_this$props","classes","className","children","_className","React","createElement","ref","root","Component","compose","withStyles","alignItems","justifyContent","PopoverAction","memo","popoverProps","direction","position","visible","target","reference","onHiding","onHidden","onClose","Popover","Object","assign","anchor","open","e","HeadClick","getWorkingDay","field","lField","split","onClick","isExtend","dataHeaderCell","selectedRange","callbackAfterCopy","conditionCopy","isGroup","isCopyAll","isAllData","onUpdate","allowClick","column","component","keys","_","saveEditData","getDataSource","dataSource","isLoading","option","items","map","val","reduce","array","data","concat","dataField","workingDay","_isUpdated","rowIndx","startRowIndex","colIndx","startColumnIndex","vCol","getVisibleColumns","customDataCopy","dataCopy","cellValue","rowIndex","formatText","dataType","format","formatDate","msg","lang","popup","show","i","condition","IsUpdated","reload","allowSorting","state","_this$props2","caption","color","bgColor","_style","backgroundColor","title","divParent","_objectSpread","defaultProps","isExtensible","cursor","whiteSpace","stylePopup","fontSize","fontWeight","GridContainer","forwardRef","_props$isPage","keyExpr","totalItems","filterData","buttonCRM","selectedRowKey","typeShort","wordWrapEnabled","editing","columnResizingMode","filterRow","columnAutoWidth","allowSearch","widthFull","disabled","typePaging","isPer","allowAdding","showSendMail","id","valueSearch","paging","selection","showBorders","showColumnHeaders","showColumnLines","showRowLines","scrolling","hoverStateEnabled","loading","allowColumnResizing","pagerFullScreen","pager","elementAttr","allowCellSelection","filterValue","filterPanel","filterBuilder","filterBuilderPopup","disabledCellSelection","sorting","isOrderAPI","rowAlternationEnabled","grouping","focusStateEnabled","focusedRowEnabled","allowColumnReordering","defaultFocusedRowIndex","keyboardNavigation","customizeColumns","pagingHideMode","resetPageIndexWhenDataChanged","gridProps","pagingProps","onFilter","onSearch","onAddNew","onSendMail","onChangePage","onChangePerPage","onFilterChanged","loadMore","onRowInserted","onRowUpdated","onRowRemoved","onRowUpdating","onEditingStart","onInitNewRow","onRowRemoving","onEditorPrepared","onEditorPreparing","onContentReady","onSelectionChanged","onRowPrepared","onFocusedCellChanging","onKeyDown","onInitialized","onCellSelectionChanged","onRowValidating","onFocusedCellChanged","onRowInserting","onContextMenuPreparing","onRowClick","onOrderChanged","onCellPrepared","onCellHoverChanged","onChangingPage","onChangingPerPage","onFocusedRowChanged","onFocusedRowChanging","prevDataSource","defaultValue","useRef","useEffect","current","usePrevious","listPerPage","_useState","useState","isPage","_useState2","_slicedToArray","currentPage","setCurrentPage","_useState3","itemPerPage","_useState4","setItemPerPage","_useState5","_useState6","setHeight","isSubmit","isFiltered","filterGrid","dataGrid","isSelectionStopped","fieldSort","typeSort","pagingRef","isChangePageIndex","cellFocused","pageSize","useMemo","_typePaging","_sorting","mode","allowCustomCellHoverChanged","foreachRange","useCallback","cb","minRowIndex","Math","min","endRowIndex","maxRowIndex","max","minColumnIndex","endColumnIndex","maxColumnIndex","columnIndex","showSelection","element","cell","getCellElement","onFilterGrid","filter","getCombinedFilter","letFilter","listFilter","eventFilter","Array","isArray","useImperativeHandle","_itemPerPage","getRefDataGrid","getRefPaging","skipPerPage","instance","pageIndex","updateTotal","_total","totalCount","setTotalItems","setOrderChanged","_typeSort$current","cellElement","rowType","_e$component","indicators","getElementsByClassName","_step","_iterator","_createForOfIteratorHelper","s","n","done","err","f","innerHTML","onScroll","scrollTop","scrollHeight","clientHeight","TitleGrid","label","GridToolbar","text","GridFilterBar","LoadPanel","my","of","showIndicator","shading","showPane","DataGrid","defaultFilterValue","noDataText","repaintChangesOnly","highlightChanges","scrollByContent","scrollByThumb","onOptionChanged","_onOptionChanged","name","fullName","endsWith","matchs","match","toUpperCase","parentType","placeholder","editorName","filterPlaceholder","editorOptions","d","normalize","onValueChanged","evt","_evt$event","event","_ref2","focus","newRowIndex","newColumnIndex","isHighlighted","buttons","undefined","_step2","columns","dateColumns","_iterator2","columnOption","_step3","_iterator3","onCellClick","onCellDblClick","onDbCellClick","onRowDblClick","onDbRowClick","selectedRowKeys","texts","confirmDeleteMessage","FilterRow","FilterBuilder","FilterPanel","clearFilter","FilterBuilderPopup","Grouping","Sorting","Selection","KeyboardNavigation","editOnKeyPress","enterKeyDirection","DxPaging","defaultPageSize","enabled","defaultPageIndex","Pager","showInfo","showNavigationButtons","showPageSizeSelector","Paging","itemsPerPage","hideWithPage","page","per","PagingSelector","_Component","apply","arguments","_regeneratorRuntime","exports","Op","prototype","hasOwn","hasOwnProperty","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","reject","invoke","record","result","__await","then","unwrapped","error","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","CORE","host","token","headers","setHeaders","header","getHeaders","showError","getProducts","_ref","_asyncToGenerator","_callee2","config","url","params","options","_context2","UserID","profile","CompanyCode","env","companyCode","body","JSON","stringify","fetch","_callee","resp","_context","ok","json","apps","code","message","t0","_x3","_x","_x2","Filter","onTextChanged","_e$event","_e$event$target","_e$target","setState","_onOpened","onOpened","onOpenLoaded","isLoaded","opened","_onClosed","onClosed","shrink","prevProps","prevState","snapshot","showHeader","filters","setFilter","render","_this$state","margin","stylingMode","showClearButton","acceptCustomValue","openOnFieldClick","showDropDownButton","InputLabelProps","dropdownProps","renderFilter","isUseDDCore","_showDropDownButton","variant","_shrink","Fragment","FormControl","rootMobile","fullWidth","InputLabel","marginLeft","padding","DropDownBox","activeStateEnabled","deferRendering","syncTreeViewSelection","onFocusIn","onFocusOut","onKeyUp","location","icon","contentRender","minHeight","DropDownBoxCore","openOnClickAt","viewType","dropdownCore","inputStyle","border","inputProps","borderRadius","borderTop","borderRight","top","bottom","left","right","LinkProducts","onToggleMenu","anchorEl","listProducts","timer","clearTimeout","getLink","item","indexOf","substring","link","paramLang","language","includes","onItemLink","_listProducts","pro","_pro$appID","_Config$env","appID","productID","ButtonIcon","anchorOrigin","vertical","horizontal","transformOrigin","PaperProps","List","disablePadding","ListItem","button","aria-labelledby","ListItemIcon","Image","src","Link","to","onlyActiveOnIndex","Profile","onLink","replace","logout","browserHistory","pathname","getRootPath","isInProfile","document","click","toogleProfile","isClose","openChildren","_defineProperty","currentTarget","onChangeTheme","theme","MainColor","mainActions","changeTheme","onChangePassword","openChangePassword","onSetting","openSetting","themes","salesURL","getUserPicture","URL","require","userName","UserNameU","userDutyName","UserDutyNameU","W09F2003","W09F2230","square","alt","objectFit","ItemLink","img","subheader","Typography","ChevronLeftIcon","InlineSVG","ListSubheader","disableGutters","Divider","selected","dense","ListItemAvatar","textAlign","IconPopup","ListItemText","disableTypography","marginTop","ChevronRightIcon","marginRight","_React$Component2","_super2","_React$Component3","_super3","connect","main","dispatch","bindActionCreators","disableNext","disableLast","onTypePaging","timeout","lastPage","getLastPage","parseInt","disableFirst","disablePrev","nextProps","nextState","_initCurrentPage","ceil","_this$state2","_Config$color","_Config$color2","_Config$color3","_Config$color4","_this4","_this$state3","refs","Button","ArrowDoubleLeft","viewBox","ArrowLeft","TextField","String","onChange","ArrowRight","ArrowDoubleRight","Select","native","o","fbInitializeApp","parse","getSetting","firebase","initializeApp","analytics","test","console","stack","fbGetToken","vapidKey","messaging","getToken","log","fbRequestPermission","swUrl","isSupported","encodeURIComponent","navigator","serviceWorker","register","registration","serviceWorkerRegistration","fbOnMessage","onMessage","payload","History","_setError","_isEmpty","_getNameAction","action","_createContentHistory","newData","captions","dataOldCompare","keyForAdd","keyForEdit","keyForRemove","itemRender","excludeFields","objDetail","isDiff","cap","param","oldData","_createDetail","_ref3","_ref4","_ref5","old","new","detail","init","_ref7","returnData","_options","dataCompare","transID","transactionID","transactionName","moduleID","keyTransID","ortherData","userID","_noInit","_ref8","el","_TransID","content","newDataKeys","oldDataKeys","added","edited","removed","_args","is","_action","ModuleID","TransactionID","TransactionName","TransID","Content","UserName","Action","_d","_dataOld","find","_data","importData","createDetailHistory","refresh","get","import","setConnection","newConnection","connection","save","_ref9","data2","status","attributes","saveHistory","notify","_ref10","controller","propTypes","PropTypes","any","number","string","func","OrgChart","_HTMLElement","opts","_clickChart","bind","_assertThisInitialized","pan","chartContainer","overflow","_onPanStart","_onPanEnd","zoom","_onWheeling","_onTouchStart","_onTouchMove","_onTouchEnd","that","setAttribute","chartClass","buildHierarchy","ajaxURL","_attachRel","startsWith","_buildJsonDS","spinner","appendChild","_getJSON","finally","parentNode","removeChild","attrName","oldVal","newVal","_closest","expr","from","child","matches","sibs","prevSib","previousElementSibling","nextSib","nextElementSibling","offsetParent","elements","classNames","prop","attr","removeAttribute","listener","one","ancestors","selector","results","_toConsumableArray","xhr","XMLHttpRequest","onreadystatechange","readyState","response","statusText","responseType","setRequestHeader","send","li","subObj","firstChild","textContent","trim","nodeName","flags","relationship","node","relation","criteria","exist","_isVisible","_siblings","some","lastChild","leftEdge","rightEdge","temp","toggleSiblingsResp","dataset","siblingsLoaded","sibsVisible","toggle","flag","topEdge","bottomEdge","_getNodeState","_switchHorizontalArrow","clickedNode","focusedNode","currentRoot","nodeData","callback","_createNode","nodeDiv","parentTr","superiorLine","inferiorLine","childrenTr","insertBefore","arrow","_prevAll","_removeClass","_addClass","parent","_one","_isInAction","_switchVerticalArrow","_repaint","siblings","_nextAll","upperLevel","sib","_this5","_this6","nodeContainer","inAjax","animatedNodes","lines","_i","_animatedNodes","Set","line","visibility","_this7","someLines","hideSiblings","_css","grandfatherVisible","_removeAttr","hideParent","_buildParentNode","showParent","stopPropagation","parentState","nodeId","_startLoading","source","addParent","_endLoading","lastItem","descendants","isVerticalDesc","_this8","appendTo","count","inEdit","_buildChildNode","symbol","parentNodeSymbol","showChildren","_this9","childrenState","hideChildren","addChildren","oneSibling","siblingCount","existingSibligCount","rightLine","leftLine","nodeChart","_this10","newSiblingCount","insertPostion","floor","childCount","siblingTds","_complementLine","_getDescElements","nodeCount","temp2","temp3","_buildSiblingNode","showSiblings","_this11","hEdge","siblingsState","families","addSiblings","toggleBtn","descWrapper","subTBs","_clickTopEdge","_clickHorizontalEdge","_clickBottomEdge","_clickToggleButton","_clickNode","isFirefox","userAgent","toLowerCase","dataTransfer","setData","transform","ghostNode","nodeCover","createElementNS","transValues","scale","abs","parseFloat","offsetHeight","xOffset","offsetX","yOffset","offsetY","ghostNodeWrapper","XMLSerializer","serializeToString","setDragImage","dragged","dragZone","dragHier","dropCriteria","preventDefault","dropEffect","dropZone","dropColspan","colSpan","leftline","rightline","dropSibs","upperTr","lowerTr","nodeTr","draggedTd","dragColSpan","dragSibs","tr","customE","CustomEvent","dispatchEvent","level","parentId","isHidden","depth","draggable","nodeTitle","nodeContent","verticalDepth","substr","_hoverNode","_dispatchClickEvent","_onDragStart","_onDragOver","_onDragEnd","_onDrop","createNode","nodeWrapper","childNodes","isVerticalNode","isVerticalLayer","nodeLayer","lineLayer","join","nodeCell","chart","_this12","_loopChart","touches","panning","lastX","lastY","lastTf","getComputedStyle","startX","startY","targetTouches","pageX","pageY","panStart","_onPanning","newX","newY","matrix","newScale","deltaY","_setChartScale","sqrt","clientX","clientY","dist","_getPinchDist","pinching","pinchDistStart","pinchDistEnd","diff","_wrapNativeSuper","HTMLElement","customElements","tabIndexMap","Map","Header","getDevice","documentMode","getListNotification","tabNotify","AppID","limit","dataLoadNotify","skip","sort","read","createdAt","updatedAt","clearBadge","_data$totalNew","getBadge","notifyLoading","totalNew","_data$rows","rows","total","loadFullNotify","onBackgroundMessage","visibilityState","reloadNotify","componentWillUnmount","reloadMenu","elNotify","homeActions","getMenuV2","toggleMenuESS","toggleMenuEss","toggleNav","toogleSideBar","onChangeTabNotify","limitNotify","onClickNotify","form_id","_e$Type","hide","FormID","FormParentID","Type","voucher_id","onOpenedNotify","documentElement","offsetTop","onClosedNotify","handleScroll","viewHeight","listItemNotify","redirectToGoalMenu","FormCall","login","decryptData","getLocalStorage","Firebase","deviceToken","md","os","addDevice","dataPush","debugger","pushData","startTime","moment","route","_dataT$listMSS","_dataT$OKR","_$get","menuID","menu_id","menuGroupID","menu_group_id","dataT","menu","idxMenulistMSSGroup","listMSS","findIndex","MenuGroupID","idxMenuOKRGroup","OKR","MenuID","pathData","idxMenu","set","num_wait_approval","updateBadgeNumber","_badgeNumber$OKR","isTab","badge","listNoty","badgeNumber","path","logoImg","dataMenu","badgeOKR","listESS","NumWaitApproval","transactionMenu","goalMenu","MenuItem","circular","tab","Search","W09F7000","Badge","invisible","iconProps","Tooltip","onEntered","onExited","renderItem","_useColor$line","_listNoty$rows","_listNoty$rows2","_listNoty$rows3","ActionToolbar","alignment","alignSelf","TabContainer","tabIndex","TabHeader","TabItem","index","startIcon","useColor","category","Loading","size","idx","user","getUser","sender","avatar","UserPictureURL","getCDNPath","sender_name","EmployeeName","schedule_des","schedule_desE","voucher_des","voucher_desE","Avatar","readOnly","schedule","voucher_no","convertDate","Icon","renderCursor","contentDirection","DropdownToolbar","buttonName","menuItem","Dropdown","DropdownToggle","DropdownMenu","clickButton","styles","paper","html","toggleFilter","openPopupFilter","dialog","load","Dialog","DialogContent"],"mappings":"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","file":"static/js/main~614db18d.36b6179e.chunk.js","sourcesContent":["/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 9/11/2020\r\n * @Example\r\n */\r\n\r\nimport React from \"react\";\r\nimport {withStyles} from \"@material-ui/core\";\r\nimport PropTypes from \"prop-types\";\r\nimport {compose} from \"redux\";\r\nimport Config from \"../../config\";\r\n\r\nconst styles = {\r\n root: {\r\n // opacity: 0\r\n height: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n};\r\n\r\nclass GridActionBar extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.actionbar = null;\r\n }\r\n\r\n componentDidMount() {\r\n setTimeout(() => {\r\n if (this.actionbar && !Config.isMobile) {\r\n this.actionbar.classList.remove(\"grid-action-opacity\");\r\n const grid = this.actionbar.closest(\".dx-datagrid\");\r\n const container = this.actionbar.closest(\".dx-datagrid-content\");\r\n if (container && grid) {\r\n if (container.classList.contains(\"dx-datagrid-content-fixed\")) {\r\n const td = this.actionbar.closest(\"td\");\r\n const width = this.actionbar.offsetWidth + 30 + \"px\";\r\n const colIndex = Number(td.getAttribute(\"aria-colindex\"));\r\n td.style.width = width;\r\n td.style.minWidth = width;\r\n td.style.maxWidth = width;\r\n td.classList.add(\"grid-action-hover\");\r\n if (td.nextSibling) td.nextSibling.style.borderLeft = \"none\"; //remove border fixed..\r\n\r\n //process header...\r\n const containerHeader = grid.querySelectorAll(\".dx-datagrid-headers .dx-datagrid-content\");\r\n if (containerHeader && containerHeader.length > 0) {\r\n containerHeader.forEach(cont => {\r\n if (cont.classList.contains(\"dx-datagrid-content-fixed\")) {\r\n const table = cont.querySelector(\".dx-datagrid-table-fixed\");\r\n if (table) {\r\n table.style.height = \"100%\";\r\n setTimeout(() => {\r\n const col = table.querySelector(\"colgroup col:nth-child(\"+colIndex+\")\");\r\n if (col) col.style.width = 0;\r\n }, 300);\r\n const td = table.querySelector('tbody tr td[aria-colindex=\"'+colIndex+'\"]');\r\n if (td) td.classList.add(\"grid-action-hover\");\r\n }\r\n // cont.querySelectorAll(\"table tbody tr td:last-child\").forEach(td => td.classList.add(\"grid-action-hover\"));\r\n } else {\r\n const table = cont.querySelector(\".dx-datagrid-table-fixed\");\r\n const td = table.querySelector('tbody tr td[aria-colindex=\"'+colIndex+'\"]');\r\n if (td) td.classList.remove(\"dx-hidden-cell\");\r\n // cont.querySelectorAll(\"table tbody tr td:last-child\").forEach(td => td.classList.remove(\"dx-hidden-cell\"));\r\n }\r\n });\r\n }\r\n container.querySelectorAll(\".dx-freespace-row td:last-child\").forEach(t => {\r\n if (!t.classList.contains(\"grid-action-hover\")) t.classList.add(\"grid-action-hover\");\r\n });\r\n } else {\r\n const td = this.actionbar.closest(\"td\");\r\n td.classList.remove(\"dx-hidden-cell\");\r\n this.actionbar.style.display = \"none\";\r\n td.style.paddingTop = 0;\r\n td.style.paddingBottom = 0;\r\n }\r\n }\r\n }\r\n }, 600);\r\n window.addEventListener(\"resize\", this.resizeWindow);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.resizeWindow);\r\n }\r\n\r\n resizeWindow = () => {\r\n if (this.actionbar && !Config.isMobile) {\r\n this.actionbar.classList.remove(\"grid-action-opacity\");\r\n const td = this.actionbar.closest(\"td\");\r\n td.classList.remove(\"grid-action-hover\");\r\n let width = this.actionbar.offsetWidth + 30 + \"px\";\r\n const grid = this.actionbar.closest(\".dx-datagrid\");\r\n const container = this.actionbar.closest(\".dx-datagrid-content\");\r\n if (container && grid) {\r\n if (container.classList.contains(\"dx-datagrid-content-fixed\")) {\r\n const td = this.actionbar.closest(\"td\");\r\n const colIndex = Number(td.getAttribute(\"aria-colindex\"));\r\n td.classList.remove(\"grid-action-hover\");\r\n width = this.actionbar.offsetWidth + 30 + \"px\";\r\n td.style.width = width;\r\n td.style.minWidth = width;\r\n td.style.maxWidth = width;\r\n td.classList.add(\"grid-action-hover\");\r\n\r\n //process header...\r\n const containerHeader = grid.querySelectorAll(\".dx-datagrid-headers .dx-datagrid-content\");\r\n if (containerHeader && containerHeader.length > 0) {\r\n containerHeader.forEach(cont => {\r\n if (cont.classList.contains(\"dx-datagrid-content-fixed\")) {\r\n const table = cont.querySelector(\".dx-datagrid-table-fixed\");\r\n if (table) {\r\n table.style.height = \"100%\";\r\n setTimeout(() => {\r\n const col = table.querySelector(\"colgroup col:nth-child(\"+colIndex+\")\");\r\n if (col) col.style.width = 0;\r\n }, 300);\r\n const td = table.querySelector('tbody tr td[aria-colindex=\"'+colIndex+'\"]');\r\n if (td) td.classList.add(\"grid-action-hover\");\r\n }\r\n // cont.querySelectorAll(\"table tbody tr td:last-child\").forEach(td => td.classList.add(\"grid-action-hover\"));\r\n } else {\r\n const table = cont.querySelector(\".dx-datagrid-table-fixed\");\r\n const td = table.querySelector('tbody tr td[aria-colindex=\"'+colIndex+'\"]');\r\n if (td) td.classList.remove(\"dx-hidden-cell\");\r\n // cont.querySelectorAll(\"table tbody tr td:last-child\").forEach(td => td.classList.remove(\"dx-hidden-cell\"));\r\n }\r\n });\r\n }\r\n\r\n //process body..\r\n const table = container.querySelector(\".dx-datagrid-table-fixed\");\r\n if (table) {\r\n table.style.height = \"100%\";\r\n table.querySelector(\"colgroup col:nth-child(\"+colIndex+\")\").style.width = width;\r\n }\r\n } else {\r\n const td = this.actionbar.closest(\"td\");\r\n const colIndex = Number(td.getAttribute(\"aria-colindex\"));\r\n this.actionbar.style.display = \"inline-block\";\r\n width = this.actionbar.offsetWidth + 30 + \"px\";\r\n td.classList.remove(\"dx-hidden-cell\");\r\n this.actionbar.style.display = \"none\";\r\n td.style.paddingTop = 0;\r\n td.style.paddingBottom = 0;\r\n\r\n //process body..\r\n const table = container.querySelector(\".dx-datagrid-table-fixed\");\r\n if (table) {\r\n table.style.height = \"100%\";\r\n table.querySelector(\"colgroup col:nth-child(\"+colIndex+\")\").style.width = width;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const {classes, style, className, children} = this.props;\r\n const _className = !Config.isMobile ? \"grid-action-opacity \" + className : className;\r\n\r\n return (\r\n
this.actionbar = ref} className={\"fal-grid-actionbar \" + classes.root + \" \" + _className}\r\n style={style}\r\n >\r\n {children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nGridActionBar.propTypes = {\r\n style: PropTypes.any,\r\n className: PropTypes.string,\r\n\r\n};\r\n\r\nexport default compose(withStyles(styles))(GridActionBar)\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 9/11/2020\r\n * @update 6/9/2022\r\n * @Example\r\n */\r\n\r\nimport { Popover } from \"diginet-core-ui/components\";\r\nimport PropTypes from \"prop-types\";\r\nimport React from \"react\";\r\n\r\nconst PopoverAction = React.memo(props => {\r\n const {\r\n style,\r\n className,\r\n popoverProps,\r\n direction,\r\n position,\r\n width,\r\n maxWidth,\r\n visible,\r\n target,\r\n reference,\r\n children,\r\n onHiding,\r\n onHidden,\r\n onClose,\r\n } = props;\r\n\r\n return (\r\n {\r\n onHiding && onHiding(e);\r\n onHidden && onHidden(e);\r\n onClose && onClose(e);\r\n }}\r\n {...popoverProps}\r\n >\r\n {children}\r\n \r\n );\r\n});\r\n\r\nPopoverAction.propTypes = {\r\n style: PropTypes.any,\r\n className: PropTypes.string,\r\n reference: PropTypes.any,\r\n target: PropTypes.any,\r\n direction: PropTypes.string,\r\n position: PropTypes.string, //is deprecated\r\n visible: PropTypes.bool,\r\n maxWidth: PropTypes.any, //is deprecated\r\n width: PropTypes.any,\r\n\r\n onHiding: PropTypes.func, //is deprecated\r\n onHidden: PropTypes.func, //is deprecated\r\n onClose: PropTypes.func,\r\n};\r\n\r\nexport default PopoverAction;\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 7/1/2020\r\n * @Example\r\n */\r\n\r\nimport React from \"react\";\r\nimport {withStyles} from \"@material-ui/core\";\r\nimport PropTypes from \"prop-types\";\r\nimport {compose} from \"redux\";\r\nimport Config from \"../../config\";\r\nimport { formatDate } from \"devextreme/localization\";\r\n\r\nconst styles = {\r\n divParent: {\r\n cursor: 'pointer',\r\n position: 'relative',\r\n whiteSpace:\"initial\"\r\n },\r\n stylePopup: {\r\n fontSize: '1rem',\r\n fontWeight: 400\r\n }\r\n};\r\n\r\nclass HeadClick extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const column = props.dataHeaderCell && props.dataHeaderCell.column;\r\n if (props.allowClick && column) {\r\n column.allowSorting = false;\r\n }\r\n this.state = {\r\n open: false,\r\n };\r\n }\r\n\r\n getWorkingDay = (field) => {\r\n if (!field) return \"\";\r\n const lField = field.split(\"_\");\r\n if (lField && lField.length > 1) {\r\n return lField[1];\r\n }\r\n return \"\";\r\n };\r\n\r\n onClick = (e) => {\r\n const {isExtend, dataHeaderCell, selectedRange, onClick, callbackAfterCopy, conditionCopy, isGroup, isCopyAll, isAllData, onUpdate, allowClick} = this.props;\r\n //check allow click..\r\n const _allowClick = typeof allowClick === \"function\" ? allowClick(dataHeaderCell) : allowClick;\r\n if (!_allowClick) return false;\r\n\r\n if (!dataHeaderCell || !dataHeaderCell.column || !dataHeaderCell.component) {\r\n if (onClick) onClick(e, this.props);\r\n } else {\r\n if (selectedRange) {\r\n if (isExtend || (!onClick && Object.keys(selectedRange).length > 0)) {\r\n const _ = dataHeaderCell.component || null;\r\n const column = dataHeaderCell.column || null;\r\n if (!_ && !column) return false;\r\n _.saveEditData();\r\n const getDataSource = _.getDataSource();\r\n let dataSource = [];\r\n if(getDataSource.isLoading()) return false;\r\n if(isAllData) {\r\n dataSource = _.option(\"dataSource\");\r\n } else {\r\n dataSource = getDataSource.items();\r\n if(isGroup) {\r\n dataSource = dataSource.map((val) => {\r\n return val.items;\r\n }).reduce((array,data) => {\r\n return array.concat(data);\r\n });\r\n }\r\n }\r\n const dataField = column.dataField;\r\n let workingDay = this.getWorkingDay(dataField);\r\n let _isUpdated = 0;\r\n let rowIndx = selectedRange.startRowIndex;\r\n const colIndx = selectedRange.startColumnIndex;\r\n\r\n const vColumns = _.getVisibleColumns();\r\n const vCol = vColumns[colIndx];\r\n if (vCol && column && vCol.dataField === column.dataField) {\r\n const {customDataCopy} = this.props;\r\n let dataCopy = _.cellValue(rowIndx, colIndx);\r\n if (customDataCopy) {\r\n dataCopy = customDataCopy({\r\n component: _,\r\n column: column,\r\n data: dataSource[rowIndx],\r\n rowIndex: rowIndx,\r\n colIndex: colIndx,\r\n value: dataCopy\r\n });\r\n }\r\n\r\n if(isCopyAll) {\r\n rowIndx = -1;\r\n }\r\n\r\n let formatText = dataCopy;\r\n if (column?.dataType === \"date\" && column?.format) {\r\n formatText = formatDate(dataCopy, column.format);\r\n }\r\n\r\n let msg = Config.lang(\"Ban_chac_chan_muon_sao_chep_cot_gia_tri_nay?\");\r\n\r\n //if value === \"\" || value === true || false then not display (request from KieuVan)\r\n if(dataCopy !== \"\" && typeof dataCopy !== \"boolean\"){\r\n msg += \"
\" + Config.lang(\"Gia_tri\") + \": \" + formatText;\r\n }\r\n\r\n if (workingDay) {\r\n Config.popup.show(\"YES_NO\", msg, () => {\r\n for (let i = rowIndx + 1; i < dataSource.length; i++) {\r\n const data = dataSource[i];\r\n const condition = conditionCopy ? conditionCopy({data: data, key: dataField}) : true;\r\n if (data[dataField] !== dataCopy\r\n && data[\"IsProcess_\" + workingDay] === 0\r\n && condition\r\n ) {\r\n if (condition) {\r\n data[dataField] = dataCopy;\r\n data.IsUpdated = 1;\r\n onUpdate && onUpdate(data, column);\r\n data[\"IsUpdate_\" + workingDay] = 1;\r\n _isUpdated = 1;\r\n }\r\n }\r\n }\r\n\r\n // dataSource.forEach((d) => {\r\n // if (d[dataField] !== dataCopy && d[\"IsProcess_\" + workingDay] === 0) {\r\n // d[dataField] = dataCopy;\r\n // d.IsUpdated = 1;\r\n // _isUpdated = 1;\r\n // }\r\n // });\r\n getDataSource.reload();\r\n if (callbackAfterCopy) callbackAfterCopy({IsUpdated: _isUpdated});\r\n });\r\n } else {\r\n Config.popup.show(\"YES_NO\", msg, () => {\r\n for (let i = rowIndx + 1; i < dataSource.length; i++) {\r\n const data = dataSource[i];\r\n const condition = conditionCopy ? conditionCopy({data: data, key: dataField}) : true;\r\n if (data[dataField] !== dataCopy && condition) {\r\n data[dataField] = dataCopy;\r\n data.IsUpdated = 1;\r\n onUpdate && onUpdate(data, column);\r\n _isUpdated = 1;\r\n }\r\n }\r\n\r\n // _.option(\"dataSource\", dataSource);\r\n getDataSource.reload();\r\n if (callbackAfterCopy) callbackAfterCopy({IsUpdated: _isUpdated});\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (onClick) onClick(e, selectedRange);\r\n }\r\n };\r\n\r\n render() {\r\n const {classes, style, className, dataHeaderCell, caption, color, bgColor} = this.props;\r\n const column = dataHeaderCell.column || null;\r\n const _style = {\r\n color: color,\r\n backgroundColor: bgColor\r\n };\r\n\r\n const title = caption ? caption : (column && column.caption ? column.caption : \"\");\r\n return (\r\n
this.onClick(e)}\r\n >\r\n {title}\r\n
\r\n );\r\n }\r\n}\r\n\r\nHeadClick.defaultProps = {\r\n isExtensible: false,\r\n allowClick: false,\r\n isGroup: false,\r\n};\r\nHeadClick.propTypes = {\r\n style: PropTypes.any,\r\n className: PropTypes.string,\r\n caption: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n color: PropTypes.string,\r\n bgColor: PropTypes.string,\r\n isExtend: PropTypes.bool,\r\n allowClick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\r\n dataHeaderCell: PropTypes.any,\r\n selectedRange: PropTypes.object,\r\n isGroup: PropTypes.bool,\r\n conditionCopy: PropTypes.func,\r\n callbackAfterCopy: PropTypes.func,\r\n onClick: PropTypes.func,\r\n isCopyAll: PropTypes.bool,\r\n isAllData: PropTypes.bool,\r\n customDataCopy: PropTypes.func,\r\n};\r\n\r\nexport default compose(withStyles(styles))(HeadClick)\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 10/28/2019\r\n * @Example\r\n */\r\n\r\nimport React, {\r\n Component,\r\n forwardRef,\r\n useCallback,\r\n useEffect,\r\n useImperativeHandle,\r\n useMemo,\r\n useRef,\r\n useState\r\n} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Config from \"../../config\";\r\nimport DataGrid, {\r\n Paging as DxPaging,\r\n Pager,\r\n Selection,\r\n KeyboardNavigation,\r\n FilterRow,\r\n FilterPanel,\r\n FilterBuilderPopup, Sorting, Grouping, FilterBuilder\r\n} from \"devextreme-react/data-grid\";\r\n// import Paging from \"./paging\";\r\nimport { PagingInfo as Paging, PagingSelector } from 'diginet-core-ui/components';\r\nimport GridToolbar from \"../tool-bar/grid-toolbar\";\r\nimport GridFilterBar from \"../tool-bar/grid-filter\";\r\nimport { LoadPanel } from 'devextreme-react/load-panel';\r\n\r\nconst usePrevious = (value, defaultValue) => {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current || defaultValue;\r\n};\r\n\r\nconst GridContainer = React.memo(forwardRef((props, ref) => {\r\n\r\n //props...\r\n const {keyExpr, dataSource, title, totalItems, filterData, buttonCRM, selectedRowKey, typeShort, wordWrapEnabled,\r\n editing, columnResizingMode, filterRow, columnAutoWidth, style, allowSearch, widthFull, disabled, typePaging,\r\n isPer, allowAdding, showSendMail, reference, id, children, valueSearch, paging, selection,\r\n showBorders, showColumnHeaders, showColumnLines, showRowLines, scrolling, hoverStateEnabled, loading,\r\n allowColumnResizing, pagerFullScreen, pager, elementAttr, allowCellSelection, filterValue, filterPanel,\r\n filterBuilder, filterBuilderPopup, disabledCellSelection, sorting, isOrderAPI, rowAlternationEnabled,\r\n grouping, focusStateEnabled, focusedRowEnabled, allowColumnReordering, defaultFocusedRowIndex,\r\n keyboardNavigation, customizeColumns, pagingHideMode, resetPageIndexWhenDataChanged,\r\n gridProps, pagingProps\r\n } = props;\r\n //func...\r\n const {onFilter, onSearch, onAddNew, onSendMail, onChangePage, onChangePerPage, onFilterChanged,\r\n loadMore, onRowInserted, onRowUpdated, onRowRemoved, onRowUpdating, onEditingStart, onInitNewRow, onRowRemoving,\r\n onEditorPrepared, onEditorPreparing, onContentReady, onSelectionChanged, onRowPrepared, onFocusedCellChanging,\r\n onKeyDown, onInitialized, onCellSelectionChanged, onRowValidating, onFocusedCellChanged, onRowInserting,\r\n onContextMenuPreparing, onRowClick, onOrderChanged, onCellPrepared, onCellHoverChanged, onChangingPage, onChangingPerPage,\r\n onFocusedRowChanged, onFocusedRowChanging,\r\n } = props;\r\n const prevDataSource = usePrevious(dataSource, []);\r\n\r\n const listPerPage = useRef(props.listPerPage || [10, 20, 40, 50]);\r\n const [currentPage, setCurrentPage] = useState(props.isPage ?? 0);\r\n const [itemPerPage, setItemPerPage] = useState(props.itemPerPage || listPerPage.current[0]);\r\n const [height, setHeight] = useState(props.height);\r\n\r\n const isSubmit = useRef(false);\r\n const isFiltered = useRef(false);\r\n const filterGrid = useRef({});\r\n const grid = useRef(null);\r\n const dataGrid = useRef(null);\r\n const selectedRange = useRef({});\r\n const isSelectionStopped = useRef(true);\r\n const fieldSort = useRef(\"\");\r\n const typeSort = useRef({});\r\n const pagingRef = useRef(null);\r\n const isChangePageIndex = useRef(false);\r\n const cellFocused = useRef({});\r\n\r\n const pageSize = useMemo(() => {\r\n return paging && paging.pageSize ? paging.pageSize : (itemPerPage ? itemPerPage : 10);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [paging, itemPerPage]);;\r\n const _typePaging = useMemo(() => {\r\n return typeof typePaging === \"undefined\" ? (typeof totalItems !== \"undefined\" ? \"remote\" : \"default\") : typePaging;\r\n }, [typePaging, totalItems]);\r\n const _sorting = useMemo(() => {\r\n return isOrderAPI ? {mode: \"none\"} : (sorting ? sorting : {});\r\n }, [isOrderAPI, sorting]);\r\n\r\n //allow custom onCellHoverChanged...\r\n const allowCustomCellHoverChanged = useMemo(() => {\r\n return onCellSelectionChanged && !disabledCellSelection;\r\n }, [disabledCellSelection, onCellSelectionChanged]);\r\n\r\n const foreachRange = useCallback((selectedRange, cb) => {\r\n if(selectedRange.startRowIndex >= 0) {\r\n var minRowIndex = Math.min(selectedRange.startRowIndex, selectedRange.endRowIndex);\r\n var maxRowIndex = Math.max(selectedRange.startRowIndex, selectedRange.endRowIndex);\r\n var minColumnIndex = Math.min(selectedRange.startColumnIndex, selectedRange.endColumnIndex);\r\n var maxColumnIndex = Math.max(selectedRange.startColumnIndex, selectedRange.endColumnIndex);\r\n\r\n for(var rowIndex = minRowIndex; rowIndex <= maxRowIndex; rowIndex++) {\r\n for(var columnIndex = minColumnIndex; columnIndex <= maxColumnIndex; columnIndex++) {\r\n cb(rowIndex, columnIndex);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n const showSelection = useCallback((component, selectedRange) => {\r\n const cellSelected = component.element().querySelectorAll(\".cell-selected\");\r\n cellSelected.forEach(cell => cell.classList.remove(\"cell-selected\"));\r\n\r\n if (onCellSelectionChanged && !disabledCellSelection) onCellSelectionChanged({component: component, selectedRange: selectedRange});\r\n\r\n foreachRange(selectedRange, (rowIndex, columnIndex) => {\r\n if (component.getCellElement(rowIndex, columnIndex)) {\r\n component.getCellElement(rowIndex, columnIndex).classList.add(\"cell-selected\");\r\n }\r\n });\r\n /* eslint-disable */\r\n }, [disabledCellSelection, onCellSelectionChanged]);\r\n\r\n const onFilterGrid = useCallback((e) => {\r\n let filter = e.component.getCombinedFilter(true);\r\n let letFilter = false;\r\n let listFilter = {};\r\n let eventFilter = {};\r\n eventFilter.component = e.component;\r\n\r\n if (filter) {\r\n filter = !Array.isArray(filter[0]) ? [filter] : filter;\r\n filter.forEach((val) => {\r\n if (Array.isArray(val)) {\r\n listFilter[val[0]] = val.filterValue;\r\n if (filterGrid.current[val[0]] || filterGrid.current[val[0]] === 0) {\r\n if (filterGrid.current[val[0]] !== val.filterValue) {\r\n letFilter = true;\r\n }\r\n } else {\r\n letFilter = true;\r\n }\r\n }\r\n });\r\n if (Object.keys(filterGrid.current).length !== Object.keys(listFilter).length) {\r\n letFilter = true;\r\n }\r\n filterGrid.current = listFilter;\r\n if (letFilter) {\r\n isFiltered.current = true;\r\n eventFilter.filter = filterGrid.current;\r\n onFilterChanged(eventFilter);\r\n }\r\n } else {\r\n filterGrid.current = {};\r\n if (isFiltered.current) {\r\n isFiltered.current = false;\r\n eventFilter.filter = null;\r\n onFilterChanged(eventFilter);\r\n }\r\n }\r\n }, [filterGrid, isFiltered, onFilterChanged]);\r\n\r\n useImperativeHandle(ref, () => ({\r\n itemPerPage: (_itemPerPage) => {\r\n if (_itemPerPage !== 0 && !_itemPerPage) return itemPerPage;\r\n if (itemPerPage !== _itemPerPage) setItemPerPage(_itemPerPage);\r\n },\r\n getRefDataGrid: () => dataGrid.current,\r\n getRefPaging: () => pagingRef.current\r\n }));\r\n\r\n useEffect(() => {\r\n setHeight(props.height);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (pagingRef.current && props.height) setHeight(props.height - (37 - 14))\r\n }, [props.totalItems, props.height]);\r\n\r\n useEffect(() => {\r\n if (props.itemPerPage || props.itemPerPage === 0) setItemPerPage(props.itemPerPage);\r\n if (props.isPage || props.isPage === 0) setCurrentPage(props.isPage);\r\n }, [props.itemPerPage, props.isPage]);\r\n\r\n useEffect(() => {\r\n if (props.skipPerPage || props.skipPerPage === 0) setCurrentPage(props.skipPerPage / itemPerPage);\r\n }, [props.skipPerPage]);\r\n\r\n useEffect(() => {\r\n if (_typePaging !== \"remote\" && resetPageIndexWhenDataChanged) {\r\n if (typeof resetPageIndexWhenDataChanged === \"function\") {\r\n if (resetPageIndexWhenDataChanged({\r\n component: dataGrid.current.instance,\r\n paging: pagingRef.current,\r\n dataSource,\r\n prevDataSource,\r\n setCurrentPage\r\n })) setCurrentPage(0);\r\n } else {\r\n setCurrentPage(0);\r\n }\r\n }\r\n }, [dataSource]);\r\n\r\n useEffect(() => {\r\n if (dataGrid.current) {\r\n if (currentPage !== dataGrid.current.instance.pageIndex()) {\r\n dataGrid.current.instance.pageIndex(currentPage);\r\n }\r\n }\r\n }, [currentPage]);\r\n\r\n const handleScroll = (e) => {\r\n if (isSubmit.current) return;\r\n const bottom = e.target.scrollTop && ((e.target.scrollHeight - e.target.scrollTop) <= e.target.clientHeight + 30);\r\n if (bottom && props.loadMore) {\r\n isSubmit.current = true;\r\n props.loadMore(() => {\r\n isSubmit.current = false;\r\n });\r\n }\r\n };\r\n\r\n const updateTotal = useCallback((e) => {\r\n const _total = e.component.totalCount();\r\n if (pagingRef.current && _typePaging === \"normal\") pagingRef.current.setTotalItems(_total);\r\n }, [pagingRef, _typePaging]);\r\n\r\n const setOrderChanged = useCallback((e) => {\r\n if (!e) return false;\r\n if (fieldSort.current && typeSort.current?.[fieldSort.current] && e.cellElement) {\r\n if (e.rowType === \"header\") {\r\n const grid = e.component?.element();\r\n const indicators = grid?.getElementsByClassName(\"dx-column-indicators\");\r\n if (indicators.length > 0) {\r\n for (let ind of indicators) {\r\n ind.remove();\r\n }\r\n }\r\n e.cellElement.children[0].classList.add(\"dx-text-content-alignment-left\", \"dx-text-content-alignment-right\", \"dx-sort-indicator\");\r\n e.cellElement.innerHTML += '
';\r\n }\r\n }\r\n }, [typeSort, fieldSort]);\r\n\r\n const onCellClick = (e) => {\r\n const {onCellClick} = props;\r\n if (isOrderAPI && onOrderChanged) {\r\n if (e.rowType === \"header\") {\r\n const {column} = e;\r\n if (fieldSort.current !== column.dataField) fieldSort.current = column.dataField;\r\n typeSort.current[fieldSort.current] = typeSort.current[fieldSort.current] === \"ASC\" ? \"DESC\" : \"ASC\";\r\n // this.cellHeader = e.cellElement;\r\n\r\n setOrderChanged(e);\r\n\r\n if (onOrderChanged) onOrderChanged({...e, column: column, typeSort: typeSort.current[fieldSort.current].toUpperCase()});\r\n }\r\n }\r\n\r\n if (onCellSelectionChanged && !disabledCellSelection) {\r\n selectedRange.current.rowType = e.rowType;\r\n if (e.rowType !== \"header\") {\r\n selectedRange.current.startRowIndex = selectedRange.current.endRowIndex = e.rowIndex;\r\n selectedRange.current.startColumnIndex = selectedRange.current.endColumnIndex = e.columnIndex;\r\n isSelectionStopped.current = false;\r\n showSelection(e.component, selectedRange.current);\r\n }\r\n }\r\n\r\n if (onCellClick) onCellClick(e);\r\n };\r\n const onCellDblClick = (e) => {\r\n const {onDbCellClick, onCellDblClick} = props;\r\n if (onCellDblClick) onCellDblClick(e);\r\n if (onDbCellClick) onDbCellClick(e);\r\n };\r\n const _onCellHoverChanged = (e) => {\r\n if (onCellHoverChanged) onCellHoverChanged(e);\r\n\r\n //set selection range\r\n const event = e.event;\r\n if(event.buttons === 1 && onCellSelectionChanged && !disabledCellSelection) {\r\n if(isSelectionStopped.current) {\r\n isSelectionStopped.current = false;\r\n selectedRange.current = {};\r\n }\r\n selectedRange.current.rowType = e && e.rowType ? e.rowType : \"\";\r\n if(selectedRange.current.startRowIndex === undefined) {\r\n selectedRange.current.startRowIndex = e.rowIndex;\r\n }\r\n if(selectedRange.current.startColumnIndex === undefined) {\r\n selectedRange.current.startColumnIndex = e.columnIndex;\r\n }\r\n\r\n selectedRange.current.endRowIndex = e.rowIndex;\r\n selectedRange.current.endColumnIndex = e.columnIndex;\r\n\r\n showSelection(e.component, selectedRange.current);\r\n\r\n }\r\n else {\r\n isSelectionStopped.current = true;\r\n }\r\n };\r\n const _onFocusedCellChanging = (e) => {\r\n if (onFocusedCellChanging) {\r\n onFocusedCellChanging(e);\r\n } else {\r\n if (allowCellSelection) {\r\n cellFocused.current = {rowIndex: e.newRowIndex, columnIndex: e.newColumnIndex};\r\n e.isHighlighted = allowCellSelection;\r\n }\r\n }\r\n };\r\n const onRowDblClick = (e) => {\r\n const {onDbRowClick, onRowDblClick} = props;\r\n if (onRowDblClick) onRowDblClick(e);\r\n if (onDbRowClick) onDbRowClick(e);\r\n };\r\n const _onEditorPreparing = (e) => {\r\n if (e.parentType === \"filterRow\") {\r\n let placeholder = \"\";\r\n switch (e.editorName) {\r\n case \"dxTextBox\":\r\n case \"dxNumberBox\":\r\n placeholder = e.filterPlaceholder || Config.lang(\"Nhap\");\r\n break;\r\n case \"dxDateBox\":\r\n placeholder = e.filterPlaceholder || e?.format || Config.lang(\"Chon\");\r\n break;\r\n default:\r\n placeholder = e.filterPlaceholder || Config.lang(\"Chon\");\r\n break;\r\n }\r\n e.editorOptions.placeholder = placeholder || Config.lang(\"Chon\");\r\n\r\n //convert value filter to normalize (data and filterValue)\r\n const dataSource = e.component.option(\"dataSource\") || [];\r\n const {dataField} = e || {};\r\n dataSource?.forEach(d => {\r\n if (d[dataField] && typeof d[dataField] === \"string\") {\r\n d[dataField] = d[dataField].normalize();\r\n }\r\n });\r\n const onValueChanged = e.editorOptions.onValueChanged;\r\n e.editorOptions.onValueChanged = (evt) => {\r\n if (evt.value && typeof evt.value === \"string\") {\r\n if (evt?.event?.target) evt.event.target.value = evt.value.normalize();\r\n evt.value = evt.value.normalize();\r\n }\r\n onValueChanged(evt);\r\n };\r\n }\r\n if (onEditorPreparing) onEditorPreparing(e);\r\n };\r\n\r\n const _onInitialized = (e) => {\r\n const columns = e.component.getVisibleColumns();\r\n const dateColumns = columns?.filter(col => col?.dataType === \"date\");\r\n for (let col of columns) {\r\n e.component.columnOption(col.dataField, \"editorOptions.valueChangeEvent\", \"input\");\r\n // default width for date column...\r\n if (col?.dataType === \"date\") {\r\n e.component.columnOption(col.dataField, \"minWidth\", 180);\r\n }\r\n }\r\n if (dateColumns && dateColumns.length > 0) {\r\n for (let col of dateColumns) {\r\n e.component.columnOption(col.dataField, \"minWidth\", 180);\r\n }\r\n }\r\n if (onInitialized) onInitialized(e);\r\n };\r\n\r\n const onOptionChanged = (e) => {\r\n const {onOptionChanged: _onOptionChanged} = props;\r\n if (!e) return false;\r\n switch (e.name) {\r\n case \"columns\":\r\n if (e.fullName.endsWith(\"sortOrder\") && !isOrderAPI) {\r\n const fullName = e.fullName.split('.');\r\n if (fullName.length < 1) return false;\r\n const matchs = fullName[0].match(/columns\\[(\\d+)\\]/);\r\n if (matchs.length < 2) return false;\r\n const colIndx = matchs[1];\r\n const columns = e.component.option(\"columns\");\r\n const column = columns[colIndx];\r\n const typeSort = e.value ? e.value : 'asc';\r\n if (_onOptionChanged) _onOptionChanged({...e, column: column, typeSort: typeSort.toUpperCase()});\r\n // setTimeout(() => {\r\n // e.component.columnOption(column.dataField, 'sortOrder', typeSort);\r\n // }, 300);\r\n }\r\n if (e.fullName.endsWith(\"filterValue\") && props.onFilterGrid) {\r\n const {onFilterGrid} = props;\r\n if (onFilterGrid) {\r\n const fullName = e.fullName.split('.');\r\n if (fullName.length < 1) return false;\r\n const matchs = fullName[0].match(/columns\\[(\\d+)\\]/);\r\n if (matchs.length < 2) return false;\r\n const colIndx = matchs[1];\r\n const columns = e.component.option(\"columns\");\r\n const column = columns[colIndx];\r\n const value = e.value ? e.value : '';\r\n\r\n\r\n if (onFilterGrid) onFilterGrid({component: e.component, column, filterValue: value, columnIndex: Number(colIndx)});\r\n // setTimeout(() => {\r\n // e.component.columnOption(column.dataField, 'sortOrder', typeSort);\r\n // }, 300);\r\n }\r\n }\r\n break;\r\n case \"filterValue\":\r\n if (e.fullName === \"filterValue\" && e.value === null && props.onFilterGrid) {\r\n const {onFilterGrid} = props;\r\n if (onFilterGrid) onFilterGrid({component: e.component, column: null, filterValue: null});\r\n }\r\n break;\r\n case \"paging\":\r\n if (e.fullName === \"paging.pageIndex\" && (e.value === 0 || e.value) && _typePaging !== \"remote\") {\r\n if (dataGrid.current && focusedRowEnabled && typeof defaultFocusedRowIndex === \"number\") {\r\n isChangePageIndex.current = true;\r\n }\r\n if (pagingRef.current && e.value !== currentPage) {\r\n pagingRef.current.onChangePage(e.value);\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n if (_onOptionChanged) _onOptionChanged(e);\r\n };\r\n\r\n return (\r\n
\r\n {title && }\r\n\r\n {onSearch &&\r\n {\r\n onSearch && onSearch(text);\r\n }} onAddNew={onAddNew}\r\n showSendMail={showSendMail}\r\n onSendMail={onSendMail} />}\r\n\r\n {onFilter && filterData &&\r\n }\r\n\r\n \r\n\r\n {\r\n if (ref) {\r\n dataGrid.current = ref;\r\n reference && reference(ref);\r\n }\r\n }}\r\n dataSource={dataSource}\r\n keyExpr={keyExpr}\r\n width={widthFull ? 'fit-content' : \"100%\"}\r\n wordWrapEnabled={wordWrapEnabled}\r\n showRowLines={showRowLines}\r\n showBorders={showBorders}\r\n showColumnHeaders={showColumnHeaders}\r\n showColumnLines={showColumnLines}\r\n elementAttr={elementAttr}\r\n height={height}\r\n filterValue={filterValue}\r\n defaultFilterValue={filterValue}\r\n allowColumnReordering={allowColumnReordering}\r\n allowColumnResizing={allowColumnResizing}\r\n noDataText={loading ? \"\" : Config.lang('Khong_co_du_lieu')}\r\n columnAutoWidth={columnAutoWidth}\r\n columnResizingMode={columnResizingMode}\r\n repaintChangesOnly={true}\r\n highlightChanges={true}\r\n scrolling={{ //phai viet nhu vay..\r\n scrollByContent: true,\r\n scrollByThumb: true,\r\n ...scrolling\r\n }}\r\n onOptionChanged={onOptionChanged}\r\n hoverStateEnabled={hoverStateEnabled}\r\n focusStateEnabled={focusStateEnabled}\r\n focusedRowEnabled={focusedRowEnabled}\r\n customizeColumns={customizeColumns}\r\n onContentReady={(e) => {\r\n updateTotal(e);\r\n if (onFilterChanged) onFilterGrid(e);\r\n if (onContentReady) onContentReady(e);\r\n if (onCellSelectionChanged && !disabledCellSelection)\r\n showSelection(e.component, selectedRange.current);\r\n\r\n if (isChangePageIndex.current) {\r\n isChangePageIndex.current = false;\r\n e.component.option(\"focusedRowKey\", \"\");\r\n e.component.option(\"focusedRowIndex\", defaultFocusedRowIndex);\r\n }\r\n }}\r\n onSelectionChanged={onSelectionChanged}\r\n onRowInserting={onRowInserting}\r\n onRowInserted={onRowInserted}\r\n onRowUpdated={onRowUpdated}\r\n onRowRemoved={onRowRemoved}\r\n onRowUpdating={onRowUpdating}\r\n onEditingStart={onEditingStart}\r\n onInitNewRow={onInitNewRow}\r\n onRowRemoving={onRowRemoving}\r\n onRowPrepared={onRowPrepared}\r\n onEditorPrepared={onEditorPrepared}\r\n onEditorPreparing={_onEditorPreparing}\r\n onCellPrepared={e => {\r\n const {rowIndex, columnIndex} = cellFocused.current || {};\r\n if (allowCellSelection && columnIndex === e.columnIndex && rowIndex === e.rowIndex) {\r\n e.component.focus(e.cellElement);\r\n }\r\n if (onCellPrepared) onCellPrepared(e);\r\n }} //danger event cause render\r\n onRowValidating={onRowValidating}\r\n onContextMenuPreparing={onContextMenuPreparing}\r\n onFocusedCellChanging={_onFocusedCellChanging}\r\n onFocusedCellChanged={onFocusedCellChanged}\r\n onCellHoverChanged={allowCustomCellHoverChanged ? _onCellHoverChanged : onCellHoverChanged} //danger event cause render\r\n onInitialized={_onInitialized}\r\n onKeyDown={onKeyDown}\r\n rowAlternationEnabled={rowAlternationEnabled}\r\n onCellClick={onCellClick}\r\n onCellDblClick={onCellDblClick}\r\n onRowClick={onRowClick}\r\n onRowDblClick={onRowDblClick}\r\n {...(selectedRowKey ? {selectedRowKeys: selectedRowKey} : {}) }\r\n onFocusedRowChanged={onFocusedRowChanged}\r\n onFocusedRowChanging={onFocusedRowChanging}\r\n { ...(editing ? {editing: {texts: {confirmDeleteMessage: \"\"}, ...editing}} : {})}\r\n {...gridProps}\r\n >\r\n {filterRow && }\r\n {filterBuilder && }\r\n {filterPanel && }\r\n {filterBuilderPopup && }\r\n {grouping && }\r\n {_sorting && }\r\n \r\n {/* Press \"Enter\" save current cell and move to next row(down) Press \"Shift + Enter\" move to previous row(up) */}\r\n \r\n \r\n pageSize)}\r\n showInfo={pager && pager.showInfo ? pager.showInfo : false}\r\n showNavigationButtons={pager && pager.showNavigationButtons ? pager.showNavigationButtons : false}\r\n showPageSizeSelector={pager && pager.showPageSizeSelector ? pager.showPageSizeSelector : false}\r\n />\r\n {children}\r\n \r\n\r\n {_typePaging === \"remote\" && !!totalItems && {\r\n if (onChangePage) onChangePage(page);\r\n }}\r\n onChangePerPage={(per) => {\r\n if (onChangePerPage) onChangePerPage(per);\r\n }}\r\n onChangingPage={onChangingPage}\r\n onChangingPerPage={onChangingPerPage}\r\n {...pagingProps}\r\n />}\r\n {_typePaging === \"normal\" && {\r\n setCurrentPage(page);\r\n if (onChangePage) onChangePage(page);\r\n }}\r\n onChangePerPage={(per) => {\r\n if (dataGrid.current) {\r\n dataGrid.current.instance.pageSize(per);\r\n dataGrid.current.instance.pageIndex(0);\r\n }\r\n setCurrentPage(0);\r\n setItemPerPage(per);\r\n if (onChangePerPage) onChangePerPage(per);\r\n }}\r\n onChangingPage={onChangingPage}\r\n onChangingPerPage={onChangingPerPage}\r\n {...pagingProps}\r\n />}\r\n {_typePaging === \"default\" && (pager && typeof pager.visible !== \"undefined\" ? pager.visible : true) &&\r\n {\r\n setCurrentPage(page);\r\n if (onChangePage) onChangePage(page);\r\n }}\r\n onChangePerPage={(per) => {\r\n if (dataGrid.current) {\r\n dataGrid.current.instance.pageSize(per);\r\n dataGrid.current.instance.pageIndex(0);\r\n }\r\n setCurrentPage(0);\r\n setItemPerPage(per);\r\n if (onChangePerPage) onChangePerPage(per);\r\n }}\r\n onChangingPage={onChangingPage}\r\n onChangingPerPage={onChangingPerPage}\r\n {...pagingProps}\r\n />}\r\n
\r\n );\r\n}));\r\n\r\nclass TitleGrid extends Component {\r\n render() {\r\n let { label } = this.props;\r\n if (!label) return;\r\n\r\n return (\r\n
\r\n {label}\r\n
\r\n );\r\n }\r\n}\r\n\r\nTitleGrid.propTypes = {\r\n label: PropTypes.string\r\n};\r\n\r\nGridContainer.defaultProps = {\r\n pagerFullScreen: true,\r\n rowAlternationEnabled: true,\r\n focusStateEnabled: true,\r\n focusedRowEnabled: false,\r\n hoverStateEnabled: true,\r\n showColumnLines: false,\r\n showRowLines: false,\r\n columnAutoWidth: true,\r\n showColumnHeaders: true,\r\n allowColumnReordering: true,\r\n columnResizingMode: \"nextColumn\",\r\n wordWrapEnabled: false,\r\n showBorders: true,\r\n defaultFocusedRowIndex: 0,\r\n resetPageIndexWhenDataChanged: true\r\n};\r\n\r\nGridContainer.propTypes = {\r\n style: PropTypes.object,\r\n hoverStateEnabled: PropTypes.bool,\r\n focusStateEnabled: PropTypes.bool,\r\n focusedRowEnabled: PropTypes.bool,\r\n selectedRowKey: PropTypes.any,\r\n title: PropTypes.string,\r\n type: PropTypes.string,\r\n field: PropTypes.string,\r\n itemPerPage: PropTypes.number,\r\n skipPerPage: PropTypes.number,\r\n totalItems: PropTypes.number,\r\n listPerPage: PropTypes.any,\r\n dataSource: PropTypes.any,\r\n keyExpr: PropTypes.string.isRequired,\r\n showSendMail: PropTypes.bool,\r\n selection: PropTypes.object,\r\n buttonCRM: PropTypes.array,\r\n isPer: PropTypes.number,\r\n isPage: PropTypes.number,\r\n allowAdding: PropTypes.number,\r\n allowSearch: PropTypes.string,\r\n typeShort: PropTypes.bool,\r\n wordWrapEnabled: PropTypes.bool,\r\n editing: PropTypes.object,\r\n filterRow: PropTypes.object,\r\n allowColumnResizing: PropTypes.bool,\r\n columnResizingMode: PropTypes.string,\r\n columnAutoWidth: PropTypes.bool,\r\n reference: PropTypes.func,\r\n id: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n valueSearch: PropTypes.string,\r\n paging: PropTypes.any,\r\n pager: PropTypes.any,\r\n height: PropTypes.any,\r\n showBorders: PropTypes.bool,\r\n showColumnHeaders: PropTypes.bool,\r\n showColumnLines: PropTypes.bool,\r\n showRowLines: PropTypes.bool,\r\n scrolling: PropTypes.any,\r\n gridProps: PropTypes.any,\r\n pagingProps: PropTypes.any,\r\n loading: PropTypes.bool,\r\n rowAlternationEnabled: PropTypes.bool,\r\n pagerFullScreen: PropTypes.bool,\r\n elementAttr: PropTypes.any,\r\n allowCellSelection: PropTypes.bool,\r\n filterValue: PropTypes.any,\r\n filterPanel: PropTypes.object,\r\n filterBuilder: PropTypes.object,\r\n filterBuilderPopup: PropTypes.object,\r\n disabledCellSelection: PropTypes.bool,\r\n sorting: PropTypes.object,\r\n grouping: PropTypes.object,\r\n defaultFocusedRowIndex: PropTypes.number,\r\n keyboardNavigation: PropTypes.object,\r\n onChangingPage: PropTypes.func,\r\n onChangingPerPage: PropTypes.func,\r\n\r\n /**\r\n * @typePaging: String\r\n * \"default\": With default type of DataGrid Devextreme\r\n * \"normal\": With type of HR customize paging (local).\r\n * \"remote\": With type of HR customize paging (remote). Require props:\r\n * - @totalItems: Total of all data.\r\n */\r\n typePaging: PropTypes.oneOf(['default', 'normal', 'remote']),\r\n\r\n /**\r\n * $isOrderAPI: Allow order with API with every column.\r\n */\r\n isOrderAPI: PropTypes.bool,\r\n resetPageIndexWhenDataChanged: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\r\n pagingHideMode: PropTypes.string,\r\n\r\n onFilter: PropTypes.func,\r\n onAddNew: PropTypes.func,\r\n onSearch: PropTypes.func,\r\n onChangePage: PropTypes.func,\r\n onRowClick: PropTypes.func,\r\n onDbRowClick: PropTypes.func,\r\n onDbCellClick: PropTypes.func,\r\n onCellClick: PropTypes.func,\r\n onCellDblClick: PropTypes.func,\r\n onChangePerPage: PropTypes.func,\r\n customizeColumns: PropTypes.func,\r\n onSendMail: PropTypes.func,\r\n onRowInserted: PropTypes.func,\r\n onSelectionChanged: PropTypes.func,\r\n onRowUpdated: PropTypes.func,\r\n onRowRemoved: PropTypes.func,\r\n onRowUpdating: PropTypes.func,\r\n onEditingStart: PropTypes.func,\r\n onInitNewRow: PropTypes.func,\r\n onRowRemoving: PropTypes.func,\r\n onEditorPrepared: PropTypes.func,\r\n onEditorPreparing: PropTypes.func,\r\n onContentReady: PropTypes.func,\r\n onRowDblClick: PropTypes.func,\r\n onRowPrepared: PropTypes.func,\r\n onFocusedCellChanging: PropTypes.func,\r\n onFocusedCellChanged: PropTypes.func,\r\n onRowInserting: PropTypes.func,\r\n onInitialized: PropTypes.func,\r\n onOptionChanged: PropTypes.func,\r\n onOrderChanged: PropTypes.func,\r\n onKeyDown: PropTypes.func,\r\n onCellHoverChanged: PropTypes.func,\r\n onCellSelectionChanged: PropTypes.func,\r\n onCellPrepared: PropTypes.func,\r\n loadMore: PropTypes.func,\r\n onRowValidating: PropTypes.func,\r\n onContextMenuPreparing: PropTypes.func,\r\n onFocusedRowChanging: PropTypes.func,\r\n onFocusedRowChanged: PropTypes.func,\r\n\r\n /**\r\n * get filter when changed..\r\n */\r\n onFilterChanged: PropTypes.func,\r\n onFilterGrid: PropTypes.func\r\n};\r\n\r\nexport default GridContainer;\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 4/22/2021\r\n * @Example \r\n */\r\n\r\nimport React from \"react\";\r\nimport Config from \"../../../config\";\r\n\r\nclass CORE extends React.Component {\r\n\r\n /**\r\n * Host (url) core\r\n * @type {string}\r\n */\r\n static host = \"https://core.diginet.com.vn\";\r\n\r\n /**\r\n * Token core..\r\n * @type {string}\r\n */\r\n static token = \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRoIjoiNmY1OTQxM2YtMTdiOS00NWY5LWE3NjgtYjY0MGRhMzZkZGVlIiwiaWF0IjoxNTkzMTY1NzYwLCJleHAiOjE2Nzk1NjU3NjB9.DQsEu7aU6_vhPHhFhnDcNq-x8nceBqVstNgxXNH1Aj8\"\r\n\r\n /**\r\n * Header for core\r\n * @type {{Accept: string, \"Access-Control-Request-Headers\": string, \"X-Access-Token\": string, \"Content-Type\": string}}\r\n */\r\n static headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Request-Headers': 'content-type,token,secret',\r\n 'X-Access-Token': this.token\r\n };\r\n\r\n static setHeaders = (header = {}) => {\r\n if (!header) return false;\r\n Object.assign(this.headers, header);\r\n };\r\n static getHeaders = () => {\r\n return this.headers;\r\n };\r\n static showError = (error) => {\r\n if (error) {\r\n Config.popup.show(error);\r\n return null;\r\n }\r\n return null;\r\n };\r\n\r\n static getProducts = async (config, cb) => {\r\n const route = \"/api/v1.0.0/company/apps\";\r\n let url = config?.url || this.host + route;\r\n if (config?.url) delete config.url;\r\n const params = {\r\n UserID: Config.profile.UserID,\r\n CompanyCode: Config.env.companyCode || \"\",\r\n ...config\r\n };\r\n const options = {\r\n method: \"PUT\",\r\n headers: this.getHeaders(),\r\n body: params ? JSON.stringify(params) : null\r\n };\r\n\r\n return await fetch(url, options)\r\n .then(async (resp) => {\r\n if (resp && resp.ok) {\r\n try {\r\n const data = await resp.json();\r\n if (data && data.data && data.data.length > 0 && data.data[0].apps) {\r\n // Config.products = data.data[0].apps;\r\n cb && cb(null, data.data);\r\n return data.data[0].apps;\r\n } else {\r\n this.showError({code: 'SYS001', message: 'System error!'});\r\n }\r\n\r\n } catch (e) {\r\n this.showError({code: 'SYS001', message: 'System error!'});\r\n }\r\n } else {\r\n this.showError({code: 'SYS001', message: 'System error!'});\r\n }\r\n }).catch(e => {this.showError(e)});\r\n };\r\n\r\n}\r\n\r\nexport default CORE;\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 12/16/2019\r\n * @Example\r\n */\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {InputLabel, FormControl} from \"@material-ui/core\";\r\nimport {DropDownBox} from \"devextreme-react\";\r\nimport {withStyles} from \"@material-ui/styles\";\r\nimport Config from \"../../config\";\r\nimport { DropdownBox as DropDownBoxCore } from 'diginet-core-ui/components';\r\n\r\nconst styles = {\r\n root: {\r\n // zIndex: 1502\r\n },\r\n rootMobile: {\r\n margin: '4px 0',\r\n // zIndex: 1502,\r\n '& .dx-texteditor.dx-editor-filled': {\r\n borderRadius: 5,\r\n '& input': {\r\n paddingTop: '6px !important'\r\n }\r\n }\r\n },\r\n dropdownCore: {\r\n '& > .DGN-UI-InputBase.outlined::after': {\r\n width: '100%',\r\n borderTop: 'none',\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n borderRadius: 'unset',\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n }\r\n }\r\n};\r\nclass Filter extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n shrink: (props.value && props.value.length > 0) || props.shrink,\r\n value: props.value,\r\n opened: false\r\n };\r\n this.isLoaded = false;\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n const {showHeader} = this.props;\r\n if (showHeader || typeof showHeader === \"undefined\") {\r\n Config.filters.setFilter(() => {\r\n return this.render();\r\n });\r\n }\r\n }\r\n\r\n onTextChanged = (e) => {\r\n const {onTextChanged} = this.props;\r\n const value = e?.event?.target?.value || e?.target?.value || '';\r\n const event = e?.event || e;\r\n this.setState({value: value});\r\n if (onTextChanged) onTextChanged(event);\r\n };\r\n\r\n // onFocusIn = () => {\r\n // console.log('focusin');\r\n // // this.setState({\r\n // // shrink: true,\r\n // // });\r\n // };\r\n //\r\n // onFocusOut = () => {\r\n // console.log('focusout');\r\n // // this.setState({\r\n // // shrink: !!this.state.value,\r\n // // });\r\n // };\r\n\r\n _onOpened = (e) => {\r\n const {onOpened, onOpenLoaded} = this.props;\r\n if (onOpened) onOpened(e);\r\n if (onOpenLoaded && !this.isLoaded) {\r\n onOpenLoaded();\r\n this.isLoaded = true;\r\n }\r\n this.setState({opened: true});\r\n };\r\n\r\n _onClosed = (e) => {\r\n const {onClosed} = this.props;\r\n if (onClosed) onClosed(e);\r\n this.setState({opened: false});\r\n };\r\n\r\n render() {\r\n const {value, shrink, opened} = this.state;\r\n const {\r\n label, style, className, margin, classes,\r\n height, placeholder, dataSource, stylingMode, showClearButton, acceptCustomValue,\r\n openOnFieldClick, showDropDownButton, disabled,\r\n InputLabelProps, dropdownProps,\r\n renderFilter, onTextChanged, isUseDDCore\r\n } = this.props;\r\n\r\n const _showDropDownButton = typeof showDropDownButton !== \"undefined\" ? showDropDownButton : !!renderFilter;\r\n const variant = stylingMode === 'underlined' ? \"standard\" : (stylingMode === 'outlined' ? 'outlined' : 'filled');\r\n const _shrink = shrink || opened;\r\n\r\n return (\r\n \r\n this.filter = ref}\r\n className={className + ' filter-input'}\r\n classes={{root: !label ? classes.rootMobile : classes.root}}\r\n variant={variant}\r\n margin={margin ? margin : \"dense\"}\r\n fullWidth={true} style={style}>\r\n {label}\r\n {!isUseDDCore && {\r\n return (\r\n
\r\n {opened && renderFilter()}\r\n
\r\n );\r\n }}\r\n />}\r\n {isUseDDCore && \r\n
\r\n {opened && renderFilter()}\r\n
\r\n }\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nFilter.propTypes = {\r\n label: PropTypes.string,\r\n shrink: PropTypes.bool,\r\n style: PropTypes.any,\r\n className: PropTypes.string,\r\n height: PropTypes.any,\r\n margin: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n\r\n value: PropTypes.any,\r\n acceptCustomValue: PropTypes.bool,\r\n openOnFieldClick: PropTypes.bool,\r\n showDropDownButton: PropTypes.bool,\r\n dataSource: PropTypes.any,\r\n placeholder: PropTypes.string,\r\n stylingMode: PropTypes.string,\r\n showClearButton: PropTypes.bool,\r\n showHeader: PropTypes.bool,\r\n\r\n renderFilter: PropTypes.any,\r\n\r\n InputLabelProps: PropTypes.any,\r\n dropdownProps: PropTypes.any,\r\n\r\n onOpenLoaded: PropTypes.func,\r\n onFocusIn: PropTypes.func,\r\n onFocusOut: PropTypes.func,\r\n onOpened: PropTypes.func,\r\n onClosed: PropTypes.func,\r\n\r\n onTextChanged: PropTypes.func,\r\n\r\n isUseDDCore: PropTypes.bool,\r\n};\r\n\r\nFilter.defaultProps = {\r\n isUseDDCore: false\r\n}\r\n\r\nexport default withStyles(styles)(Filter);\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 9/15/2020\r\n * @Example\r\n */\r\n\r\n\r\nimport React from \"react\";\r\nimport {List, ListItemIcon, withStyles} from \"@material-ui/core\";\r\nimport propTypes from \"prop-types\";\r\nimport {compose} from \"redux\";\r\nimport {Image} from \"react-bootstrap\";\r\nimport Config from \"../../../../config\";\r\nimport {Popover} from \"@material-ui/core\"\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport {Link} from \"react-router\";\r\nimport CORE from \"../index\";\r\nimport { ButtonIcon } from \"diginet-core-ui/components\";\r\n\r\nconst styles = {\r\n};\r\nclass LinkProducts extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n listProducts: [],\r\n anchorEl: null,\r\n };\r\n this.timer = null;\r\n this.isLoaded = false;\r\n this.host = CORE?.host || \"\";\r\n }\r\n\r\n componentWillUnmount () {\r\n if (this.timer) clearTimeout(this.timer);\r\n }\r\n\r\n onToggleMenu = (e) => {\r\n if (!e) return null;\r\n const {anchorEl} = this.state;\r\n this.setState({\r\n anchorEl: anchorEl ? null : e.target\r\n }, async () => {\r\n if (this.state.anchorEl && !this.isLoaded) {\r\n const listProducts = await CORE.getProducts();\r\n this.isLoaded = true;\r\n this.setState({listProducts: listProducts}, () => {\r\n if (this.timer) clearTimeout(this.timer);\r\n this.timer = setTimeout(() => {\r\n this.isLoaded = false;\r\n }, 60 * 1000); //1p\r\n });\r\n }\r\n })\r\n };\r\n\r\n getLink = (item) => {\r\n if (!item) return \"\";\r\n const url = item.url && item.url.indexOf(\"/\") === item.url.length - 1\r\n ? item.url.substring(0, item.url.length - 1)\r\n : item.url;\r\n const link = item.link ? item.link : url + \"/auth?token=\" + item.token;\r\n const paramLang = \"lang=\" + (Config.language || \"84\");\r\n return link.includes(\"?\") ? `${link}&${paramLang}` : `${link}?${paramLang}`;\r\n };\r\n\r\n onItemLink = (item) => {\r\n if (!item) return false;\r\n if (item && item.link) {\r\n let link = this.getLink(item);\r\n link = link.indexOf(\"http\") > -1 ? link : this.host + link;\r\n window.open(link);\r\n }\r\n };\r\n\r\n render() {\r\n const {style, className} = this.props;\r\n const {listProducts, anchorEl} = this.state;\r\n const _listProducts = listProducts?.filter(pro => pro.appID?.indexOf(\"W\") === 0 && pro.appID !== Config.env?.productID) || [];\r\n\r\n return (\r\n \r\n
\r\n \r\n {/*Links to products*/}\r\n \r\n {(_listProducts && _listProducts.length > 0) ? \r\n {_listProducts && _listProducts.map((pro, i) => {\r\n if (pro.appID.indexOf(\"W\") !== 0 || pro.appID === Config.env.productID) return null;\r\n const icon = pro.icon && pro.icon.indexOf(\"http\") > -1 ? pro.icon : this.host + pro.icon;\r\n return (\r\n this.onItemLink(pro)}\r\n value={pro}>\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n :\r\n
\r\n \r\n \r\n {Config.lang(\"Xem_them\")}\r\n
\r\n }\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nLinkProducts.propTypes = {\r\n className: propTypes.any,\r\n style: propTypes.any,\r\n};\r\nexport default compose(withStyles(styles))(LinkProducts)\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 12/10/2019\r\n * @Example\r\n */\r\n\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {List, ListItemAvatar, ListItemIcon, ListItemText} from \"@material-ui/core\"\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport Config from \"../../config\";\r\nimport {browserHistory} from \"react-router\";\r\nimport Popover from \"../common/popover/popover\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport * as mainActions from \"../../redux/main/main_actions\";\r\nimport {connect} from \"react-redux\";\r\nimport {bindActionCreators} from \"redux\";\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport ListSubheader from \"@material-ui/core/ListSubheader\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport {Image} from \"react-bootstrap\";\r\nimport InlineSVG from \"react-inlinesvg\";\r\nimport W09F2003 from \"../W0X/W09/W09F2003/W09F2003\";\r\nimport W09F2230 from \"../W0X/W09/W09F2230/W09F2230\";\r\n\r\nclass Profile extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openChildren: false,\r\n openChangePassword: false,\r\n openSetting: false,\r\n theme: Config.color && Object.keys(Config.color).length > 0 ? Config.color : null,\r\n anchorEl: {\r\n root: null,\r\n theme: null\r\n }\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n // this.props.mainActions.getTheme();\r\n }\r\n\r\n onLink = (link) => {\r\n link = link ? link.replace('/', '') : link;\r\n if(link === 'logout'){\r\n Config.logout();\r\n }\r\n else {\r\n browserHistory.push({pathname: Config.getRootPath() + link, state: {isInProfile: true}});\r\n document.body.click();\r\n }\r\n this.setState({\r\n anchorEl: {}\r\n })\r\n };\r\n\r\n toogleProfile = (e, key, isClose) => {\r\n if (isClose) {\r\n this.setState({openChildren: false});\r\n if (key) {\r\n this.setState({\r\n anchorEl: {\r\n ...this.state.anchorEl,\r\n [key]: null\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n anchorEl: {}\r\n });\r\n }\r\n } else {\r\n this.setState({openChildren: key !== 'root'});\r\n this.setState({\r\n anchorEl: {\r\n ...this.state.anchorEl,\r\n [key]: e.currentTarget\r\n }\r\n });\r\n }\r\n };\r\n\r\n onChangeTheme = (item) => {\r\n const {theme} = this.state;\r\n if (item && (!theme || (theme && item.MainColor !== theme.MainColor))) {\r\n this.setState({\r\n theme: item\r\n }, () => {\r\n this.props.mainActions.changeTheme({theme: item});\r\n });\r\n }\r\n };\r\n\r\n onChangePassword = () =>{\r\n this.toogleProfile(null, 'root',true)\r\n this.setState((prevState) => ({ openChangePassword: !prevState.openChangePassword }));\r\n }\r\n\r\n onSetting = () => {\r\n this.toogleProfile(null, 'root',true)\r\n this.setState((prevState) => ({ openSetting: !prevState.openSetting }));\r\n }\r\n\r\n render(){\r\n const {theme, openChildren, anchorEl, openChangePassword, openSetting} = this.state;\r\n const {themes} = this.props;\r\n const salesURL = Config.getUserPicture(Config.profile.URL, require('../../assets/images/general/user_default.svg'));\r\n const userName = Config.profile.UserNameU || 'N/A';\r\n const userDutyName = Config.profile.UserDutyNameU || 'N/A';\r\n return(\r\n \r\n \r\n \r\n this.toogleProfile(e, 'root',true)}\r\n items={()=> {\r\n return (\r\n \r\n {/* Ho so nhan vien */}\r\n\r\n
\r\n \"\"\r\n\r\n
{userName}
\r\n
{userDutyName}
\r\n
\r\n this.onLink('W09F2000')}\r\n />\r\n this.onLink('W09F3000')}\r\n />\r\n\r\n {/*Chu de*/}\r\n this.toogleProfile(e, '', true)}\r\n items={() => {\r\n return (\r\n this.toogleProfile(e, 'theme', true)}>\r\n
\r\n \r\n \r\n {Config.lang(\"DHR_Mau_giao_dien\")}\r\n
\r\n \r\n \r\n }\r\n style={{width: 192, padding: '0 15px 15px 15px'}}\r\n disablePadding\r\n className={'display_row align-center flex-wrap'}>\r\n {themes && themes.map((e, i) => {\r\n return (\r\n this.onChangeTheme(e)}\r\n value={e}>\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n )\r\n }}\r\n cursor={() => {\r\n return (\r\n this.toogleProfile(e, 'theme')}>\r\n \r\n \r\n \r\n \r\n {Config.lang(\"DHR_Mau_giao_dien\")}\r\n \r\n \r\n \r\n )\r\n }}\r\n className=\"popup-choose-theme popup-tooltip\"\r\n />\r\n\r\n {/* Cai dat */}\r\n \r\n\r\n {/* Doi mat khau */}\r\n \r\n\r\n {/*Logout*/}\r\n \r\n this.onLink('logout')}\r\n />\r\n
\r\n )\r\n }}\r\n cursor={()=>{\r\n return(\r\n
this.toogleProfile(e, 'root')}\r\n >\r\n {/*{salesPersonNameU}*/}\r\n \"\"\r\n
\r\n )\r\n }}\r\n />\r\n
\r\n )\r\n }\r\n}\r\n\r\nclass IconPopup extends React.Component {\r\n render() {\r\n const {img} = this.props;\r\n return(\r\n \r\n )\r\n }\r\n}\r\nclass ItemLink extends React.Component {\r\n\r\n render() {\r\n const {children, name, icon, style, className, onClick, img} = this.props;\r\n\r\n return (\r\n \r\n {children && children}\r\n {!children && \r\n \r\n <>\r\n {icon && typeof icon === \"string\" ? : icon}\r\n {img && }\r\n \r\n \r\n {name}\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nItemLink.propTypes = {\r\n style: PropTypes.any,\r\n className: PropTypes.string,\r\n icon: PropTypes.any,\r\n name: PropTypes.string.isRequired,\r\n\r\n onClick: PropTypes.func,\r\n};\r\n\r\nexport default connect(state => ({\r\n themes: state.main.themes,\r\n }),\r\n (dispatch) => ({\r\n mainActions: bindActionCreators(mainActions, dispatch)\r\n })\r\n)(Profile);\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author tranghoang\r\n * @create 2019/01/23 16:50\r\n * @update 2019/10/28 16:50 by TRIHAO\r\n */\r\n\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Config from \"../../config\";\r\nimport {Select, Button} from \"@material-ui/core\";\r\nimport {TextField} from \"../common/form-material\";\r\nimport { ArrowDoubleLeft, ArrowLeft, ArrowRight, ArrowDoubleRight } from \"diginet-core-ui/icons\";\r\nclass Paging extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n totalItems: props.totalItems || 0,\r\n itemPerPage: props.itemPerPage,\r\n currentPage: props.currentPage && props.currentPage !== -1 ? props.currentPage : 0,\r\n listPerPage: props.listPerPage || [10, 15, 20, 30, 50],\r\n disableFirst: true,\r\n disablePrev: true,\r\n disableNext: !(props.totalItems > props.itemPerPage),\r\n disableLast: !(props.totalItems > props.itemPerPage),\r\n typeShort: props.typeShort\r\n };\r\n\r\n this.timeout = null;\r\n }\r\n UNSAFE_componentWillUpdate(nextProps, nextState) {\r\n if (this.props.totalItems !== nextProps.totalItems || (this.props.skipPerPage !== nextProps.skipPerPage && nextProps.skipPerPage === 0)) {\r\n const lastPage = this.getLastPage(nextProps.totalItems, this.state.itemPerPage);\r\n const _initCurrentPage = ((nextProps.currentPage && nextProps.currentPage !== -1) || nextProps.currentPage === 0)? nextProps.currentPage : this.state.currentPage;\r\n const currentPage = _initCurrentPage + 1 > lastPage ? lastPage - 1 : _initCurrentPage;\r\n this.setState({\r\n totalItems: nextProps.totalItems,\r\n listPerPage: nextProps.listPerPage,\r\n disableNext: nextProps.totalItems <= (currentPage + 1) * nextProps.itemPerPage,\r\n disableLast: nextProps.totalItems <= (currentPage + 1) * nextProps.itemPerPage,\r\n });\r\n if (_initCurrentPage !== -1) {\r\n this.setState({\r\n currentPage: currentPage,\r\n });\r\n }\r\n if (_initCurrentPage + 1 > lastPage) {\r\n this.onChangePage(lastPage - 1);\r\n }\r\n }\r\n }\r\n\r\n setTotalItems = (totalItems) => {\r\n const {currentPage} = this.state;\r\n const {itemPerPage} = this.props;\r\n this.setState({\r\n totalItems: totalItems,\r\n disableNext: totalItems <= (currentPage + 1) * itemPerPage,\r\n disableLast: totalItems <= (currentPage + 1) * itemPerPage,\r\n });\r\n };\r\n\r\n getLastPage(totalItems, itemPerPage) {\r\n let lastPage = 0;\r\n\r\n if (totalItems && totalItems >= 0 && itemPerPage && itemPerPage > 0 ) {\r\n lastPage = Math.ceil(totalItems / itemPerPage);\r\n return lastPage;\r\n }\r\n\r\n return lastPage + 1;\r\n }\r\n onChangePage(page) {\r\n const {totalItems, itemPerPage} = this.state;\r\n const lastPage = this.getLastPage(totalItems, itemPerPage);\r\n\r\n if (page < 0) page = 0;\r\n if (page >= lastPage) page = lastPage - 1;\r\n\r\n let disableFirst = false;\r\n let disablePrev = false;\r\n let disableNext = false;\r\n let disableLast = false;\r\n\r\n // If last page = 1. Disable all\r\n if (lastPage === 1) {\r\n disableFirst = true;\r\n disablePrev = true;\r\n disableNext = true;\r\n disableLast = true;\r\n }\r\n\r\n // If current page = last page. Disable Next and Last\r\n if (page + 1 >= lastPage) {\r\n disableNext = true;\r\n disableLast = true;\r\n }\r\n\r\n // If current page = 0. Disable Previous and First\r\n if (0 === page) {\r\n disableFirst = true;\r\n disablePrev = true;\r\n }\r\n\r\n this.setState({\r\n currentPage: page,\r\n disableFirst: disableFirst,\r\n disablePrev: disablePrev,\r\n disableNext: disableNext,\r\n disableLast: disableLast\r\n }, () => {\r\n if (this.props.onChangePage) this.props.onChangePage(page);\r\n });\r\n }\r\n\r\n onChangePerPage(per) {\r\n const {totalItems} = this.state;\r\n const lastPage = this.getLastPage(totalItems, per);\r\n\r\n per = parseInt(per, 10);\r\n\r\n let disableNext = false;\r\n let disableLast = false;\r\n\r\n // If last page = 1. Disable all\r\n if (lastPage === 1) {\r\n disableNext = true;\r\n disableLast = true;\r\n }\r\n\r\n this.setState({\r\n itemPerPage: per,\r\n currentPage: 0,\r\n disableFirst: true,\r\n disablePrev: true,\r\n disableNext: disableNext,\r\n disableLast: disableLast\r\n }, () => {\r\n if (this.props.onChangePerPage) this.props.onChangePerPage(per);\r\n });\r\n }\r\n\r\n onTypePaging = (e) => {\r\n clearTimeout(this.timeout);\r\n const {totalItems, itemPerPage} = this.state;\r\n const lastPage = this.getLastPage(totalItems, itemPerPage);\r\n const value = e.target.value;\r\n const page = (!value || parseInt(value) < 0) ? 1 : (parseInt(value) > lastPage ? lastPage : parseInt(value));\r\n this.setState({currentPage: page - 1});\r\n this.timeout = setTimeout( () => {\r\n this.onChangePage(page-1);\r\n }, 500);\r\n };\r\n\r\n render() {\r\n const {currentPage, totalItems, itemPerPage, disablePrev, disableNext,typeShort} = this.state;\r\n const {className} = this.props;\r\n const lastPage = this.getLastPage(totalItems, itemPerPage);\r\n\r\n if (!this.props.totalItems && !totalItems) return null;\r\n\r\n if(this.refs['input-page'] && parseInt(this.refs['input-page'].value) !== (currentPage+1)){\r\n this.refs['input-page'].value = currentPage + 1;\r\n }\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n this.onTypePaging(e)}\r\n /> / {lastPage}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {typeShort &&|} \r\n {!typeShort && {Config.lang(\"So_dong\")}}\r\n\r\n \r\n {typeShort &&  | }\r\n {!typeShort ? Config.lang(\"Tong\") + ':' : ''} {totalItems}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nPaging.propTypes = {\r\n reference: PropTypes.any,\r\n totalItems: PropTypes.number,\r\n itemPerPage: PropTypes.number,\r\n currentPage: PropTypes.number,\r\n listPerPage: PropTypes.array,\r\n typeShort:PropTypes.bool,\r\n className: PropTypes.string,\r\n\r\n onChangePage: PropTypes.func,\r\n onChangePerPage: PropTypes.func,\r\n};\r\n\r\nexport default Paging;\r\n","import firebase from 'firebase/app';\r\nimport 'firebase/messaging';\r\nimport \"firebase/analytics\";\r\nimport Config from \"../../config\";\r\n\r\nlet config = null;\r\nexport const fbInitializeApp = () => {\r\n try {\r\n config = JSON.parse(Config.getSetting(\"FIREBASE_UI_CONFIG\"));\r\n if (!config) return null;\r\n firebase.initializeApp(config);\r\n firebase.analytics();\r\n } catch (err) {\r\n if (!/already exists/.test(err.message)) {\r\n console.error('Firebase initialization error', err.stack)\r\n }\r\n }\r\n};\r\n\r\nconst fbGetToken = (options, cb) => {\r\n const vapidKey = Config.getSetting(\"FIREBASE_UI_VAPIDKEY\");\r\n const messaging = firebase.messaging();\r\n messaging.getToken({vapidKey: vapidKey || \"\", ...options})\r\n .then((token) => {\r\n if (token) {\r\n if (cb) cb(null, token);\r\n return token;\r\n // Track the token -> client mapping, by sending to backend server\r\n // show on the UI that permission is secured\r\n } else {\r\n console.log('No registration token available. Request permission to generate one.');\r\n // shows on the UI that permission is required\r\n }\r\n }).catch((err) => {\r\n console.log('An error occurred while retrieving token. ', err);\r\n // catch error while creating client token\r\n });\r\n};\r\n\r\nexport const fbRequestPermission = async (cb) => {\r\n try {\r\n // console.log('====== fbRequestPermission ========');\r\n if (!firebase.messaging.isSupported() || !config) {\r\n return;\r\n }\r\n const swUrl = Config.getRootPath() + \"firebase-messaging-sw.js?c=\" + encodeURIComponent(JSON.stringify(config));\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(function(registration) {\r\n // console.log(\"Registration successful, scope is:\", registration.scope);\r\n fbGetToken({serviceWorkerRegistration : registration}, cb);\r\n })\r\n .catch(function(err) {\r\n fbGetToken(null, cb);\r\n // console.log(\"Service worker registration failed, error:\" , err );\r\n });\r\n } else {\r\n fbGetToken(null, cb);\r\n }\r\n } catch (error) {\r\n if (cb) cb(error);\r\n console.error(error);\r\n }\r\n};\r\n\r\nexport const fbOnMessage = (cb) => {\r\n // console.log('====== fbOnMessage ========');\r\n\r\n try {\r\n if (!firebase.messaging.isSupported() || !config) {\r\n return;\r\n }\r\n\r\n const messaging = firebase.messaging();\r\n // console.log('====== fbOnMessage1 ========');\r\n\r\n messaging.onMessage(function(payload) {\r\n if (cb) cb(null, payload);\r\n });\r\n } catch (error) {\r\n if (cb) cb(error);\r\n console.error(error);\r\n }\r\n};\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 10/14/2020\r\n * @Example\r\n */\r\n\r\nimport Config from \"../../config\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nclass History {\r\n /**\r\n * @param props\r\n * @options: {\r\n * data: [],\r\n * dataCompare: [],\r\n * captions: {},\r\n * action: 0,\r\n * keyExpr: \"\",\r\n * keyTransID: \"\",\r\n * ortherData: [],\r\n * transID, \"\",\r\n * transactionID: \"\",\r\n * transactionName: \"\",\r\n * moduleID: \"\",\r\n * detail: \"\",\r\n * keyForAdd: [],\r\n * keyForEdit: [],\r\n * keyForRemove: [],\r\n * itemRender: () => {}\r\n * }\r\n */\r\n constructor (props) {\r\n const {UserID, UserName, UserNameU} = Config.profile || {};\r\n this.options = {\r\n //original data (required)\r\n data: props && props.data ? props.data : null,\r\n\r\n //Old data to compare\r\n dataCompare: props && props.dataCompare ? props.dataCompare : null,\r\n\r\n //Captions\r\n captions: props && props.captions ? props.captions : null,\r\n\r\n //Actions (options)\r\n action: props && props.action ? props.action : null,\r\n\r\n keyExpr: props && props.keyExpr ? props.keyExpr : \"\",\r\n keyTransID: props && props.keyTransID ? props.keyTransID : \"\",\r\n\r\n ortherData: props && props.ortherData ? props.ortherData : null,\r\n\r\n //TransactionID\r\n transID: props && props.TransID ? props.TransID : \"\",\r\n transactionID: props && props.TransactionID ? props.TransactionID : \"\",\r\n transactionName: props && props.TransactionName ? props.TransactionName : \"\",\r\n moduleID: props && props.ModuleID ? props.ModuleID : \"\",\r\n\r\n userID: props && props.UserID ? props.UserID : (UserID || \"\"),\r\n userName: props && props.UserName ? props.UserName : (UserNameU ? UserNameU : (UserName || \"\")),\r\n\r\n detail: props && props.detail ? props.detail : null,\r\n _noInit: !props || Object.keys(props).length <= 0,\r\n ...props\r\n };\r\n\r\n this.event = {\r\n itemRender: this.options.itemRender ? this.options.itemRender : null\r\n };\r\n\r\n this.connection = Config.controller ? Config.controller : null;\r\n\r\n this._data = [];\r\n\r\n //Init object\r\n this.init();\r\n }\r\n\r\n _setError = (msg) => {\r\n if (msg) console.log(\"=========== History =============\\nError: \" + msg);\r\n return false;\r\n };\r\n\r\n _isEmpty = (value) => {\r\n return value ?? null;\r\n };\r\n\r\n _getNameAction = (action) => {\r\n if (action === 0 || action) {\r\n switch (Number(action)) {\r\n case 0: return \"added\";\r\n case 1: return \"edited\";\r\n case 2: return \"added\";\r\n case 3: return \"removed\";\r\n default: return \"\";\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Create \"Content\": \"\" value...\r\n * @param newData\r\n * @param captions\r\n * @param action\r\n * @param options\r\n * @param dataOldCompare\r\n * @param test\r\n * @returns object \"Content\"\r\n * @private\r\n */\r\n _createContentHistory = (newData, captions, action, options, dataOldCompare, type) => {\r\n if (!newData || !captions || (action !== 0 && !action)) return null;\r\n if (action === 1 && !dataOldCompare) return null;\r\n\r\n const {keyForAdd, keyForEdit, keyForRemove, itemRender, excludeFields} = options || {};\r\n let obj = {};\r\n type = \"Content\" + (type ===\"detail\" ? \"_DETAIL\" : \"\");\r\n let objDetail = null;\r\n let isDiff = false;\r\n if (action !== 1) { //Khong phai edit\r\n Object.keys(captions).forEach(cap => {\r\n if (excludeFields && excludeFields.includes(cap)) return false; //Escapse fields in exclude field..\r\n if (action === 0 && keyForAdd && !keyForAdd.includes(cap)) return false; //Depend of keyForAdd when keyForAdd had inputed\r\n if (action === 3 && keyForRemove && !keyForRemove.includes(cap)) return false; //Depend of keyForRemove when keyForRemove had inputed\r\n const key = captions[cap] ? captions[cap] : \"data_\" + cap;\r\n const param = {data: newData, oldData: null, action: action, key: cap, item: {[key]: captions[cap]}, value: newData[cap]};\r\n obj[key] = (itemRender && itemRender(param, type, newData[cap])) ?? this._isEmpty(newData[cap]);\r\n });\r\n objDetail = this._createDetail(options);\r\n obj = Object.assign(obj, objDetail);\r\n } else {\r\n Object.keys(captions).forEach(cap => {\r\n if (excludeFields && excludeFields.includes(cap)) return false;\r\n if (keyForEdit && !keyForEdit.includes(cap)) return false; //Depend of keyForEdit when keyForEdit had inputed\r\n const key = captions[cap] ? captions[cap] : \"data_\" + cap;\r\n const param = {data: newData, oldData: dataOldCompare, action: action, key: cap, item: {[cap]: captions[cap]}};\r\n if (dataOldCompare[cap] !== newData[cap]) {\r\n isDiff = true;\r\n obj[key] = {\r\n old: (itemRender && itemRender({\r\n ...param,\r\n value: dataOldCompare[cap],\r\n }, type + \"_OLD\", dataOldCompare[cap])) ?? this._isEmpty(dataOldCompare[cap]),\r\n new: (itemRender && itemRender({\r\n ...param,\r\n value: newData[cap],\r\n }, type + \"_NEW\", newData[cap])) ?? this._isEmpty(newData[cap]),\r\n };\r\n } else {\r\n obj[key] = (itemRender && itemRender({\r\n ...param,\r\n value: newData[cap],\r\n }, type, newData[cap])) ?? this._isEmpty(newData[cap]);\r\n }\r\n });\r\n objDetail = this._createDetail(options);\r\n obj = Object.assign(obj, objDetail);\r\n }\r\n if (action !== 1) {\r\n return Object.keys(obj).length > 0 ? obj : null;\r\n } else {\r\n return (isDiff || objDetail) && Object.keys(obj).length > 0 ? obj : null;\r\n }\r\n };\r\n\r\n /**\r\n * Create key for data detail in Content value..\r\n * @param options\r\n * @param master\r\n * @returns object \"Content\"\r\n * @private\r\n */\r\n _createDetail = (options) => {\r\n const {detail} = options || this.options;\r\n const obj = {};\r\n if (detail && Object.keys(detail).length > 0) {\r\n Object.keys(detail).forEach(key => {\r\n obj[key] = detail[key];\r\n });\r\n }\r\n return Object.keys(obj).length > 0 ? obj : null;\r\n };\r\n\r\n /**\r\n * Init data to save history...\r\n * @param options\r\n * @param returnData\r\n * @returns {Promise}\r\n */\r\n init = async (options, returnData = false) => {\r\n options = options || this.options;\r\n let {data: newData, dataCompare, captions, action, transID, transactionID, transactionName,\r\n moduleID, keyExpr, keyTransID, ortherData, event, userID, userName, _noInit\r\n } = options;\r\n if (Object.keys(options).length <= 0 || _noInit) return false;\r\n if (!newData) return this._setError(\"Missing data\");\r\n if (!captions) return this._setError(\"Missing captions data\");\r\n if (action === 1 && !dataCompare) return this._setError(\"Missing dataCompare\");\r\n if (action === 1 && Object.is(newData) !== Object.is(dataCompare)) return this._setError(\"Input data and dataCompare isn't same datatype\");\r\n if (!transID || !transactionID || !transactionName) return this._setError(\"TransID or TransactionID or TransactionName is missing\");\r\n\r\n let data = [];\r\n let dataType = newData ? Array.isArray(newData) ? \"array\" : (typeof newData === \"object\" ? \"object\" : null) : null;\r\n const {itemRender} = event || this.event;\r\n\r\n let param = {};\r\n let el = null;\r\n switch (dataType) {\r\n case \"object\":\r\n const _TransID = transID ? transID : (newData[keyTransID] ? newData[keyTransID] : newData[keyExpr]);\r\n if (action < 0 || (action !== 0 && !action)) {\r\n [0,1,3].forEach(_action => {\r\n param = {data: newData, oldData: dataCompare, action: _action,captions: captions};\r\n const content = this._createContentHistory(newData, captions, _action, options, dataCompare);\r\n if (content) {\r\n el = {\r\n ModuleID: itemRender && itemRender(param, \"ModuleID\") ? itemRender(param, \"ModuleID\") : (moduleID || \"\"),\r\n TransactionID: itemRender && itemRender(param, \"TransactionID\") ? itemRender(param, \"TransactionID\") : (transactionID || \"\"),\r\n TransactionName: itemRender && itemRender(param, \"TransactionName\") ? itemRender(param, \"TransactionName\") : (transactionName || \"\"),\r\n TransID: itemRender && itemRender(param, \"TransID\") ? itemRender(param, \"TransID\") : (_TransID || _TransID === 0 ? _TransID : \"\"),\r\n Content: content,\r\n UserID: userID || \"\",\r\n UserName: userName || \"\",\r\n Action: itemRender && itemRender(param, \"Action\") ? itemRender(param, \"Action\") : (_action || 0),\r\n };\r\n data.push(el);\r\n }\r\n });\r\n } else {\r\n param = {data: newData, oldData: dataCompare, action: action,captions: captions};\r\n const content = this._createContentHistory(newData, captions, action, options, dataCompare);\r\n if (content) {\r\n el = {\r\n ModuleID: itemRender && itemRender(param, \"ModuleID\") ? itemRender(param, \"ModuleID\") : (moduleID || \"\"),\r\n TransactionID: itemRender && itemRender(param, \"TransactionID\") ? itemRender(param, \"TransactionID\") : (transactionID || \"\"),\r\n TransactionName: itemRender && itemRender(param, \"TransactionName\") ? itemRender(param, \"TransactionName\") : (transactionName || \"\"),\r\n TransID: itemRender && itemRender(param, \"TransID\") ? itemRender(param, \"TransID\") : (_TransID || _TransID === 0 ? _TransID : \"\"),\r\n Content: content,\r\n UserID: userID || \"\",\r\n UserName: userName || \"\",\r\n Action: itemRender && itemRender(param, \"Action\") ? itemRender(param, \"Action\") : (action || 0),\r\n };\r\n data.push(el);\r\n }\r\n }\r\n\r\n break;\r\n case \"array\":\r\n //Array..\r\n newData = newData ? newData : [];\r\n let oldData = dataCompare ? dataCompare : [];\r\n if (action < 0 || (action !== 0 && !action)) { // Truong hop ko truyen action se tu dinh nghia action boi 2 array\r\n const newDataKeys = newData.map(d => d[keyExpr]);\r\n const oldDataKeys = oldData.map(d => d[keyExpr]);\r\n const added = newData.filter(d => oldDataKeys.indexOf(d[keyExpr]) <= -1).map(d => ({...d, action: 2}));\r\n const edited = newData.filter(d => oldDataKeys.indexOf(d[keyExpr]) > -1).map(d => ({...d, action: 1}));\r\n const removed = oldData.filter(d => newDataKeys.indexOf(d[keyExpr]) <= -1).map(d => ({...d, action: 3}));\r\n const arr = added.concat(edited).concat(removed); //Gop mang\r\n arr.forEach(_d => {\r\n const _action = _d.action;\r\n const _dataOld = oldData && oldData.find(old => old[keyExpr] === _d[keyExpr]);\r\n if (_action === 1 && !_dataOld) return false;\r\n param = {data: _d, oldData: _dataOld, action: _action, captions: captions};\r\n const content = this._createContentHistory(_d, captions, _action, options, _dataOld);\r\n const _TransID = transID ? transID : (_d[keyTransID] ? _d[keyTransID] : _d[keyExpr]);\r\n if (content) {\r\n el = {\r\n ModuleID: itemRender && itemRender(param, \"ModuleID\") ? itemRender(param, \"ModuleID\") : (moduleID || \"\"),\r\n TransactionID: itemRender && itemRender(param, \"TransactionID\") ? itemRender(param, \"TransactionID\") : (transactionID || \"\"),\r\n TransactionName: itemRender && itemRender(param, \"TransactionName\") ? itemRender(param, \"TransactionName\") : (transactionName || \"\"),\r\n TransID: itemRender && itemRender(param, \"TransID\") ? itemRender(param, \"TransID\") : (_TransID || _TransID === 0 ? _TransID : \"\"),\r\n Content: content,\r\n UserID: userID || \"\",\r\n UserName: userName || \"\",\r\n Action: itemRender && itemRender(param, \"Action\") ? itemRender(param, \"Action\") : (_action || 2),\r\n };\r\n data.push(el);\r\n }\r\n });\r\n\r\n } else { // Truong hop truyen action cu the cho truong hop array\r\n newData.forEach(_d => {\r\n const _dataOld = oldData && oldData.find(old => old[keyExpr] === _d[keyExpr]);\r\n if (action === 1 && !_dataOld) return false;\r\n param = {data: _d, oldData: _dataOld, action: action, captions: captions};\r\n const content = this._createContentHistory(_d, captions, action, options, _dataOld);\r\n const _TransID = transID ? transID : (_d[keyTransID] ? _d[keyTransID] : _d[keyExpr]);\r\n if (content) {\r\n el = {\r\n ModuleID: itemRender && itemRender(param, \"ModuleID\") ? itemRender(param, \"ModuleID\") : (moduleID || \"\"),\r\n TransactionID: itemRender && itemRender(param, \"TransactionID\") ? itemRender(param, \"TransactionID\") : (transactionID || \"\"),\r\n TransactionName: itemRender && itemRender(param, \"TransactionName\") ? itemRender(param, \"TransactionName\") : (transactionName || \"\"),\r\n TransID: itemRender && itemRender(param, \"TransID\") ? itemRender(param, \"TransID\") : (_TransID || _TransID === 0 ? _TransID : \"\"),\r\n Content: content,\r\n UserID: userID || \"\",\r\n UserName: userName || \"\",\r\n Action: itemRender && itemRender(param, \"Action\") ? itemRender(param, \"Action\") : (action || 0),\r\n };\r\n data.push(el);\r\n }\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (ortherData && ortherData.length > 0) {\r\n data = ortherData.concat(data);\r\n }\r\n\r\n if (returnData) return data;\r\n this._data = data;\r\n\r\n };\r\n\r\n create = (options, importData = false) => {\r\n if (options) {\r\n options = Object.assign(options, this.options);\r\n const data = this.init(options, true);\r\n if (importData) this._data = this._data.concat(data);\r\n return importData ? this._data : data;\r\n } else {\r\n this.init();\r\n }\r\n };\r\n\r\n createDetailHistory = (key, data, dataCompare, captions, keyExpr, action, options ) => {\r\n if (!key) return this._setError(\"Detail: Missing key\");\r\n if (!data) return this._setError(\"Detail: Missing data\");\r\n if (!captions) return this._setError(\"Detail: Missing captions\");\r\n if (action === 1 && !dataCompare) return this._setError(\"Detail: Missing dataCompare\");\r\n if (action === 1 && Object.is(data) !== Object.is(dataCompare)) return this._setError(\"Detail: data and dataCompare isn't same datatype\");\r\n\r\n let _data = {};\r\n if (Object.is(data)) { //data is object\r\n if (action === 0 || !action) {\r\n const content = this._createContentHistory(data, captions, action, options, dataCompare, \"detail\");\r\n const name = this._getNameAction(action);\r\n if (name && content) _data[name] = [content];\r\n } else {\r\n this._setError(\"Detail: Missing action\");\r\n return null;\r\n }\r\n } else if (Array.isArray(data)) {\r\n if (!keyExpr) return this._setError(\"Detail: Missing keyExpr\");\r\n //Array..\r\n const newData = data ? data : [];\r\n let oldData = dataCompare ? dataCompare : [];\r\n if (action < 0 || (action !== 0 && !action)) { // Truong hop ko truyen action se tu dinh nghia action boi 2 array\r\n const newDataKeys = newData.map(d => d[keyExpr]);\r\n const oldDataKeys = oldData.map(d => d[keyExpr]);\r\n const added = newData.filter(d => oldDataKeys.indexOf(d[keyExpr]) <= -1).map(d => ({...d, action: 2}));\r\n const edited = newData.filter(d => oldDataKeys.indexOf(d[keyExpr]) > -1).map(d => ({...d, action: 1}));\r\n const removed = oldData.filter(d => newDataKeys.indexOf(d[keyExpr]) <= -1).map(d => ({...d, action: 3}));\r\n const arr = added.concat(edited).concat(removed); //Gop mang\r\n arr.forEach(_d => {\r\n const _action = _d.action;\r\n const name = this._getNameAction(_action);\r\n // if (name && !_data[name]) return false;\r\n const _dataOld = oldData && oldData.find(old => old[keyExpr] === _d[keyExpr]);\r\n if (_action === 1 && !_dataOld) return false;\r\n const content = this._createContentHistory(_d, captions, _action, options, _dataOld, \"detail\");\r\n if (name && content) {\r\n if (!_data[name]) _data[name] = [];\r\n _data[name].push(content);\r\n }\r\n });\r\n\r\n } else { // Truong hop truyen action cu the cho truong hop array\r\n newData.forEach(_d => {\r\n const _dataOld = oldData && oldData.find(old => old[keyExpr] === _d[keyExpr]);\r\n if (action === 1 && !_dataOld) return false;\r\n const name = this._getNameAction(action);\r\n // if (name && !_data[name]) _data[name] = [];\r\n const content = this._createContentHistory(_d, captions, action, options, _dataOld, \"detail\");\r\n if (name && content) {\r\n if (!_data[name]) _data[name] = [];\r\n _data[name].push(content);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (_data && Object.keys(_data).length > 0) {\r\n const {detail} = this.options;\r\n if (!detail) {\r\n this.options.detail = {[key]: _data};\r\n } else {\r\n this.options.detail[key] = _data;\r\n }\r\n }\r\n this.init();\r\n };\r\n\r\n options = (key, value) => {\r\n this.options[key] = value;\r\n this.init();\r\n };\r\n\r\n refresh = () => {\r\n this.init();\r\n };\r\n\r\n get = () => {\r\n this.refresh();\r\n return this._data;\r\n };\r\n\r\n import = (data) => {\r\n if (data && data.length > 0) {\r\n this._data = this._data.concat(data);\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n setConnection = (newConnection) => {\r\n this.connection = newConnection;\r\n };\r\n\r\n save = async (cb, data2) => {\r\n let status = false;\r\n const data = data2 || this._data;\r\n if (!data?.length) return false;\r\n const params = {\r\n attributes: JSON.stringify(data),\r\n };\r\n if (this.connection) {\r\n await this.connection.saveHistory(params, (error, data) => {\r\n cb && cb(error, data);\r\n status = !error;\r\n });\r\n }\r\n if(!status){\r\n setTimeout(()=>{\r\n Config.notify.show(\"error\", Config.lang(\"Luu_lich_su_khong_thanh_cong\"), 2000);\r\n }, 2000);\r\n }\r\n return status;\r\n };\r\n\r\n}\r\n\r\nHistory.propTypes = {\r\n data: PropTypes.any, //{} or []\r\n dataCompare: PropTypes.any, //{} or []\r\n captions: PropTypes.object,\r\n action: PropTypes.number,\r\n keyExpr: PropTypes.string,\r\n keyTransID: PropTypes.string,\r\n ortherData: PropTypes.array,\r\n transID: PropTypes.string,\r\n transactionID: PropTypes.string,\r\n transactionName: PropTypes.string,\r\n moduleID: PropTypes.string,\r\n keyForAdd: PropTypes.array,\r\n keyForEdit: PropTypes.array,\r\n keyForRemove: PropTypes.array,\r\n\r\n itemRender: PropTypes.func,\r\n};\r\n\r\nexport default History;\r\n","export default class OrgChart extends HTMLElement {\r\n constructor(options) {\r\n super(); // always call super() first in the ctor.\r\n\r\n /* Frankly, I do believe Show DOM has the narrow usage range. */\r\n // Attach a shadow root to the element.\r\n // let shadowRoot = this.attachShadow({mode: 'open'});\r\n\r\n // shadowRoot.innerHTML = `\r\n // \r\n //
\r\n // `;\r\n\r\n // Promise.prototype.finally = function (callback) {\r\n // let P = this.constructor;\r\n //\r\n // return this.then(\r\n // value => P.resolve(callback()).then(() => value),\r\n // reason => P.resolve(callback()).then(() => { throw reason; })\r\n // );\r\n // };\r\n\r\n let defaultOptions = {\r\n 'nodeTitle': 'name',\r\n 'nodeId': 'id',\r\n 'toggleSiblingsResp': false,\r\n 'depth': 999,\r\n 'chartClass': '',\r\n 'parentNodeSymbol': 'fa-users',\r\n 'draggable': false,\r\n 'direction': 't2b',\r\n 'pan': false,\r\n 'zoom': false\r\n },\r\n opts = Object.assign(defaultOptions, options);\r\n\r\n this.options = opts;\r\n\r\n this.addEventListener('click', this._clickChart.bind(this));\r\n\r\n if (opts.pan && opts.chartContainer) {\r\n let chartContainer = document.querySelector(opts.chartContainer);\r\n\r\n chartContainer.style.overflow = 'hidden';\r\n this.addEventListener('mousedown', this._onPanStart.bind(this));\r\n this.addEventListener('touchstart', this._onPanStart.bind(this));\r\n document.body.addEventListener('mouseup', this._onPanEnd.bind(this));\r\n document.body.addEventListener('touchend', this._onPanEnd.bind(this));\r\n }\r\n\r\n if (opts.zoom && opts.chartContainer) {\r\n let chartContainer = document.querySelector(opts.chartContainer);\r\n\r\n chartContainer.addEventListener('wheel', this._onWheeling.bind(this));\r\n chartContainer.addEventListener('touchstart', this._onTouchStart.bind(this));\r\n document.body.addEventListener('touchmove', this._onTouchMove.bind(this));\r\n document.body.addEventListener('touchend', this._onTouchEnd.bind(this));\r\n }\r\n }\r\n connectedCallback() {\r\n let that = this,\r\n opts = this.options,\r\n data = opts.data;\r\n\r\n this.setAttribute('class', 'orgchart' + (opts.chartClass !== '' ? ' ' + opts.chartClass : '') +\r\n (opts.direction !== 't2b' ? ' ' + opts.direction : ''));\r\n if (typeof data === 'object') { // local json datasource\r\n this.buildHierarchy(this, opts.ajaxURL ? data : this._attachRel(data, '00'), 0);\r\n } else if (typeof data === 'string' && data.startsWith('#')) { // ul datasource\r\n this.buildHierarchy(this, this._buildJsonDS(document.querySelector(data).children[0]), 0);\r\n } else { // ajax datasource\r\n let spinner = document.createElement('i');\r\n\r\n spinner.setAttribute('class', 'fa fa-circle-o-notch fa-spin spinner');\r\n this.appendChild(spinner);\r\n this._getJSON(data)\r\n .then(function (resp) {\r\n that.buildHierarchy(that, opts.ajaxURL ? resp : that._attachRel(resp, '00'), 0);\r\n })\r\n .catch(function (err) {\r\n console.error('failed to fetch datasource for orgchart', err);\r\n })\r\n .finally(function () {\r\n let spinner = that.querySelector('.spinner');\r\n\r\n spinner.parentNode.removeChild(spinner);\r\n });\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n\r\n }\r\n\r\n attributeChangedCallback(attrName, oldVal, newVal) {\r\n\r\n }\r\n\r\n _closest(el, fn) {\r\n return el && ((fn(el) && el !== this) ? el : this._closest(el.parentNode, fn));\r\n }\r\n _siblings(el, expr) {\r\n return Array.from(el.parentNode.children).filter((child) => {\r\n if (child !== el) {\r\n if (expr) {\r\n return el.matches(expr);\r\n }\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n _prevAll(el, expr) {\r\n let sibs = [],\r\n prevSib = el.previousElementSibling;\r\n\r\n while (prevSib) {\r\n if (!expr || prevSib.matches(expr)) {\r\n sibs.push(prevSib);\r\n }\r\n prevSib = prevSib.previousElementSibling;\r\n }\r\n return sibs;\r\n }\r\n _nextAll(el, expr) {\r\n let sibs = [];\r\n let nextSib = el.nextElementSibling;\r\n\r\n while (nextSib) {\r\n if (!expr || nextSib.matches(expr)) {\r\n sibs.push(nextSib);\r\n }\r\n nextSib = nextSib.nextElementSibling;\r\n }\r\n return sibs;\r\n }\r\n _isVisible(el) {\r\n return el.offsetParent !== null;\r\n }\r\n _addClass(elements, classNames) {\r\n elements.forEach((el) => {\r\n if (classNames.indexOf(' ') > 0) {\r\n classNames.split(' ').forEach((className) => el.classList.add(className));\r\n } else {\r\n el.classList.add(classNames);\r\n }\r\n });\r\n }\r\n _removeClass(elements, classNames) {\r\n elements.forEach((el) => {\r\n if (classNames.indexOf(' ') > 0) {\r\n classNames.split(' ').forEach((className) => el.classList.remove(className));\r\n } else {\r\n el.classList.remove(classNames);\r\n }\r\n });\r\n }\r\n _css(elements, prop, val) {\r\n elements.forEach((el) => {\r\n el.style[prop] = val;\r\n });\r\n }\r\n _removeAttr(elements, attr) {\r\n elements.forEach((el) => {\r\n el.removeAttribute(attr);\r\n });\r\n }\r\n _one(el, type, listener, self) {\r\n let one = function (event) {\r\n try {\r\n listener.call(self, event);\r\n } finally {\r\n el.removeEventListener(type, one);\r\n }\r\n };\r\n\r\n el.addEventListener(type, one);\r\n }\r\n _getDescElements(ancestors, selector) {\r\n let results = [];\r\n\r\n ancestors.forEach((el) => results.push(...el.querySelectorAll(selector)));\r\n return results;\r\n }\r\n _getJSON(url) {\r\n return new Promise(function (resolve, reject) {\r\n let xhr = new XMLHttpRequest();\r\n\r\n function handler() {\r\n if (this.readyState !== 4) {\r\n return;\r\n }\r\n if (this.status === 200) {\r\n resolve(JSON.parse(this.response));\r\n } else {\r\n reject(new Error(this.statusText));\r\n }\r\n }\r\n xhr.open('GET', url);\r\n xhr.onreadystatechange = handler;\r\n xhr.responseType = 'json';\r\n // xhr.setRequestHeader('Accept', 'application/json');\r\n xhr.setRequestHeader('Content-Type', 'application/json');\r\n xhr.send();\r\n });\r\n }\r\n _buildJsonDS(li) {\r\n let subObj = {\r\n 'name': li.firstChild.textContent.trim(),\r\n 'relationship': (li.parentNode.parentNode.nodeName === 'LI' ? '1' : '0') +\r\n (li.parentNode.children.length > 1 ? 1 : 0) + (li.children.length ? 1 : 0)\r\n };\r\n\r\n if (li.id) {\r\n subObj.id = li.id;\r\n }\r\n if (li.querySelector('ul')) {\r\n Array.from(li.querySelector('ul').children).forEach((el) => {\r\n if (!subObj.children) { subObj.children = []; }\r\n subObj.children.push(this._buildJsonDS(el));\r\n });\r\n }\r\n return subObj;\r\n }\r\n _attachRel(data, flags) {\r\n data.relationship = flags + (data.children && data.children.length > 0 ? 1 : 0);\r\n if (data.children) {\r\n for (let item of data.children) {\r\n this._attachRel(item, '1' + (data.children.length > 1 ? 1 : 0));\r\n }\r\n }\r\n return data;\r\n }\r\n _repaint(node) {\r\n if (node) {\r\n node.style.offsetWidth = node.offsetWidth;\r\n }\r\n }\r\n // whether the cursor is hovering over the node\r\n _isInAction(node) {\r\n return node.querySelector(':scope > .edge').className.indexOf('fa-') > -1;\r\n }\r\n // detect the exist/display state of related node\r\n _getNodeState(node, relation) {\r\n let criteria,\r\n state = { 'exist': false, 'visible': false };\r\n\r\n if (relation === 'parent') {\r\n criteria = this._closest(node, (el) => el.classList && el.classList.contains('nodes'));\r\n if (criteria) {\r\n state.exist = true;\r\n }\r\n if (state.exist && this._isVisible(criteria.parentNode.children[0])) {\r\n state.visible = true;\r\n }\r\n } else if (relation === 'children') {\r\n criteria = this._closest(node, (el) => el.nodeName === 'TR').nextElementSibling;\r\n if (criteria) {\r\n state.exist = true;\r\n }\r\n if (state.exist && this._isVisible(criteria)) {\r\n state.visible = true;\r\n }\r\n } else if (relation === 'siblings') {\r\n criteria = this._siblings(this._closest(node, (el) => el.nodeName === 'TABLE').parentNode);\r\n if (criteria.length) {\r\n state.exist = true;\r\n }\r\n if (state.exist && criteria.some((el) => this._isVisible(el))) {\r\n state.visible = true;\r\n }\r\n }\r\n\r\n return state;\r\n }\r\n // find the related nodes\r\n getRelatedNodes(node, relation) {\r\n if (relation === 'parent') {\r\n return this._closest(node, (el) => el.classList.contains('nodes'))\r\n .parentNode.children[0].querySelector('.node');\r\n } else if (relation === 'children') {\r\n return Array.from(this._closest(node, (el) => el.nodeName === 'TABLE').lastChild.children)\r\n .map((el) => el.querySelector('.node'));\r\n } else if (relation === 'siblings') {\r\n return this._siblings(this._closest(node, (el) => el.nodeName === 'TABLE').parentNode)\r\n .map((el) => el.querySelector('.node'));\r\n }\r\n return [];\r\n }\r\n _switchHorizontalArrow(node) {\r\n let opts = this.options,\r\n leftEdge = node.querySelector('.leftEdge'),\r\n rightEdge = node.querySelector('.rightEdge'),\r\n temp = this._closest(node, (el) => el.nodeName === 'TABLE').parentNode;\r\n\r\n if (opts.toggleSiblingsResp && (typeof opts.ajaxURL === 'undefined' ||\r\n this._closest(node, (el) => el.classList.contains('.nodes')).dataset.siblingsLoaded)) {\r\n let prevSib = temp.previousElementSibling,\r\n nextSib = temp.nextElementSibling;\r\n\r\n if (prevSib) {\r\n if (prevSib.classList.contains('hidden')) {\r\n leftEdge.classList.add('fa-chevron-left');\r\n leftEdge.classList.remove('fa-chevron-right');\r\n } else {\r\n leftEdge.classList.add('fa-chevron-right');\r\n leftEdge.classList.remove('fa-chevron-left');\r\n }\r\n }\r\n if (nextSib) {\r\n if (nextSib.classList.contains('hidden')) {\r\n rightEdge.classList.add('fa-chevron-right');\r\n rightEdge.classList.remove('fa-chevron-left');\r\n } else {\r\n rightEdge.classList.add('fa-chevron-left');\r\n rightEdge.classList.remove('fa-chevron-right');\r\n }\r\n }\r\n } else {\r\n let sibs = this._siblings(temp),\r\n sibsVisible = sibs.length ? !sibs.some((el) => el.classList.contains('hidden')) : false;\r\n\r\n leftEdge.classList.toggle('fa-chevron-right', sibsVisible);\r\n leftEdge.classList.toggle('fa-chevron-left', !sibsVisible);\r\n rightEdge.classList.toggle('fa-chevron-left', sibsVisible);\r\n rightEdge.classList.toggle('fa-chevron-right', !sibsVisible);\r\n }\r\n }\r\n _hoverNode(event) {\r\n let node = event.target,\r\n flag = false,\r\n topEdge = node.querySelector(':scope > .topEdge'),\r\n bottomEdge = node.querySelector(':scope > .bottomEdge'),\r\n leftEdge = node.querySelector(':scope > .leftEdge');\r\n\r\n if (event.type === 'mouseenter') {\r\n if (topEdge) {\r\n flag = this._getNodeState(node, 'parent').visible;\r\n topEdge.classList.toggle('fa-chevron-up', !flag);\r\n topEdge.classList.toggle('fa-chevron-down', flag);\r\n }\r\n if (bottomEdge) {\r\n flag = this._getNodeState(node, 'children').visible;\r\n bottomEdge.classList.toggle('fa-chevron-down', !flag);\r\n bottomEdge.classList.toggle('fa-chevron-up', flag);\r\n }\r\n if (leftEdge) {\r\n this._switchHorizontalArrow(node);\r\n }\r\n } else {\r\n Array.from(node.querySelectorAll(':scope > .edge')).forEach((el) => {\r\n el.classList.remove('fa-chevron-up', 'fa-chevron-down', 'fa-chevron-right', 'fa-chevron-left');\r\n });\r\n }\r\n }\r\n // define node click event handler\r\n _clickNode(event) {\r\n let clickedNode = event.currentTarget,\r\n focusedNode = this.querySelector('.focused');\r\n\r\n if (focusedNode) {\r\n focusedNode.classList.remove('focused');\r\n }\r\n clickedNode.classList.add('focused');\r\n }\r\n // build the parent node of specific node\r\n _buildParentNode(currentRoot, nodeData, callback) {\r\n let that = this,\r\n table = document.createElement('table');\r\n\r\n nodeData.relationship = '001';\r\n this._createNode(nodeData, 0)\r\n .then(function (nodeDiv) {\r\n nodeDiv.classList.remove('slide-up');\r\n nodeDiv.classList.add('slide-down');\r\n let parentTr = document.createElement('tr'),\r\n superiorLine = document.createElement('tr'),\r\n inferiorLine = document.createElement('tr'),\r\n childrenTr = document.createElement('tr');\r\n\r\n parentTr.setAttribute('class', 'hidden');\r\n parentTr.innerHTML = ``;\r\n table.appendChild(parentTr);\r\n superiorLine.setAttribute('class', 'lines hidden');\r\n superiorLine.innerHTML = `
`;\r\n table.appendChild(superiorLine);\r\n inferiorLine.setAttribute('class', 'lines hidden');\r\n inferiorLine.innerHTML = `  `;\r\n table.appendChild(inferiorLine);\r\n childrenTr.setAttribute('class', 'nodes');\r\n childrenTr.innerHTML = ``;\r\n table.appendChild(childrenTr);\r\n table.querySelector('td').appendChild(nodeDiv);\r\n that.insertBefore(table, that.children[0]);\r\n table.children[3].children[0].appendChild(that.lastChild);\r\n callback();\r\n })\r\n .catch(function (err) {\r\n console.error('Failed to create parent node', err);\r\n });\r\n }\r\n _switchVerticalArrow(arrow) {\r\n arrow.classList.toggle('fa-chevron-up');\r\n arrow.classList.toggle('fa-chevron-down');\r\n }\r\n // show the parent node of the specified node\r\n showParent(node) {\r\n // just show only one superior level\r\n let temp = this._prevAll(this._closest(node, (el) => el.classList.contains('nodes')));\r\n\r\n this._removeClass(temp, 'hidden');\r\n // just show only one line\r\n this._addClass(Array(temp[0].children).slice(1, -1), 'hidden');\r\n // show parent node with animation\r\n let parent = temp[2].querySelector('.node');\r\n\r\n this._one(parent, 'transitionend', function () {\r\n parent.classList.remove('slide');\r\n if (this._isInAction(node)) {\r\n this._switchVerticalArrow(node.querySelector(':scope > .topEdge'));\r\n }\r\n }, this);\r\n this._repaint(parent);\r\n parent.classList.add('slide');\r\n parent.classList.remove('slide-down');\r\n }\r\n // show the sibling nodes of the specified node\r\n showSiblings(node, direction) {\r\n // firstly, show the sibling td tags\r\n let siblings = [],\r\n temp = this._closest(node, (el) => el.nodeName === 'TABLE').parentNode;\r\n\r\n if (direction) {\r\n siblings = direction === 'left' ? this._prevAll(temp) : this._nextAll(temp);\r\n } else {\r\n siblings = this._siblings(temp);\r\n }\r\n this._removeClass(siblings, 'hidden');\r\n // secondly, show the lines\r\n let upperLevel = this._prevAll(this._closest(node, (el) => el.classList.contains('nodes')));\r\n\r\n temp = Array.from(upperLevel[0].querySelectorAll(':scope > .hidden'));\r\n if (direction) {\r\n this._removeClass(temp.slice(0, siblings.length * 2), 'hidden');\r\n } else {\r\n this._removeClass(temp, 'hidden');\r\n }\r\n // thirdly, do some cleaning stuff\r\n if (!this._getNodeState(node, 'parent').visible) {\r\n this._removeClass(upperLevel, 'hidden');\r\n let parent = upperLevel[2].querySelector('.node');\r\n\r\n this._one(parent, 'transitionend', function (event) {\r\n event.target.classList.remove('slide');\r\n }, this);\r\n this._repaint(parent);\r\n parent.classList.add('slide');\r\n parent.classList.remove('slide-down');\r\n }\r\n // lastly, show the sibling nodes with animation\r\n siblings.forEach((sib) => {\r\n Array.from(sib.querySelectorAll('.node')).forEach((node) => {\r\n if (this._isVisible(node)) {\r\n node.classList.add('slide');\r\n node.classList.remove('slide-left', 'slide-right');\r\n }\r\n });\r\n });\r\n this._one(siblings[0].querySelector('.slide'), 'transitionend', function () {\r\n siblings.forEach((sib) => {\r\n this._removeClass(Array.from(sib.querySelectorAll('.slide')), 'slide');\r\n });\r\n if (this._isInAction(node)) {\r\n this._switchHorizontalArrow(node);\r\n node.querySelector('.topEdge').classList.remove('fa-chevron-up');\r\n node.querySelector('.topEdge').classList.add('fa-chevron-down');\r\n }\r\n }, this);\r\n }\r\n // hide the sibling nodes of the specified node\r\n hideSiblings(node, direction) {\r\n let nodeContainer = this._closest(node, (el) => el.nodeName === 'TABLE').parentNode,\r\n siblings = this._siblings(nodeContainer);\r\n\r\n siblings.forEach((sib) => {\r\n if (sib.querySelector('.spinner')) {\r\n this.dataset.inAjax = false;\r\n }\r\n });\r\n\r\n if (!direction || (direction && direction === 'left')) {\r\n let preSibs = this._prevAll(nodeContainer);\r\n\r\n preSibs.forEach((sib) => {\r\n Array.from(sib.querySelectorAll('.node')).forEach((node) => {\r\n if (this._isVisible(node)) {\r\n node.classList.add('slide', 'slide-right');\r\n }\r\n });\r\n });\r\n }\r\n if (!direction || (direction && direction !== 'left')) {\r\n let nextSibs = this._nextAll(nodeContainer);\r\n\r\n nextSibs.forEach((sib) => {\r\n Array.from(sib.querySelectorAll('.node')).forEach((node) => {\r\n if (this._isVisible(node)) {\r\n node.classList.add('slide', 'slide-left');\r\n }\r\n });\r\n });\r\n }\r\n\r\n let animatedNodes = [];\r\n\r\n this._siblings(nodeContainer).forEach((sib) => {\r\n Array.prototype.push.apply(animatedNodes, Array.from(sib.querySelectorAll('.slide')));\r\n });\r\n let lines = [];\r\n\r\n for (let node of animatedNodes) {\r\n let temp = this._closest(node, function (el) {\r\n return el.classList.contains('nodes');\r\n }).previousElementSibling;\r\n\r\n lines.push(temp);\r\n lines.push(temp.previousElementSibling);\r\n }\r\n lines = [...new Set(lines)];\r\n lines.forEach(function (line) {\r\n line.style.visibility = 'hidden';\r\n });\r\n\r\n this._one(animatedNodes[0], 'transitionend', function (event) {\r\n lines.forEach(function (line) {\r\n line.removeAttribute('style');\r\n });\r\n let sibs = [];\r\n\r\n if (direction) {\r\n if (direction === 'left') {\r\n sibs = this._prevAll(nodeContainer, ':not(.hidden)');\r\n } else {\r\n sibs = this._nextAll(nodeContainer, ':not(.hidden)');\r\n }\r\n } else {\r\n sibs = this._siblings(nodeContainer);\r\n }\r\n let temp = Array.from(this._closest(nodeContainer, function (el) {\r\n return el.classList.contains('nodes');\r\n }).previousElementSibling.querySelectorAll(':scope > :not(.hidden)'));\r\n\r\n let someLines = temp.slice(1, direction ? sibs.length * 2 + 1 : -1);\r\n\r\n this._addClass(someLines, 'hidden');\r\n this._removeClass(animatedNodes, 'slide');\r\n sibs.forEach((sib) => {\r\n Array.from(sib.querySelectorAll('.node')).slice(1).forEach((node) => {\r\n if (this._isVisible(node)) {\r\n node.classList.remove('slide-left', 'slide-right');\r\n node.classList.add('slide-up');\r\n }\r\n });\r\n });\r\n sibs.forEach((sib) => {\r\n this._addClass(Array.from(sib.querySelectorAll('.lines')), 'hidden');\r\n this._addClass(Array.from(sib.querySelectorAll('.nodes')), 'hidden');\r\n this._addClass(Array.from(sib.querySelectorAll('.verticalNodes')), 'hidden');\r\n });\r\n this._addClass(sibs, 'hidden');\r\n\r\n if (this._isInAction(node)) {\r\n this._switchHorizontalArrow(node);\r\n }\r\n }, this);\r\n }\r\n // recursively hide the ancestor node and sibling nodes of the specified node\r\n hideParent(node) {\r\n let temp = Array.from(this._closest(node, function (el) {\r\n return el.classList.contains('nodes');\r\n }).parentNode.children).slice(0, 3);\r\n\r\n if (temp[0].querySelector('.spinner')) {\r\n this.dataset.inAjax = false;\r\n }\r\n // hide the sibling nodes\r\n if (this._getNodeState(node, 'siblings').visible) {\r\n this.hideSiblings(node);\r\n }\r\n // hide the lines\r\n let lines = temp.slice(1);\r\n\r\n this._css(lines, 'visibility', 'hidden');\r\n // hide the superior nodes with transition\r\n let parent = temp[0].querySelector('.node'),\r\n grandfatherVisible = this._getNodeState(parent, 'parent').visible;\r\n\r\n if (parent && this._isVisible(parent)) {\r\n parent.classList.add('slide', 'slide-down');\r\n this._one(parent, 'transitionend', function () {\r\n parent.classList.remove('slide');\r\n this._removeAttr(lines, 'style');\r\n this._addClass(temp, 'hidden');\r\n }, this);\r\n }\r\n // if the current node has the parent node, hide it recursively\r\n if (parent && grandfatherVisible) {\r\n this.hideParent(parent);\r\n }\r\n }\r\n // exposed method\r\n addParent(currentRoot, data) {\r\n let that = this;\r\n\r\n this._buildParentNode(currentRoot, data, function () {\r\n if (!currentRoot.querySelector(':scope > .topEdge')) {\r\n let topEdge = document.createElement('i');\r\n\r\n topEdge.setAttribute('class', 'edge verticalEdge topEdge fa');\r\n currentRoot.appendChild(topEdge);\r\n }\r\n that.showParent(currentRoot);\r\n });\r\n }\r\n // start up loading status for requesting new nodes\r\n _startLoading(arrow, node) {\r\n\r\n if (typeof this.dataset.inAjax !== 'undefined' && this.dataset.inAjax === 'true') {\r\n return false;\r\n }\r\n\r\n arrow.classList.add('hidden');\r\n let spinner = document.createElement('i');\r\n\r\n spinner.setAttribute('class', 'fa fa-circle-o-notch fa-spin spinner');\r\n node.appendChild(spinner);\r\n this._addClass(Array.from(node.querySelectorAll(':scope > *:not(.spinner)')), 'hazy');\r\n this.dataset.inAjax = true;\r\n\r\n return true;\r\n }\r\n // terminate loading status for requesting new nodes\r\n _endLoading(arrow, node) {\r\n\r\n arrow.classList.remove('hidden');\r\n node.querySelector(':scope > .spinner').remove();\r\n this._removeClass(Array.from(node.querySelectorAll(':scope > .hazy')), 'hazy');\r\n this.dataset.inAjax = false;\r\n }\r\n // define click event handler for the top edge\r\n _clickTopEdge(event) {\r\n event.stopPropagation();\r\n let that = this,\r\n topEdge = event.target,\r\n node = topEdge.parentNode,\r\n parentState = this._getNodeState(node, 'parent'),\r\n opts = this.options;\r\n\r\n if (parentState.exist) {\r\n let temp = this._closest(node, function (el) {\r\n return el.classList.contains('nodes');\r\n });\r\n let parent = temp.parentNode.firstChild.querySelector('.node');\r\n\r\n if (parent.classList.contains('slide')) { return; }\r\n // hide the ancestor nodes and sibling nodes of the specified node\r\n if (parentState.visible) {\r\n this.hideParent(node);\r\n this._one(parent, 'transitionend', function () {\r\n if (this._isInAction(node)) {\r\n this._switchVerticalArrow(topEdge);\r\n this._switchHorizontalArrow(node);\r\n }\r\n }, this);\r\n } else { // show the ancestors and siblings\r\n this.showParent(node);\r\n }\r\n } else {\r\n // load the new parent node of the specified node by ajax request\r\n let nodeId = topEdge.parentNode.id;\r\n\r\n // start up loading status\r\n if (this._startLoading(topEdge, node)) {\r\n // load new nodes\r\n this._getJSON(typeof opts.ajaxURL.parent === 'function' ?\r\n opts.ajaxURL.parent(node.dataset.source) : opts.ajaxURL.parent + nodeId)\r\n .then(function (resp) {\r\n if (that.dataset.inAjax === 'true') {\r\n if (Object.keys(resp).length) {\r\n that.addParent(node, resp);\r\n }\r\n }\r\n })\r\n .catch(function (err) {\r\n console.error('Failed to get parent node data.', err);\r\n })\r\n .finally(function () {\r\n that._endLoading(topEdge, node);\r\n });\r\n }\r\n }\r\n }\r\n // recursively hide the descendant nodes of the specified node\r\n hideChildren(node) {\r\n let that = this,\r\n temp = this._nextAll(node.parentNode.parentNode),\r\n lastItem = temp[temp.length - 1],\r\n lines = [];\r\n\r\n if (lastItem.querySelector('.spinner')) {\r\n this.dataset.inAjax = false;\r\n }\r\n let descendants = Array.from(lastItem.querySelectorAll('.node')).filter((el) => that._isVisible(el)),\r\n isVerticalDesc = lastItem.classList.contains('verticalNodes');\r\n\r\n if (!isVerticalDesc) {\r\n descendants.forEach((desc) => {\r\n Array.prototype.push.apply(lines,\r\n that._prevAll(that._closest(desc, (el) => el.classList.contains('nodes')), '.lines'));\r\n });\r\n lines = [...new Set(lines)];\r\n this._css(lines, 'visibility', 'hidden');\r\n }\r\n this._one(descendants[0], 'transitionend', function (event) {\r\n this._removeClass(descendants, 'slide');\r\n if (isVerticalDesc) {\r\n that._addClass(temp, 'hidden');\r\n } else {\r\n lines.forEach((el) => {\r\n el.removeAttribute('style');\r\n el.classList.add('hidden');\r\n el.parentNode.lastChild.classList.add('hidden');\r\n });\r\n this._addClass(Array.from(lastItem.querySelectorAll('.verticalNodes')), 'hidden');\r\n }\r\n if (this._isInAction(node)) {\r\n this._switchVerticalArrow(node.querySelector('.bottomEdge'));\r\n }\r\n }, this);\r\n this._addClass(descendants, 'slide slide-up');\r\n }\r\n // show the children nodes of the specified node\r\n showChildren(node) {\r\n let that = this,\r\n temp = this._nextAll(node.parentNode.parentNode),\r\n descendants = [];\r\n\r\n this._removeClass(temp, 'hidden');\r\n if (temp.some((el) => el.classList.contains('verticalNodes'))) {\r\n temp.forEach((el) => {\r\n Array.prototype.push.apply(descendants, Array.from(el.querySelectorAll('.node')).filter((el) => {\r\n return that._isVisible(el);\r\n }));\r\n });\r\n } else {\r\n Array.from(temp[2].children).forEach((el) => {\r\n Array.prototype.push.apply(descendants,\r\n Array.from(el.querySelector('tr').querySelectorAll('.node')).filter((el) => {\r\n return that._isVisible(el);\r\n }));\r\n });\r\n }\r\n // the two following statements are used to enforce browser to repaint\r\n this._repaint(descendants[0]);\r\n this._one(descendants[0], 'transitionend', (event) => {\r\n this._removeClass(descendants, 'slide');\r\n if (this._isInAction(node)) {\r\n this._switchVerticalArrow(node.querySelector('.bottomEdge'));\r\n }\r\n }, this);\r\n this._addClass(descendants, 'slide');\r\n this._removeClass(descendants, 'slide-up');\r\n }\r\n // build the child nodes of specific node\r\n _buildChildNode(appendTo, nodeData, callback) {\r\n let data = nodeData.children || nodeData.siblings;\r\n\r\n appendTo.querySelector('td').setAttribute('colSpan', data.length * 2);\r\n this.buildHierarchy(appendTo, { 'children': data }, 0, callback);\r\n }\r\n // exposed method\r\n addChildren(node, data) {\r\n let that = this,\r\n opts = this.options,\r\n count = 0;\r\n\r\n this.dataset.inEdit = 'addChildren';\r\n this._buildChildNode.call(this, this._closest(node, (el) => el.nodeName === 'TABLE'), data, function () {\r\n if (++count === data.children.length) {\r\n if (!node.querySelector('.bottomEdge')) {\r\n let bottomEdge = document.createElement('i');\r\n\r\n bottomEdge.setAttribute('class', 'edge verticalEdge bottomEdge fa');\r\n node.appendChild(bottomEdge);\r\n }\r\n if (!node.querySelector('.symbol')) {\r\n let symbol = document.createElement('i');\r\n\r\n symbol.setAttribute('class', 'fa ' + opts.parentNodeSymbol + ' symbol');\r\n node.querySelector(':scope > .title').appendChild(symbol);\r\n }\r\n that.showChildren(node);\r\n that.dataset.inEdit = '';\r\n }\r\n });\r\n }\r\n // bind click event handler for the bottom edge\r\n _clickBottomEdge(event) {\r\n event.stopPropagation();\r\n let that = this,\r\n opts = this.options,\r\n bottomEdge = event.target,\r\n node = bottomEdge.parentNode,\r\n childrenState = this._getNodeState(node, 'children');\r\n\r\n if (childrenState.exist) {\r\n let temp = this._closest(node, function (el) {\r\n return el.nodeName === 'TR';\r\n }).parentNode.lastChild;\r\n\r\n if (Array.from(temp.querySelectorAll('.node')).some((node) => {\r\n return this._isVisible(node) && node.classList.contains('slide');\r\n })) { return; }\r\n // hide the descendant nodes of the specified node\r\n if (childrenState.visible) {\r\n this.hideChildren(node);\r\n } else { // show the descendants\r\n this.showChildren(node);\r\n }\r\n } else { // load the new children nodes of the specified node by ajax request\r\n let nodeId = bottomEdge.parentNode.id;\r\n\r\n if (this._startLoading(bottomEdge, node)) {\r\n this._getJSON(typeof opts.ajaxURL.children === 'function' ?\r\n opts.ajaxURL.children(node.dataset.source) : opts.ajaxURL.children + nodeId)\r\n .then(function (resp) {\r\n if (that.dataset.inAjax === 'true') {\r\n if (resp.children.length) {\r\n that.addChildren(node, resp);\r\n }\r\n }\r\n })\r\n .catch(function (err) {\r\n console.error('Failed to get children nodes data', err);\r\n })\r\n .finally(function () {\r\n that._endLoading(bottomEdge, node);\r\n });\r\n }\r\n }\r\n }\r\n // subsequent processing of build sibling nodes\r\n _complementLine(oneSibling, siblingCount, existingSibligCount) {\r\n let temp = oneSibling.parentNode.parentNode.children;\r\n\r\n temp[0].children[0].setAttribute('colspan', siblingCount * 2);\r\n temp[1].children[0].setAttribute('colspan', siblingCount * 2);\r\n for (let i = 0; i < existingSibligCount; i++) {\r\n let rightLine = document.createElement('td'),\r\n leftLine = document.createElement('td');\r\n\r\n rightLine.setAttribute('class', 'rightLine topLine');\r\n rightLine.innerHTML = ' ';\r\n temp[2].insertBefore(rightLine, temp[2].children[1]);\r\n leftLine.setAttribute('class', 'leftLine topLine');\r\n leftLine.innerHTML = ' ';\r\n temp[2].insertBefore(leftLine, temp[2].children[1]);\r\n }\r\n }\r\n // build the sibling nodes of specific node\r\n _buildSiblingNode(nodeChart, nodeData, callback) {\r\n let that = this,\r\n newSiblingCount = nodeData.siblings ? nodeData.siblings.length : nodeData.children.length,\r\n existingSibligCount = nodeChart.parentNode.nodeName === 'TD' ? this._closest(nodeChart, (el) => {\r\n return el.nodeName === 'TR';\r\n }).children.length : 1,\r\n siblingCount = existingSibligCount + newSiblingCount,\r\n insertPostion = (siblingCount > 1) ? Math.floor(siblingCount / 2 - 1) : 0;\r\n\r\n // just build the sibling nodes for the specific node\r\n if (nodeChart.parentNode.nodeName === 'TD') {\r\n let temp = this._prevAll(nodeChart.parentNode.parentNode);\r\n\r\n temp[0].remove();\r\n temp[1].remove();\r\n let childCount = 0;\r\n\r\n that._buildChildNode.call(that, that._closest(nodeChart.parentNode, (el) => el.nodeName === 'TABLE'),\r\n nodeData, () => {\r\n if (++childCount === newSiblingCount) {\r\n let siblingTds = Array.from(that._closest(nodeChart.parentNode, (el) => el.nodeName === 'TABLE')\r\n .lastChild.children);\r\n\r\n if (existingSibligCount > 1) {\r\n let temp = nodeChart.parentNode.parentNode;\r\n\r\n Array.from(temp.children).forEach((el) => {\r\n siblingTds[0].parentNode.insertBefore(el, siblingTds[0]);\r\n });\r\n temp.remove();\r\n that._complementLine(siblingTds[0], siblingCount, existingSibligCount);\r\n that._addClass(siblingTds, 'hidden');\r\n siblingTds.forEach((el) => {\r\n that._addClass(el.querySelectorAll('.node'), 'slide-left');\r\n });\r\n } else {\r\n let temp = nodeChart.parentNode.parentNode;\r\n\r\n siblingTds[insertPostion].parentNode.insertBefore(nodeChart.parentNode, siblingTds[insertPostion + 1]);\r\n temp.remove();\r\n that._complementLine(siblingTds[insertPostion], siblingCount, 1);\r\n that._addClass(siblingTds, 'hidden');\r\n that._addClass(that._getDescElements(siblingTds.slice(0, insertPostion + 1), '.node'), 'slide-right');\r\n that._addClass(that._getDescElements(siblingTds.slice(insertPostion + 1), '.node'), 'slide-left');\r\n }\r\n callback();\r\n }\r\n });\r\n } else { // build the sibling nodes and parent node for the specific ndoe\r\n let nodeCount = 0;\r\n\r\n that.buildHierarchy.call(that, that, nodeData, 0, () => {\r\n if (++nodeCount === siblingCount) {\r\n let temp = nodeChart.nextElementSibling.children[3]\r\n .children[insertPostion],\r\n td = document.createElement('td');\r\n\r\n td.setAttribute('colspan', 2);\r\n td.appendChild(nodeChart);\r\n temp.parentNode.insertBefore(td, temp.nextElementSibling);\r\n that._complementLine(temp, siblingCount, 1);\r\n\r\n let temp2 = that._closest(nodeChart, (el) => el.classList && el.classList.contains('nodes'))\r\n .parentNode.children[0];\r\n\r\n temp2.classList.add('hidden');\r\n that._addClass(Array.from(temp2.querySelectorAll('.node')), 'slide-down');\r\n\r\n let temp3 = this._siblings(nodeChart.parentNode);\r\n\r\n that._addClass(temp3, 'hidden');\r\n that._addClass(that._getDescElements(temp3.slice(0, insertPostion), '.node'), 'slide-right');\r\n that._addClass(that._getDescElements(temp3.slice(insertPostion), '.node'), 'slide-left');\r\n callback();\r\n }\r\n });\r\n }\r\n }\r\n addSiblings(node, data) {\r\n let that = this;\r\n\r\n this.dataset.inEdit = 'addSiblings';\r\n this._buildSiblingNode.call(this, this._closest(node, (el) => el.nodeName === 'TABLE'), data, () => {\r\n that._closest(node, (el) => el.classList && el.classList.contains('nodes'))\r\n .dataset.siblingsLoaded = true;\r\n if (!node.querySelector('.leftEdge')) {\r\n let rightEdge = document.createElement('i'),\r\n leftEdge = document.createElement('i');\r\n\r\n rightEdge.setAttribute('class', 'edge horizontalEdge rightEdge fa');\r\n node.appendChild(rightEdge);\r\n leftEdge.setAttribute('class', 'edge horizontalEdge leftEdge fa');\r\n node.appendChild(leftEdge);\r\n }\r\n that.showSiblings(node);\r\n that.dataset.inEdit = '';\r\n });\r\n }\r\n removeNodes(node) {\r\n let parent = this._closest(node, el => el.nodeName === 'TABLE').parentNode,\r\n sibs = this._siblings(parent.parentNode);\r\n\r\n if (parent.nodeName === 'TD') {\r\n if (this._getNodeState(node, 'siblings').exist) {\r\n sibs[2].querySelector('.topLine').nextElementSibling.remove();\r\n sibs[2].querySelector('.topLine').remove();\r\n sibs[0].children[0].setAttribute('colspan', sibs[2].children.length);\r\n sibs[1].children[0].setAttribute('colspan', sibs[2].children.length);\r\n parent.remove();\r\n } else {\r\n sibs[0].children[0].removeAttribute('colspan');\r\n sibs[0].querySelector('.bottomEdge').remove();\r\n this._siblings(sibs[0]).forEach(el => el.remove());\r\n }\r\n } else {\r\n Array.from(parent.parentNode.children).forEach(el => el.remove());\r\n }\r\n }\r\n // bind click event handler for the left and right edges\r\n _clickHorizontalEdge(event) {\r\n event.stopPropagation();\r\n let that = this,\r\n opts = this.options,\r\n hEdge = event.target,\r\n node = hEdge.parentNode,\r\n siblingsState = this._getNodeState(node, 'siblings');\r\n\r\n if (siblingsState.exist) {\r\n let temp = this._closest(node, function (el) {\r\n return el.nodeName === 'TABLE';\r\n }).parentNode,\r\n siblings = this._siblings(temp);\r\n\r\n if (siblings.some((el) => {\r\n let node = el.querySelector('.node');\r\n\r\n return this._isVisible(node) && node.classList.contains('slide');\r\n })) { return; }\r\n if (opts.toggleSiblingsResp) {\r\n let prevSib = this._closest(node, (el) => el.nodeName === 'TABLE').parentNode.previousElementSibling,\r\n nextSib = this._closest(node, (el) => el.nodeName === 'TABLE').parentNode.nextElementSibling;\r\n\r\n if (hEdge.classList.contains('leftEdge')) {\r\n if (prevSib.classList.contains('hidden')) {\r\n this.showSiblings(node, 'left');\r\n } else {\r\n this.hideSiblings(node, 'left');\r\n }\r\n } else {\r\n if (nextSib.classList.contains('hidden')) {\r\n this.showSiblings(node, 'right');\r\n } else {\r\n this.hideSiblings(node, 'right');\r\n }\r\n }\r\n } else {\r\n if (siblingsState.visible) {\r\n this.hideSiblings(node);\r\n } else {\r\n this.showSiblings(node);\r\n }\r\n }\r\n } else {\r\n // load the new sibling nodes of the specified node by ajax request\r\n let nodeId = hEdge.parentNode.id,\r\n url = (this._getNodeState(node, 'parent').exist) ?\r\n (typeof opts.ajaxURL.siblings === 'function' ?\r\n opts.ajaxURL.siblings(JSON.parse(node.dataset.source)) : opts.ajaxURL.siblings + nodeId) :\r\n (typeof opts.ajaxURL.families === 'function' ?\r\n opts.ajaxURL.families(JSON.parse(node.dataset.source)) : opts.ajaxURL.families + nodeId);\r\n\r\n if (this._startLoading(hEdge, node)) {\r\n this._getJSON(url)\r\n .then(function (resp) {\r\n if (that.dataset.inAjax === 'true') {\r\n if (resp.siblings || resp.children) {\r\n that.addSiblings(node, resp);\r\n }\r\n }\r\n })\r\n .catch(function (err) {\r\n console.error('Failed to get sibling nodes data', err);\r\n })\r\n .finally(function () {\r\n that._endLoading(hEdge, node);\r\n });\r\n }\r\n }\r\n }\r\n // event handler for toggle buttons in Hybrid(horizontal + vertical) OrgChart\r\n _clickToggleButton(event) {\r\n let that = this,\r\n toggleBtn = event.target,\r\n descWrapper = toggleBtn.parentNode.nextElementSibling,\r\n descendants = Array.from(descWrapper.querySelectorAll('.node')),\r\n children = Array.from(descWrapper.children).map(item => item.querySelector('.node'));\r\n\r\n if (children.some((item) => item.classList.contains('slide'))) { return; }\r\n toggleBtn.classList.toggle('fa-plus-square');\r\n toggleBtn.classList.toggle('fa-minus-square');\r\n if (descendants[0].classList.contains('slide-up')) {\r\n descWrapper.classList.remove('hidden');\r\n this._repaint(children[0]);\r\n this._addClass(children, 'slide');\r\n this._removeClass(children, 'slide-up');\r\n this._one(children[0], 'transitionend', () => {\r\n that._removeClass(children, 'slide');\r\n });\r\n } else {\r\n this._addClass(descendants, 'slide slide-up');\r\n this._one(descendants[0], 'transitionend', () => {\r\n that._removeClass(descendants, 'slide');\r\n descendants.forEach(desc => {\r\n let ul = that._closest(desc, function (el) {\r\n return el.nodeName === 'UL';\r\n });\r\n\r\n ul.classList.add('hidden');\r\n });\r\n });\r\n\r\n descendants.forEach(desc => {\r\n let subTBs = Array.from(desc.querySelectorAll('.toggleBtn'));\r\n\r\n that._removeClass(subTBs, 'fa-minus-square');\r\n that._addClass(subTBs, 'fa-plus-square');\r\n });\r\n }\r\n }\r\n _dispatchClickEvent(event) {\r\n let classList = event.target.classList;\r\n\r\n if (classList.contains('topEdge')) {\r\n this._clickTopEdge(event);\r\n } else if (classList.contains('rightEdge') || classList.contains('leftEdge')) {\r\n this._clickHorizontalEdge(event);\r\n } else if (classList.contains('bottomEdge')) {\r\n this._clickBottomEdge(event);\r\n } else if (classList.contains('toggleBtn')) {\r\n this._clickToggleButton(event);\r\n } else {\r\n this._clickNode(event);\r\n }\r\n }\r\n _onDragStart(event) {\r\n let nodeDiv = event.target,\r\n opts = this.options,\r\n isFirefox = /firefox/.test(window.navigator.userAgent.toLowerCase());\r\n\r\n if (isFirefox) {\r\n event.dataTransfer.setData('text/html', 'hack for firefox');\r\n }\r\n // if users enable zoom or direction options\r\n if (this.style.transform) {\r\n let ghostNode, nodeCover;\r\n\r\n if (!document.querySelector('.ghost-node')) {\r\n ghostNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n ghostNode.classList.add('ghost-node');\r\n nodeCover = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n ghostNode.appendChild(nodeCover);\r\n this.appendChild(ghostNode);\r\n } else {\r\n ghostNode = this.querySelector(':scope > .ghost-node');\r\n nodeCover = ghostNode.children[0];\r\n }\r\n let transValues = this.style.transform.split(','),\r\n scale = Math.abs(window.parseFloat((opts.direction === 't2b' || opts.direction === 'b2t') ?\r\n transValues[0].slice(transValues[0].indexOf('(') + 1) : transValues[1]));\r\n\r\n ghostNode.setAttribute('width', nodeDiv.offsetWidth);\r\n ghostNode.setAttribute('height', nodeDiv.offsetHeight);\r\n nodeCover.setAttribute('x', 5 * scale);\r\n nodeCover.setAttribute('y', 5 * scale);\r\n nodeCover.setAttribute('width', 120 * scale);\r\n nodeCover.setAttribute('height', 40 * scale);\r\n nodeCover.setAttribute('rx', 4 * scale);\r\n nodeCover.setAttribute('ry', 4 * scale);\r\n nodeCover.setAttribute('stroke-width', 1 * scale);\r\n let xOffset = event.offsetX * scale,\r\n yOffset = event.offsetY * scale;\r\n\r\n if (opts.direction === 'l2r') {\r\n xOffset = event.offsetY * scale;\r\n yOffset = event.offsetX * scale;\r\n } else if (opts.direction === 'r2l') {\r\n xOffset = nodeDiv.offsetWidth - event.offsetY * scale;\r\n yOffset = event.offsetX * scale;\r\n } else if (opts.direction === 'b2t') {\r\n xOffset = nodeDiv.offsetWidth - event.offsetX * scale;\r\n yOffset = nodeDiv.offsetHeight - event.offsetY * scale;\r\n }\r\n if (isFirefox) { // hack for old version of Firefox(< 48.0)\r\n let ghostNodeWrapper = document.createElement('img');\r\n\r\n ghostNodeWrapper.src = 'data:image/svg+xml;utf8,' + (new XMLSerializer()).serializeToString(ghostNode);\r\n event.dataTransfer.setDragImage(ghostNodeWrapper, xOffset, yOffset);\r\n nodeCover.setAttribute('fill', 'rgb(255, 255, 255)');\r\n nodeCover.setAttribute('stroke', 'rgb(191, 0, 0)');\r\n } else {\r\n event.dataTransfer.setDragImage(ghostNode, xOffset, yOffset);\r\n }\r\n }\r\n let dragged = event.target,\r\n dragZone = this._closest(dragged, (el) => {\r\n return el.classList && el.classList.contains('nodes');\r\n }).parentNode.children[0].querySelector('.node'),\r\n dragHier = Array.from(this._closest(dragged, (el) => {\r\n return el.nodeName === 'TABLE';\r\n }).querySelectorAll('.node'));\r\n\r\n this.dragged = dragged;\r\n Array.from(this.querySelectorAll('.node')).forEach(function (node) {\r\n if (!dragHier.includes(node)) {\r\n if (opts.dropCriteria) {\r\n if (opts.dropCriteria(dragged, dragZone, node)) {\r\n node.classList.add('allowedDrop');\r\n }\r\n } else {\r\n node.classList.add('allowedDrop');\r\n }\r\n }\r\n });\r\n }\r\n _onDragOver(event) {\r\n event.preventDefault();\r\n let dropZone = event.currentTarget;\r\n\r\n if (!dropZone.classList.contains('allowedDrop')) {\r\n event.dataTransfer.dropEffect = 'none';\r\n }\r\n }\r\n _onDragEnd(event) {\r\n Array.from(this.querySelectorAll('.allowedDrop')).forEach(function (el) {\r\n el.classList.remove('allowedDrop');\r\n });\r\n }\r\n _onDrop(event) {\r\n let dropZone = event.currentTarget,\r\n dragged = this.dragged,\r\n dragZone = this._closest(dragged, function (el) {\r\n return el.classList && el.classList.contains('nodes');\r\n }).parentNode.children[0].children[0];\r\n\r\n this._removeClass(Array.from(this.querySelectorAll('.allowedDrop')), 'allowedDrop');\r\n // firstly, deal with the hierarchy of drop zone\r\n if (!dropZone.parentNode.parentNode.nextElementSibling) { // if the drop zone is a leaf node\r\n let bottomEdge = document.createElement('i');\r\n\r\n bottomEdge.setAttribute('class', 'edge verticalEdge bottomEdge fa');\r\n dropZone.appendChild(bottomEdge);\r\n dropZone.parentNode.setAttribute('colspan', 2);\r\n let table = this._closest(dropZone, function (el) {\r\n return el.nodeName === 'TABLE';\r\n }),\r\n upperTr = document.createElement('tr'),\r\n lowerTr = document.createElement('tr'),\r\n nodeTr = document.createElement('tr');\r\n\r\n upperTr.setAttribute('class', 'lines');\r\n upperTr.innerHTML = `
`;\r\n table.appendChild(upperTr);\r\n lowerTr.setAttribute('class', 'lines');\r\n lowerTr.innerHTML = `  `;\r\n table.appendChild(lowerTr);\r\n nodeTr.setAttribute('class', 'nodes');\r\n table.appendChild(nodeTr);\r\n Array.from(dragged.querySelectorAll('.horizontalEdge')).forEach((hEdge) => {\r\n dragged.removeChild(hEdge);\r\n });\r\n let draggedTd = this._closest(dragged, (el) => el.nodeName === 'TABLE').parentNode;\r\n\r\n nodeTr.appendChild(draggedTd);\r\n } else {\r\n let dropColspan = window.parseInt(dropZone.parentNode.colSpan) + 2;\r\n\r\n dropZone.parentNode.setAttribute('colspan', dropColspan);\r\n dropZone.parentNode.parentNode.nextElementSibling.children[0].setAttribute('colspan', dropColspan);\r\n if (!dragged.querySelector('.horizontalEdge')) {\r\n let rightEdge = document.createElement('i'),\r\n leftEdge = document.createElement('i');\r\n\r\n rightEdge.setAttribute('class', 'edge horizontalEdge rightEdge fa');\r\n dragged.appendChild(rightEdge);\r\n leftEdge.setAttribute('class', 'edge horizontalEdge leftEdge fa');\r\n dragged.appendChild(leftEdge);\r\n }\r\n let temp = dropZone.parentNode.parentNode.nextElementSibling.nextElementSibling,\r\n leftline = document.createElement('td'),\r\n rightline = document.createElement('td');\r\n\r\n leftline.setAttribute('class', 'leftLine topLine');\r\n leftline.innerHTML = ` `;\r\n temp.insertBefore(leftline, temp.children[1]);\r\n rightline.setAttribute('class', 'rightLine topLine');\r\n rightline.innerHTML = ` `;\r\n temp.insertBefore(rightline, temp.children[2]);\r\n temp.nextElementSibling.appendChild(this._closest(dragged, function (el) {\r\n return el.nodeName === 'TABLE';\r\n }).parentNode);\r\n\r\n let dropSibs = this._siblings(this._closest(dragged, function (el) {\r\n return el.nodeName === 'TABLE';\r\n }).parentNode).map((el) => el.querySelector('.node'));\r\n\r\n if (dropSibs.length === 1) {\r\n let rightEdge = document.createElement('i'),\r\n leftEdge = document.createElement('i');\r\n\r\n rightEdge.setAttribute('class', 'edge horizontalEdge rightEdge fa');\r\n dropSibs[0].appendChild(rightEdge);\r\n leftEdge.setAttribute('class', 'edge horizontalEdge leftEdge fa');\r\n dropSibs[0].appendChild(leftEdge);\r\n }\r\n }\r\n // secondly, deal with the hierarchy of dragged node\r\n let dragColSpan = window.parseInt(dragZone.colSpan);\r\n\r\n if (dragColSpan > 2) {\r\n dragZone.setAttribute('colspan', dragColSpan - 2);\r\n dragZone.parentNode.nextElementSibling.children[0].setAttribute('colspan', dragColSpan - 2);\r\n let temp = dragZone.parentNode.nextElementSibling.nextElementSibling;\r\n\r\n temp.children[1].remove();\r\n temp.children[1].remove();\r\n\r\n let dragSibs = Array.from(dragZone.parentNode.parentNode.children[3].children).map(function (td) {\r\n return td.querySelector('.node');\r\n });\r\n\r\n if (dragSibs.length === 1) {\r\n dragSibs[0].querySelector('.leftEdge').remove();\r\n dragSibs[0].querySelector('.rightEdge').remove();\r\n }\r\n } else {\r\n dragZone.removeAttribute('colspan');\r\n dragZone.querySelector('.node').removeChild(dragZone.querySelector('.bottomEdge'));\r\n Array.from(dragZone.parentNode.parentNode.children).slice(1).forEach((tr) => tr.remove());\r\n }\r\n let customE = new CustomEvent('nodedropped.orgchart', { 'detail': {\r\n 'draggedNode': dragged,\r\n 'dragZone': dragZone.children[0],\r\n 'dropZone': dropZone\r\n }});\r\n\r\n this.dispatchEvent(customE);\r\n }\r\n // create node\r\n _createNode(nodeData, level) {\r\n let that = this,\r\n opts = this.options;\r\n\r\n return new Promise(function (resolve, reject) {\r\n if (nodeData.children) {\r\n for (let child of nodeData.children) {\r\n child.parentId = nodeData.id;\r\n }\r\n }\r\n\r\n // construct the content of node\r\n let nodeDiv = document.createElement('div');\r\n\r\n delete nodeData.children;\r\n nodeDiv.dataset.source = JSON.stringify(nodeData);\r\n if (nodeData[opts.nodeId]) {\r\n nodeDiv.id = nodeData[opts.nodeId];\r\n }\r\n let inEdit = that.dataset.inEdit,\r\n isHidden;\r\n\r\n if (inEdit) {\r\n isHidden = inEdit === 'addChildren' ? ' slide-up' : '';\r\n } else {\r\n isHidden = level >= opts.depth ? ' slide-up' : '';\r\n }\r\n nodeDiv.setAttribute('class', 'node ' + (nodeData.className || '') + isHidden);\r\n if (opts.draggable) {\r\n nodeDiv.setAttribute('draggable', true);\r\n }\r\n if (nodeData.parentId) {\r\n nodeDiv.setAttribute('data-parent', nodeData.parentId);\r\n }\r\n nodeDiv.innerHTML = `\r\n
${nodeData[opts.nodeTitle]}
\r\n ${opts.nodeContent ? `
${nodeData[opts.nodeContent]}
` : ''}\r\n `;\r\n // append 4 direction arrows or expand/collapse buttons\r\n let flags = nodeData.relationship || '';\r\n\r\n if (opts.verticalDepth && (level + 2) > opts.verticalDepth) {\r\n if ((level + 1) >= opts.verticalDepth && Number(flags.substr(2, 1))) {\r\n let toggleBtn = document.createElement('i'),\r\n icon = level + 1 >= opts.depth ? 'plus' : 'minus';\r\n\r\n toggleBtn.setAttribute('class', 'toggleBtn fa fa-' + icon + '-square');\r\n nodeDiv.appendChild(toggleBtn);\r\n }\r\n } else {\r\n if (Number(flags.substr(0, 1))) {\r\n let topEdge = document.createElement('i');\r\n\r\n topEdge.setAttribute('class', 'edge verticalEdge topEdge fa');\r\n nodeDiv.appendChild(topEdge);\r\n }\r\n if (Number(flags.substr(1, 1))) {\r\n let rightEdge = document.createElement('i'),\r\n leftEdge = document.createElement('i');\r\n\r\n rightEdge.setAttribute('class', 'edge horizontalEdge rightEdge fa');\r\n nodeDiv.appendChild(rightEdge);\r\n leftEdge.setAttribute('class', 'edge horizontalEdge leftEdge fa');\r\n nodeDiv.appendChild(leftEdge);\r\n }\r\n if (Number(flags.substr(2, 1))) {\r\n let bottomEdge = document.createElement('i'),\r\n symbol = document.createElement('i'),\r\n title = nodeDiv.querySelector(':scope > .title');\r\n\r\n bottomEdge.setAttribute('class', 'edge verticalEdge bottomEdge fa');\r\n nodeDiv.appendChild(bottomEdge);\r\n symbol.setAttribute('class', 'fa ' + opts.parentNodeSymbol + ' symbol');\r\n title.insertBefore(symbol, title.children[0]);\r\n }\r\n }\r\n\r\n nodeDiv.addEventListener('mouseenter', that._hoverNode.bind(that));\r\n nodeDiv.addEventListener('mouseleave', that._hoverNode.bind(that));\r\n nodeDiv.addEventListener('click', that._dispatchClickEvent.bind(that));\r\n if (opts.draggable) {\r\n nodeDiv.addEventListener('dragstart', that._onDragStart.bind(that));\r\n nodeDiv.addEventListener('dragover', that._onDragOver.bind(that));\r\n nodeDiv.addEventListener('dragend', that._onDragEnd.bind(that));\r\n nodeDiv.addEventListener('drop', that._onDrop.bind(that));\r\n }\r\n // allow user to append dom modification after finishing node create of orgchart\r\n if (opts.createNode) {\r\n opts.createNode(nodeDiv, nodeData);\r\n }\r\n\r\n resolve(nodeDiv);\r\n });\r\n }\r\n buildHierarchy(appendTo, nodeData, level, callback) {\r\n // Construct the node\r\n let that = this,\r\n opts = this.options,\r\n nodeWrapper,\r\n childNodes = nodeData.children,\r\n isVerticalNode = opts.verticalDepth && (level + 1) >= opts.verticalDepth;\r\n\r\n if (Object.keys(nodeData).length > 1) { // if nodeData has nested structure\r\n nodeWrapper = isVerticalNode ? appendTo : document.createElement('table');\r\n if (!isVerticalNode) {\r\n appendTo.appendChild(nodeWrapper);\r\n }\r\n this._createNode(nodeData, level)\r\n .then(function (nodeDiv) {\r\n if (isVerticalNode) {\r\n nodeWrapper.insertBefore(nodeDiv, nodeWrapper.firstChild);\r\n } else {\r\n let tr = document.createElement('tr');\r\n\r\n tr.innerHTML = `\r\n \r\n \r\n `;\r\n tr.children[0].appendChild(nodeDiv);\r\n nodeWrapper.insertBefore(tr, nodeWrapper.children[0] ? nodeWrapper.children[0] : null);\r\n }\r\n if (callback) {\r\n callback();\r\n }\r\n })\r\n .catch(function (err) {\r\n console.error('Failed to creat node', err);\r\n });\r\n }\r\n // Construct the inferior nodes and connectiong lines\r\n if (childNodes) {\r\n if (Object.keys(nodeData).length === 1) { // if nodeData is just an array\r\n nodeWrapper = appendTo;\r\n }\r\n let isHidden,\r\n isVerticalLayer = opts.verticalDepth && (level + 2) >= opts.verticalDepth,\r\n inEdit = that.dataset.inEdit;\r\n\r\n if (inEdit) {\r\n isHidden = inEdit === 'addSiblings' ? '' : ' hidden';\r\n } else {\r\n isHidden = level + 1 >= opts.depth ? ' hidden' : '';\r\n }\r\n\r\n // draw the line close to parent node\r\n if (!isVerticalLayer) {\r\n let tr = document.createElement('tr');\r\n\r\n tr.setAttribute('class', 'lines' + isHidden);\r\n tr.innerHTML = `\r\n \r\n
\r\n \r\n `;\r\n nodeWrapper.appendChild(tr);\r\n }\r\n // draw the lines close to children nodes\r\n let lineLayer = document.createElement('tr');\r\n\r\n lineLayer.setAttribute('class', 'lines' + isHidden);\r\n lineLayer.innerHTML = `\r\n  \r\n ${childNodes.slice(1).map(() => `\r\n  \r\n  \r\n `).join('')}\r\n  \r\n `;\r\n let nodeLayer;\r\n\r\n if (isVerticalLayer) {\r\n nodeLayer = document.createElement('ul');\r\n if (isHidden) {\r\n nodeLayer.classList.add(isHidden.trim());\r\n }\r\n if (level + 2 === opts.verticalDepth) {\r\n let tr = document.createElement('tr');\r\n\r\n tr.setAttribute('class', 'verticalNodes' + isHidden);\r\n tr.innerHTML = ``;\r\n tr.firstChild.appendChild(nodeLayer);\r\n nodeWrapper.appendChild(tr);\r\n } else {\r\n nodeWrapper.appendChild(nodeLayer);\r\n }\r\n } else {\r\n nodeLayer = document.createElement('tr');\r\n nodeLayer.setAttribute('class', 'nodes' + isHidden);\r\n nodeWrapper.appendChild(lineLayer);\r\n nodeWrapper.appendChild(nodeLayer);\r\n }\r\n // recurse through children nodes\r\n childNodes.forEach((child) => {\r\n let nodeCell;\r\n\r\n if (isVerticalLayer) {\r\n nodeCell = document.createElement('li');\r\n } else {\r\n nodeCell = document.createElement('td');\r\n nodeCell.setAttribute('colspan', 2);\r\n }\r\n nodeLayer.appendChild(nodeCell);\r\n that.buildHierarchy(nodeCell, child, level + 1, callback);\r\n });\r\n }\r\n }\r\n _clickChart(event) {\r\n let closestNode = this._closest(event.target, function (el) {\r\n return el.classList && el.classList.contains('node');\r\n });\r\n\r\n if (!closestNode && this.querySelector('.node.focused')) {\r\n this.querySelector('.node.focused').classList.remove('focused');\r\n }\r\n }\r\n _loopChart(chart) {\r\n let subObj = { 'id': chart.querySelector('.node').id };\r\n\r\n if (chart.children[3]) {\r\n Array.from(chart.children[3].children).forEach((el) => {\r\n if (!subObj.children) { subObj.children = []; }\r\n subObj.children.push(this._loopChart(el.firstChild));\r\n });\r\n }\r\n return subObj;\r\n }\r\n getHierarchy() {\r\n if (!this.querySelector('.node').id) {\r\n return 'Error: Nodes of orghcart to be exported must have id attribute!';\r\n }\r\n return this._loopChart(this.querySelector('table'));\r\n }\r\n _onPanStart(event) {\r\n let chart = event.currentTarget;\r\n\r\n if (this._closest(event.target, (el) => el.classList && el.classList.contains('node')) ||\r\n (event.touches && event.touches.length > 1)) {\r\n chart.dataset.panning = false;\r\n return;\r\n }\r\n chart.style.cursor = 'move';\r\n chart.dataset.panning = true;\r\n\r\n let lastX = 0,\r\n lastY = 0,\r\n lastTf = window.getComputedStyle(chart).transform;\r\n\r\n if (lastTf !== 'none') {\r\n let temp = lastTf.split(',');\r\n\r\n if (!lastTf.includes('3d')) {\r\n lastX = Number.parseInt(temp[4], 10);\r\n lastY = Number.parseInt(temp[5], 10);\r\n } else {\r\n lastX = Number.parseInt(temp[12], 10);\r\n lastY = Number.parseInt(temp[13], 10);\r\n }\r\n }\r\n let startX = 0,\r\n startY = 0;\r\n\r\n if (!event.targetTouches) { // pan on desktop\r\n startX = event.pageX - lastX;\r\n startY = event.pageY - lastY;\r\n } else if (event.targetTouches.length === 1) { // pan on mobile device\r\n startX = event.targetTouches[0].pageX - lastX;\r\n startY = event.targetTouches[0].pageY - lastY;\r\n } else if (event.targetTouches.length > 1) {\r\n return;\r\n }\r\n chart.dataset.panStart = JSON.stringify({ 'startX': startX, 'startY': startY });\r\n chart.addEventListener('mousemove', this._onPanning.bind(this));\r\n chart.addEventListener('touchmove', this._onPanning.bind(this));\r\n }\r\n _onPanning(event) {\r\n let chart = event.currentTarget;\r\n\r\n if (chart.dataset.panning === 'false') {\r\n return;\r\n }\r\n let newX = 0,\r\n newY = 0,\r\n panStart = JSON.parse(chart.dataset.panStart),\r\n startX = panStart.startX,\r\n startY = panStart.startY;\r\n\r\n if (!event.targetTouches) { // pand on desktop\r\n newX = event.pageX - startX;\r\n newY = event.pageY - startY;\r\n } else if (event.targetTouches.length === 1) { // pan on mobile device\r\n newX = event.targetTouches[0].pageX - startX;\r\n newY = event.targetTouches[0].pageY - startY;\r\n } else if (event.targetTouches.length > 1) {\r\n return;\r\n }\r\n let lastTf = window.getComputedStyle(chart).transform;\r\n\r\n if (lastTf === 'none') {\r\n if (!lastTf.includes('3d')) {\r\n chart.style.transform = 'matrix(1, 0, 0, 1, ' + newX + ', ' + newY + ')';\r\n } else {\r\n chart.style.transform = 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, ' + newX + ', ' + newY + ', 0, 1)';\r\n }\r\n } else {\r\n let matrix = lastTf.split(',');\r\n\r\n if (!lastTf.includes('3d')) {\r\n matrix[4] = newX;\r\n matrix[5] = newY + ')';\r\n } else {\r\n matrix[12] = newX;\r\n matrix[13] = newY;\r\n }\r\n chart.style.transform = matrix.join(',');\r\n }\r\n }\r\n _onPanEnd(event) {\r\n if (this.dataset.panning === 'true') {\r\n this.dataset.panning = false;\r\n this.style.cursor = 'default';\r\n document.body.removeEventListener('mousemove', this._onPanning);\r\n document.body.removeEventListener('touchmove', this._onPanning);\r\n }\r\n }\r\n _setChartScale(chart, newScale) {\r\n let lastTf = window.getComputedStyle(chart).transform;\r\n\r\n if (lastTf === 'none') {\r\n chart.style.transform = 'scale(' + newScale + ',' + newScale + ')';\r\n } else {\r\n let matrix = lastTf.split(',');\r\n\r\n if (!lastTf.includes('3d')) {\r\n matrix[0] = 'matrix(' + newScale;\r\n matrix[3] = newScale;\r\n chart.style.transform = lastTf + ' scale(' + newScale + ',' + newScale + ')';\r\n } else {\r\n chart.style.transform = lastTf + ' scale3d(' + newScale + ',' + newScale + ', 1)';\r\n }\r\n }\r\n chart.dataset.scale = newScale;\r\n }\r\n _onWheeling(event) {\r\n event.preventDefault();\r\n\r\n let newScale = event.deltaY > 0 ? 0.8 : 1.2;\r\n\r\n this._setChartScale(this, newScale);\r\n }\r\n _getPinchDist(event) {\r\n return Math.sqrt((event.touches[0].clientX - event.touches[1].clientX) *\r\n (event.touches[0].clientX - event.touches[1].clientX) +\r\n (event.touches[0].clientY - event.touches[1].clientY) *\r\n (event.touches[0].clientY - event.touches[1].clientY));\r\n }\r\n _onTouchStart(event) {\r\n if (event.touches && event.touches.length === 2) {\r\n let dist = this._getPinchDist(event);\r\n\r\n this.dataset.pinching = true;\r\n this.dataset.pinchDistStart = dist;\r\n }\r\n }\r\n _onTouchMove(event) {\r\n if (this.dataset.pinching) {\r\n let dist = this._getPinchDist(event);\r\n\r\n this.dataset.pinchDistEnd = dist;\r\n }\r\n }\r\n _onTouchEnd(event) {\r\n if (this.dataset.pinching) {\r\n this.dataset.pinching = false;\r\n let diff = this.dataset.pinchDistEnd - this.dataset.pinchDistStart;\r\n\r\n if (diff > 0) {\r\n this._setChartScale(this, 1);\r\n } else if (diff < 0) {\r\n this._setChartScale(this, -1);\r\n }\r\n }\r\n }\r\n}\r\n\r\nwindow.customElements.define('org-chart', OrgChart);\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author tranghoang\r\n * @create 2019/08/09 10:37\r\n * @update 2017/08/12 10:37\r\n */\r\n\r\nimport React from \"react\";\r\nimport Config from \"../../config\";\r\nimport Tooltip from \"../common/tooltip/tooltip\";\r\nimport { Image } from \"react-bootstrap\";\r\nimport { browserHistory } from \"react-router\";\r\nimport Profile from \"./profile\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as mainActions from \"../../redux/main/main_actions\";\r\nimport * as homeActions from \"../../redux/home/home_actions\";\r\nimport Search from \"../filter/search\";\r\nimport ActionToolbar from \"../common/toolbar/action-toolbar\";\r\nimport * as Firebase from \"./push-notification\";\r\nimport LinkProducts from \"../libs/dgn-core/link-products\";\r\nimport W09F7000 from \"../W0X/W09/W09F7000/W09F7000\";\r\nimport {\r\n Badge,\r\n ButtonIcon,\r\n Button,\r\n TabContainer,\r\n TabHeader,\r\n TabItem,\r\n Typography,\r\n Avatar,\r\n Divider\r\n} from \"diginet-core-ui/components\";\r\nimport Icon from \"diginet-core-ui/icons\";\r\nimport {useColor} from 'diginet-core-ui/theme';\r\nimport moment from \"moment\";\r\nimport _ from \"lodash\";\r\nimport { Loading } from \"../common/loading/loading\";\r\n\r\nconst tabIndexMap = new Map([\r\n [\"ALL\", 0],\r\n [\"SPECIAL\", 1],\r\n [\"NORMAL\", 2],\r\n]);\r\nclass Header extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tabNotify: \"ALL\",\r\n notifyLoading: true,\r\n totalNew: 0,\r\n };\r\n this.loadFullNotify = false;\r\n this.limitNotify = 10;\r\n this.scrollTop = 0;\r\n this.dataLoadNotify = {\r\n limit: this.limitNotify,\r\n skip: 0,\r\n };\r\n }\r\n\r\n getDevice = () => {\r\n if ((navigator.userAgent.indexOf(\"Opera\") || navigator.userAgent.indexOf(\"OPR\")) !== -1) {\r\n return \"Opera\";\r\n } else if (navigator.userAgent.indexOf(\"Chrome\") !== -1) {\r\n return \"Chrome\";\r\n } else if (navigator.userAgent.indexOf(\"Safari\") !== -1) {\r\n return \"Safari\";\r\n } else if (navigator.userAgent.indexOf(\"Firefox\") !== -1) {\r\n return \"Firefox\";\r\n } else if (navigator.userAgent.indexOf(\"MSIE\") !== -1 || !!document.documentMode === true) {\r\n return \"IE\";\r\n } else {\r\n return \"unknown\";\r\n }\r\n };\r\n\r\n getListNotification = () => {\r\n const { tabNotify } = this.state;\r\n const param = {\r\n AppID: Config.env.productID || \"\",\r\n limit: this.dataLoadNotify.limit,\r\n skip: this.dataLoadNotify.skip,\r\n sort: JSON.stringify([\r\n { read: \"ASC\" },\r\n { createdAt: \"DESC\" },\r\n { updatedAt: \"DESC\" },\r\n { clearBadge: \"ASC\" },\r\n ]),\r\n ...(tabNotify === \"SPECIAL\" || tabNotify === \"NORMAL\" ? { type: tabNotify } : {}),\r\n };\r\n this.props.mainActions.getListNotification(param, (err, data) => {\r\n this.props.mainActions.getBadge();\r\n this.setState(\r\n {\r\n notifyLoading: false,\r\n totalNew: data?.totalNew ?? 0,\r\n },\r\n () => {\r\n if (data?.rows?.length >= data?.total) {\r\n this.loadFullNotify = true;\r\n }\r\n if (document.getElementsByClassName(\"popup-content-notify\").length > 0) {\r\n document.getElementsByClassName(\"popup-content-notify\")[0].scrollTop = this.scrollTop;\r\n }\r\n }\r\n );\r\n });\r\n };\r\n\r\n onBackgroundMessage = () => {\r\n if (document.visibilityState === \"visible\") {\r\n this.reloadNotify(true);\r\n }\r\n };\r\n\r\n componentWillUnmount = () => {\r\n window.removeEventListener(\"visibilitychange\", this.onBackgroundMessage);\r\n };\r\n\r\n componentDidMount() {\r\n document.addEventListener(\"visibilitychange\", this.onBackgroundMessage);\r\n let login = Config.decryptData(Config.getLocalStorage(\"PROFILEDHR\"));\r\n login = login ? JSON.parse(login) : null;\r\n // const notification = process && process.env && process.env.REACT_APP_NOTIFY ? process.env.REACT_APP_NOTIFY : 'YES';\r\n if (login) {\r\n const config = Config.getSetting(\"FIREBASE_UI_CONFIG\");\r\n if (config) {\r\n Firebase.fbInitializeApp();\r\n Firebase.fbRequestPermission((error, token) => {\r\n if (token) {\r\n Config.deviceToken = token;\r\n let params = {\r\n md: this.getDevice(),\r\n token: token,\r\n os: \"WEB\",\r\n language: Config.language,\r\n };\r\n this.props.mainActions.addDevice(params);\r\n }\r\n });\r\n\r\n Firebase.fbOnMessage((error, { data }) => {\r\n console.log(\"===========>>fbOnMessage<<===========\");\r\n // Update lại số \"tổng các đề xuất chưa duyệt\" trên dashboard\r\n const dataPush = JSON.parse(data.payload);\r\n // Thêm vào Debugger\r\n if (Config.debugger)\r\n Config.debugger.pushData({\r\n debugger: { startTime: moment().format() },\r\n code: 200,\r\n data: { ...data, payload: dataPush },\r\n route: \"Firebase.fbOnMessage\",\r\n });\r\n if (dataPush) {\r\n const menuID = dataPush?.menu_id;\r\n const menuGroupID = dataPush?.menu_group_id;\r\n const dataT = { ...Config.menu };\r\n\r\n // Tìm group menu id của thông tin push notify\r\n const idxMenulistMSSGroup = dataT.listMSS?.findIndex(i => i.MenuGroupID === menuGroupID);\r\n const idxMenuOKRGroup = dataT.OKR?.findIndex(i => i.MenuID === menuID);\r\n\r\n let pathData = null;\r\n\r\n // tìm thông tin menu của push notify vừa nhận đc trong list menu MSS || OKR\r\n if (idxMenulistMSSGroup !== -1) pathData = `listMSS[${idxMenulistMSSGroup}]MenuItem`;\r\n //dataT.listMSS?.[idxMenulistMSSGroup]?.MenuItem;\r\n else if (idxMenuOKRGroup !== -1) pathData = \"OKR\"; //dataT.OKR;\r\n\r\n if (_.get(dataT, pathData, [])?.length) {\r\n // Tìm menu id của thông tin push notify\r\n const idxMenu = _.get(dataT, pathData, []).findIndex(i => i.MenuID === menuID);\r\n if (idxMenu !== -1) {\r\n // Gán giá trị NumWaitApproval mới, lấy từ dữ liệu notify trả về (payload.num_wait_approval)\r\n _.set(\r\n dataT,\r\n `${pathData}[${idxMenu}].NumWaitApproval`,\r\n dataPush?.num_wait_approval || 0\r\n );\r\n this.props.homeActions.updateBadgeNumber(dataT);\r\n }\r\n }\r\n }\r\n this.reloadNotify();\r\n });\r\n }\r\n\r\n this.props.mainActions.getBadge();\r\n }\r\n }\r\n\r\n /**\r\n * Reload data notify, badge, menu.\r\n * @param reloadMenu {boolean} if true then reload data menu\r\n */\r\n reloadNotify = (reloadMenu = false) => {\r\n // Check đang mở popup danh sách notify tren6 header\r\n const elNotify = document.querySelector(\".popup-notify\");\r\n if (elNotify) {\r\n // Đang mở thì update lại list notify\r\n this.getListNotification();\r\n } else {\r\n // Update badge number trên header\r\n this.props.mainActions.getBadge();\r\n }\r\n if (reloadMenu) this.props.homeActions.getMenuV2();\r\n };\r\n\r\n toggleMenuESS = (number, flag = true) => {\r\n const { toggleMenuEss } = this.props;\r\n // if(isTab === number) return;\r\n if (toggleMenuEss) toggleMenuEss(number, flag);\r\n };\r\n\r\n toggleNav = () => {\r\n const { toogleSideBar } = this.props;\r\n if (toogleSideBar) toogleSideBar();\r\n };\r\n\r\n onChangeTabNotify = (e, value) => {\r\n this.dataLoadNotify = {\r\n limit: this.limitNotify,\r\n skip: 0,\r\n };\r\n this.scrollTop = 0;\r\n this.loadFullNotify = false;\r\n this.setState(\r\n {\r\n tabNotify: value,\r\n notifyLoading: true,\r\n },\r\n () => {\r\n this.getListNotification();\r\n }\r\n );\r\n };\r\n\r\n onClickNotify = e => {\r\n if (e && e.form_id) {\r\n if (this.notify) {\r\n this.notify.hide();\r\n }\r\n const FormID = e && e.FormParentID ? e.FormParentID : e.form_id || \"\";\r\n this.toggleMenuESS(Number(e.Type ?? 0), false);\r\n browserHistory.push({\r\n pathname: Config.getRootPath() + FormID,\r\n state: {\r\n ...e,\r\n voucher_id: e && e.voucher_id ? e.voucher_id : \"\",\r\n },\r\n });\r\n }\r\n };\r\n\r\n onOpenedNotify = e => {\r\n e.style.top = document.documentElement.scrollTop + e.offsetTop;\r\n document.documentElement.style.overflow = \"hidden\";\r\n this.getListNotification();\r\n };\r\n\r\n onClosedNotify = e => {\r\n // this.props.mainActions.updateBadge(0);\r\n document.documentElement.style.overflow = \"auto\";\r\n };\r\n\r\n handleScroll = e => {\r\n this.scrollTop = e.target.scrollTop ? e.target.scrollTop : this.scrollTop;\r\n let scrollHeight = e.target.offsetHeight;\r\n let viewHeight = this.listItemNotify.clientHeight;\r\n if (this.scrollTop + scrollHeight >= viewHeight - 20) {\r\n if (this.state.notifyLoading || this.loadFullNotify) return;\r\n this.setState(\r\n {\r\n notifyLoading: true,\r\n },\r\n () => {\r\n this.dataLoadNotify.limit += this.limitNotify;\r\n this.getListNotification();\r\n }\r\n );\r\n }\r\n };\r\n\r\n redirectToGoalMenu = (pathname, data) => {\r\n this.toggleMenuESS(2, false);\r\n if (pathname !== data.FormCall) {\r\n browserHistory.push(Config.getRootPath() + data.FormCall);\r\n }\r\n };\r\n\r\n render() {\r\n const { isTab, children, badge, listNoty, badgeNumber } = this.props;\r\n const { tabNotify, notifyLoading } = this.state;\r\n const pathname = children.props.route.path;\r\n const logoImg = Config.getSetting(\"LOGO_URL\")\r\n ? Config.getSetting(\"LOGO_URL\")\r\n : require(\"../../assets/images/general/logodhr.svg\");\r\n\r\n let dataMenu = [];\r\n let badgeOKR = 0;\r\n\r\n if (Config.menu) {\r\n dataMenu = Config.menu.listESS || [];\r\n }\r\n if (badgeNumber?.OKR?.length) {\r\n badgeNumber.OKR.forEach(i => (badgeOKR += Number(i.NumWaitApproval)));\r\n }\r\n\r\n const transactionMenu = dataMenu.find(i => i.MenuGroupID === \"Transaction\");\r\n const goalMenu = !!transactionMenu && transactionMenu.MenuItem.find(i => i.MenuID === \"MHRP39N0008\");\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n {\r\n let tab = Number(Config.getLocalStorage(\"MENUTYPEDHR\"));\r\n if (tab === 2) tab = 0;\r\n this.toggleMenuESS(Number(tab));\r\n browserHistory.push({\r\n pathname: Config.getRootPath() + \"dashboard\",\r\n state: {\r\n mode: !isTab ? \"ESS\" : \"MSS\",\r\n },\r\n });\r\n }}\r\n >\r\n {Config.getSetting(\"LOGO_URL\") && }\r\n {!Config.getSetting(\"LOGO_URL\") && (\r\n \r\n \r\n LemonHR\r\n \r\n )}\r\n
\r\n
\r\n (Config.filters = ref)} />\r\n
\r\n
\r\n
\r\n \r\n {goalMenu && (\r\n this.redirectToGoalMenu(pathname, goalMenu)}\r\n >\r\n \r\n \r\n )}\r\n \r\n pathname !== \"W09F9000\" ? browserHistory.push(Config.getRootPath() + \"W09F9000\") : false\r\n }\r\n />\r\n
\r\n this.toggleMenuESS(0)}\r\n />\r\n this.toggleMenuESS(1)}\r\n />\r\n
\r\n (this.notify = ref)}\r\n renderItem={() => {\r\n return (\r\n <>\r\n \r\n {Config.lang(\"Thong_bao\")}\r\n \r\n \r\n \r\n this.onChangeTabNotify(e, \"ALL\")}\r\n />\r\n this.onChangeTabNotify(e, \"SPECIAL\")}\r\n />\r\n this.onChangeTabNotify(e, \"NORMAL\")}\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
(this.listItemNotify = ref)}>\r\n {listNoty?.rows?.map((notify, idx) => {\r\n if (!notify) return null;\r\n const item = notify.payload || {};\r\n const user = Config.getUser({\r\n UserID: notify?.sender || \"\",\r\n });\r\n\r\n const avatar = user.UserPictureURL || Config.getCDNPath(notify.URL);\r\n\r\n const sender_name = user?.EmployeeName || item.sender_name;\r\n\r\n const schedule_des =\r\n Config.language === \"01\" ? item.schedule_desE : item.schedule_des;\r\n\r\n const voucher_des =\r\n Config.language === \"01\" ? item.voucher_desE : item.voucher_des;\r\n\r\n return (\r\n this.onClickNotify(item)}\r\n >\r\n \r\n
\r\n \r\n {notify?.schedule\r\n ? schedule_des\r\n : `${sender_name} ${voucher_des} ${item.voucher_no}`}\r\n \r\n \r\n {Config.convertDate(\r\n notify.createdAt,\r\n \"\",\r\n \"DD/MM/YYYY LT\"\r\n )}\r\n \r\n
\r\n {idx !== listNoty.rows.length - 1 && (\r\n
\r\n )}\r\n
\r\n );\r\n })}\r\n {!listNoty?.rows?.length && (\r\n
\r\n
\r\n \r\n {Config.lang(\"Khong_co_thong_bao\")}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n }}\r\n renderCursor={() => {\r\n return (\r\n \r\n \r\n \r\n );\r\n }}\r\n className=\"popup-notify popup-tooltip\"\r\n />\r\n\r\n {/* Link to products */}\r\n \r\n\r\n {!Config.isMobile && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n state => ({\r\n filters: state.main.filters,\r\n badge: state.main.badge,\r\n listNoty: state.main.listNoty,\r\n }),\r\n dispatch => ({\r\n mainActions: bindActionCreators(mainActions, dispatch),\r\n homeActions: bindActionCreators(homeActions, dispatch),\r\n })\r\n)(Header);\r\n","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author VINHLE\r\n * @create 2019/03/12 13:49\r\n * @update 2019/03/12 13:49\r\n */\r\n\r\nimport React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {Dropdown, MenuItem} from \"react-bootstrap\";\r\nimport DropdownToggle from \"react-bootstrap/es/DropdownToggle\";\r\nimport DropdownMenu from \"react-bootstrap/es/DropdownMenu\";\r\n\r\nclass DropdownToolbar extends Component {\r\n\r\n\r\n clickButton(value){\r\n if(value){\r\n if(value.onClick&&!value.disabled){\r\n value.onClick()\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const {icon, buttonName,menuItem,disabled} = this.props;\r\n return (\r\n \r\n {icon &&\r\n    }{buttonName&&buttonName}\r\n \r\n {menuItem&&menuItem.map((value, index) => {\r\n return (\r\n {this.clickButton(value)}}> {value.icon&&}{value.name}\r\n )\r\n })}\r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nDropdownToolbar.propTypes = {\r\n buttonName: PropTypes.string,\r\n className: PropTypes.string,\r\n icon:PropTypes.string,\r\n disabled:PropTypes.bool,\r\n menuItem: PropTypes.array,\r\n};\r\n\r\nexport default DropdownToolbar;","/**\r\n * @copyright 2019 @ DigiNet\r\n * @author TRIHAO\r\n * @create 12/16/2019\r\n * @Example\r\n */\r\nimport React from \"react\";\r\nimport {Dialog, DialogContent} from \"@material-ui/core\";\r\nimport {withStyles} from \"@material-ui/styles\";\r\nimport { ButtonIcon } from \"diginet-core-ui/components\"\r\nimport Config from \"../../config\";\r\n\r\nconst styles = {\r\n paper: {\r\n padding: 0,\r\n width: 'calc(100% - 10px)',\r\n margin: '2px 0 0 0',\r\n alignSelf: 'flex-start',\r\n }\r\n};\r\nclass Search extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filter: null,\r\n load: null,\r\n openPopupFilter: false\r\n };\r\n }\r\n\r\n setFilter = (html) => {\r\n this.setState({\r\n filter: html\r\n });\r\n };\r\n\r\n toggleFilter = (flag) => {\r\n this.setState({\r\n openPopupFilter: flag\r\n });\r\n };\r\n\r\n componentWillUnmount() {\r\n if (!Config.filters) {\r\n this.setState({\r\n filter: null\r\n })\r\n }\r\n }\r\n\r\n onEntered = () => {\r\n setTimeout(() => {\r\n if (this.dialog) {\r\n this.dialog.getElementsByClassName(\"MuiDialog-container\")[0].removeAttribute(\"tabindex\");\r\n }\r\n }, 400);\r\n\r\n };\r\n\r\n render() {\r\n const {filter, openPopupFilter} = this.state;\r\n\r\n return (\r\n \r\n {filter && <>\r\n this.dialog = ref}\r\n open={openPopupFilter}\r\n fullWidth={true}\r\n maxWidth={\"lg\"}\r\n onClose={() => this.toggleFilter(false)}\r\n PaperProps={{\r\n style: styles.paper\r\n }}\r\n onEntered={this.onEntered}\r\n >\r\n \r\n {filter && typeof filter === \"function\" ? filter() : filter}\r\n \r\n \r\n
\r\n {filter && typeof filter === \"function\" ? filter() : filter}\r\n
\r\n
\r\n this.toggleFilter(true)}\r\n />\r\n
\r\n }\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(Search);"],"sourceRoot":""}