{"version":3,"sources":["config/Function.js","actions/actionTypes.js","reducers/userReducer.js","reducers/menuReducer.js","reducers/notiReducer.js","reducers/index.js","assets/AsynStorage.js","apis/helpers.js","config/Setting.js","apis/url.js","apis/Functions/users.js","View/Login/LoginScreen.js","View/Home/Header.js","Component/Chart/PiceChart.js","Component/Calendar/demo-data/appointments.js","Component/Calendar/Calendar.js","Component/Chart/RotateChart.js","Component/Chart/data-vizualization.js","Component/Chart/BartChart.js","Component/Chart/TimeLine.js","Component/Chart/data-vizualization-stacked.js","Component/Chart/StackedSeriesHomeChart.js","View/Home/Reminder.js","View/Home/Body.js","Component/Popup/Popper.js","assets/Color.js","View/Drawer.js","actions/menu.js","View/Home/HomeView.js","View/Home/HomeContainer.js","apis/Functions/employee.js","View/Employee/Header.js","Component/Table/TableUser.js","View/Employee/EmployeeView.js","View/Employee/EmployeeContainer.js","apis/Functions/department.js","Component/Table/TableDepartment.js","View/Department/CreateDepartment/CreateDepartment.js","View/Department/Header.js","View/Department/DepartmentView.js","View/Department/DepartmentContainer.js","Component/Table/TableReport.js","View/Report/FilterReport.js","View/Report/ReportView.js","View/Report/ReportContainer.js","View/TimeKeeping/Header.js","Component/Table/TableTimeKeeping.js","apis/Functions/checkin.js","View/TimeKeeping/TimeKeepingView.js","View/TimeKeeping/TimeKeepingContainer.js","apis/Functions/letter.js","View/Letter/Header.js","Component/Table/TableLetter.js","View/Letter/LetterView.js","View/Letter/LetterContainer.js","View/Letter/DetailLetter/Content.js","View/Letter/ControlLetter.js","View/Letter/DetailLetter/DetailLetterView.js","View/Letter/DetailLetter/DetailLetterContainer.js","Component/Table/TableSalary.js","View/Salary/FilterSalary.js","View/Salary/SalaryView.js","View/Salary/SalaryContainer.js","Component/Table/TableDetailSalary.js","Component/Chart/data-vizualization-salary.js","Component/Chart/BarChartSalary.js","View/DetailSalary/DetailStaffHeader.js","View/DetailSalary/DetailSalaryView.js","View/DetailSalary/DetailSalaryContainer.js","View/Employee/Profile/Avatar.js","View/Employee/Profile/Content.js","View/Employee/Profile/ProfileView.js","View/Employee/Profile/ProfileContainer.js","View/Employee/CreateEmployee/CreateEmployee.js","View/Employee/CreateEmployee/CreateEmployeeContainer.js","View/Employee/DetailEmployee/DetailEmployeeView.js","View/Employee/DetailEmployee/DetailEmployeeContainer.js","Component/Chart/StackedSeriesChart.js","View/Employee/ReportEmployee/ReportEmployeeView.js","View/Employee/ReportEmployee/ReportEmployeeContainer.js","apis/Functions/application.js","Component/Table/TableDayOff.js","apis/Functions/wifi.js","Component/Table/TableWifi.js","apis/Functions/location.js","Component/Table/TableLocation.js","View/TimeKeeping/Setup/SetupView.js","View/TimeKeeping/Setup/SetupContainer.js","Component/Chart/LineChart.js","Component/Chart/data-vizualization-employees.js","Component/Chart/BarChartEmployees.js","View/TimeKeeping/Report/ReportView.js","View/TimeKeeping/Report/ReportContainer.js","Component/TreeChart/service.js","Component/TreeChart/ChartNode.js","Component/TreeChart/ChartContainer.js","View/Department/Struct/my-node.js","View/Department/Struct/StructDepartment.js","View/Department/Struct/StructContainer.js","View/Meeting/Header.js","View/Meeting/Body.js","View/Meeting/MeetingView.js","View/Meeting/MeetingContainer.js","View/Salary/ReportSalary/ReportSalary.js","View/LetterHandled/Header.js","Component/Table/TableLetterHandled.js","View/LetterHandled/LetterHandledView.js","View/LetterHandled/LetterHandledContainer.js","View/LetterReport/LetterReportView.js","View/LetterReport/LetterReportContainer.js","View/TimeKeepingAll/Header.js","Component/Table/TableTimeKeepingAll.js","View/TimeKeepingAll/TimeKeepingViewAll.js","View/TimeKeepingAll/TimeKeepingContainerAll.js","View/RootView.js","saga/userSaga.js","saga/rootSaga.js","App.js","reportWebVitals.js","index.js"],"names":["global","langCode","formatTimeStamp","time","moment","locale","format","formatTimeStampDDMM","formatTimeStampDDMMNew","formatTimeStampDDMMYYYY","formatTimeStampYYYY","formatTimeStampHHMM","formatTimeStampMMDDYYYY","formatTimeStampDDMMYYYYNew","LOGIN","UPDATE_MENU_OPENCHECKIN","UPDATE_MENU_DEPARTMENT","UPDATE_MENU_EMPLOYEE","UPDATE_MENU_SALARY","UPDATE_MENU_REPORT","UPDATE_MENU_OPENLETTER","ENQUEUE_SNACKBAR","CLOSE_SNACKBAR","REMOVE_SNACKBAR","initialState","user","name","pass","isSignedIn","expiredTime","Date","userInfo","openCheckIn","openDepartment","openEmployee","openSalary","openReport","openLetter","defaultState","notifications","rootReducer","combineReducers","userReducer","state","action","type","data","menuReducer","notiReducer","key","notification","map","dismissAll","dismissed","filter","KEY","API_TOKEN","CAN_SHOW_RATING_DIALOG","LANG_CODE","LANGUAGE","CHANGE_ROLE","GetData","url","a","token","localStorage","getItem","myRequest","method","headers","Accept","Authorization","params","timeout","console","log","axios","then","response","catch","error","request","message","status","PostLogin","json","JSON","stringify","PostData","defaults","NetworkSetting","APPLICATION","GETLISTEMPLOYEE","GETLISTEMPLOYEEPAGING","NEWEMPLOYEE","DELETEEMPLOYEE","DETAILEMPLOYEE","GETLISTDEPARTMENTPAGING","DELETEDEPARTMENT","NEWDEPARTMENT","DETAILDEPARTMENT","GETLISTCHECKIN","GETLISTLETTERPAGING","AGREELETTER","GETDETAILLETTER","DISAGREELETTER","GETTYPEHRREPORT","GETSTATUSHRREPORT","GETCHECKINEACHMONTH","GETLISTDAYOFFPAGING","CREATEDAYOFF","DELETEDAYOFF","GETDAYOFF","CREATEWIFI","DELETEWIFI","GETWIFI","GETWIFIDETAIL","CREATELOCATION","DELETELOCATION","GETLOCATION","GETLOCATIONDETAIL","login","body","res","err","useStyles","makeStyles","theme","submit","margin","spacing","width","backgroundColor","root","paddingTop","paddingRight","paddingLeft","loginTitle","fontSize","color","marginBottom","container","flex","LoginScreen","getWindowDimensions","window","innerWidth","height","innerHeight","classes","history","useHistory","useState","appcode","username","password","setState","helperText","sethelperText","Login","errorCode","setItem","accessToken","push","LoginEnter","e","Grid","style","backgroundImage","backgroundRepeat","backgroundSize","direction","justify","alignItems","Card","className","TextField","label","InputProps","startAdornment","InputAdornment","position","AccountCircle","value","onChange","target","onKeyDown","id","autoComplete","LockRounded","FormHelperText","marginLeft","Button","onClick","variant","DepartmentView","props","item","lg","md","sm","minWidth","Typography","to","textDecoration","fullWidth","marginTop","xs","textAlign","padding","SpecialMarkerComponent","borderRadius","Demo","targetItem","undefined","hover","changeTargetItem","changeHover","this","title","Paper","scheme","valueField","argumentField","innerRadius","markerComponent","onTargetItemChange","onHoverChange","React","appointments","startDate","endDate","location","allDay","AppointmentFormContainerBasic","appointmentChanges","getAppointmentData","appointmentData","getAppointmentChanges","changeAppointment","bind","commitAppointment","field","changes","nextChanges","commitChanges","appointment","visible","visibleChange","cancelAppointment","onHide","displayAppointmentData","isNewAppointment","applyChanges","textEditorProps","change","toUpperCase","slice","textField","pickerEditorProps","picker","ampm","date","toDate","inputVariant","onError","Overlay","fullSize","header","IconButton","closeButton","content","wrapper","icon","utils","MomentUtils","multiline","rows","buttonGroup","button","AppointmentFormContainer","withStyles","paddingBottom","overflow","float","display","justifyContent","marginRight","currentDate","confirmationVisible","editingFormVisible","deletedAppointmentId","editingAppointment","previousAppointment","addedAppointment","startDayHour","endDayHour","toggleConfirmationVisible","commitDeletedAppointment","toggleEditingFormVisibility","onEditingAppointmentChange","onAddedAppointmentChange","appointmentForm","connectProps","update","added","changed","deleted","startingAddedId","length","setDeletedAppointmentId","onCommitChanges","showOpenButton","showCloseButton","showDeleteButton","overlayComponent","onVisibilityChange","Dialog","open","onClose","cancelDelete","DialogTitle","DialogContent","DialogContentText","DialogActions","Fab","addButton","setHours","right","month","population","chartData","rotated","max","text","confidence","validCheckIn","count_Dmvs","absent","pending","energyConsumption","country","hydro","oil","gas","coal","nuclear","Root","flexDirection","restProps","Label","whiteSpace","paper","secondaryTail","palette","secondary","main","TimeLine","minHeight","maxHeight","Timeline","align","TimelineItem","TimelineOppositeContent","TimelineSeparator","TimelineDot","TimelineConnector","TimelineContent","olimpicMedals","department","male","female","ageStructure","come","out","rootComponent","labelComponent","heading","typography","pxToRem","fontWeight","fontWeightRegular","Reminder","Accordion","boxShadow","AccordionSummary","expandIcon","aria-controls","Chip","AccordionDetails","ListItem","ListItemText","primary","dataLetter","region","val","dataCheckIn","Body","SimplePopover","anchorEl","setAnchorEl","Boolean","aria-describedby","event","currentTarget","Avatar","alt","src","Popover","anchorOrigin","vertical","horizontal","transformOrigin","List","component","aria-label","ListItemIcon","removeItem","colors","drawerWidth","drawer","breakpoints","up","flexShrink","appBar","menuButton","toolbar","mixins","drawerPaper","flexGrow","toolbarLogo","connect","updateMenuCheckIn","updateMenuDepartment","updateMenuEmployee","updateMenuReport","updateMenuSalary","updateMenuLetter","useTheme","mobileOpen","setMobileOpen","handleDrawerToggle","AppBar","Divider","underline","Collapse","in","unmountOnExit","disablePadding","document","CssBaseline","clsx","appBarShift","Toolbar","edge","size","Badge","badgeContent","noWrap","Hidden","smUp","implementation","Drawer","anchor","ModalProps","keepMounted","xsDown","children","HomeView","styles","getListEmployeePaging","createNewEmployee","deleteEmployee","detailEmployee","departments","_status","formControl","selectEmpty","Header","setDepartment","setStatus","FormControl","select","SelectProps","native","option","noValidate","tableHeader","StyledTableCell","head","TableCell","StickyHeadTable","page","setPage","setOpen","idEmployee","setIdEmployee","pageCurrent","setPageCurrent","enqueueSnackbar","useSnackbar","handleClose","handleAgree","changePage","changeStatusDelete","Math","random","setTimeout","aria-labelledby","autoFocus","TableContainer","Table","stickyHeader","TableHead","TableRow","columns","column","TableBody","row","role","tabIndex","code","Pagination","count","ceil","totalPage","parseInt","toLocaleString","toFixed","EmployeeView","list","setList","useEffect","encodeURIComponent","listPush","forEach","el","phone","email","positon","fullName","description","departmentCode","workingStatus","changeRowPerPage","totalRows","EmployeeContainer","setData","rowsPerPage","setRowsPerPage","setTotalRows","statusDelete","setStatusDelete","getData","pageIndex","pageSize","orderBy","directionSort","metaData","outRowsNumber","rowper","getListDepartmentPaging","deleteDepartment","createNewDepartment","detailDepartment","openEdit","setOpenEdit","idDepartment","setIdDepartment","leaderCode","companyCode","handleClickOpenEdit","handleCloseEdit","handleAgreeEdit","changeStatusUpdate","maxWidth","isDeleted","CreateDeparment","closeCreateView","newDepartment","changeStatusCreate","elevation","gutterBottom","required","isCreate","setIsCreate","members","DepartmentContainer","statusCreate","setStatusCreate","statusUpdate","setStatusUpdate","create","TableReport","TablePagination","rowsPerPageOptions","onChangePage","newPage","onChangeRowsPerPage","FilteReport","MenuItem","createData","ids","city","office","ReportView","ReportContainer","age","info","employeeName","departmentName","fromDate","check","getListCheckInPaging","getCheckInEachMonth","checkin","checkout","dm","vs","absentTime","soonTime","floor","round","minutesLate","minutesSoon","TimeKeepingView","now","formatTimeFrom","dateFrom","split","formatTimeEnd","getDataCheckIn","empCode","listCheckIn","checkInList","startTime","trangThai","endTime","diMuonChenhLech","veSomChenhLech","hopLe","useParams","LetterContainer","getListLetterPaging","agreeComplain","getDetailComplain","typeHRReport","statusHRReport","lettertypes","letter","setLetter","alignContent","TableLetter","openAgree","setOpenAgree","openDisagree","setOpenDisagree","complainId","employeeCode","statusCheckIn","hrComment","handleCloseAgree","handleOpenAgree","handleOpenDisagree","handleCloseDisagree","handleAgreeComplain","handleDisagreeComplain","LetterView","reason","createdAt","companyEmail","totalHandled","totalApproved","totalRejected","totalPageWaitHandled","setTotalApproved","setTotalHandled","setTotalRejected","Promise","all","complainStatus","res2","res3","res4","Content","background","nested","ControlLetter","goLetter","subheader","ListSubheader","DetailLetterView","DetailLetterContainer","FillterSalary","selectedDate","setSelectedDate","handleDateChange","DateFnsUtils","views","disableToolbar","KeyboardButtonProps","salary_amount","salary_reduce","salary_real","SalaryView","SaralyContainer","TableDetailSalary","border","borderRight","rowSpan","rows1","row1","note","rows2","row2","rows3","row3","basic","efficient","hegiht","stacks","series","DetailStaffHeader","DetailSalaryView","DetailSalaryContainer","AvatarProfile","getDataEmployee","bottom","ButtonGroup","startIcon","genders","TabPanel","index","other","hidden","Box","p","a11yProps","setValue","openActivites","setOpenActivites","cardId","gender","issueDate","incomeTaxCode","issuePlace","birthPlace","dateOfBirth","temporaryAddress","bankAccount","socialInsuranceCode","socialInsurancePayroll","socialInsuranceStartDate","workDate","expire","contractCode","contractCodeReal","salaryTry","salaryReal","inOfficial","kindContract","socialInsuranceEndDate","editEmployee","handleCloseActivites","square","Tabs","newValue","textColor","Tab","InputLabelProps","shrink","stt","activities","Profile","ProfileContainer","openPersonal","setOpenPersonal","openWork","setOpenWork","room","newEmployee","Fragment","CreateEmployeeContainer","DetailEmployeeView","twFromDate","no","wfromDate","regimeTrain","myContract","cancelDate","DetailEmployeeContainer","Item","StackedSeriesChart","factory","scaleBand","itemComponent","ReportEmployeeView","ReportEmployeeContainer","getListDayOffPaging","createDayOff","deleteDayOff","getDayOff","openDeleteDayOff","setOpenDeleteDayOff","openEditDayOff","setOpenEditDayOff","setId","dayOff","handleCloseDeleteDayOff","handleAgreeDeleteDayOff","getDataAgain","hanldeOpenEditDayOff","hanldeCloseEditDayOff","handleAgreeEditDayOff","hanldeOpenDeleteDayOff","createWifi","deleteWifi","getWifi","getWifiDetail","ip","createLocation","deleteLocation","getLocation","getLocationDetail","address","getModalStyle","top","left","transform","outline","shadows","columnsWifi","columnsAddress","SetupView","year","modalStyle","openWifi","setOpenWifi","openLocation","setOpenLocation","pageDayOff","listDayOff","setListDayOff","listWifi","setListWifi","listLocation","setListLocation","stateDayOff","setStateDayOff","stateWifi","setStateWifi","stateLocation","setStateLocation","again","handleCloseWifi","handleCloseLocation","createDayOffModal","createWifiModal","createLocationModal","arrayDayOff","dayoff","arrayWifi","arrayLocation","bodyWifi","bodyLocation","indicatorColor","Modal","SetupContainer","tick","ValueLabel","Text","chart","tickFormat","leave","new","toolbar2","icons","gridBoxItem","dataLineChart","setDataLineChart","handleSelectDepartment","depCode","listData","FormReport","defaultValue","ChartReport","LineChart","subject1","Subject","subject2","dragNodeService","next","draggedNodeId","asObservable","selectNodeService","selectedNodeId","ChartNode","datasource","NodeTemplate","draggable","collapsible","multipleSelect","changeHierarchy","onClickNode","node","useRef","isChildrenCollapsed","setIsChildrenCollapsed","topEdgeExpanded","setTopEdgeExpanded","rightEdgeExpanded","setRightEdgeExpanded","bottomEdgeExpanded","setBottomEdgeExpanded","leftEdgeExpanded","setLeftEdgeExpanded","allowedDrop","setAllowedDrop","selected","setSelected","nodeClass","join","subs1","subscribe","draggedInfo","querySelector","closest","current","subs2","selectedNodeInfo","unsubscribe","toggleAncestors","actionNode","parentNode","firstChild","classList","contains","remove","isSiblingsCollapsed","Array","from","some","toggleSiblings","add","previousSibling","toggle","nextSibling","hEdgeClickHandler","stopPropagation","ref","onDragStart","copyDS","relationship","dataTransfer","onDragOver","preventDefault","onDragEnd","onDrop","parse","onMouseEnter","parent","isAncestorsCollapsed","onMouseLeave","nodeData","charAt","defaultProps","ChartContainer","forwardRef","pan","zoom","zoomoutLimit","zoominLimit","containerClass","chartClass","onClickChart","downloadButton","startX","setStartX","startY","setStartY","setTransform","panning","setPanning","cursor","setCursor","exporting","setExporting","dataURL","setDataURL","download","setDownload","ds","setDS","dsDigger","JSONDigger","draggedItemData","dropTargetId","removeNode","addChildren","useImperativeHandle","exportTo","exportFilename","exportFileextension","originalScrollLeft","scrollLeft","originalScrollTop","scrollTop","html2canvas","clientWidth","clientHeight","onclone","clonedDoc","canvas","toLowerCase","canvasWidth","canvasHeight","doc","jsPDF","orientation","unit","addImage","toDataURL","save","exportPDF","isWebkit","documentElement","isFf","sidebar","isEdge","navigator","appName","appVersion","indexOf","msSaveBlob","msToBlob","click","exportPNG","expandAllNodes","querySelectorAll","onWheel","newScale","matrix","targetScale","abs","parseFloat","updateChartScale","deltaY","onMouseUp","onMouseDown","lastX","lastY","targetTouches","pageX","pageY","onMouseMove","newX","newY","attachRel","flags","href","MyNode","borderTop","borderTopLeftRadius","borderTopRightRadius","textOverflow","borderBottomLeftRadius","borderBottomRightRadius","total","StructDepartment","orgchart","Set","selectedNodes","setSelectedNodes","newNodeName","setNewNodeName","newNodeTitle","setNewNodeTitle","isEditMode","setIsEditMode","updateNodes","uuidv4","disabled","StructContainer","MeetingHeader","changeDate","borderBottom","MeetingView","MeetingContainer","ReportSalary","LetterReportView","datatypeHR","setDataTypeHR","dataStatusHR","setDataStatusHR","chamCongBu","nghiPhep","khieuNai","processed","approved","rejected","LetterReportContainer","selectedDateFrom","setSelectedDateFrom","selectedDateEnd","setSelectedDateEnd","TimeKeepingViewAll","changeDateFrom","TimeKeepingContainerAll","RootView","PrivateRoute","rest","render","pathname","PublicRoute","path","exact","updateUser","watchUpdateUser","put","takeLatest","rootSaga","call","sagaMiddleware","createSagaMiddleware","store","createStore","applyMiddleware","run","App","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","maxSnack","getElementById"],"mappings":"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,iBAAiBV,MAAM,4BAEvC,cAACgT,GAAA,EAAD,CAAalT,UAAW1B,EAAQuU,YAAhC,SACE,cAAC5S,EAAA,EAAD,CACIkT,QAAM,EACNjT,MAAM,qBACNM,MAAOpG,EACPqG,SAnCe,SAAC2N,GAC1B6E,EAAU7E,EAAM1N,OAAOF,QA8BjB,SAMGoS,GAAQxa,KAAI,SAACkb,GAAD,OACT,cAACmH,GAAA,EAAD,CAA6Bja,MAAO8S,EAAO9S,MAA3C,SACG8S,EAAOpT,OADKoT,EAAO9S,kBCtGtC,SAASka,GAAWC,EAAKhkB,EAAMikB,EAAMjE,EAAOkE,EAAQrF,EAAMpb,EAAQsb,GAChE,MAAO,CAAEiF,MAAKhkB,OAAMikB,OAAMjE,QAAOkE,SAAQrF,OAAMpb,SAAQsb,QAIzD,IAAMpP,GAAO,CACXoU,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,MAEFA,GACE,MACA,qBACA,oCACA,kBACA,uBACA,sBACA,EACA,OAIEtF,GAAU,CACd,CACExU,GAAI,MACJV,MAAO,KACPwB,SAAU,GACVgK,MAAO,QAET,CACE9K,GAAI,OACJV,MAAO,SACPwB,SAAU,IACVgK,MAAO,QAET,CACE9K,GAAI,OACJV,MAAO,aACPwB,SAAU,IACVgK,MAAO,QAET,CACE9K,GAAI,QACJV,MAAO,QACPwB,SAAU,IACVgK,MAAO,QAET,CACE9K,GAAI,SACJV,MAAO,eACPwB,SAAU,IACVgK,MAAO,QAET,CACE9K,GAAI,OAC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","file":"static/js/main.35ff9412.chunk.js","sourcesContent":["import moment from \"moment\";\r\nimport _ from \"lodash\";\r\n\r\nexport const validatePhone = (str) => {\r\n let re = /^[0-9+]{9,11}$/;\r\n return re.test(str);\r\n};\r\n\r\n// convert number 5000000=> 5.000.000\r\nexport const numberWithCommas = (x, c = \".\") =>\r\n Math.round(x)\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, c ? c : \".\");\r\n\r\nexport const Gender = {\r\n male: 0,\r\n female: 1,\r\n};\r\n\r\nexport const toPriceVnd = (str) => {\r\n if (str) {\r\n let stringPrice = str.toString().split(\".\");\r\n let headStringPrice = `${stringPrice[0].replace(\r\n /(\\d)(?=(\\d{3})+(?!\\d))/g,\r\n \"$1.\"\r\n )}`;\r\n return stringPrice.length === 1\r\n ? headStringPrice\r\n : headStringPrice.concat(`,${stringPrice[1]}`);\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\n// cắt chuỗi dạng something...\r\nexport const ellipsis = (str = \"\", max = 30) =>\r\n str.length > max ? `${str.substring(0, max)}...` : str;\r\n\r\n// tính chiều rộng của item dưới dạng flatlist\r\n\r\n// chuyển string thành dạng viết hoa\r\nexport const toUpperCase = (str) => (str ? str.toUpperCase() : \"\");\r\n\r\nexport const sortType = {\r\n sortDefault: 1,\r\n latestNews: 2,\r\n priceUp: 3,\r\n priceDown: 4,\r\n};\r\n\r\n// delete item from array\r\nexport const removeItemFromArr2 = (items, index) => {\r\n let fill = items.filter((e, i) => i !== index);\r\n return fill;\r\n};\r\n\r\nexport const removeItemFromArr = (items, index) => {\r\n items.splice(index, 1);\r\n return items;\r\n};\r\n\r\n// sum field of array object\r\nexport const totalByValue = (data, field) =>\r\n data.length === 0\r\n ? 0\r\n : data.map((item) => item[field]).reduce((prev, next) => prev + next);\r\n\r\nexport const cutStringBetweenCharacters = (str, char1, char2, addFirst) => {\r\n let re = `\\\\${char1}([^${char2}]+)\\\\${char2}`;\r\n let reg = new RegExp(re);\r\n let s = reg.exec(str) ? reg.exec(str)[1] : \"\";\r\n return addFirst ? char1 + s : s;\r\n};\r\nexport const mark = (str, char1, char2, tag, endTag) => {\r\n let re = `\\\\${char1}(.*?)\\\\${char2}`;\r\n let reg = new RegExp(re, \"gi\");\r\n return str.replace(reg, `<${tag}>$1</${endTag || tag}>12`);\r\n};\r\n\r\nexport const cutStringBetweenCharacters2 = (str, char1, char2, addFirst) => {\r\n let s = str.split(char1).pop().split(char2)[0];\r\n return addFirst ? char1 + s : s;\r\n};\r\n\r\nexport const replaceStrByIndex = (str, index, newStr) =>\r\n str.substr(0, index) + newStr + str.substr(index + 1);\r\n\r\nglobal.langCode = \"vi\";\r\n\r\nexport const getLangCode = () => global.langCode;\r\nexport const setLangCode = (langCode) => {\r\n global.langCode = langCode;\r\n};\r\n\r\nexport const formatDateTime = (time) =>\r\n moment(time, \"DD/MM/YYYY\").locale(\"vi\").format(\"dddd (DD/MM/YYYY)\");\r\n\r\nexport const VideoMimeType = {\r\n flv: \"video/x-flv\",\r\n mp4: \"video/mp4\",\r\n m3u8: \"application/x-mpegURL\",\r\n ts: \"video/MP2T\",\r\n \"3gp\": \"video/3gpp\",\r\n mov: \"video/quicktime\",\r\n avi: \"video/x-msvideo\",\r\n wmv: \"video/x-ms-wmv\",\r\n};\r\n\r\nexport const StringFromLastCharacter = (str, char) =>\r\n str.substring(str.lastIndexOf(char) + 1);\r\n\r\nexport const toArrayBySeparators = (str, separators) => {\r\n /**\r\n * example: txt = \"aaaa55bbb33cccc\" => [\"aaaa\", \"55\", \"bbb\", \"33\", \"cccc\"]\r\n * toArrayBySeparators(txt, [55,33])\r\n */\r\n let reg = new RegExp(`(${separators.join(\"|\")})`);\r\n return str\r\n .split(reg)\r\n .filter((x) => x.length > 0)\r\n .map((x) => x);\r\n};\r\n\r\nexport const getRange = (startDate, endDate, type) => {\r\n let fromDate = moment(startDate);\r\n let toDate = moment(endDate);\r\n let range = [];\r\n let range2 = [];\r\n // for (let i = 0; i < diff; i++) {\r\n // console.log('diff: ', diff);\r\n // range.push(moment(startDate).add(i, type))\r\n // }\r\n while (toDate > fromDate || fromDate.format(\"M\") === toDate.format(\"M\")) {\r\n range.push(fromDate);\r\n range2.push(fromDate.format(\"DD/MM\"));\r\n fromDate.add(1, type);\r\n }\r\n return range2;\r\n};\r\n\r\nexport const getFirstAndLastWords = (text) => {\r\n let t = text.split(\" \");\r\n return `${t[0]} ${t[t.length - 1]}`;\r\n};\r\n\r\nexport const shortFullname = (text) => {\r\n let arr = text.split(\" \");\r\n let name = \"\";\r\n arr.forEach((e, i) => {\r\n if (i === 0) {\r\n name += `${e} `;\r\n } else if (i === arr.length - 1) {\r\n name += arr.length === 2 ? e : ` ${e}`;\r\n } else {\r\n name += `${e.charAt(0)}`;\r\n }\r\n });\r\n return name;\r\n};\r\nexport const getTimeDDMM = (time) => {\r\n let t1 = new Date(moment(time, \"DD/MM/YYYY\").format(\"MM/DD/YYYY\")).getTime();\r\n return t1;\r\n};\r\n\r\nexport const formatDateTimeDDMM = (time) =>\r\n moment(time, \"DD/MM/YYYY\").locale(\"vi\").format(\"YYYY-MM-DD\");\r\n\r\nexport const formatTimeStamp = (time) =>\r\n moment(time).locale(\"vi\").format(\"YYYY-MM-DD\");\r\n\r\nexport const formatTimeStampDDMM = (time) =>\r\n moment(time).locale(\"vi\").format(\"DD-MM\");\r\n\r\nexport const formatTimeStampDDMMNew = (time) =>\r\n moment(time).locale(\"vi\").format(\"DD/MM\");\r\n\r\nexport const formatTimeStampDDMMYYYY = (time) =>\r\n moment(time).locale(\"vi\").format(\"DD-MM-YYYY\");\r\n\r\nexport const formatTimeStampYYYY = (time) =>\r\n moment(time).locale(\"vi\").format(\"YYYY\");\r\n\r\nexport const formatTimeStampHHMM = (time) =>\r\n moment(time).locale(\"vi\").format(\"HH:mm\");\r\n\r\nexport const formatTimeStampMMDDYYYY = (time) =>\r\n moment(time).locale(\"vi\").format(\"MM/DD/YYYY\");\r\n\r\nexport const formatTimeStampDDMMYYYYNew = (time) =>\r\n moment(time).locale(\"vi\").format(\"DD/MM/YYYY\");\r\n\r\nexport const sortDataByTime = (data) => {\r\n data.sort((a, b) => {\r\n let t1 = moment(a.time, \"DD-MM-YYYY\").format(\"MM/YYYY\");\r\n let t2 = moment(b.time, \"DD-MM-YYYY\").format(\"MM/YYYY\");\r\n if (t1 > t2) return -1;\r\n else {\r\n if (t1 < t2) return 1;\r\n else return 0;\r\n }\r\n });\r\n return data;\r\n};\r\n\r\nexport const checkDifferMonth = (t1, t2) => t1 !== t2;\r\nexport const mapTimeVNToWorld = (data) => {\r\n if (!data) return data;\r\n // data 07/05/2019\r\n let str = data && data.split(\"/\");\r\n if (str.length < 2) return data;\r\n return `${str[1]}/${str[0]}/${str[2]}`;\r\n};\r\nexport const checkFormatWhiteSpace = (str) => {\r\n if (!str.replace(/\\s/g, \"\").length) return true;\r\n return false;\r\n};\r\n\r\n// check 1 mảng dạng [a,b,c] có phần tử nào null,undefined,empty ko.\r\n// nếu có trả về index phần từ đầu tiên ko thì return true\r\nexport const checkFormatArray = (array) => {\r\n let i = -1;\r\n if (!_.isEmpty(array)) {\r\n for (let j = 0; j < array.length; j++) {\r\n if (_.isUndefined(array[j]) || _.isNull(array[j]) || array[j] === \"\") {\r\n i = j;\r\n break;\r\n }\r\n }\r\n }\r\n if (i === -1) {\r\n return true;\r\n } else {\r\n return i;\r\n }\r\n};\r\n\r\nexport const checkFormatArrayWhiteSpace = (array) => {\r\n let i = -1;\r\n if (!_.isEmpty(array)) {\r\n for (let j = 0; j < array.length; j++) {\r\n if (checkFormatWhiteSpace(array[j])) {\r\n i = j;\r\n break;\r\n }\r\n }\r\n }\r\n if (i === -1) {\r\n return true;\r\n } else {\r\n return i;\r\n }\r\n};\r\n\r\n// check 1 phần từ có null, undefined hay empty ko\r\nexport const checkFormatItem = (item) => {\r\n let i = -1;\r\n if (\r\n _.isUndefined(item) ||\r\n _.isNull(item) ||\r\n item === \"\" ||\r\n item === \"NaN\" ||\r\n item === 0\r\n ) {\r\n i = 0;\r\n }\r\n if (i === -1) {\r\n return true;\r\n } else {\r\n return i;\r\n }\r\n};\r\n\r\nexport const convertTypeFile = (name) => {\r\n if (name) {\r\n const fileNameTmp = name.toLowerCase();\r\n if (fileNameTmp.endsWith(\".doc\") || fileNameTmp.endsWith(\".dox\")) {\r\n return 0;\r\n }\r\n if (fileNameTmp.endsWith(\".xls\") || fileNameTmp.endsWith(\".xlsx\")) {\r\n return 1;\r\n }\r\n if (fileNameTmp.endsWith(\".pdf\")) {\r\n return 2;\r\n }\r\n if (\r\n fileNameTmp.endsWith(\".heic\") ||\r\n fileNameTmp.endsWith(\".jpeg\") ||\r\n fileNameTmp.endsWith(\".jpg\") ||\r\n fileNameTmp.endsWith(\".png\") ||\r\n fileNameTmp.endsWith(\".bmp\")\r\n ) {\r\n return 3;\r\n }\r\n }\r\n return 0;\r\n};\r\n\r\nexport const getStartDateOfQuater = (quarter) => {\r\n return moment().quarter(quarter).startOf(\"quarter\").format(\"YYYY-MM-DD\");\r\n};\r\nexport const getEndDateOfQuater = (quarter) => {\r\n return moment().quarter(quarter).endOf(\"quarter\").format(\"YYYY-MM-DD\");\r\n};\r\n\r\nexport const changePositionElement = (element, array) => {\r\n let restArray = array.filter((e) => e != element);\r\n restArray.splice(0, 0, element);\r\n return restArray;\r\n};\r\nexport const getMimeType = (fileExt) => {\r\n switch (fileExt) {\r\n case \"doc\":\r\n return \"application/msword\";\r\n case \"docx\":\r\n return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\r\n case \"ppt\":\r\n return \"application/vnd.ms-powerpoint\";\r\n case \"pptx\":\r\n return \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\r\n case \"xls\":\r\n return \"application/vnd.ms-excel\";\r\n case \"xlsx\":\r\n return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n case \"pdf\":\r\n return \"application/pdf\";\r\n case \"png\":\r\n return \"image/png\";\r\n case \"bmp\":\r\n return \"application/x-MS-bmp\";\r\n case \"gif\":\r\n return \"image/gif\";\r\n case \"jpg\":\r\n return \"image/jpeg\";\r\n case \"jpeg\":\r\n return \"image/jpeg\";\r\n case \"avi\":\r\n return \"video/x-msvideo\";\r\n case \"aac\":\r\n return \"audio/x-aac\";\r\n case \"mp3\":\r\n return \"audio/mpeg\";\r\n case \"mp4\":\r\n return \"video/mp4\";\r\n case \"apk\":\r\n return \"application/vnd.Android.package-archive\";\r\n case \"txt\":\r\n case \"log\":\r\n case \"h\":\r\n case \"cpp\":\r\n case \"js\":\r\n case \"html\":\r\n return \"text/plain\";\r\n default:\r\n return \"*/*\";\r\n }\r\n};\r\n","export const LOGIN = \"LOGIN\";\r\nexport const UPDATE_INFOR = \"UPDATE_INFOR\";\r\nexport const UPDATE_INFOR_FAILED = \"UPDATE_INFOR_FAILED\";\r\nexport const UPDATE_INFOR_SUCCESS = \"UPDATE_INFOR_SUCCESS\";\r\n\r\nexport const UPDATE_MENU_OPENCHECKIN = \"UPDATE_MENU_OPENCHECKIN\";\r\nexport const UPDATE_MENU_DEPARTMENT = \"UPDATE_MENU_DEPARTMENT\";\r\nexport const UPDATE_MENU_EMPLOYEE = \"UPDATE_MENU_EMPLOYEE\";\r\nexport const UPDATE_MENU_SALARY = \"UPDATE_MENU_SALARY\";\r\nexport const UPDATE_MENU_REPORT = \"UPDATE_MENU_REPORT\";\r\nexport const UPDATE_MENU_OPENLETTER = \"UPDATE_MENU_OPENLETTER\";\r\n\r\nexport const ENQUEUE_SNACKBAR = \"ENQUEUE_SNACKBAR\";\r\nexport const CLOSE_SNACKBAR = \"CLOSE_SNACKBAR\";\r\nexport const REMOVE_SNACKBAR = \"REMOVE_SNACKBAR\";\r\n","import { LOGIN } from \"../actions/actionTypes\";\r\n\r\nconst initialState = {\r\n user: { name: \"Tdgiang\", pass: \"abc\" },\r\n isSignedIn: false,\r\n expiredTime: new Date(),\r\n userInfo: {},\r\n};\r\n// @ts-ignore\r\nexport default function userReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case LOGIN: {\r\n return { ...action.data, isSignedIn: true };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import {\r\n UPDATE_MENU_DEPARTMENT,\r\n UPDATE_MENU_EMPLOYEE,\r\n UPDATE_MENU_REPORT,\r\n UPDATE_MENU_SALARY,\r\n UPDATE_MENU_OPENCHECKIN,\r\n UPDATE_MENU_OPENLETTER,\r\n} from \"../actions/actionTypes\";\r\n\r\nconst initialState = {\r\n openCheckIn: false,\r\n openDepartment: false,\r\n openEmployee: false,\r\n openSalary: false,\r\n openReport: false,\r\n openLetter: false,\r\n};\r\n\r\n// @ts-ignore\r\nexport default function menuReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case UPDATE_MENU_DEPARTMENT: {\r\n return { ...state, openDepartment: action.data };\r\n }\r\n case UPDATE_MENU_EMPLOYEE: {\r\n return { ...state, openEmployee: action.data };\r\n }\r\n case UPDATE_MENU_REPORT: {\r\n return { ...state, openReport: action.data };\r\n }\r\n case UPDATE_MENU_SALARY: {\r\n return { ...state, openSalary: action.data };\r\n }\r\n case UPDATE_MENU_OPENCHECKIN: {\r\n return { ...state, openCheckIn: action.data };\r\n }\r\n case UPDATE_MENU_OPENLETTER: {\r\n return { ...state, openLetter: action.data };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { ENQUEUE_SNACKBAR, CLOSE_SNACKBAR, REMOVE_SNACKBAR } from '../actions/actionTypes';\r\n\r\nconst defaultState = {\r\n notifications: [],\r\n};\r\n\r\nexport default (state = defaultState, action) => {\r\n switch (action.type) {\r\n case ENQUEUE_SNACKBAR:\r\n return {\r\n ...state,\r\n notifications: [\r\n ...state.notifications,\r\n {\r\n key: action.key,\r\n ...action.notification,\r\n },\r\n ],\r\n };\r\n\r\n case CLOSE_SNACKBAR:\r\n return {\r\n ...state,\r\n notifications: state.notifications.map(notification => (\r\n (action.dismissAll || notification.key === action.key)\r\n ? { ...notification, dismissed: true }\r\n : { ...notification }\r\n )),\r\n };\r\n\r\n case REMOVE_SNACKBAR:\r\n return {\r\n ...state,\r\n notifications: state.notifications.filter(\r\n notification => notification.key !== action.key,\r\n ),\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import userReducer from \"./userReducer\";\r\nimport menuReducer from './menuReducer';\r\nimport notiReducer from \"./notiReducer\";\r\nimport { combineReducers } from \"redux\";\r\n// @ts-ignore\r\nconst rootReducer = combineReducers({\r\n userReducer,\r\n menuReducer,\r\n notiReducer\r\n});\r\n\r\nexport default rootReducer;\r\n","\r\nconst KEY = {\r\n API_TOKEN: 'API_TOKEN',\r\n CAN_SHOW_RATING_DIALOG: 'CAN_SHOW_RATING_DIALOG',\r\n LANG_CODE: 'LANG_CODE',\r\n LANGUAGE: 'LANGUAGE',\r\n CHANGE_ROLE: '@CHANGE_ROLE'\r\n};\r\n\r\n\r\nexport default KEY;\r\n","/* eslint-disable no-return-await */\r\n/**\r\n * helper.js - for storing reusable logic.\r\n * axios.defaults.headers.common.Authorization = `Bearer ${account.tokenLogin}`; to set TOKEN default\r\n */\r\nimport KEY from \"../assets/AsynStorage\";\r\nimport axios from \"axios\";\r\naxios.defaults.timeout = 10000;\r\n\r\nexport async function GetData(url, data) {\r\n const token = localStorage.getItem(KEY.API_TOKEN);\r\n let myRequest = {\r\n method: \"get\",\r\n url,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + token,\r\n },\r\n params: {\r\n ...data,\r\n },\r\n timeout: 60 * 1000,\r\n // withCredentials: true,\r\n };\r\n console.log(\"My request\", myRequest);\r\n return await axios(myRequest)\r\n .then((response) => response)\r\n .then((response) => response)\r\n .catch((error) => {\r\n console.log(error.request);\r\n const err = {\r\n message: \"error\",\r\n status: error.request.status,\r\n };\r\n return err;\r\n });\r\n}\r\nexport async function PostLogin(url, json, isAuth = true) {\r\n let myRequest = {\r\n method: \"post\",\r\n url,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n timeout: 60 * 1000,\r\n data: JSON.stringify(json),\r\n };\r\n console.log(\"post data mobile\", myRequest);\r\n return await axios(myRequest)\r\n .then((response) => response)\r\n .then((response) => response)\r\n .catch((error) => {\r\n console.log(error.request);\r\n const err = {\r\n message: \"error\",\r\n status: error.request.status,\r\n };\r\n return err;\r\n });\r\n}\r\n\r\nexport async function PostData(url, json, isAuth = true) {\r\n const token = localStorage.getItem(KEY.API_TOKEN);\r\n let myRequest = {\r\n method: \"post\",\r\n url,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + token,\r\n },\r\n timeout: 60 * 1000,\r\n data: JSON.stringify(json),\r\n };\r\n console.log(\"post data mobile\", myRequest);\r\n return await axios(myRequest)\r\n .then((response) => response)\r\n .then((response) => response)\r\n .catch((error) => {\r\n console.log(error.request);\r\n const err = {\r\n message: \"error\",\r\n status: error.request.status,\r\n };\r\n return err;\r\n });\r\n}\r\n\r\n/**\r\n *\r\n * @param {*} url is link api\r\n * @param {*} json is input format json to request server\r\n * @param {*} isAuth is state auth\r\n */\r\nexport async function PutData(url, json, isAuth = true) {\r\n const token = localStorage.getItem(KEY.API_TOKEN);\r\n let myRequest = {\r\n method: \"put\",\r\n url,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + token,\r\n },\r\n data: JSON.stringify(json),\r\n };\r\n console.log(\"PutData\", myRequest);\r\n return await axios(myRequest)\r\n .then((response) => response)\r\n .then((response) => response)\r\n .catch((error) => {\r\n console.log(error.request);\r\n const err = {\r\n message: \"error\",\r\n status: error.request.status,\r\n };\r\n return err;\r\n });\r\n}\r\n","export const ColorsSetting = {\r\n MAIN_COLOR: \"#0062E1\",\r\n};\r\nexport const OneSignalKey = {\r\n development: \"9f81dc21-7054-4f5f-ad53-87f025d2d154\",\r\n production: \"9f81dc21-7054-4f5f-ad53-87f025d2d154\",\r\n};\r\nexport const NetworkSetting = {\r\n // link dcv\r\n // ROOT_MOB: \"http://222.252.22.174:8080/erp-service-mobile\",\r\n // ROOT_WEB: \"http://222.252.22.174:8080/erp-service\",\r\n ROOT_MOB: \"http://apihrm.dcv.vn/venus-service\",\r\n ROOT_EMPLOYEE: \"http://hrm.auth.dcv.vn/api/v1\",\r\n ROOT_DOTNET: \"http://hrm.api.dcv.vn/api/v1\",\r\n ROOT_JAVA: \"http://hrm.japi.dcv.vn/venus-service\",\r\n};\r\n","import { NetworkSetting } from \"../config/index\";\r\nexport default {\r\n LOGIN: `${NetworkSetting.ROOT_EMPLOYEE}/auth/login`,\r\n APPLICATION: `${NetworkSetting.ROOT_MOB}/employeeRequestService/getLst`,\r\n GETLISTEMPLOYEE: `${NetworkSetting.ROOT_DOTNET}/employee/getall`,\r\n GETLISTEMPLOYEEPAGING: `${NetworkSetting.ROOT_DOTNET}/employee/getallbypaging`,\r\n NEWEMPLOYEE: `${NetworkSetting.ROOT_DOTNET}/employee/save`,\r\n DELETEEMPLOYEE: `${NetworkSetting.ROOT_DOTNET}/employee/delete`,\r\n DETAILEMPLOYEE: `${NetworkSetting.ROOT_DOTNET}/employee/getbyid`,\r\n GETLISTDEPARTMENTPAGING: `${NetworkSetting.ROOT_DOTNET}/department/getallbypaging`,\r\n DELETEDEPARTMENT: `${NetworkSetting.ROOT_DOTNET}/department/delete`,\r\n NEWDEPARTMENT: `${NetworkSetting.ROOT_DOTNET}/department/save`,\r\n DETAILDEPARTMENT: `${NetworkSetting.ROOT_DOTNET}/department/getbyid`,\r\n GETLISTCHECKIN: `${NetworkSetting.ROOT_DOTNET}/checkIn/search`,\r\n GETLISTLETTERPAGING: `${NetworkSetting.ROOT_DOTNET}/complain/getcomplainbystatus`,\r\n AGREELETTER: `${NetworkSetting.ROOT_JAVA}/complainService/hr`,\r\n GETDETAILLETTER: `${NetworkSetting.ROOT_DOTNET}/complain/getbyid`,\r\n DISAGREELETTER: `${NetworkSetting.ROOT_JAVA}/complainService/notApprovalComplain`,\r\n GETTYPEHRREPORT: `${NetworkSetting.ROOT_DOTNET}/complain/typehrreport`,\r\n GETSTATUSHRREPORT: `${NetworkSetting.ROOT_DOTNET}/complain/statushrreport`,\r\n GETCHECKINEACHMONTH: `${NetworkSetting.ROOT_DOTNET}/checkin/yearlyreport`,\r\n GETLISTDAYOFFPAGING: `${NetworkSetting.ROOT_DOTNET}/holiday/getallbypaging`,\r\n CREATEDAYOFF: `${NetworkSetting.ROOT_DOTNET}/holiday/save`,\r\n DELETEDAYOFF: `${NetworkSetting.ROOT_DOTNET}/holiday/delete`,\r\n GETDAYOFF: `${NetworkSetting.ROOT_DOTNET}/holiday/getbyid`,\r\n CREATEWIFI: `${NetworkSetting.ROOT_DOTNET}/wifi/save`,\r\n DELETEWIFI: `${NetworkSetting.ROOT_DOTNET}/wifi/delete`,\r\n GETWIFI: `${NetworkSetting.ROOT_DOTNET}/wifi/getallbypaging`,\r\n GETWIFIDETAIL: `${NetworkSetting.ROOT_DOTNET}/wifi/getbyid`,\r\n CREATELOCATION: `${NetworkSetting.ROOT_DOTNET}/location/save`,\r\n DELETELOCATION: `${NetworkSetting.ROOT_DOTNET}/location/delete`,\r\n GETLOCATION: `${NetworkSetting.ROOT_DOTNET}/location/getallbypaging`,\r\n GETLOCATIONDETAIL: `${NetworkSetting.ROOT_DOTNET}/location/getbyid`,\r\n};\r\n","/* eslint-disable handle-callback-err */\r\nimport { PostLogin, PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const login = async (body) =>\r\n PostLogin(url.LOGIN, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const testApiPokemon = async (body) =>\r\n GetData(\"https://pokeapi.co/api/v2/ability/7/\", body)\r\n .then((res) => res)\r\n .catch((err) => null);\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nimport {\r\n Button,\r\n TextField,\r\n Grid,\r\n InputAdornment,\r\n makeStyles,\r\n FormControlLabel,\r\n Checkbox,\r\n Card,\r\n FormHelperText,\r\n} from \"@material-ui/core\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nimport { AccountCircle, LockRounded } from \"@material-ui/icons\";\r\n\r\nimport { login, testApiPokemon } from \"../../apis/Functions/users\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n submit: {\r\n margin: theme.spacing(3, 0, 2),\r\n width: \"260px\",\r\n backgroundColor: \"#3C8DBC\",\r\n },\r\n root: {\r\n paddingTop: 10,\r\n paddingRight: 20,\r\n paddingLeft: 20,\r\n },\r\n loginTitle: {\r\n fontSize: \"22px\",\r\n color: \"#3C8DBC\",\r\n marginBottom: \"30px\",\r\n },\r\n container: {\r\n flex: 1,\r\n backgroundColor: \"red\",\r\n },\r\n}));\r\n\r\nconst LoginScreen = () => {\r\n function getWindowDimensions() {\r\n const { innerWidth: width, innerHeight: height } = window;\r\n return {\r\n width,\r\n height,\r\n };\r\n }\r\n const classes = useStyles();\r\n let history = useHistory();\r\n\r\n const [state, setState] = useState({\r\n appcode: \"Dcv\",\r\n username: \"\",\r\n password: \"\",\r\n });\r\n\r\n const [helperText, sethelperText] = useState(\"\");\r\n\r\n const Login = async () => {\r\n let res;\r\n if (state.username === \"\" || state.password === \"\") {\r\n sethelperText(\"\");\r\n sethelperText(\"Cần phải điền đầy đủ email và password\");\r\n } else {\r\n res = await login(state);\r\n if (res.data && res.data.errorCode === 0) {\r\n sethelperText(\"\");\r\n localStorage.setItem(KEY.API_TOKEN, res.data.data.accessToken);\r\n history.push(\"/home\");\r\n } else if (res.data && res.data.errorCode === 1) {\r\n sethelperText(\"\");\r\n sethelperText(\"Sai email hoặc mật khẩu\");\r\n }\r\n }\r\n };\r\n\r\n const LoginEnter = async (e) => {\r\n if (e.key === \"Enter\") {\r\n let res;\r\n if (state.username === \"\" || state.password === \"\") {\r\n sethelperText(\"\");\r\n sethelperText(\"Cần phải điền đầy đủ email và password\");\r\n } else {\r\n res = await login(state);\r\n if (res.data && res.data.errorCode === 0) {\r\n sethelperText(\"\");\r\n localStorage.setItem(KEY.API_TOKEN, res.data.data.accessToken);\r\n history.push(\"/home\");\r\n } else if (res.data && res.data.errorCode === 1) {\r\n sethelperText(\"\");\r\n sethelperText(\"Sai email hoặc mật khẩu\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n const height = getWindowDimensions().height;\r\n const width = getWindowDimensions().width;\r\n return (\r\n <Grid\r\n style={{\r\n height,\r\n backgroundImage: `url(https://images.pexels.com/photos/5905443/pexels-photo-5905443.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940)`,\r\n backgroundRepeat: \"no-repeat\",\r\n width,\r\n backgroundSize: \"cover\",\r\n }}\r\n container\r\n direction=\"row\"\r\n justify=\"center\"\r\n alignItems=\"center\"\r\n >\r\n <Card className={classes.root}>\r\n <Grid container direction=\"column\" justify=\"center\" alignItems=\"center\">\r\n <b className={classes.loginTitle}>Đăng nhập vào hệ thống</b>\r\n <TextField\r\n color=\"primary\"\r\n label=\"Tên đăng nhập\"\r\n margin=\"normal\"\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <AccountCircle />\r\n </InputAdornment>\r\n ),\r\n }}\r\n value={state.username}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n username: e.target.value,\r\n });\r\n }}\r\n onKeyDown={LoginEnter}\r\n />\r\n <TextField\r\n type=\"password\"\r\n color=\"primary\"\r\n name=\"password\"\r\n id=\"password\"\r\n autoComplete=\"current-password\"\r\n label=\"Mật khẩu\"\r\n margin=\"normal\"\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <LockRounded />\r\n </InputAdornment>\r\n ),\r\n }}\r\n value={state.password}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n password: e.target.value,\r\n });\r\n }}\r\n onKeyDown={LoginEnter}\r\n />\r\n <div style={{ height: 20 }} />\r\n <div style={{ width: \"100%\" }}>\r\n <FormHelperText\r\n style={{ marginLeft: \"16px\", color: \"red\", fontSize: \"13px\" }}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n </div>\r\n\r\n <Button\r\n onClick={Login}\r\n type=\"submit\"\r\n variant=\"contained\"\r\n color=\"primary\"\r\n className={classes.submit}\r\n >\r\n Đăng nhập\r\n </Button>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default LoginScreen;\r\n","import Container from \"@material-ui/core/Container\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport { Button, Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\n\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\nimport DomainIcon from \"@material-ui/icons/Domain\";\r\nimport AssessmentIcon from \"@material-ui/icons/Assessment\";\r\nimport EmailIcon from \"@material-ui/icons/Email\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ImportantDevicesIcon from \"@material-ui/icons/ImportantDevices\";\r\nimport QueryBuilderIcon from \"@material-ui/icons/QueryBuilder\";\r\nimport PlaylistAddCheckIcon from \"@material-ui/icons/PlaylistAddCheck\";\r\nimport CheckCircleOutlineIcon from \"@material-ui/icons/CheckCircleOutline\";\r\n\r\nconst DepartmentView = (props) => {\r\n return (\r\n <Grid container>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid item lg={4} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#dd4b39\",\r\n paddingTop: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> 5</Typography>\r\n <Typography variant=\"p\" style={{ fontSize: \"15px\" }}>\r\n Đơn từ\r\n </Typography>\r\n </Grid>\r\n <Grid item>\r\n <EmailIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n <Link to=\"./letter\" style={{ textDecoration: \"none\" }}>\r\n <Button\r\n fullWidth\r\n style={{ color: \"white\", backgroundColor: \"#992600\" }}\r\n >\r\n <Typography variant=\"caption\">Thông tin chi tiết</Typography>\r\n </Button>\r\n </Link>\r\n </Card>\r\n </Grid>\r\n <Grid item lg={4} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#f39c12\",\r\n paddingTop: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> 5</Typography>\r\n <Typography variant=\"p\" style={{ fontSize: \"15px\" }}>\r\n Phòng ban\r\n </Typography>\r\n </Grid>\r\n <Grid item>\r\n <DomainIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n <Link to=\"./department/report\" style={{ textDecoration: \"none\" }}>\r\n <Button\r\n fullWidth\r\n style={{ color: \"white\", backgroundColor: \"#cc7a00\" }}\r\n >\r\n <Typography variant=\"caption\">Thông tin chi tiết</Typography>\r\n </Button>\r\n </Link>\r\n </Card>\r\n </Grid>\r\n <Grid item lg={4} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#00c0ef\",\r\n paddingTop: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> 35</Typography>\r\n <Typography variant=\"p\" style={{ fontSize: \"15px\" }}>\r\n Nhân sự\r\n </Typography>\r\n </Grid>\r\n <Grid item>\r\n <PeopleIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n <Link to=\"./employee\" style={{ textDecoration: \"none\" }}>\r\n <Button\r\n fullWidth\r\n style={{ color: \"white\", backgroundColor: \"#3c8dbc\" }}\r\n >\r\n <Typography variant=\"caption\">Thông tin chi tiết</Typography>\r\n </Button>\r\n </Link>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n <Grid container direction=\"row\" spacing={3} style={{ marginTop: \"5px\" }}>\r\n <Grid item xs={12}>\r\n <h1 style={{ textAlign: \"left\" }}>Hôm nay</h1>\r\n </Grid>\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n padding: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> 5</Typography>\r\n <Typography\r\n variant=\"p\"\r\n style={{ color: \"#868e96\", fontSize: \"15px\" }}\r\n >\r\n Đã checkin\r\n </Typography>\r\n </Grid>\r\n <Grid item>\r\n <ImportantDevicesIcon\r\n style={{\r\n width: 70,\r\n height: 70,\r\n color: \"#6610f2\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n padding: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> 5</Typography>\r\n <Typography\r\n variant=\"p\"\r\n style={{ color: \"#868e96\", fontSize: \"15px\" }}\r\n >\r\n Đúng giờ\r\n </Typography>\r\n </Grid>\r\n <Grid item>\r\n <CheckCircleOutlineIcon\r\n style={{\r\n width: 70,\r\n height: 70,\r\n color: \"green\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n padding: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> 5</Typography>\r\n <Typography\r\n variant=\"p\"\r\n style={{ color: \"#868e96\", fontSize: \"15px\" }}\r\n >\r\n Đi muộn\r\n </Typography>\r\n </Grid>\r\n <Grid item>\r\n <QueryBuilderIcon\r\n style={{\r\n width: 70,\r\n height: 70,\r\n color: \"#ffc53d\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n padding: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> 1</Typography>\r\n <Typography\r\n variant=\"p\"\r\n style={{ color: \"#868e96\", fontSize: \"15px\" }}\r\n >\r\n Chưa checkin\r\n </Typography>\r\n </Grid>\r\n <Grid item>\r\n <PlaylistAddCheckIcon\r\n style={{\r\n width: 70,\r\n height: 70,\r\n color: \"#FF3B30\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default DepartmentView;\r\n","import * as React from \"react\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport {\r\n Chart,\r\n PieSeries,\r\n Legend,\r\n Tooltip,\r\n} from \"@devexpress/dx-react-chart-material-ui\";\r\nimport { Typography } from \"@material-ui/core\";\r\nimport {\r\n Animation,\r\n Palette,\r\n HoverState,\r\n EventTracker,\r\n} from \"@devexpress/dx-react-chart\";\r\n\r\nconst SpecialMarkerComponent = ({ name, color }) => {\r\n return (\r\n <div\r\n style={{\r\n width: 20,\r\n height: 20,\r\n borderRadius: 10,\r\n backgroundColor: color,\r\n }}\r\n ></div>\r\n );\r\n};\r\n\r\nexport default class Demo extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n targetItem: undefined,\r\n hover: undefined,\r\n };\r\n\r\n this.changeTargetItem = (targetItem) => this.setState({ targetItem });\r\n\r\n this.changeHover = (hover) => this.setState({ hover });\r\n }\r\n\r\n render() {\r\n const { data, title, targetItem, hover } = this.props;\r\n\r\n return (\r\n <Paper style={{ padding: 10 }}>\r\n <Typography variant=\"h5\">{title}</Typography>\r\n <Chart height={350} data={data}>\r\n <Palette scheme={[\"#9CCC65\", \"#FF7043\", \"#42A5F5\", \"red\"]} />\r\n <PieSeries\r\n valueField=\"val\"\r\n argumentField=\"region\"\r\n innerRadius={0.6}\r\n />\r\n <Legend markerComponent={SpecialMarkerComponent} />\r\n <Animation />\r\n <EventTracker />\r\n <Tooltip\r\n targetItem={targetItem}\r\n onTargetItemChange={this.changeTargetItem}\r\n />\r\n <HoverState hover={hover} onHoverChange={this.changeHover} />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}\r\n","export const appointments = [\r\n {\r\n title: 'Website Re-Design Plan',\r\n startDate: new Date(2018, 5, 25, 9, 35),\r\n endDate: new Date(2018, 5, 25, 11, 30),\r\n id: 0,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Book Flights to San Fran for Sales Trip',\r\n startDate: new Date(2018, 5, 25, 12, 11),\r\n endDate: new Date(2018, 5, 25, 13, 0),\r\n id: 1,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Install New Router in Dev Room',\r\n startDate: new Date(2018, 5, 25, 14, 30),\r\n endDate: new Date(2018, 5, 25, 15, 35),\r\n id: 2,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Approve Personal Computer Upgrade Plan',\r\n startDate: new Date(2018, 5, 26, 10, 0),\r\n endDate: new Date(2018, 5, 26, 11, 0),\r\n id: 3,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Final Budget Review',\r\n startDate: new Date(2018, 5, 26, 12, 0),\r\n endDate: new Date(2018, 5, 26, 13, 35),\r\n id: 4,\r\n location: 'Room 2',\r\n }, {\r\n title: 'New Brochures',\r\n startDate: new Date(2018, 5, 26, 14, 30),\r\n endDate: new Date(2018, 5, 26, 15, 45),\r\n id: 5,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Install New Database',\r\n startDate: new Date(2018, 5, 27, 9, 45),\r\n endDate: new Date(2018, 5, 27, 11, 15),\r\n id: 6,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Approve New Online Marketing Strategy',\r\n startDate: new Date(2018, 5, 27, 12, 0),\r\n endDate: new Date(2018, 5, 27, 14, 0),\r\n id: 7,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Upgrade Personal Computers',\r\n startDate: new Date(2018, 5, 27, 15, 15),\r\n endDate: new Date(2018, 5, 27, 16, 30),\r\n id: 8,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Customer Workshop',\r\n startDate: new Date(2018, 5, 28, 11, 0),\r\n endDate: new Date(2018, 5, 28, 12, 0),\r\n id: 9,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Prepare 2015 Marketing Plan',\r\n startDate: new Date(2018, 5, 28, 11, 0),\r\n endDate: new Date(2018, 5, 28, 13, 30),\r\n id: 10,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Brochure Design Review',\r\n startDate: new Date(2018, 5, 28, 14, 0),\r\n endDate: new Date(2018, 5, 28, 15, 30),\r\n id: 11,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Create Icons for Website',\r\n startDate: new Date(2018, 5, 29, 10, 0),\r\n endDate: new Date(2018, 5, 29, 11, 30),\r\n id: 12,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Upgrade Server Hardware',\r\n startDate: new Date(2018, 5, 29, 14, 30),\r\n endDate: new Date(2018, 5, 29, 16, 0),\r\n id: 13,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Submit New Website Design',\r\n startDate: new Date(2018, 5, 29, 16, 30),\r\n endDate: new Date(2018, 5, 29, 18, 0),\r\n id: 14,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Launch New Website',\r\n startDate: new Date(2018, 5, 29, 12, 20),\r\n endDate: new Date(2018, 5, 29, 14, 0),\r\n id: 15,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Website Re-Design Plan',\r\n startDate: new Date(2018, 6, 2, 9, 30),\r\n endDate: new Date(2018, 6, 2, 15, 30),\r\n id: 16,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Book Flights to San Fran for Sales Trip',\r\n startDate: new Date(2018, 6, 2, 12, 0),\r\n endDate: new Date(2018, 6, 2, 13, 0),\r\n id: 17,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Install New Router in Dev Room',\r\n startDate: new Date(2018, 6, 2, 14, 30),\r\n endDate: new Date(2018, 6, 2, 17, 30),\r\n id: 18,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Approve Personal Computer Upgrade Plan',\r\n startDate: new Date(2018, 6, 2, 16, 0),\r\n endDate: new Date(2018, 6, 3, 9, 0),\r\n id: 19,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Final Budget Review',\r\n startDate: new Date(2018, 6, 3, 10, 15),\r\n endDate: new Date(2018, 6, 3, 13, 35),\r\n id: 20,\r\n location: 'Room 1',\r\n }, {\r\n title: 'New Brochures',\r\n startDate: new Date(2018, 6, 3, 14, 30),\r\n endDate: new Date(2018, 6, 3, 15, 45),\r\n id: 21,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Install New Database',\r\n startDate: new Date(2018, 6, 3, 15, 45),\r\n endDate: new Date(2018, 6, 4, 12, 15),\r\n id: 22,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Approve New Online Marketing Strategy',\r\n startDate: new Date(2018, 6, 4, 12, 35),\r\n endDate: new Date(2018, 6, 4, 14, 15),\r\n id: 23,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Upgrade Personal Computers',\r\n startDate: new Date(2018, 6, 4, 15, 15),\r\n endDate: new Date(2018, 6, 4, 20, 30),\r\n id: 24,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Customer Workshop',\r\n startDate: new Date(2018, 6, 5, 6, 0),\r\n endDate: new Date(2018, 6, 5, 14, 20),\r\n id: 25,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Customer Workshop',\r\n startDate: new Date(2018, 6, 5, 14, 35),\r\n endDate: new Date(2018, 6, 5, 16, 20),\r\n id: 26,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Customer Workshop 2',\r\n startDate: new Date(2018, 6, 5, 10, 0),\r\n endDate: new Date(2018, 6, 5, 11, 20),\r\n id: 27,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Prepare 2015 Marketing Plan',\r\n startDate: new Date(2018, 6, 5, 20, 0),\r\n endDate: new Date(2018, 6, 6, 13, 30),\r\n id: 28,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Brochure Design Review',\r\n startDate: new Date(2018, 6, 6, 14, 10),\r\n endDate: new Date(2018, 6, 6, 15, 30),\r\n id: 29,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Create Icons for Website',\r\n startDate: new Date(2018, 6, 6, 10, 0),\r\n endDate: new Date(2018, 6, 7, 14, 30),\r\n id: 30,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Upgrade Server Hardware',\r\n startDate: new Date(2018, 6, 3, 9, 30),\r\n endDate: new Date(2018, 6, 3, 12, 25),\r\n id: 31,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Submit New Website Design',\r\n startDate: new Date(2018, 6, 3, 12, 30),\r\n endDate: new Date(2018, 6, 3, 18, 0),\r\n id: 32,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Launch New Website',\r\n startDate: new Date(2018, 6, 3, 12, 20),\r\n endDate: new Date(2018, 6, 3, 14, 10),\r\n id: 33,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Book Flights to San Fran for Sales Trip',\r\n startDate: new Date(2018, 5, 26, 0, 0),\r\n endDate: new Date(2018, 5, 27, 0, 0),\r\n id: 34,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Customer Workshop',\r\n startDate: new Date(2018, 5, 29, 10, 0),\r\n endDate: new Date(2018, 5, 30, 14, 30),\r\n id: 35,\r\n location: 'Room 1',\r\n }, {\r\n title: 'Google AdWords Strategy',\r\n startDate: new Date(2018, 6, 3, 0, 0),\r\n endDate: new Date(2018, 6, 4, 10, 30),\r\n id: 36,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Rollout of New Website and Marketing Brochures',\r\n startDate: new Date(2018, 6, 5, 10, 0),\r\n endDate: new Date(2018, 6, 9, 14, 30),\r\n id: 37,\r\n location: 'Room 3',\r\n }, {\r\n title: 'Update NDA Agreement',\r\n startDate: new Date(2018, 6, 1, 10, 0),\r\n endDate: new Date(2018, 6, 3, 14, 30),\r\n id: 38,\r\n location: 'Room 2',\r\n }, {\r\n title: 'Customer Workshop',\r\n startDate: new Date(2018, 6, 1),\r\n endDate: new Date(2018, 6, 2),\r\n allDay: true,\r\n id: 39,\r\n location: 'Room 1',\r\n },\r\n];\r\n","/* eslint-disable max-classes-per-file */\r\n/* eslint-disable react/no-unused-state */\r\nimport * as React from \"react\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { ViewState, EditingState } from \"@devexpress/dx-react-scheduler\";\r\nimport {\r\n Scheduler,\r\n Toolbar,\r\n MonthView,\r\n WeekView,\r\n ViewSwitcher,\r\n Appointments,\r\n AppointmentTooltip,\r\n AppointmentForm,\r\n DragDropProvider,\r\n EditRecurrenceMenu,\r\n AllDayPanel,\r\n} from \"@devexpress/dx-react-scheduler-material-ui\";\r\nimport { connectProps } from \"@devexpress/dx-react-core\";\r\nimport {\r\n KeyboardDateTimePicker,\r\n MuiPickersUtilsProvider,\r\n} from \"@material-ui/pickers\";\r\nimport MomentUtils from \"@date-io/moment\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Fab from \"@material-ui/core/Fab\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport LocationOn from \"@material-ui/icons/LocationOn\";\r\nimport Notes from \"@material-ui/icons/Notes\";\r\nimport Close from \"@material-ui/icons/Close\";\r\nimport CalendarToday from \"@material-ui/icons/CalendarToday\";\r\nimport Create from \"@material-ui/icons/Create\";\r\n\r\nimport { appointments } from \"./demo-data/appointments\";\r\n\r\nconst containerStyles = (theme) => ({\r\n container: {\r\n width: theme.spacing(68),\r\n padding: 0,\r\n paddingBottom: theme.spacing(2),\r\n },\r\n content: {\r\n padding: theme.spacing(2),\r\n paddingTop: 0,\r\n },\r\n header: {\r\n overflow: \"hidden\",\r\n paddingTop: theme.spacing(0.5),\r\n },\r\n closeButton: {\r\n float: \"right\",\r\n },\r\n buttonGroup: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 2),\r\n },\r\n button: {\r\n marginLeft: theme.spacing(2),\r\n },\r\n picker: {\r\n marginRight: theme.spacing(2),\r\n \"&:last-child\": {\r\n marginRight: 0,\r\n },\r\n width: \"50%\",\r\n },\r\n wrapper: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n padding: theme.spacing(1, 0),\r\n },\r\n icon: {\r\n margin: theme.spacing(2, 0),\r\n marginRight: theme.spacing(2),\r\n },\r\n textField: {\r\n width: \"100%\",\r\n },\r\n});\r\n\r\nclass AppointmentFormContainerBasic extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n appointmentChanges: {},\r\n };\r\n\r\n this.getAppointmentData = () => {\r\n const { appointmentData } = this.props;\r\n return appointmentData;\r\n };\r\n this.getAppointmentChanges = () => {\r\n const { appointmentChanges } = this.state;\r\n return appointmentChanges;\r\n };\r\n\r\n this.changeAppointment = this.changeAppointment.bind(this);\r\n this.commitAppointment = this.commitAppointment.bind(this);\r\n }\r\n\r\n changeAppointment({ field, changes }) {\r\n const nextChanges = {\r\n ...this.getAppointmentChanges(),\r\n [field]: changes,\r\n };\r\n this.setState({\r\n appointmentChanges: nextChanges,\r\n });\r\n }\r\n\r\n commitAppointment(type) {\r\n const { commitChanges } = this.props;\r\n const appointment = {\r\n ...this.getAppointmentData(),\r\n ...this.getAppointmentChanges(),\r\n };\r\n if (type === \"deleted\") {\r\n commitChanges({ [type]: appointment.id });\r\n } else if (type === \"changed\") {\r\n commitChanges({ [type]: { [appointment.id]: appointment } });\r\n } else {\r\n commitChanges({ [type]: appointment });\r\n }\r\n this.setState({\r\n appointmentChanges: {},\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n visible,\r\n visibleChange,\r\n appointmentData,\r\n cancelAppointment,\r\n target,\r\n onHide,\r\n } = this.props;\r\n const { appointmentChanges } = this.state;\r\n\r\n const displayAppointmentData = {\r\n ...appointmentData,\r\n ...appointmentChanges,\r\n };\r\n\r\n const isNewAppointment = appointmentData.id === undefined;\r\n const applyChanges = isNewAppointment\r\n ? () => this.commitAppointment(\"added\")\r\n : () => this.commitAppointment(\"changed\");\r\n\r\n const textEditorProps = (field) => ({\r\n variant: \"outlined\",\r\n onChange: ({ target: change }) =>\r\n this.changeAppointment({\r\n field: [field],\r\n changes: change.value,\r\n }),\r\n value: displayAppointmentData[field] || \"\",\r\n label: field[0].toUpperCase() + field.slice(1),\r\n className: classes.textField,\r\n });\r\n\r\n const pickerEditorProps = (field) => ({\r\n className: classes.picker,\r\n // keyboard: true,\r\n ampm: false,\r\n value: displayAppointmentData[field],\r\n onChange: (date) =>\r\n this.changeAppointment({\r\n field: [field],\r\n changes: date\r\n ? date.toDate()\r\n : new Date(displayAppointmentData[field]),\r\n }),\r\n inputVariant: \"outlined\",\r\n format: \"DD/MM/YYYY HH:mm\",\r\n onError: () => null,\r\n });\r\n\r\n const cancelChanges = () => {\r\n this.setState({\r\n appointmentChanges: {},\r\n });\r\n visibleChange();\r\n cancelAppointment();\r\n };\r\n\r\n return (\r\n <AppointmentForm.Overlay\r\n visible={visible}\r\n target={target}\r\n fullSize\r\n onHide={onHide}\r\n >\r\n <div>\r\n <div className={classes.header}>\r\n <IconButton className={classes.closeButton} onClick={cancelChanges}>\r\n <Close color=\"action\" />\r\n </IconButton>\r\n </div>\r\n <div className={classes.content}>\r\n <div className={classes.wrapper}>\r\n <Create className={classes.icon} color=\"action\" />\r\n <TextField {...textEditorProps(\"title\")} />\r\n </div>\r\n <div className={classes.wrapper}>\r\n <CalendarToday className={classes.icon} color=\"action\" />\r\n <MuiPickersUtilsProvider utils={MomentUtils}>\r\n <KeyboardDateTimePicker\r\n label=\"Start Date\"\r\n {...pickerEditorProps(\"startDate\")}\r\n />\r\n <KeyboardDateTimePicker\r\n label=\"End Date\"\r\n {...pickerEditorProps(\"endDate\")}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </div>\r\n <div className={classes.wrapper}>\r\n <LocationOn className={classes.icon} color=\"action\" />\r\n <TextField {...textEditorProps(\"location\")} />\r\n </div>\r\n <div className={classes.wrapper}>\r\n <Notes className={classes.icon} color=\"action\" />\r\n <TextField {...textEditorProps(\"notes\")} multiline rows=\"6\" />\r\n </div>\r\n </div>\r\n <div className={classes.buttonGroup}>\r\n {!isNewAppointment && (\r\n <Button\r\n variant=\"outlined\"\r\n color=\"secondary\"\r\n className={classes.button}\r\n onClick={() => {\r\n visibleChange();\r\n this.commitAppointment(\"deleted\");\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n )}\r\n <Button\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n className={classes.button}\r\n onClick={() => {\r\n visibleChange();\r\n applyChanges();\r\n }}\r\n >\r\n {isNewAppointment ? \"Create\" : \"Save\"}\r\n </Button>\r\n </div>\r\n </div>\r\n </AppointmentForm.Overlay>\r\n );\r\n }\r\n}\r\n\r\nconst AppointmentFormContainer = withStyles(containerStyles, {\r\n name: \"AppointmentFormContainer\",\r\n})(AppointmentFormContainerBasic);\r\n\r\nconst styles = (theme) => ({\r\n addButton: {\r\n width: 50,\r\n height: 50,\r\n position: \"absolute\",\r\n right: \"30%\",\r\n },\r\n});\r\n\r\n/* eslint-disable-next-line react/no-multi-comp */\r\nclass Demo extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: appointments,\r\n currentDate: \"2018-06-27\",\r\n confirmationVisible: false,\r\n editingFormVisible: false,\r\n deletedAppointmentId: undefined,\r\n editingAppointment: undefined,\r\n previousAppointment: undefined,\r\n addedAppointment: {},\r\n startDayHour: 9,\r\n endDayHour: 19,\r\n isNewAppointment: false,\r\n };\r\n\r\n this.toggleConfirmationVisible = this.toggleConfirmationVisible.bind(this);\r\n this.commitDeletedAppointment = this.commitDeletedAppointment.bind(this);\r\n this.toggleEditingFormVisibility = this.toggleEditingFormVisibility.bind(\r\n this\r\n );\r\n\r\n this.commitChanges = this.commitChanges.bind(this);\r\n this.onEditingAppointmentChange = this.onEditingAppointmentChange.bind(\r\n this\r\n );\r\n this.onAddedAppointmentChange = this.onAddedAppointmentChange.bind(this);\r\n this.appointmentForm = connectProps(AppointmentFormContainer, () => {\r\n const {\r\n editingFormVisible,\r\n editingAppointment,\r\n data,\r\n addedAppointment,\r\n isNewAppointment,\r\n previousAppointment,\r\n } = this.state;\r\n\r\n const currentAppointment =\r\n data.filter(\r\n (appointment) =>\r\n editingAppointment && appointment.id === editingAppointment.id\r\n )[0] || addedAppointment;\r\n const cancelAppointment = () => {\r\n if (isNewAppointment) {\r\n this.setState({\r\n editingAppointment: previousAppointment,\r\n isNewAppointment: false,\r\n });\r\n }\r\n };\r\n\r\n return {\r\n visible: editingFormVisible,\r\n appointmentData: currentAppointment,\r\n commitChanges: this.commitChanges,\r\n visibleChange: this.toggleEditingFormVisibility,\r\n onEditingAppointmentChange: this.onEditingAppointmentChange,\r\n cancelAppointment,\r\n };\r\n });\r\n }\r\n\r\n componentDidUpdate() {\r\n this.appointmentForm.update();\r\n }\r\n\r\n onEditingAppointmentChange(editingAppointment) {\r\n this.setState({ editingAppointment });\r\n }\r\n\r\n onAddedAppointmentChange(addedAppointment) {\r\n this.setState({ addedAppointment });\r\n const { editingAppointment } = this.state;\r\n if (editingAppointment !== undefined) {\r\n this.setState({\r\n previousAppointment: editingAppointment,\r\n });\r\n }\r\n this.setState({ editingAppointment: undefined, isNewAppointment: true });\r\n }\r\n\r\n setDeletedAppointmentId(id) {\r\n this.setState({ deletedAppointmentId: id });\r\n }\r\n\r\n toggleEditingFormVisibility() {\r\n const { editingFormVisible } = this.state;\r\n this.setState({\r\n editingFormVisible: !editingFormVisible,\r\n });\r\n }\r\n\r\n toggleConfirmationVisible() {\r\n const { confirmationVisible } = this.state;\r\n this.setState({ confirmationVisible: !confirmationVisible });\r\n }\r\n\r\n commitDeletedAppointment() {\r\n this.setState((state) => {\r\n const { data, deletedAppointmentId } = state;\r\n const nextData = data.filter(\r\n (appointment) => appointment.id !== deletedAppointmentId\r\n );\r\n\r\n return { data: nextData, deletedAppointmentId: null };\r\n });\r\n this.toggleConfirmationVisible();\r\n }\r\n\r\n commitChanges({ added, changed, deleted }) {\r\n this.setState((state) => {\r\n let { data } = state;\r\n if (added) {\r\n const startingAddedId =\r\n data.length > 0 ? data[data.length - 1].id + 1 : 0;\r\n data = [...data, { id: startingAddedId, ...added }];\r\n }\r\n if (changed) {\r\n data = data.map((appointment) =>\r\n changed[appointment.id]\r\n ? { ...appointment, ...changed[appointment.id] }\r\n : appointment\r\n );\r\n }\r\n if (deleted !== undefined) {\r\n this.setDeletedAppointmentId(deleted);\r\n this.toggleConfirmationVisible();\r\n }\r\n return { data, addedAppointment: {} };\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n currentDate,\r\n data,\r\n confirmationVisible,\r\n editingFormVisible,\r\n startDayHour,\r\n endDayHour,\r\n } = this.state;\r\n const { classes } = this.props;\r\n\r\n return (\r\n <Paper>\r\n <Scheduler data={data} height={660}>\r\n <ViewState currentDate={currentDate} />\r\n <EditingState\r\n onCommitChanges={this.commitChanges}\r\n onEditingAppointmentChange={this.onEditingAppointmentChange}\r\n onAddedAppointmentChange={this.onAddedAppointmentChange}\r\n />\r\n <WeekView startDayHour={startDayHour} endDayHour={endDayHour} />\r\n <MonthView />\r\n <AllDayPanel />\r\n <EditRecurrenceMenu />\r\n <Appointments />\r\n <AppointmentTooltip showOpenButton showCloseButton showDeleteButton />\r\n <Toolbar />\r\n <ViewSwitcher />\r\n <AppointmentForm\r\n overlayComponent={this.appointmentForm}\r\n visible={editingFormVisible}\r\n onVisibilityChange={this.toggleEditingFormVisibility}\r\n />\r\n <DragDropProvider />\r\n </Scheduler>\r\n\r\n <Dialog open={confirmationVisible} onClose={this.cancelDelete}>\r\n <DialogTitle>Delete Appointment</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>\r\n Are you sure you want to delete this appointment?\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={this.toggleConfirmationVisible}\r\n color=\"primary\"\r\n variant=\"outlined\"\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n onClick={this.commitDeletedAppointment}\r\n color=\"secondary\"\r\n variant=\"outlined\"\r\n >\r\n Delete\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <div style={{ height: 50 }}>\r\n <Fab\r\n color=\"secondary\"\r\n className={classes.addButton}\r\n onClick={() => {\r\n this.setState({ editingFormVisible: true });\r\n this.onEditingAppointmentChange(undefined);\r\n this.onAddedAppointmentChange({\r\n startDate: new Date(currentDate).setHours(startDayHour),\r\n endDate: new Date(currentDate).setHours(startDayHour + 1),\r\n });\r\n }}\r\n >\r\n <AddIcon />\r\n </Fab>\r\n </div>\r\n </Paper>\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { name: \"EditingDemo\" })(Demo);\r\n","import * as React from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport {\r\n Chart,\r\n BarSeries,\r\n Title,\r\n ArgumentAxis,\r\n ValueAxis,\r\n} from '@devexpress/dx-react-chart-material-ui';\r\n\r\nimport { Animation } from '@devexpress/dx-react-chart';\r\n\r\nconst data = [\r\n { month: '12', population: 35 },\r\n { month: '11', population: 30 },\r\n { month: '10', population: 36 },\r\n { month: '9', population: 35 },\r\n { month: '8', population: 35 },\r\n { month: '7', population: 38 },\r\n { month: '6', population: 34 },\r\n { month: '5', population: 33 },\r\n { month: '4', population: 31 },\r\n { month: '3', population: 28 },\r\n { month: '2', population: 33 },\r\n { month: '1', population: 38 },\r\n\r\n];\r\n\r\nexport default class Demo extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n\r\n return (\r\n <Paper>\r\n <Chart\r\n height={500}\r\n data={chartData}\r\n rotated\r\n >\r\n <ArgumentAxis />\r\n <ValueAxis max={7} />\r\n\r\n <BarSeries\r\n valueField=\"population\"\r\n argumentField=\"month\"\r\n />\r\n <Title text=\"Số lượng nhân sự (2020)\" />\r\n <Animation />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}","export const born = [\r\n {\r\n year: 1995,\r\n ru: 101,\r\n ch: 170,\r\n us: 31,\r\n },\r\n {\r\n year: 1998,\r\n ru: 200,\r\n ch: 80,\r\n us: 90,\r\n },\r\n {\r\n year: 2000,\r\n ru: 100,\r\n ch: 70,\r\n us: 45,\r\n },\r\n {\r\n year: 2001,\r\n ru: 110,\r\n ch: 70,\r\n us: 75,\r\n },\r\n {\r\n year: 2002,\r\n ru: 95,\r\n ch: 120,\r\n us: 25,\r\n },\r\n {\r\n year: 2006,\r\n ru: 115,\r\n ch: 50,\r\n us: 45,\r\n },\r\n {\r\n year: 2007,\r\n ru: 230,\r\n ch: 110,\r\n us: 120,\r\n },\r\n {\r\n year: 2015,\r\n ru: 89,\r\n ch: 90,\r\n us: 19,\r\n },\r\n];\r\n\r\nexport const populationPyramid = [\r\n {\r\n age: \"0-4\",\r\n male: -4.6,\r\n female: 4.3,\r\n },\r\n {\r\n age: \"5-9\",\r\n male: -4.4,\r\n female: 4.2,\r\n },\r\n {\r\n age: \"10-14\",\r\n male: -4.2,\r\n female: 4.0,\r\n },\r\n {\r\n age: \"15-19\",\r\n male: -4.0,\r\n female: 3.8,\r\n },\r\n {\r\n age: \"20-24\",\r\n male: -3.9,\r\n female: 3.7,\r\n },\r\n {\r\n age: \"25-29\",\r\n male: -4.0,\r\n female: 3.8,\r\n },\r\n {\r\n age: \"30-34\",\r\n male: -4.0,\r\n female: 3.8,\r\n },\r\n {\r\n age: \"35-39\",\r\n male: -3.5,\r\n female: 3.4,\r\n },\r\n {\r\n age: \"40-44\",\r\n male: -3.2,\r\n female: 3.1,\r\n },\r\n {\r\n age: \"45-49\",\r\n male: -3.1,\r\n female: 3.1,\r\n },\r\n {\r\n age: \"50-54\",\r\n male: -2.8,\r\n female: 2.8,\r\n },\r\n {\r\n age: \"55-59\",\r\n male: -2.4,\r\n female: 2.5,\r\n },\r\n {\r\n age: \"60-64\",\r\n male: -2.0,\r\n female: 2.1,\r\n },\r\n {\r\n age: \"65-69\",\r\n male: -1.6,\r\n female: 1.8,\r\n },\r\n {\r\n age: \"70-74\",\r\n male: -1.1,\r\n female: 1.2,\r\n },\r\n {\r\n age: \"75-79\",\r\n male: -0.7,\r\n female: 0.9,\r\n },\r\n {\r\n age: \"80-84\",\r\n male: -0.4,\r\n female: 0.6,\r\n },\r\n {\r\n age: \"85-89\",\r\n male: -0.2,\r\n female: 0.3,\r\n },\r\n {\r\n age: \"90+\",\r\n male: -0.1,\r\n female: 0.1,\r\n },\r\n];\r\n\r\nexport const gaming = [\r\n {\r\n year: 2012,\r\n mobile: 18,\r\n pc: 37,\r\n console: 45,\r\n },\r\n {\r\n year: 2013,\r\n mobile: 23,\r\n pc: 38,\r\n console: 39,\r\n },\r\n {\r\n year: 2014,\r\n mobile: 29,\r\n pc: 36,\r\n console: 35,\r\n },\r\n {\r\n year: 2015,\r\n mobile: 34,\r\n pc: 34,\r\n console: 32,\r\n },\r\n {\r\n year: 2016,\r\n mobile: 40,\r\n pc: 30,\r\n console: 30,\r\n },\r\n {\r\n year: 2017,\r\n mobile: 46,\r\n pc: 27,\r\n console: 27,\r\n },\r\n {\r\n year: 2018,\r\n mobile: 51,\r\n pc: 24,\r\n console: 25,\r\n },\r\n];\r\n\r\nexport const annualVehiclesSales = [\r\n { year: 2011, USA: 171763, China: 5070 },\r\n { year: 2012, USA: 53240, China: 9900 },\r\n { year: 2013, USA: 96700, China: 15340 },\r\n { year: 2014, USA: 118780, China: 73170 },\r\n { year: 2015, USA: 113870, China: 307380 },\r\n { year: 2016, USA: 159620, China: 336000 },\r\n { year: 2017, USA: 194479, China: 600174 },\r\n];\r\n\r\nexport const australianMedals = [\r\n {\r\n year: 1896,\r\n gold: 2,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1900,\r\n gold: 2,\r\n silver: 0,\r\n bronze: 3,\r\n },\r\n {\r\n year: 1904,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1908,\r\n gold: 1,\r\n silver: 2,\r\n bronze: 2,\r\n },\r\n {\r\n year: 1912,\r\n gold: 2,\r\n silver: 2,\r\n bronze: 3,\r\n },\r\n {\r\n year: 1916,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1920,\r\n gold: 0,\r\n silver: 2,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1924,\r\n gold: 3,\r\n silver: 1,\r\n bronze: 2,\r\n },\r\n {\r\n year: 1928,\r\n gold: 1,\r\n silver: 2,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1932,\r\n gold: 3,\r\n silver: 1,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1936,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1940,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1944,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1948,\r\n gold: 2,\r\n silver: 6,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1952,\r\n gold: 6,\r\n silver: 2,\r\n bronze: 3,\r\n },\r\n {\r\n year: 1956,\r\n gold: 13,\r\n silver: 8,\r\n bronze: 14,\r\n },\r\n {\r\n year: 1960,\r\n gold: 8,\r\n silver: 8,\r\n bronze: 6,\r\n },\r\n {\r\n year: 1964,\r\n gold: 6,\r\n silver: 2,\r\n bronze: 10,\r\n },\r\n {\r\n year: 1968,\r\n gold: 5,\r\n silver: 7,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1972,\r\n gold: 8,\r\n silver: 7,\r\n bronze: 2,\r\n },\r\n {\r\n year: 1976,\r\n gold: 0,\r\n silver: 1,\r\n bronze: 4,\r\n },\r\n {\r\n year: 1980,\r\n gold: 2,\r\n silver: 2,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1984,\r\n gold: 4,\r\n silver: 8,\r\n bronze: 12,\r\n },\r\n {\r\n year: 1988,\r\n gold: 3,\r\n silver: 6,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1992,\r\n gold: 7,\r\n silver: 9,\r\n bronze: 11,\r\n },\r\n {\r\n year: 1996,\r\n gold: 9,\r\n silver: 9,\r\n bronze: 23,\r\n },\r\n {\r\n year: 2000,\r\n gold: 16,\r\n silver: 25,\r\n bronze: 17,\r\n },\r\n {\r\n year: 2004,\r\n gold: 17,\r\n silver: 16,\r\n bronze: 16,\r\n },\r\n {\r\n year: 2008,\r\n gold: 14,\r\n silver: 15,\r\n bronze: 17,\r\n },\r\n];\r\n\r\nexport const bitcoin = [\r\n { date: new Date(2015, 10, 15), price: 346 },\r\n { date: new Date(2015, 11, 17), price: 441 },\r\n { date: new Date(2016, 0, 16), price: 435 },\r\n { date: new Date(2016, 1, 21), price: 415 },\r\n { date: new Date(2016, 3, 25), price: 445 },\r\n { date: new Date(2016, 4, 29), price: 460 },\r\n { date: new Date(2016, 5, 20), price: 730 },\r\n { date: new Date(2016, 7, 5), price: 600 },\r\n { date: new Date(2016, 8, 14), price: 617 },\r\n { date: new Date(2016, 9, 30), price: 674 },\r\n { date: new Date(2016, 11, 21), price: 785 },\r\n { date: new Date(2017, 0, 8), price: 991 },\r\n { date: new Date(2017, 1, 9), price: 1028 },\r\n { date: new Date(2017, 2, 9), price: 1251 },\r\n { date: new Date(2017, 3, 6), price: 1103 },\r\n { date: new Date(2017, 4, 4), price: 1392 },\r\n { date: new Date(2017, 5, 11), price: 2747 },\r\n { date: new Date(2017, 6, 19), price: 2203 },\r\n { date: new Date(2017, 7, 18), price: 4114 },\r\n { date: new Date(2017, 8, 19), price: 3840 },\r\n { date: new Date(2017, 9, 19), price: 5591 },\r\n { date: new Date(2017, 10, 14), price: 6716 },\r\n { date: new Date(2017, 11, 22), price: 17905 },\r\n { date: new Date(2018, 0, 23), price: 11438 },\r\n { date: new Date(2018, 1, 10), price: 8125 },\r\n { date: new Date(2018, 2, 6), price: 11079 },\r\n { date: new Date(2018, 3, 7), price: 6913 },\r\n { date: new Date(2018, 4, 9), price: 9511 },\r\n { date: new Date(2018, 5, 6), price: 7553 },\r\n { date: new Date(2018, 6, 18), price: 6400 },\r\n];\r\n\r\nexport const population = [\r\n {\r\n state: \"USA\",\r\n maleyoung: 29.956,\r\n malemiddle: 90.354,\r\n maleolder: 14.472,\r\n femaleyoung: 28.597,\r\n femalemiddle: 91.827,\r\n femaleolder: 20.362,\r\n },\r\n {\r\n state: \"Brazil\",\r\n maleyoung: 25.607,\r\n malemiddle: 55.793,\r\n maleolder: 3.727,\r\n femaleyoung: 24.67,\r\n femalemiddle: 57.598,\r\n femaleolder: 5.462,\r\n },\r\n {\r\n state: \"Russia\",\r\n maleyoung: 13.493,\r\n malemiddle: 48.983,\r\n maleolder: 5.802,\r\n femaleyoung: 12.971,\r\n femalemiddle: 52.14,\r\n femaleolder: 12.61,\r\n },\r\n {\r\n state: \"Japan\",\r\n maleyoung: 9.575,\r\n malemiddle: 43.363,\r\n maleolder: 9.024,\r\n femaleyoung: 9.105,\r\n femalemiddle: 42.98,\r\n femaleolder: 12.501,\r\n },\r\n {\r\n state: \"Mexico\",\r\n maleyoung: 17.306,\r\n malemiddle: 30.223,\r\n maleolder: 1.927,\r\n femaleyoung: 16.632,\r\n femalemiddle: 31.868,\r\n femaleolder: 2.391,\r\n },\r\n {\r\n state: \"Germany\",\r\n maleyoung: 6.679,\r\n malemiddle: 28.638,\r\n maleolder: 5.133,\r\n femaleyoung: 6.333,\r\n femalemiddle: 27.693,\r\n femaleolder: 8.318,\r\n },\r\n {\r\n state: \"United Kindom\",\r\n maleyoung: 5.816,\r\n malemiddle: 19.622,\r\n maleolder: 3.864,\r\n femaleyoung: 5.519,\r\n femalemiddle: 19.228,\r\n femaleolder: 5.459,\r\n },\r\n];\r\n\r\nexport const olimpicMedals = [\r\n {\r\n country: \"USA\",\r\n gold: 36,\r\n silver: 38,\r\n bronze: 36,\r\n },\r\n {\r\n country: \"China\",\r\n gold: 51,\r\n silver: 21,\r\n bronze: 28,\r\n },\r\n {\r\n country: \"Russia\",\r\n gold: 23,\r\n silver: 21,\r\n bronze: 28,\r\n },\r\n {\r\n country: \"Britain\",\r\n gold: 19,\r\n silver: 13,\r\n bronze: 15,\r\n },\r\n {\r\n country: \"Australia\",\r\n gold: 14,\r\n silver: 15,\r\n bronze: 17,\r\n },\r\n {\r\n country: \"Germany\",\r\n gold: 16,\r\n silver: 10,\r\n bronze: 15,\r\n },\r\n];\r\n\r\nexport const confidence = [\r\n {\r\n month: 1,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 32,\r\n pending: 5,\r\n },\r\n {\r\n month: 2,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 33,\r\n pending: 20,\r\n },\r\n {\r\n month: 3,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 30,\r\n pending: 30,\r\n },\r\n {\r\n month: 4,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 34,\r\n pending: 25,\r\n },\r\n {\r\n month: 5,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 32,\r\n pending: 33,\r\n },\r\n {\r\n month: 6,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 48,\r\n pending: 40,\r\n },\r\n {\r\n month: 7,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 41,\r\n pending: 50,\r\n },\r\n {\r\n month: 8,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 45,\r\n pending: 60,\r\n },\r\n {\r\n month: 9,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 44,\r\n pending: 45,\r\n },\r\n {\r\n month: 10,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 44,\r\n pending: 35,\r\n },\r\n {\r\n month: 11,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 44,\r\n pending: 33,\r\n },\r\n {\r\n month: 12,\r\n validCheckIn: 0,\r\n count_Dmvs: 0,\r\n absent: 44,\r\n pending: 22,\r\n },\r\n];\r\n\r\nexport const energyConsumption = [\r\n {\r\n country: \"USA\",\r\n hydro: 59.8,\r\n oil: 937.6,\r\n gas: 582,\r\n coal: 564.3,\r\n nuclear: 187.9,\r\n },\r\n {\r\n country: \"China\",\r\n hydro: 74.2,\r\n oil: 308.6,\r\n gas: 35.1,\r\n coal: 956.9,\r\n nuclear: 11.3,\r\n },\r\n {\r\n country: \"Russia\",\r\n hydro: 40,\r\n oil: 128.5,\r\n gas: 361.8,\r\n coal: 105,\r\n nuclear: 32.4,\r\n },\r\n {\r\n country: \"Japan\",\r\n hydro: 22.6,\r\n oil: 241.5,\r\n gas: 64.9,\r\n coal: 120.8,\r\n nuclear: 64.8,\r\n },\r\n {\r\n country: \"India\",\r\n hydro: 19,\r\n oil: 119.3,\r\n gas: 28.9,\r\n coal: 204.8,\r\n nuclear: 3.8,\r\n },\r\n {\r\n country: \"Germany\",\r\n hydro: 6.1,\r\n oil: 123.6,\r\n gas: 77.3,\r\n coal: 85.7,\r\n nuclear: 37.8,\r\n },\r\n];\r\n\r\nexport const carbonEmmision = [\r\n {\r\n year: 1950,\r\n gas: 97,\r\n liquids: 423,\r\n solids: 1070,\r\n cementProduction: 18,\r\n gasFlaring: 23,\r\n },\r\n {\r\n year: 1960,\r\n gas: 227,\r\n liquids: 849,\r\n solids: 1410,\r\n cementProduction: 43,\r\n gasFlaring: 39,\r\n },\r\n {\r\n year: 1970,\r\n gas: 493,\r\n liquids: 1839,\r\n solids: 1556,\r\n cementProduction: 78,\r\n gasFlaring: 87,\r\n },\r\n {\r\n year: 1980,\r\n gas: 737,\r\n liquids: 2422,\r\n solids: 1935,\r\n cementProduction: 120,\r\n gasFlaring: 86,\r\n },\r\n {\r\n year: 1990,\r\n gas: 1026,\r\n liquids: 2492,\r\n solids: 2359,\r\n cementProduction: 157,\r\n gasFlaring: 40,\r\n },\r\n {\r\n year: 2000,\r\n gas: 1289,\r\n liquids: 2845,\r\n solids: 2327,\r\n cementProduction: 226,\r\n gasFlaring: 46,\r\n },\r\n {\r\n year: 2010,\r\n gas: 1696,\r\n liquids: 3107,\r\n solids: 3812,\r\n cementProduction: 446,\r\n gasFlaring: 67,\r\n },\r\n];\r\n\r\nexport const booksSale = [\r\n {\r\n year: 1970,\r\n mysteries: 9,\r\n scienceFiction: 16,\r\n romance: 5,\r\n fantasy: 4,\r\n thrillers: 19,\r\n },\r\n {\r\n year: 1971,\r\n mysteries: 15,\r\n scienceFiction: 18,\r\n romance: 2,\r\n fantasy: 4,\r\n thrillers: 14,\r\n },\r\n {\r\n year: 1972,\r\n mysteries: 10,\r\n scienceFiction: 20,\r\n romance: 1,\r\n fantasy: 16,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1973,\r\n mysteries: 12,\r\n scienceFiction: 17,\r\n romance: 15,\r\n fantasy: 5,\r\n thrillers: 14,\r\n },\r\n {\r\n year: 1974,\r\n mysteries: 8,\r\n scienceFiction: 13,\r\n romance: 10,\r\n fantasy: 19,\r\n thrillers: 5,\r\n },\r\n {\r\n year: 1975,\r\n mysteries: 7,\r\n scienceFiction: 18,\r\n romance: 20,\r\n fantasy: 18,\r\n thrillers: 12,\r\n },\r\n {\r\n year: 1976,\r\n mysteries: 12,\r\n scienceFiction: 12,\r\n romance: 5,\r\n fantasy: 2,\r\n thrillers: 3,\r\n },\r\n {\r\n year: 1977,\r\n mysteries: 18,\r\n scienceFiction: 16,\r\n romance: 1,\r\n fantasy: 6,\r\n thrillers: 3,\r\n },\r\n {\r\n year: 1978,\r\n mysteries: 3,\r\n scienceFiction: 13,\r\n romance: 9,\r\n fantasy: 15,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1979,\r\n mysteries: 11,\r\n scienceFiction: 13,\r\n romance: 14,\r\n fantasy: 1,\r\n thrillers: 12,\r\n },\r\n {\r\n year: 1980,\r\n mysteries: 6,\r\n scienceFiction: 19,\r\n romance: 16,\r\n fantasy: 6,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 1981,\r\n mysteries: 2,\r\n scienceFiction: 15,\r\n romance: 4,\r\n fantasy: 6,\r\n thrillers: 13,\r\n },\r\n {\r\n year: 1982,\r\n mysteries: 4,\r\n scienceFiction: 17,\r\n romance: 20,\r\n fantasy: 7,\r\n thrillers: 10,\r\n },\r\n {\r\n year: 1983,\r\n mysteries: 3,\r\n scienceFiction: 2,\r\n romance: 18,\r\n fantasy: 18,\r\n thrillers: 17,\r\n },\r\n {\r\n year: 1984,\r\n mysteries: 10,\r\n scienceFiction: 19,\r\n romance: 6,\r\n fantasy: 13,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1985,\r\n mysteries: 16,\r\n scienceFiction: 6,\r\n romance: 5,\r\n fantasy: 2,\r\n thrillers: 7,\r\n },\r\n {\r\n year: 1986,\r\n mysteries: 17,\r\n scienceFiction: 4,\r\n romance: 8,\r\n fantasy: 10,\r\n thrillers: 4,\r\n },\r\n {\r\n year: 1987,\r\n mysteries: 9,\r\n scienceFiction: 18,\r\n romance: 17,\r\n fantasy: 6,\r\n thrillers: 9,\r\n },\r\n {\r\n year: 1988,\r\n mysteries: 6,\r\n scienceFiction: 8,\r\n romance: 17,\r\n fantasy: 13,\r\n thrillers: 1,\r\n },\r\n {\r\n year: 1989,\r\n mysteries: 3,\r\n scienceFiction: 10,\r\n romance: 13,\r\n fantasy: 17,\r\n thrillers: 2,\r\n },\r\n {\r\n year: 1990,\r\n mysteries: 10,\r\n scienceFiction: 8,\r\n romance: 14,\r\n fantasy: 12,\r\n thrillers: 7,\r\n },\r\n {\r\n year: 1991,\r\n mysteries: 18,\r\n scienceFiction: 1,\r\n romance: 2,\r\n fantasy: 8,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 1992,\r\n mysteries: 19,\r\n scienceFiction: 18,\r\n romance: 11,\r\n fantasy: 20,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1993,\r\n mysteries: 7,\r\n scienceFiction: 14,\r\n romance: 4,\r\n fantasy: 8,\r\n thrillers: 10,\r\n },\r\n {\r\n year: 1994,\r\n mysteries: 2,\r\n scienceFiction: 18,\r\n romance: 13,\r\n fantasy: 11,\r\n thrillers: 15,\r\n },\r\n {\r\n year: 1995,\r\n mysteries: 2,\r\n scienceFiction: 6,\r\n romance: 7,\r\n fantasy: 11,\r\n thrillers: 10,\r\n },\r\n {\r\n year: 1996,\r\n mysteries: 10,\r\n scienceFiction: 19,\r\n romance: 17,\r\n fantasy: 17,\r\n thrillers: 9,\r\n },\r\n {\r\n year: 1997,\r\n mysteries: 3,\r\n scienceFiction: 7,\r\n romance: 4,\r\n fantasy: 15,\r\n thrillers: 9,\r\n },\r\n {\r\n year: 1998,\r\n mysteries: 13,\r\n scienceFiction: 1,\r\n romance: 7,\r\n fantasy: 16,\r\n thrillers: 13,\r\n },\r\n {\r\n year: 1999,\r\n mysteries: 19,\r\n scienceFiction: 7,\r\n romance: 18,\r\n fantasy: 14,\r\n thrillers: 1,\r\n },\r\n {\r\n year: 2000,\r\n mysteries: 2,\r\n scienceFiction: 11,\r\n romance: 12,\r\n fantasy: 11,\r\n thrillers: 5,\r\n },\r\n {\r\n year: 2001,\r\n mysteries: 16,\r\n scienceFiction: 9,\r\n romance: 12,\r\n fantasy: 6,\r\n thrillers: 8,\r\n },\r\n {\r\n year: 2002,\r\n mysteries: 11,\r\n scienceFiction: 15,\r\n romance: 2,\r\n fantasy: 9,\r\n thrillers: 3,\r\n },\r\n {\r\n year: 2003,\r\n mysteries: 1,\r\n scienceFiction: 6,\r\n romance: 9,\r\n fantasy: 9,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 2004,\r\n mysteries: 18,\r\n scienceFiction: 14,\r\n romance: 3,\r\n fantasy: 2,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 2005,\r\n mysteries: 9,\r\n scienceFiction: 16,\r\n romance: 7,\r\n fantasy: 8,\r\n thrillers: 20,\r\n },\r\n {\r\n year: 2006,\r\n mysteries: 18,\r\n scienceFiction: 2,\r\n romance: 5,\r\n fantasy: 6,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 2007,\r\n mysteries: 5,\r\n scienceFiction: 17,\r\n romance: 14,\r\n fantasy: 4,\r\n thrillers: 7,\r\n },\r\n {\r\n year: 2008,\r\n mysteries: 15,\r\n scienceFiction: 2,\r\n romance: 12,\r\n fantasy: 3,\r\n thrillers: 8,\r\n },\r\n {\r\n year: 2009,\r\n mysteries: 16,\r\n scienceFiction: 20,\r\n romance: 7,\r\n fantasy: 14,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 2010,\r\n mysteries: 14,\r\n scienceFiction: 11,\r\n romance: 3,\r\n fantasy: 1,\r\n thrillers: 6,\r\n },\r\n {\r\n year: 2011,\r\n mysteries: 18,\r\n scienceFiction: 20,\r\n romance: 5,\r\n fantasy: 4,\r\n thrillers: 5,\r\n },\r\n {\r\n year: 2012,\r\n mysteries: 3,\r\n scienceFiction: 3,\r\n romance: 10,\r\n fantasy: 5,\r\n thrillers: 18,\r\n },\r\n {\r\n year: 2013,\r\n mysteries: 1,\r\n scienceFiction: 1,\r\n romance: 0,\r\n fantasy: 6,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 2014,\r\n mysteries: 15,\r\n scienceFiction: 7,\r\n romance: 1,\r\n fantasy: 2,\r\n thrillers: 20,\r\n },\r\n {\r\n year: 2015,\r\n mysteries: 12,\r\n scienceFiction: 19,\r\n romance: 3,\r\n fantasy: 3,\r\n thrillers: 12,\r\n },\r\n {\r\n year: 2016,\r\n mysteries: 11,\r\n scienceFiction: 20,\r\n romance: 11,\r\n fantasy: 5,\r\n thrillers: 17,\r\n },\r\n {\r\n year: 2017,\r\n mysteries: 4,\r\n scienceFiction: 20,\r\n romance: 3,\r\n fantasy: 12,\r\n thrillers: 5,\r\n },\r\n];\r\n\r\nexport const oilProduction = [\r\n {\r\n year: \"1970\",\r\n saudiArabia: 241.142,\r\n usa: 482.15,\r\n iran: 230.174,\r\n mexico: 23.64,\r\n price: 17,\r\n consumption: 570,\r\n },\r\n {\r\n year: \"1980\",\r\n saudiArabia: 511.334,\r\n usa: 437.343,\r\n iran: 75.097,\r\n mexico: 108.249,\r\n price: 104,\r\n consumption: 630,\r\n },\r\n {\r\n year: \"1990\",\r\n saudiArabia: 324.359,\r\n usa: 374.867,\r\n iran: 165.284,\r\n mexico: 141.06,\r\n russia: 516.04,\r\n price: 23.7,\r\n consumption: 590,\r\n },\r\n {\r\n year: \"2000\",\r\n saudiArabia: 410.06,\r\n usa: 297.513,\r\n iran: 196.877,\r\n mexico: 159.63,\r\n russia: 312.821,\r\n price: 28.3,\r\n consumption: 680,\r\n },\r\n {\r\n year: \"2010\",\r\n saudiArabia: 413.505,\r\n usa: 279.225,\r\n iran: 200.318,\r\n mexico: 144.975,\r\n russia: 487.106,\r\n price: 79.6,\r\n consumption: 640,\r\n },\r\n {\r\n year: \"2015\",\r\n saudiArabia: 516.157,\r\n usa: 437.966,\r\n iran: 142.087,\r\n mexico: 121.587,\r\n russia: 512.777,\r\n price: 52.4,\r\n consumption: 790,\r\n },\r\n];\r\n\r\nexport const ageStructure = [\r\n {\r\n state: \"Germany\",\r\n young: 6.7,\r\n middle: 28.6,\r\n older: 5.1,\r\n },\r\n {\r\n state: \"Japan\",\r\n young: 9.6,\r\n middle: 43.4,\r\n older: 9,\r\n },\r\n {\r\n state: \"Russia\",\r\n young: 13.5,\r\n middle: 49,\r\n older: 5.8,\r\n },\r\n {\r\n state: \"USA\",\r\n young: 30,\r\n middle: 90.3,\r\n older: 14.5,\r\n },\r\n];\r\n\r\nexport const contributors = [\r\n {\r\n login: \"kvet\",\r\n id: 929987,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/929987?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/kvet\",\r\n html_url: \"https://github.com/kvet\",\r\n followers_url: \"https://api.github.com/users/kvet/followers\",\r\n following_url: \"https://api.github.com/users/kvet/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/kvet/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/kvet/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/kvet/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/kvet/orgs\",\r\n repos_url: \"https://api.github.com/users/kvet/repos\",\r\n events_url: \"https://api.github.com/users/kvet/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/kvet/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 301,\r\n },\r\n {\r\n login: \"SergeyAlexeev\",\r\n id: 1897913,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/1897913?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/SergeyAlexeev\",\r\n html_url: \"https://github.com/SergeyAlexeev\",\r\n followers_url: \"https://api.github.com/users/SergeyAlexeev/followers\",\r\n following_url:\r\n \"https://api.github.com/users/SergeyAlexeev/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/SergeyAlexeev/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/SergeyAlexeev/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/SergeyAlexeev/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/SergeyAlexeev/orgs\",\r\n repos_url: \"https://api.github.com/users/SergeyAlexeev/repos\",\r\n events_url: \"https://api.github.com/users/SergeyAlexeev/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/SergeyAlexeev/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 113,\r\n },\r\n {\r\n login: \"gsobolev\",\r\n id: 4580098,\r\n avatar_url: \"https://avatars0.githubusercontent.com/u/4580098?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/gsobolev\",\r\n html_url: \"https://github.com/gsobolev\",\r\n followers_url: \"https://api.github.com/users/gsobolev/followers\",\r\n following_url:\r\n \"https://api.github.com/users/gsobolev/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/gsobolev/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/gsobolev/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/gsobolev/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/gsobolev/orgs\",\r\n repos_url: \"https://api.github.com/users/gsobolev/repos\",\r\n events_url: \"https://api.github.com/users/gsobolev/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/gsobolev/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 70,\r\n },\r\n {\r\n login: \"dxbykov\",\r\n id: 8307562,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/8307562?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/dxbykov\",\r\n html_url: \"https://github.com/dxbykov\",\r\n followers_url: \"https://api.github.com/users/dxbykov/followers\",\r\n following_url:\r\n \"https://api.github.com/users/dxbykov/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/dxbykov/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/dxbykov/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/dxbykov/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/dxbykov/orgs\",\r\n repos_url: \"https://api.github.com/users/dxbykov/repos\",\r\n events_url: \"https://api.github.com/users/dxbykov/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/dxbykov/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 63,\r\n },\r\n {\r\n login: \"MaximKudriavtsev\",\r\n id: 15093892,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/15093892?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/MaximKudriavtsev\",\r\n html_url: \"https://github.com/MaximKudriavtsev\",\r\n followers_url: \"https://api.github.com/users/MaximKudriavtsev/followers\",\r\n following_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/MaximKudriavtsev/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/MaximKudriavtsev/orgs\",\r\n repos_url: \"https://api.github.com/users/MaximKudriavtsev/repos\",\r\n events_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 54,\r\n },\r\n {\r\n login: \"viterobk\",\r\n id: 15941408,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/15941408?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/viterobk\",\r\n html_url: \"https://github.com/viterobk\",\r\n followers_url: \"https://api.github.com/users/viterobk/followers\",\r\n following_url:\r\n \"https://api.github.com/users/viterobk/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/viterobk/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/viterobk/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/viterobk/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/viterobk/orgs\",\r\n repos_url: \"https://api.github.com/users/viterobk/repos\",\r\n events_url: \"https://api.github.com/users/viterobk/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/viterobk/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 27,\r\n },\r\n {\r\n login: \"AnnaTikh\",\r\n id: 26564321,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/26564321?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/AnnaTikh\",\r\n html_url: \"https://github.com/AnnaTikh\",\r\n followers_url: \"https://api.github.com/users/AnnaTikh/followers\",\r\n following_url:\r\n \"https://api.github.com/users/AnnaTikh/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/AnnaTikh/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/AnnaTikh/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/AnnaTikh/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/AnnaTikh/orgs\",\r\n repos_url: \"https://api.github.com/users/AnnaTikh/repos\",\r\n events_url: \"https://api.github.com/users/AnnaTikh/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/AnnaTikh/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 3,\r\n },\r\n {\r\n login: \"oliversturm\",\r\n id: 4730969,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/4730969?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/oliversturm\",\r\n html_url: \"https://github.com/oliversturm\",\r\n followers_url: \"https://api.github.com/users/oliversturm/followers\",\r\n following_url:\r\n \"https://api.github.com/users/oliversturm/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/oliversturm/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/oliversturm/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/oliversturm/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/oliversturm/orgs\",\r\n repos_url: \"https://api.github.com/users/oliversturm/repos\",\r\n events_url: \"https://api.github.com/users/oliversturm/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/oliversturm/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 2,\r\n },\r\n {\r\n login: \"alexey-semikozov\",\r\n id: 7069422,\r\n avatar_url: \"https://avatars1.githubusercontent.com/u/7069422?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/alexey-semikozov\",\r\n html_url: \"https://github.com/alexey-semikozov\",\r\n followers_url: \"https://api.github.com/users/alexey-semikozov/followers\",\r\n following_url:\r\n \"https://api.github.com/users/alexey-semikozov/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/alexey-semikozov/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/alexey-semikozov/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/alexey-semikozov/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/alexey-semikozov/orgs\",\r\n repos_url: \"https://api.github.com/users/alexey-semikozov/repos\",\r\n events_url:\r\n \"https://api.github.com/users/alexey-semikozov/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/alexey-semikozov/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 2,\r\n },\r\n {\r\n login: \"dirk-pieterse\",\r\n id: 26871970,\r\n avatar_url: \"https://avatars0.githubusercontent.com/u/26871970?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/dirk-pieterse\",\r\n html_url: \"https://github.com/dirk-pieterse\",\r\n followers_url: \"https://api.github.com/users/dirk-pieterse/followers\",\r\n following_url:\r\n \"https://api.github.com/users/dirk-pieterse/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/dirk-pieterse/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/dirk-pieterse/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/dirk-pieterse/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/dirk-pieterse/orgs\",\r\n repos_url: \"https://api.github.com/users/dirk-pieterse/repos\",\r\n events_url: \"https://api.github.com/users/dirk-pieterse/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/dirk-pieterse/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"helsus\",\r\n id: 312055,\r\n avatar_url: \"https://avatars1.githubusercontent.com/u/312055?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/helsus\",\r\n html_url: \"https://github.com/helsus\",\r\n followers_url: \"https://api.github.com/users/helsus/followers\",\r\n following_url: \"https://api.github.com/users/helsus/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/helsus/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/helsus/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/helsus/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/helsus/orgs\",\r\n repos_url: \"https://api.github.com/users/helsus/repos\",\r\n events_url: \"https://api.github.com/users/helsus/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/helsus/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"psamim\",\r\n id: 1868679,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/1868679?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/psamim\",\r\n html_url: \"https://github.com/psamim\",\r\n followers_url: \"https://api.github.com/users/psamim/followers\",\r\n following_url: \"https://api.github.com/users/psamim/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/psamim/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/psamim/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/psamim/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/psamim/orgs\",\r\n repos_url: \"https://api.github.com/users/psamim/repos\",\r\n events_url: \"https://api.github.com/users/psamim/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/psamim/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"Krijovnick\",\r\n id: 8238559,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/8238559?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/Krijovnick\",\r\n html_url: \"https://github.com/Krijovnick\",\r\n followers_url: \"https://api.github.com/users/Krijovnick/followers\",\r\n following_url:\r\n \"https://api.github.com/users/Krijovnick/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/Krijovnick/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/Krijovnick/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/Krijovnick/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/Krijovnick/orgs\",\r\n repos_url: \"https://api.github.com/users/Krijovnick/repos\",\r\n events_url: \"https://api.github.com/users/Krijovnick/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/Krijovnick/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"tpisto\",\r\n id: 226244,\r\n avatar_url: \"https://avatars0.githubusercontent.com/u/226244?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/tpisto\",\r\n html_url: \"https://github.com/tpisto\",\r\n followers_url: \"https://api.github.com/users/tpisto/followers\",\r\n following_url: \"https://api.github.com/users/tpisto/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/tpisto/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/tpisto/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/tpisto/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/tpisto/orgs\",\r\n repos_url: \"https://api.github.com/users/tpisto/repos\",\r\n events_url: \"https://api.github.com/users/tpisto/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/tpisto/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"gerhat\",\r\n id: 11447903,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/11447903?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/gerhat\",\r\n html_url: \"https://github.com/gerhat\",\r\n followers_url: \"https://api.github.com/users/gerhat/followers\",\r\n following_url: \"https://api.github.com/users/gerhat/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/gerhat/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/gerhat/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/gerhat/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/gerhat/orgs\",\r\n repos_url: \"https://api.github.com/users/gerhat/repos\",\r\n events_url: \"https://api.github.com/users/gerhat/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/gerhat/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"paiboon15721\",\r\n id: 4963061,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/4963061?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/paiboon15721\",\r\n html_url: \"https://github.com/paiboon15721\",\r\n followers_url: \"https://api.github.com/users/paiboon15721/followers\",\r\n following_url:\r\n \"https://api.github.com/users/paiboon15721/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/paiboon15721/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/paiboon15721/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/paiboon15721/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/paiboon15721/orgs\",\r\n repos_url: \"https://api.github.com/users/paiboon15721/repos\",\r\n events_url: \"https://api.github.com/users/paiboon15721/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/paiboon15721/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n];\r\n\r\nexport const sales = {\r\n 2017: [\r\n { month: \"Jan\", sale: 50, total: 987 },\r\n { month: \"Feb\", sale: 100, total: 3000 },\r\n { month: \"Mar\", sale: 30, total: 1100 },\r\n { month: \"Apr\", sale: 107, total: 7100 },\r\n { month: \"May\", sale: 95, total: 4300 },\r\n { month: \"Jun\", sale: 150, total: 7500 },\r\n { month: \"Jul\", sale: 120, total: 5300 },\r\n { month: \"Aug\", sale: 110, total: 2500 },\r\n { month: \"Sep\", sale: 54, total: 2300 },\r\n { month: \"Oct\", sale: 129, total: 2600 },\r\n { month: \"Nov\", sale: 48, total: 3400 },\r\n { month: \"Dec\", sale: 43, total: 3200 },\r\n ],\r\n 2018: [\r\n { month: \"Jan\", sale: 100, total: 1000 },\r\n { month: \"Feb\", sale: 200, total: 4300 },\r\n { month: \"Mar\", sale: 50, total: 1200 },\r\n { month: \"Apr\", sale: 127, total: 7150 },\r\n { month: \"May\", sale: 105, total: 4340 },\r\n { month: \"Jun\", sale: 180, total: 7520 },\r\n { month: \"Jul\", sale: 150, total: 5380 },\r\n { month: \"Aug\", sale: 120, total: 2590 },\r\n { month: \"Sep\", sale: 59, total: 2700 },\r\n { month: \"Oct\", sale: 139, total: 2800 },\r\n { month: \"Nov\", sale: 66, total: 3450 },\r\n { month: \"Dec\", sale: 55, total: 3260 },\r\n ],\r\n 2019: [\r\n { month: \"Jan\", sale: 170, total: 856 },\r\n { month: \"Feb\", sale: 150, total: 3574 },\r\n { month: \"Mar\", sale: 10, total: 1198 },\r\n { month: \"Apr\", sale: 33, total: 6150 },\r\n { month: \"May\", sale: 84, total: 3340 },\r\n { month: \"Jun\", sale: 120, total: 5520 },\r\n { month: \"Jul\", sale: 110, total: 3380 },\r\n { month: \"Aug\", sale: 90, total: 1890 },\r\n { month: \"Sep\", sale: 29, total: 1900 },\r\n { month: \"Oct\", sale: 118, total: 2300 },\r\n { month: \"Nov\", sale: 48, total: 3198 },\r\n { month: \"Dec\", sale: 12, total: 2410 },\r\n ],\r\n};\r\n","import * as React from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport {\r\n Chart,\r\n ArgumentAxis,\r\n ValueAxis,\r\n BarSeries,\r\n Title,\r\n Legend,\r\n} from '@devexpress/dx-react-chart-material-ui';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { Stack, Animation } from '@devexpress/dx-react-chart';\r\n\r\nimport { energyConsumption as data } from './data-vizualization';\r\n\r\nconst legendStyles = () => ({\r\n root: {\r\n display: 'flex',\r\n margin: 'auto',\r\n flexDirection: 'row',\r\n },\r\n});\r\nconst legendRootBase = ({ classes, ...restProps }) => (\r\n <Legend.Root {...restProps} className={classes.root} />\r\n);\r\nconst Root = withStyles(legendStyles, { name: 'LegendRoot' })(legendRootBase);\r\nconst legendLabelStyles = () => ({\r\n label: {\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\nconst legendLabelBase = ({ classes, ...restProps }) => (\r\n <Legend.Label className={classes.label} {...restProps} />\r\n);\r\nconst Label = withStyles(legendLabelStyles, { name: 'LegendLabel' })(legendLabelBase);\r\n\r\nexport default class Demo extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n\r\n return (\r\n <Paper>\r\n <Chart\r\n data={chartData}\r\n hegiht={500}\r\n >\r\n <ArgumentAxis />\r\n <ValueAxis\r\n max={2400}\r\n />\r\n <BarSeries\r\n name=\"Nam\"\r\n valueField=\"Male\"\r\n argumentField=\"department\"\r\n />\r\n <BarSeries\r\n name=\"Nữ\"\r\n valueField=\"Female\"\r\n argumentField=\"department\"\r\n />\r\n\r\n <Animation />\r\n <Legend position=\"bottom\" rootComponent={Root} labelComponent={Label} />\r\n <Title text=\"Nhân sự phòng ban\" />\r\n <Stack\r\n stacks={[\r\n { series: ['Nam', 'Nữ'] },\r\n ]}\r\n />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Timeline from \"@material-ui/lab/Timeline\";\r\nimport TimelineItem from \"@material-ui/lab/TimelineItem\";\r\nimport TimelineSeparator from \"@material-ui/lab/TimelineSeparator\";\r\nimport TimelineConnector from \"@material-ui/lab/TimelineConnector\";\r\nimport TimelineContent from \"@material-ui/lab/TimelineContent\";\r\nimport TimelineOppositeContent from \"@material-ui/lab/TimelineOppositeContent\";\r\nimport TimelineDot from \"@material-ui/lab/TimelineDot\";\r\nimport FastfoodIcon from \"@material-ui/icons/Fastfood\";\r\nimport LaptopMacIcon from \"@material-ui/icons/LaptopMac\";\r\nimport HotelIcon from \"@material-ui/icons/Hotel\";\r\nimport RepeatIcon from \"@material-ui/icons/Repeat\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n paper: {\r\n padding: \"6px 16px\",\r\n },\r\n secondaryTail: {\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n}));\r\n\r\nconst TimeLine = () => {\r\n const classes = useStyles();\r\n return (\r\n <div>\r\n <Paper\r\n style={{ padding: \"10px\", minHeight: \"390px\", maxHeight: \"1000px\" }}\r\n >\r\n <h2 style={{ margin: \"0px\" }}>Sự kiện</h2>\r\n <span>Sự kiện gần đây</span>\r\n <Timeline align=\"alternate\">\r\n <TimelineItem>\r\n <TimelineOppositeContent>\r\n <Typography color=\"textSecondary\">09:30 am</Typography>\r\n </TimelineOppositeContent>\r\n <TimelineSeparator>\r\n <TimelineDot />\r\n <TimelineConnector />\r\n </TimelineSeparator>\r\n <TimelineContent>\r\n <Typography>Eat</Typography>\r\n </TimelineContent>\r\n </TimelineItem>\r\n <TimelineItem>\r\n <TimelineOppositeContent>\r\n <Typography color=\"textSecondary\">10:00 am</Typography>\r\n </TimelineOppositeContent>\r\n <TimelineSeparator>\r\n <TimelineDot />\r\n <TimelineConnector />\r\n </TimelineSeparator>\r\n <TimelineContent>\r\n <Typography>Code</Typography>\r\n </TimelineContent>\r\n </TimelineItem>\r\n <TimelineItem>\r\n <TimelineOppositeContent>\r\n <Typography color=\"textSecondary\">12:00 am</Typography>\r\n </TimelineOppositeContent>\r\n <TimelineSeparator>\r\n <TimelineDot />\r\n <TimelineConnector />\r\n </TimelineSeparator>\r\n <TimelineContent>\r\n <Typography>Sleep</Typography>\r\n </TimelineContent>\r\n </TimelineItem>\r\n <TimelineItem>\r\n <TimelineOppositeContent>\r\n <Typography color=\"textSecondary\">9:00 am</Typography>\r\n </TimelineOppositeContent>\r\n <TimelineSeparator>\r\n <TimelineDot />\r\n <TimelineConnector />\r\n </TimelineSeparator>\r\n <TimelineContent>\r\n <Typography>Repeat</Typography>\r\n </TimelineContent>\r\n </TimelineItem>\r\n </Timeline>\r\n </Paper>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TimeLine;\r\n","export const born = [\r\n {\r\n year: 1995,\r\n ru: 101,\r\n ch: 170,\r\n us: 31,\r\n },\r\n {\r\n year: 1998,\r\n ru: 200,\r\n ch: 80,\r\n us: 90,\r\n },\r\n {\r\n year: 2000,\r\n ru: 100,\r\n ch: 70,\r\n us: 45,\r\n },\r\n {\r\n year: 2001,\r\n ru: 110,\r\n ch: 70,\r\n us: 75,\r\n },\r\n {\r\n year: 2002,\r\n ru: 95,\r\n ch: 120,\r\n us: 25,\r\n },\r\n {\r\n year: 2006,\r\n ru: 115,\r\n ch: 50,\r\n us: 45,\r\n },\r\n {\r\n year: 2007,\r\n ru: 230,\r\n ch: 110,\r\n us: 120,\r\n },\r\n {\r\n year: 2015,\r\n ru: 89,\r\n ch: 90,\r\n us: 19,\r\n },\r\n];\r\n\r\nexport const populationPyramid = [\r\n {\r\n age: \"0-4\",\r\n male: -4.6,\r\n female: 4.3,\r\n },\r\n {\r\n age: \"5-9\",\r\n male: -4.4,\r\n female: 4.2,\r\n },\r\n {\r\n age: \"10-14\",\r\n male: -4.2,\r\n female: 4.0,\r\n },\r\n {\r\n age: \"15-19\",\r\n male: -4.0,\r\n female: 3.8,\r\n },\r\n {\r\n age: \"20-24\",\r\n male: -3.9,\r\n female: 3.7,\r\n },\r\n {\r\n age: \"25-29\",\r\n male: -4.0,\r\n female: 3.8,\r\n },\r\n {\r\n age: \"30-34\",\r\n male: -4.0,\r\n female: 3.8,\r\n },\r\n {\r\n age: \"35-39\",\r\n male: -3.5,\r\n female: 3.4,\r\n },\r\n {\r\n age: \"40-44\",\r\n male: -3.2,\r\n female: 3.1,\r\n },\r\n {\r\n age: \"45-49\",\r\n male: -3.1,\r\n female: 3.1,\r\n },\r\n {\r\n age: \"50-54\",\r\n male: -2.8,\r\n female: 2.8,\r\n },\r\n {\r\n age: \"55-59\",\r\n male: -2.4,\r\n female: 2.5,\r\n },\r\n {\r\n age: \"60-64\",\r\n male: -2.0,\r\n female: 2.1,\r\n },\r\n {\r\n age: \"65-69\",\r\n male: -1.6,\r\n female: 1.8,\r\n },\r\n {\r\n age: \"70-74\",\r\n male: -1.1,\r\n female: 1.2,\r\n },\r\n {\r\n age: \"75-79\",\r\n male: -0.7,\r\n female: 0.9,\r\n },\r\n {\r\n age: \"80-84\",\r\n male: -0.4,\r\n female: 0.6,\r\n },\r\n {\r\n age: \"85-89\",\r\n male: -0.2,\r\n female: 0.3,\r\n },\r\n {\r\n age: \"90+\",\r\n male: -0.1,\r\n female: 0.1,\r\n },\r\n];\r\n\r\nexport const gaming = [\r\n {\r\n year: 2012,\r\n mobile: 18,\r\n pc: 37,\r\n console: 45,\r\n },\r\n {\r\n year: 2013,\r\n mobile: 23,\r\n pc: 38,\r\n console: 39,\r\n },\r\n {\r\n year: 2014,\r\n mobile: 29,\r\n pc: 36,\r\n console: 35,\r\n },\r\n {\r\n year: 2015,\r\n mobile: 34,\r\n pc: 34,\r\n console: 32,\r\n },\r\n {\r\n year: 2016,\r\n mobile: 40,\r\n pc: 30,\r\n console: 30,\r\n },\r\n {\r\n year: 2017,\r\n mobile: 46,\r\n pc: 27,\r\n console: 27,\r\n },\r\n {\r\n year: 2018,\r\n mobile: 51,\r\n pc: 24,\r\n console: 25,\r\n },\r\n];\r\n\r\nexport const annualVehiclesSales = [\r\n { year: 2011, USA: 171763, China: 5070 },\r\n { year: 2012, USA: 53240, China: 9900 },\r\n { year: 2013, USA: 96700, China: 15340 },\r\n { year: 2014, USA: 118780, China: 73170 },\r\n { year: 2015, USA: 113870, China: 307380 },\r\n { year: 2016, USA: 159620, China: 336000 },\r\n { year: 2017, USA: 194479, China: 600174 },\r\n];\r\n\r\nexport const australianMedals = [\r\n {\r\n year: 1896,\r\n gold: 2,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1900,\r\n gold: 2,\r\n silver: 0,\r\n bronze: 3,\r\n },\r\n {\r\n year: 1904,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1908,\r\n gold: 1,\r\n silver: 2,\r\n bronze: 2,\r\n },\r\n {\r\n year: 1912,\r\n gold: 2,\r\n silver: 2,\r\n bronze: 3,\r\n },\r\n {\r\n year: 1916,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1920,\r\n gold: 0,\r\n silver: 2,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1924,\r\n gold: 3,\r\n silver: 1,\r\n bronze: 2,\r\n },\r\n {\r\n year: 1928,\r\n gold: 1,\r\n silver: 2,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1932,\r\n gold: 3,\r\n silver: 1,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1936,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 1,\r\n },\r\n {\r\n year: 1940,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1944,\r\n gold: 0,\r\n silver: 0,\r\n bronze: 0,\r\n },\r\n {\r\n year: 1948,\r\n gold: 2,\r\n silver: 6,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1952,\r\n gold: 6,\r\n silver: 2,\r\n bronze: 3,\r\n },\r\n {\r\n year: 1956,\r\n gold: 13,\r\n silver: 8,\r\n bronze: 14,\r\n },\r\n {\r\n year: 1960,\r\n gold: 8,\r\n silver: 8,\r\n bronze: 6,\r\n },\r\n {\r\n year: 1964,\r\n gold: 6,\r\n silver: 2,\r\n bronze: 10,\r\n },\r\n {\r\n year: 1968,\r\n gold: 5,\r\n silver: 7,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1972,\r\n gold: 8,\r\n silver: 7,\r\n bronze: 2,\r\n },\r\n {\r\n year: 1976,\r\n gold: 0,\r\n silver: 1,\r\n bronze: 4,\r\n },\r\n {\r\n year: 1980,\r\n gold: 2,\r\n silver: 2,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1984,\r\n gold: 4,\r\n silver: 8,\r\n bronze: 12,\r\n },\r\n {\r\n year: 1988,\r\n gold: 3,\r\n silver: 6,\r\n bronze: 5,\r\n },\r\n {\r\n year: 1992,\r\n gold: 7,\r\n silver: 9,\r\n bronze: 11,\r\n },\r\n {\r\n year: 1996,\r\n gold: 9,\r\n silver: 9,\r\n bronze: 23,\r\n },\r\n {\r\n year: 2000,\r\n gold: 16,\r\n silver: 25,\r\n bronze: 17,\r\n },\r\n {\r\n year: 2004,\r\n gold: 17,\r\n silver: 16,\r\n bronze: 16,\r\n },\r\n {\r\n year: 2008,\r\n gold: 14,\r\n silver: 15,\r\n bronze: 17,\r\n },\r\n];\r\n\r\nexport const bitcoin = [\r\n { date: new Date(2015, 10, 15), price: 346 },\r\n { date: new Date(2015, 11, 17), price: 441 },\r\n { date: new Date(2016, 0, 16), price: 435 },\r\n { date: new Date(2016, 1, 21), price: 415 },\r\n { date: new Date(2016, 3, 25), price: 445 },\r\n { date: new Date(2016, 4, 29), price: 460 },\r\n { date: new Date(2016, 5, 20), price: 730 },\r\n { date: new Date(2016, 7, 5), price: 600 },\r\n { date: new Date(2016, 8, 14), price: 617 },\r\n { date: new Date(2016, 9, 30), price: 674 },\r\n { date: new Date(2016, 11, 21), price: 785 },\r\n { date: new Date(2017, 0, 8), price: 991 },\r\n { date: new Date(2017, 1, 9), price: 1028 },\r\n { date: new Date(2017, 2, 9), price: 1251 },\r\n { date: new Date(2017, 3, 6), price: 1103 },\r\n { date: new Date(2017, 4, 4), price: 1392 },\r\n { date: new Date(2017, 5, 11), price: 2747 },\r\n { date: new Date(2017, 6, 19), price: 2203 },\r\n { date: new Date(2017, 7, 18), price: 4114 },\r\n { date: new Date(2017, 8, 19), price: 3840 },\r\n { date: new Date(2017, 9, 19), price: 5591 },\r\n { date: new Date(2017, 10, 14), price: 6716 },\r\n { date: new Date(2017, 11, 22), price: 17905 },\r\n { date: new Date(2018, 0, 23), price: 11438 },\r\n { date: new Date(2018, 1, 10), price: 8125 },\r\n { date: new Date(2018, 2, 6), price: 11079 },\r\n { date: new Date(2018, 3, 7), price: 6913 },\r\n { date: new Date(2018, 4, 9), price: 9511 },\r\n { date: new Date(2018, 5, 6), price: 7553 },\r\n { date: new Date(2018, 6, 18), price: 6400 },\r\n];\r\n\r\nexport const population = [\r\n {\r\n state: \"USA\",\r\n maleyoung: 29.956,\r\n malemiddle: 90.354,\r\n maleolder: 14.472,\r\n femaleyoung: 28.597,\r\n femalemiddle: 91.827,\r\n femaleolder: 20.362,\r\n },\r\n {\r\n state: \"Brazil\",\r\n maleyoung: 25.607,\r\n malemiddle: 55.793,\r\n maleolder: 3.727,\r\n femaleyoung: 24.67,\r\n femalemiddle: 57.598,\r\n femaleolder: 5.462,\r\n },\r\n {\r\n state: \"Russia\",\r\n maleyoung: 13.493,\r\n malemiddle: 48.983,\r\n maleolder: 5.802,\r\n femaleyoung: 12.971,\r\n femalemiddle: 52.14,\r\n femaleolder: 12.61,\r\n },\r\n {\r\n state: \"Japan\",\r\n maleyoung: 9.575,\r\n malemiddle: 43.363,\r\n maleolder: 9.024,\r\n femaleyoung: 9.105,\r\n femalemiddle: 42.98,\r\n femaleolder: 12.501,\r\n },\r\n {\r\n state: \"Mexico\",\r\n maleyoung: 17.306,\r\n malemiddle: 30.223,\r\n maleolder: 1.927,\r\n femaleyoung: 16.632,\r\n femalemiddle: 31.868,\r\n femaleolder: 2.391,\r\n },\r\n {\r\n state: \"Germany\",\r\n maleyoung: 6.679,\r\n malemiddle: 28.638,\r\n maleolder: 5.133,\r\n femaleyoung: 6.333,\r\n femalemiddle: 27.693,\r\n femaleolder: 8.318,\r\n },\r\n {\r\n state: \"United Kindom\",\r\n maleyoung: 5.816,\r\n malemiddle: 19.622,\r\n maleolder: 3.864,\r\n femaleyoung: 5.519,\r\n femalemiddle: 19.228,\r\n femaleolder: 5.459,\r\n },\r\n];\r\n\r\nexport const olimpicMedals = [\r\n {\r\n department: \"HR\",\r\n male: 36,\r\n female: 38,\r\n },\r\n {\r\n department: \"KT\",\r\n male: 51,\r\n female: 21,\r\n },\r\n {\r\n department: \"DS\",\r\n male: 30,\r\n female: 35,\r\n },\r\n];\r\n\r\nexport const confidence = [\r\n {\r\n year: 1993,\r\n tvNews: 19,\r\n church: 29,\r\n military: 32,\r\n },\r\n {\r\n year: 1995,\r\n tvNews: 13,\r\n church: 32,\r\n military: 33,\r\n },\r\n {\r\n year: 1997,\r\n tvNews: 14,\r\n church: 35,\r\n military: 30,\r\n },\r\n {\r\n year: 1999,\r\n tvNews: 13,\r\n church: 32,\r\n military: 34,\r\n },\r\n {\r\n year: 2001,\r\n tvNews: 15,\r\n church: 28,\r\n military: 32,\r\n },\r\n {\r\n year: 2003,\r\n tvNews: 16,\r\n church: 27,\r\n military: 48,\r\n },\r\n {\r\n year: 2006,\r\n tvNews: 12,\r\n church: 28,\r\n military: 41,\r\n },\r\n {\r\n year: 2008,\r\n tvNews: 11,\r\n church: 26,\r\n military: 45,\r\n },\r\n {\r\n year: 2010,\r\n tvNews: 10,\r\n church: 25,\r\n military: 44,\r\n },\r\n {\r\n year: 2012,\r\n tvNews: 11,\r\n church: 25,\r\n military: 43,\r\n },\r\n {\r\n year: 2014,\r\n tvNews: 10,\r\n church: 25,\r\n military: 39,\r\n },\r\n {\r\n year: 2016,\r\n tvNews: 8,\r\n church: 20,\r\n military: 41,\r\n },\r\n {\r\n year: 2018,\r\n tvNews: 10,\r\n church: 20,\r\n military: 43,\r\n },\r\n];\r\n\r\nexport const energyConsumption = [\r\n {\r\n country: \"USA\",\r\n hydro: 59.8,\r\n oil: 937.6,\r\n gas: 582,\r\n coal: 564.3,\r\n nuclear: 187.9,\r\n },\r\n {\r\n country: \"China\",\r\n hydro: 74.2,\r\n oil: 308.6,\r\n gas: 35.1,\r\n coal: 956.9,\r\n nuclear: 11.3,\r\n },\r\n {\r\n country: \"Russia\",\r\n hydro: 40,\r\n oil: 128.5,\r\n gas: 361.8,\r\n coal: 105,\r\n nuclear: 32.4,\r\n },\r\n {\r\n country: \"Japan\",\r\n hydro: 22.6,\r\n oil: 241.5,\r\n gas: 64.9,\r\n coal: 120.8,\r\n nuclear: 64.8,\r\n },\r\n {\r\n country: \"India\",\r\n hydro: 19,\r\n oil: 119.3,\r\n gas: 28.9,\r\n coal: 204.8,\r\n nuclear: 3.8,\r\n },\r\n {\r\n country: \"Germany\",\r\n hydro: 6.1,\r\n oil: 123.6,\r\n gas: 77.3,\r\n coal: 85.7,\r\n nuclear: 37.8,\r\n },\r\n];\r\n\r\nexport const carbonEmmision = [\r\n {\r\n year: 1950,\r\n gas: 97,\r\n liquids: 423,\r\n solids: 1070,\r\n cementProduction: 18,\r\n gasFlaring: 23,\r\n },\r\n {\r\n year: 1960,\r\n gas: 227,\r\n liquids: 849,\r\n solids: 1410,\r\n cementProduction: 43,\r\n gasFlaring: 39,\r\n },\r\n {\r\n year: 1970,\r\n gas: 493,\r\n liquids: 1839,\r\n solids: 1556,\r\n cementProduction: 78,\r\n gasFlaring: 87,\r\n },\r\n {\r\n year: 1980,\r\n gas: 737,\r\n liquids: 2422,\r\n solids: 1935,\r\n cementProduction: 120,\r\n gasFlaring: 86,\r\n },\r\n {\r\n year: 1990,\r\n gas: 1026,\r\n liquids: 2492,\r\n solids: 2359,\r\n cementProduction: 157,\r\n gasFlaring: 40,\r\n },\r\n {\r\n year: 2000,\r\n gas: 1289,\r\n liquids: 2845,\r\n solids: 2327,\r\n cementProduction: 226,\r\n gasFlaring: 46,\r\n },\r\n {\r\n year: 2010,\r\n gas: 1696,\r\n liquids: 3107,\r\n solids: 3812,\r\n cementProduction: 446,\r\n gasFlaring: 67,\r\n },\r\n];\r\n\r\nexport const booksSale = [\r\n {\r\n year: 1970,\r\n mysteries: 9,\r\n scienceFiction: 16,\r\n romance: 5,\r\n fantasy: 4,\r\n thrillers: 19,\r\n },\r\n {\r\n year: 1971,\r\n mysteries: 15,\r\n scienceFiction: 18,\r\n romance: 2,\r\n fantasy: 4,\r\n thrillers: 14,\r\n },\r\n {\r\n year: 1972,\r\n mysteries: 10,\r\n scienceFiction: 20,\r\n romance: 1,\r\n fantasy: 16,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1973,\r\n mysteries: 12,\r\n scienceFiction: 17,\r\n romance: 15,\r\n fantasy: 5,\r\n thrillers: 14,\r\n },\r\n {\r\n year: 1974,\r\n mysteries: 8,\r\n scienceFiction: 13,\r\n romance: 10,\r\n fantasy: 19,\r\n thrillers: 5,\r\n },\r\n {\r\n year: 1975,\r\n mysteries: 7,\r\n scienceFiction: 18,\r\n romance: 20,\r\n fantasy: 18,\r\n thrillers: 12,\r\n },\r\n {\r\n year: 1976,\r\n mysteries: 12,\r\n scienceFiction: 12,\r\n romance: 5,\r\n fantasy: 2,\r\n thrillers: 3,\r\n },\r\n {\r\n year: 1977,\r\n mysteries: 18,\r\n scienceFiction: 16,\r\n romance: 1,\r\n fantasy: 6,\r\n thrillers: 3,\r\n },\r\n {\r\n year: 1978,\r\n mysteries: 3,\r\n scienceFiction: 13,\r\n romance: 9,\r\n fantasy: 15,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1979,\r\n mysteries: 11,\r\n scienceFiction: 13,\r\n romance: 14,\r\n fantasy: 1,\r\n thrillers: 12,\r\n },\r\n {\r\n year: 1980,\r\n mysteries: 6,\r\n scienceFiction: 19,\r\n romance: 16,\r\n fantasy: 6,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 1981,\r\n mysteries: 2,\r\n scienceFiction: 15,\r\n romance: 4,\r\n fantasy: 6,\r\n thrillers: 13,\r\n },\r\n {\r\n year: 1982,\r\n mysteries: 4,\r\n scienceFiction: 17,\r\n romance: 20,\r\n fantasy: 7,\r\n thrillers: 10,\r\n },\r\n {\r\n year: 1983,\r\n mysteries: 3,\r\n scienceFiction: 2,\r\n romance: 18,\r\n fantasy: 18,\r\n thrillers: 17,\r\n },\r\n {\r\n year: 1984,\r\n mysteries: 10,\r\n scienceFiction: 19,\r\n romance: 6,\r\n fantasy: 13,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1985,\r\n mysteries: 16,\r\n scienceFiction: 6,\r\n romance: 5,\r\n fantasy: 2,\r\n thrillers: 7,\r\n },\r\n {\r\n year: 1986,\r\n mysteries: 17,\r\n scienceFiction: 4,\r\n romance: 8,\r\n fantasy: 10,\r\n thrillers: 4,\r\n },\r\n {\r\n year: 1987,\r\n mysteries: 9,\r\n scienceFiction: 18,\r\n romance: 17,\r\n fantasy: 6,\r\n thrillers: 9,\r\n },\r\n {\r\n year: 1988,\r\n mysteries: 6,\r\n scienceFiction: 8,\r\n romance: 17,\r\n fantasy: 13,\r\n thrillers: 1,\r\n },\r\n {\r\n year: 1989,\r\n mysteries: 3,\r\n scienceFiction: 10,\r\n romance: 13,\r\n fantasy: 17,\r\n thrillers: 2,\r\n },\r\n {\r\n year: 1990,\r\n mysteries: 10,\r\n scienceFiction: 8,\r\n romance: 14,\r\n fantasy: 12,\r\n thrillers: 7,\r\n },\r\n {\r\n year: 1991,\r\n mysteries: 18,\r\n scienceFiction: 1,\r\n romance: 2,\r\n fantasy: 8,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 1992,\r\n mysteries: 19,\r\n scienceFiction: 18,\r\n romance: 11,\r\n fantasy: 20,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 1993,\r\n mysteries: 7,\r\n scienceFiction: 14,\r\n romance: 4,\r\n fantasy: 8,\r\n thrillers: 10,\r\n },\r\n {\r\n year: 1994,\r\n mysteries: 2,\r\n scienceFiction: 18,\r\n romance: 13,\r\n fantasy: 11,\r\n thrillers: 15,\r\n },\r\n {\r\n year: 1995,\r\n mysteries: 2,\r\n scienceFiction: 6,\r\n romance: 7,\r\n fantasy: 11,\r\n thrillers: 10,\r\n },\r\n {\r\n year: 1996,\r\n mysteries: 10,\r\n scienceFiction: 19,\r\n romance: 17,\r\n fantasy: 17,\r\n thrillers: 9,\r\n },\r\n {\r\n year: 1997,\r\n mysteries: 3,\r\n scienceFiction: 7,\r\n romance: 4,\r\n fantasy: 15,\r\n thrillers: 9,\r\n },\r\n {\r\n year: 1998,\r\n mysteries: 13,\r\n scienceFiction: 1,\r\n romance: 7,\r\n fantasy: 16,\r\n thrillers: 13,\r\n },\r\n {\r\n year: 1999,\r\n mysteries: 19,\r\n scienceFiction: 7,\r\n romance: 18,\r\n fantasy: 14,\r\n thrillers: 1,\r\n },\r\n {\r\n year: 2000,\r\n mysteries: 2,\r\n scienceFiction: 11,\r\n romance: 12,\r\n fantasy: 11,\r\n thrillers: 5,\r\n },\r\n {\r\n year: 2001,\r\n mysteries: 16,\r\n scienceFiction: 9,\r\n romance: 12,\r\n fantasy: 6,\r\n thrillers: 8,\r\n },\r\n {\r\n year: 2002,\r\n mysteries: 11,\r\n scienceFiction: 15,\r\n romance: 2,\r\n fantasy: 9,\r\n thrillers: 3,\r\n },\r\n {\r\n year: 2003,\r\n mysteries: 1,\r\n scienceFiction: 6,\r\n romance: 9,\r\n fantasy: 9,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 2004,\r\n mysteries: 18,\r\n scienceFiction: 14,\r\n romance: 3,\r\n fantasy: 2,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 2005,\r\n mysteries: 9,\r\n scienceFiction: 16,\r\n romance: 7,\r\n fantasy: 8,\r\n thrillers: 20,\r\n },\r\n {\r\n year: 2006,\r\n mysteries: 18,\r\n scienceFiction: 2,\r\n romance: 5,\r\n fantasy: 6,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 2007,\r\n mysteries: 5,\r\n scienceFiction: 17,\r\n romance: 14,\r\n fantasy: 4,\r\n thrillers: 7,\r\n },\r\n {\r\n year: 2008,\r\n mysteries: 15,\r\n scienceFiction: 2,\r\n romance: 12,\r\n fantasy: 3,\r\n thrillers: 8,\r\n },\r\n {\r\n year: 2009,\r\n mysteries: 16,\r\n scienceFiction: 20,\r\n romance: 7,\r\n fantasy: 14,\r\n thrillers: 11,\r\n },\r\n {\r\n year: 2010,\r\n mysteries: 14,\r\n scienceFiction: 11,\r\n romance: 3,\r\n fantasy: 1,\r\n thrillers: 6,\r\n },\r\n {\r\n year: 2011,\r\n mysteries: 18,\r\n scienceFiction: 20,\r\n romance: 5,\r\n fantasy: 4,\r\n thrillers: 5,\r\n },\r\n {\r\n year: 2012,\r\n mysteries: 3,\r\n scienceFiction: 3,\r\n romance: 10,\r\n fantasy: 5,\r\n thrillers: 18,\r\n },\r\n {\r\n year: 2013,\r\n mysteries: 1,\r\n scienceFiction: 1,\r\n romance: 0,\r\n fantasy: 6,\r\n thrillers: 16,\r\n },\r\n {\r\n year: 2014,\r\n mysteries: 15,\r\n scienceFiction: 7,\r\n romance: 1,\r\n fantasy: 2,\r\n thrillers: 20,\r\n },\r\n {\r\n year: 2015,\r\n mysteries: 12,\r\n scienceFiction: 19,\r\n romance: 3,\r\n fantasy: 3,\r\n thrillers: 12,\r\n },\r\n {\r\n year: 2016,\r\n mysteries: 11,\r\n scienceFiction: 20,\r\n romance: 11,\r\n fantasy: 5,\r\n thrillers: 17,\r\n },\r\n {\r\n year: 2017,\r\n mysteries: 4,\r\n scienceFiction: 20,\r\n romance: 3,\r\n fantasy: 12,\r\n thrillers: 5,\r\n },\r\n];\r\n\r\nexport const oilProduction = [\r\n {\r\n year: \"1970\",\r\n saudiArabia: 241.142,\r\n usa: 482.15,\r\n iran: 230.174,\r\n mexico: 23.64,\r\n price: 17,\r\n consumption: 570,\r\n },\r\n {\r\n year: \"1980\",\r\n saudiArabia: 511.334,\r\n usa: 437.343,\r\n iran: 75.097,\r\n mexico: 108.249,\r\n price: 104,\r\n consumption: 630,\r\n },\r\n {\r\n year: \"1990\",\r\n saudiArabia: 324.359,\r\n usa: 374.867,\r\n iran: 165.284,\r\n mexico: 141.06,\r\n russia: 516.04,\r\n price: 23.7,\r\n consumption: 590,\r\n },\r\n {\r\n year: \"2000\",\r\n saudiArabia: 410.06,\r\n usa: 297.513,\r\n iran: 196.877,\r\n mexico: 159.63,\r\n russia: 312.821,\r\n price: 28.3,\r\n consumption: 680,\r\n },\r\n {\r\n year: \"2010\",\r\n saudiArabia: 413.505,\r\n usa: 279.225,\r\n iran: 200.318,\r\n mexico: 144.975,\r\n russia: 487.106,\r\n price: 79.6,\r\n consumption: 640,\r\n },\r\n {\r\n year: \"2015\",\r\n saudiArabia: 516.157,\r\n usa: 437.966,\r\n iran: 142.087,\r\n mexico: 121.587,\r\n russia: 512.777,\r\n price: 52.4,\r\n consumption: 790,\r\n },\r\n];\r\n\r\nexport const ageStructure = [\r\n {\r\n state: \"1\",\r\n come: 6.7,\r\n out: 28.6,\r\n },\r\n {\r\n state: \"2\",\r\n come: 9.6,\r\n out: 43,\r\n },\r\n {\r\n state: \"3\",\r\n come: 13.5,\r\n out: 49,\r\n },\r\n {\r\n state: \"4\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"5\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"6\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"7\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"8\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"9\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"10\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"11\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n {\r\n state: \"12\",\r\n come: 30,\r\n out: 90.3,\r\n },\r\n];\r\n\r\nexport const contributors = [\r\n {\r\n login: \"kvet\",\r\n id: 929987,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/929987?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/kvet\",\r\n html_url: \"https://github.com/kvet\",\r\n followers_url: \"https://api.github.com/users/kvet/followers\",\r\n following_url: \"https://api.github.com/users/kvet/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/kvet/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/kvet/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/kvet/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/kvet/orgs\",\r\n repos_url: \"https://api.github.com/users/kvet/repos\",\r\n events_url: \"https://api.github.com/users/kvet/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/kvet/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 301,\r\n },\r\n {\r\n login: \"SergeyAlexeev\",\r\n id: 1897913,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/1897913?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/SergeyAlexeev\",\r\n html_url: \"https://github.com/SergeyAlexeev\",\r\n followers_url: \"https://api.github.com/users/SergeyAlexeev/followers\",\r\n following_url:\r\n \"https://api.github.com/users/SergeyAlexeev/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/SergeyAlexeev/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/SergeyAlexeev/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/SergeyAlexeev/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/SergeyAlexeev/orgs\",\r\n repos_url: \"https://api.github.com/users/SergeyAlexeev/repos\",\r\n events_url: \"https://api.github.com/users/SergeyAlexeev/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/SergeyAlexeev/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 113,\r\n },\r\n {\r\n login: \"gsobolev\",\r\n id: 4580098,\r\n avatar_url: \"https://avatars0.githubusercontent.com/u/4580098?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/gsobolev\",\r\n html_url: \"https://github.com/gsobolev\",\r\n followers_url: \"https://api.github.com/users/gsobolev/followers\",\r\n following_url:\r\n \"https://api.github.com/users/gsobolev/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/gsobolev/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/gsobolev/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/gsobolev/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/gsobolev/orgs\",\r\n repos_url: \"https://api.github.com/users/gsobolev/repos\",\r\n events_url: \"https://api.github.com/users/gsobolev/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/gsobolev/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 70,\r\n },\r\n {\r\n login: \"dxbykov\",\r\n id: 8307562,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/8307562?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/dxbykov\",\r\n html_url: \"https://github.com/dxbykov\",\r\n followers_url: \"https://api.github.com/users/dxbykov/followers\",\r\n following_url:\r\n \"https://api.github.com/users/dxbykov/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/dxbykov/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/dxbykov/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/dxbykov/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/dxbykov/orgs\",\r\n repos_url: \"https://api.github.com/users/dxbykov/repos\",\r\n events_url: \"https://api.github.com/users/dxbykov/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/dxbykov/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 63,\r\n },\r\n {\r\n login: \"MaximKudriavtsev\",\r\n id: 15093892,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/15093892?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/MaximKudriavtsev\",\r\n html_url: \"https://github.com/MaximKudriavtsev\",\r\n followers_url: \"https://api.github.com/users/MaximKudriavtsev/followers\",\r\n following_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/MaximKudriavtsev/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/MaximKudriavtsev/orgs\",\r\n repos_url: \"https://api.github.com/users/MaximKudriavtsev/repos\",\r\n events_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/MaximKudriavtsev/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 54,\r\n },\r\n {\r\n login: \"viterobk\",\r\n id: 15941408,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/15941408?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/viterobk\",\r\n html_url: \"https://github.com/viterobk\",\r\n followers_url: \"https://api.github.com/users/viterobk/followers\",\r\n following_url:\r\n \"https://api.github.com/users/viterobk/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/viterobk/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/viterobk/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/viterobk/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/viterobk/orgs\",\r\n repos_url: \"https://api.github.com/users/viterobk/repos\",\r\n events_url: \"https://api.github.com/users/viterobk/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/viterobk/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 27,\r\n },\r\n {\r\n login: \"AnnaTikh\",\r\n id: 26564321,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/26564321?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/AnnaTikh\",\r\n html_url: \"https://github.com/AnnaTikh\",\r\n followers_url: \"https://api.github.com/users/AnnaTikh/followers\",\r\n following_url:\r\n \"https://api.github.com/users/AnnaTikh/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/AnnaTikh/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/AnnaTikh/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/AnnaTikh/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/AnnaTikh/orgs\",\r\n repos_url: \"https://api.github.com/users/AnnaTikh/repos\",\r\n events_url: \"https://api.github.com/users/AnnaTikh/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/AnnaTikh/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 3,\r\n },\r\n {\r\n login: \"oliversturm\",\r\n id: 4730969,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/4730969?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/oliversturm\",\r\n html_url: \"https://github.com/oliversturm\",\r\n followers_url: \"https://api.github.com/users/oliversturm/followers\",\r\n following_url:\r\n \"https://api.github.com/users/oliversturm/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/oliversturm/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/oliversturm/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/oliversturm/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/oliversturm/orgs\",\r\n repos_url: \"https://api.github.com/users/oliversturm/repos\",\r\n events_url: \"https://api.github.com/users/oliversturm/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/oliversturm/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 2,\r\n },\r\n {\r\n login: \"alexey-semikozov\",\r\n id: 7069422,\r\n avatar_url: \"https://avatars1.githubusercontent.com/u/7069422?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/alexey-semikozov\",\r\n html_url: \"https://github.com/alexey-semikozov\",\r\n followers_url: \"https://api.github.com/users/alexey-semikozov/followers\",\r\n following_url:\r\n \"https://api.github.com/users/alexey-semikozov/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/alexey-semikozov/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/alexey-semikozov/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/alexey-semikozov/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/alexey-semikozov/orgs\",\r\n repos_url: \"https://api.github.com/users/alexey-semikozov/repos\",\r\n events_url:\r\n \"https://api.github.com/users/alexey-semikozov/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/alexey-semikozov/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 2,\r\n },\r\n {\r\n login: \"dirk-pieterse\",\r\n id: 26871970,\r\n avatar_url: \"https://avatars0.githubusercontent.com/u/26871970?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/dirk-pieterse\",\r\n html_url: \"https://github.com/dirk-pieterse\",\r\n followers_url: \"https://api.github.com/users/dirk-pieterse/followers\",\r\n following_url:\r\n \"https://api.github.com/users/dirk-pieterse/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/dirk-pieterse/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/dirk-pieterse/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/dirk-pieterse/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/dirk-pieterse/orgs\",\r\n repos_url: \"https://api.github.com/users/dirk-pieterse/repos\",\r\n events_url: \"https://api.github.com/users/dirk-pieterse/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/dirk-pieterse/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"helsus\",\r\n id: 312055,\r\n avatar_url: \"https://avatars1.githubusercontent.com/u/312055?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/helsus\",\r\n html_url: \"https://github.com/helsus\",\r\n followers_url: \"https://api.github.com/users/helsus/followers\",\r\n following_url: \"https://api.github.com/users/helsus/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/helsus/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/helsus/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/helsus/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/helsus/orgs\",\r\n repos_url: \"https://api.github.com/users/helsus/repos\",\r\n events_url: \"https://api.github.com/users/helsus/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/helsus/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"psamim\",\r\n id: 1868679,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/1868679?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/psamim\",\r\n html_url: \"https://github.com/psamim\",\r\n followers_url: \"https://api.github.com/users/psamim/followers\",\r\n following_url: \"https://api.github.com/users/psamim/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/psamim/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/psamim/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/psamim/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/psamim/orgs\",\r\n repos_url: \"https://api.github.com/users/psamim/repos\",\r\n events_url: \"https://api.github.com/users/psamim/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/psamim/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"Krijovnick\",\r\n id: 8238559,\r\n avatar_url: \"https://avatars2.githubusercontent.com/u/8238559?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/Krijovnick\",\r\n html_url: \"https://github.com/Krijovnick\",\r\n followers_url: \"https://api.github.com/users/Krijovnick/followers\",\r\n following_url:\r\n \"https://api.github.com/users/Krijovnick/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/Krijovnick/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/Krijovnick/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/Krijovnick/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/Krijovnick/orgs\",\r\n repos_url: \"https://api.github.com/users/Krijovnick/repos\",\r\n events_url: \"https://api.github.com/users/Krijovnick/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/Krijovnick/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"tpisto\",\r\n id: 226244,\r\n avatar_url: \"https://avatars0.githubusercontent.com/u/226244?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/tpisto\",\r\n html_url: \"https://github.com/tpisto\",\r\n followers_url: \"https://api.github.com/users/tpisto/followers\",\r\n following_url: \"https://api.github.com/users/tpisto/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/tpisto/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/tpisto/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/tpisto/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/tpisto/orgs\",\r\n repos_url: \"https://api.github.com/users/tpisto/repos\",\r\n events_url: \"https://api.github.com/users/tpisto/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/tpisto/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"gerhat\",\r\n id: 11447903,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/11447903?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/gerhat\",\r\n html_url: \"https://github.com/gerhat\",\r\n followers_url: \"https://api.github.com/users/gerhat/followers\",\r\n following_url: \"https://api.github.com/users/gerhat/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/gerhat/gists{/gist_id}\",\r\n starred_url: \"https://api.github.com/users/gerhat/starred{/owner}{/repo}\",\r\n subscriptions_url: \"https://api.github.com/users/gerhat/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/gerhat/orgs\",\r\n repos_url: \"https://api.github.com/users/gerhat/repos\",\r\n events_url: \"https://api.github.com/users/gerhat/events{/privacy}\",\r\n received_events_url: \"https://api.github.com/users/gerhat/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n {\r\n login: \"paiboon15721\",\r\n id: 4963061,\r\n avatar_url: \"https://avatars3.githubusercontent.com/u/4963061?v=4\",\r\n gravatar_id: \"\",\r\n url: \"https://api.github.com/users/paiboon15721\",\r\n html_url: \"https://github.com/paiboon15721\",\r\n followers_url: \"https://api.github.com/users/paiboon15721/followers\",\r\n following_url:\r\n \"https://api.github.com/users/paiboon15721/following{/other_user}\",\r\n gists_url: \"https://api.github.com/users/paiboon15721/gists{/gist_id}\",\r\n starred_url:\r\n \"https://api.github.com/users/paiboon15721/starred{/owner}{/repo}\",\r\n subscriptions_url:\r\n \"https://api.github.com/users/paiboon15721/subscriptions\",\r\n organizations_url: \"https://api.github.com/users/paiboon15721/orgs\",\r\n repos_url: \"https://api.github.com/users/paiboon15721/repos\",\r\n events_url: \"https://api.github.com/users/paiboon15721/events{/privacy}\",\r\n received_events_url:\r\n \"https://api.github.com/users/paiboon15721/received_events\",\r\n type: \"User\",\r\n site_admin: false,\r\n contributions: 1,\r\n },\r\n];\r\n\r\nexport const sales = {\r\n 2017: [\r\n { month: \"Jan\", sale: 50, total: 987 },\r\n { month: \"Feb\", sale: 100, total: 3000 },\r\n { month: \"Mar\", sale: 30, total: 1100 },\r\n { month: \"Apr\", sale: 107, total: 7100 },\r\n { month: \"May\", sale: 95, total: 4300 },\r\n { month: \"Jun\", sale: 150, total: 7500 },\r\n { month: \"Jul\", sale: 120, total: 5300 },\r\n { month: \"Aug\", sale: 110, total: 2500 },\r\n { month: \"Sep\", sale: 54, total: 2300 },\r\n { month: \"Oct\", sale: 129, total: 2600 },\r\n { month: \"Nov\", sale: 48, total: 3400 },\r\n { month: \"Dec\", sale: 43, total: 3200 },\r\n ],\r\n 2018: [\r\n { month: \"Jan\", sale: 100, total: 1000 },\r\n { month: \"Feb\", sale: 200, total: 4300 },\r\n { month: \"Mar\", sale: 50, total: 1200 },\r\n { month: \"Apr\", sale: 127, total: 7150 },\r\n { month: \"May\", sale: 105, total: 4340 },\r\n { month: \"Jun\", sale: 180, total: 7520 },\r\n { month: \"Jul\", sale: 150, total: 5380 },\r\n { month: \"Aug\", sale: 120, total: 2590 },\r\n { month: \"Sep\", sale: 59, total: 2700 },\r\n { month: \"Oct\", sale: 139, total: 2800 },\r\n { month: \"Nov\", sale: 66, total: 3450 },\r\n { month: \"Dec\", sale: 55, total: 3260 },\r\n ],\r\n 2019: [\r\n { month: \"Jan\", sale: 170, total: 856 },\r\n { month: \"Feb\", sale: 150, total: 3574 },\r\n { month: \"Mar\", sale: 10, total: 1198 },\r\n { month: \"Apr\", sale: 33, total: 6150 },\r\n { month: \"May\", sale: 84, total: 3340 },\r\n { month: \"Jun\", sale: 120, total: 5520 },\r\n { month: \"Jul\", sale: 110, total: 3380 },\r\n { month: \"Aug\", sale: 90, total: 1890 },\r\n { month: \"Sep\", sale: 29, total: 1900 },\r\n { month: \"Oct\", sale: 118, total: 2300 },\r\n { month: \"Nov\", sale: 48, total: 3198 },\r\n { month: \"Dec\", sale: 12, total: 2410 },\r\n ],\r\n};\r\n","import * as React from \"react\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport {\r\n Chart,\r\n ArgumentAxis,\r\n ValueAxis,\r\n BarSeries,\r\n Title,\r\n Legend,\r\n} from \"@devexpress/dx-react-chart-material-ui\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport { Stack, Animation } from \"@devexpress/dx-react-chart\";\r\n\r\nimport { olimpicMedals as data } from \"./data-vizualization-stacked\";\r\n\r\nconst legendStyles = () => ({\r\n root: {\r\n display: \"flex\",\r\n margin: \"auto\",\r\n flexDirection: \"row\",\r\n },\r\n});\r\nconst legendRootBase = ({ classes, ...restProps }) => (\r\n <Legend.Root {...restProps} className={classes.root} />\r\n);\r\nconst Root = withStyles(legendStyles, { name: \"LegendRoot\" })(legendRootBase);\r\nconst legendLabelStyles = () => ({\r\n label: {\r\n whiteSpace: \"nowrap\",\r\n },\r\n});\r\nconst legendLabelBase = ({ classes, ...restProps }) => (\r\n <Legend.Label className={classes.label} {...restProps} />\r\n);\r\nconst Label = withStyles(legendLabelStyles, { name: \"LegendLabel\" })(\r\n legendLabelBase\r\n);\r\n\r\nexport default class Demo extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n\r\n return (\r\n <Paper style={{ width: 450 }}>\r\n <Chart data={chartData}>\r\n <ArgumentAxis />\r\n <ValueAxis />\r\n\r\n <BarSeries\r\n name=\"Nam\"\r\n valueField=\"male\"\r\n argumentField=\"department\"\r\n color=\"rgb(60, 141, 188)\"\r\n />\r\n <BarSeries\r\n name=\"Nữ\"\r\n valueField=\"female\"\r\n argumentField=\"department\"\r\n color=\"#F88DAD\"\r\n />\r\n <Animation />\r\n <Legend\r\n position=\"bottom\"\r\n rootComponent={Root}\r\n labelComponent={Label}\r\n />\r\n <Title text=\"Nhân sự phòng ban\" />\r\n <Stack />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport AddCircleOutlineIcon from \"@material-ui/icons/AddCircleOutline\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport ListItemAvatar from \"@material-ui/core/ListItemAvatar\";\r\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\r\nimport ArrowDownwardIcon from \"@material-ui/icons/ArrowDownward\";\r\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport ExpandLessIcon from \"@material-ui/icons/ExpandLess\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport Accordion from \"@material-ui/core/Accordion\";\r\nimport AccordionSummary from \"@material-ui/core/AccordionSummary\";\r\nimport AccordionDetails from \"@material-ui/core/AccordionDetails\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: \"100%\",\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n fontWeight: theme.typography.fontWeightRegular,\r\n },\r\n}));\r\n\r\nconst Reminder = () => {\r\n const [statusFirst, setStatusFirst] = useState(false);\r\n const [statusSecond, setStatusSecond] = useState(false);\r\n const [statusThird, setStatusThird] = useState(false);\r\n const classes = useStyles();\r\n const openFirst = () => {\r\n setStatusFirst(!statusFirst);\r\n };\r\n const openSecond = () => {\r\n setStatusSecond(!statusSecond);\r\n };\r\n const openThird = () => {\r\n setStatusThird(!statusThird);\r\n };\r\n return (\r\n <Paper style={{ padding: 10, minHeight: \"390px\", maxHeight: \"1000px\" }}>\r\n <h2 style={{ margin: \"0px\" }}>Nhắc việc</h2>\r\n <br />\r\n <div style={{ display: \"flex\" }}>\r\n <Accordion style={{ boxShadow: \"none\" }}>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n >\r\n <Typography\r\n className={classes.heading}\r\n style={{\r\n paddingTop: \"4px\",\r\n paddingRight: \"8px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n 1. Nhân viên đã hết hạn hợp đồng\r\n </Typography>\r\n <Chip label=\"2\" color=\"secondary\" />\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Typography>\r\n <ListItem>\r\n <ListItemText primary=\"Lê Trọng Trí\" secondary=\"02/01/2021\" />\r\n </ListItem>\r\n <ListItem>\r\n <ListItemText primary=\"Trần Đức Giang\" secondary=\"02/02/2021\" />\r\n </ListItem>\r\n </Typography>\r\n </AccordionDetails>\r\n </Accordion>\r\n </div>\r\n <div style={{ display: \"flex\" }}>\r\n <Accordion style={{ boxShadow: \"none\" }}>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n >\r\n <Typography\r\n className={classes.heading}\r\n style={{\r\n paddingTop: \"4px\",\r\n paddingRight: \"8px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n 2. Nhân viên sắp hết hạn hợp đồng\r\n </Typography>\r\n <Chip label=\"2\" color=\"secondary\" />\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Typography>\r\n <ListItem>\r\n <ListItemText primary=\"Lê Trọng Trí\" secondary=\"05/01/2021\" />\r\n </ListItem>\r\n <ListItem>\r\n <ListItemText primary=\"Trần Đức Giang\" secondary=\"08/02/2021\" />\r\n </ListItem>\r\n </Typography>\r\n </AccordionDetails>\r\n </Accordion>\r\n </div>\r\n <div style={{ display: \"flex\" }}>\r\n <Accordion style={{ boxShadow: \"none\" }}>\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon />}\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n >\r\n <Typography\r\n className={classes.heading}\r\n style={{\r\n paddingTop: \"4px\",\r\n paddingRight: \"8px\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n 3. Sinh nhật\r\n </Typography>\r\n <Chip label=\"1\" color=\"secondary\" />\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Typography>\r\n <ListItem>\r\n <ListItemText primary=\"Lê Trọng Trí\" secondary=\"19/10\" />\r\n </ListItem>\r\n </Typography>\r\n </AccordionDetails>\r\n </Accordion>\r\n </div>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default Reminder;\r\n","import { Grid, Paper, Card } from \"@material-ui/core\";\r\nimport PiceChart from \"../../Component/Chart/PiceChart\";\r\nimport Calendar from \"../../Component/Calendar/Calendar\";\r\nimport RotateChart from \"../../Component/Chart/RotateChart\";\r\nimport BartChart from \"../../Component/Chart/BartChart\";\r\nimport TimeLine from \"../../Component/Chart/TimeLine\";\r\nimport StackedSeriesChart from \"../../Component/Chart/StackedSeriesHomeChart\";\r\nimport Reminder from \"./Reminder\";\r\nconst dataLetter = [\r\n { region: \"Chập nhận\", val: 10 },\r\n { region: \"Từ chối\", val: 4 },\r\n { region: \"Chưa xử lý\", val: 6 },\r\n];\r\n\r\nconst dataCheckIn = [\r\n { region: \"Chấm công\", val: 35 },\r\n { region: \"Chưa chấm công\", val: 5 },\r\n];\r\n\r\nconst Body = (props) => {\r\n return (\r\n <Grid container spacing={3}>\r\n <Grid xs={12} item>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid xs={12} sm={6} item>\r\n <PiceChart data={dataLetter} title={\"Đơn từ\"} />\r\n </Grid>\r\n <Grid xs={12} sm={6} item>\r\n <PiceChart data={dataCheckIn} title={\"Chấm công\"} />\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n <Grid xs={12} item>\r\n <Grid container xs={12} spacing={3}>\r\n <Grid xs={12} sm={5} item>\r\n <StackedSeriesChart />\r\n </Grid>\r\n <Grid xs={12} sm={7} item>\r\n <RotateChart />\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n <Grid xs={12} sm={12} item>\r\n <Grid container spacing={3}>\r\n <Grid xs={8} sm={8} item>\r\n <Reminder />\r\n </Grid>\r\n <Grid xs={4} sm={4} item>\r\n <TimeLine />\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default Body;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n Popover,\r\n Typography,\r\n Button,\r\n Avatar,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n} from \"@material-ui/core\";\r\nimport ExitToAppIcon from \"@material-ui/icons/ExitToApp\";\r\nimport SettingsIcon from \"@material-ui/icons/Settings\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport AutorenewIcon from \"@material-ui/icons/Autorenew\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nconst useStyles = makeStyles((theme) => ({\r\n typography: {\r\n padding: theme.spacing(2),\r\n },\r\n}));\r\n\r\nexport default function SimplePopover() {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n let history = useHistory();\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? \"simple-popover\" : undefined;\r\n const logout = () => {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n history.push(\"/\");\r\n };\r\n return (\r\n <div>\r\n <Button aria-describedby={id} color=\"primary\" onClick={handleClick}>\r\n <Avatar alt=\"Remy Sharp\" src=\"/asset/avatar.jpg\" />\r\n </Button>\r\n <Popover\r\n id={id}\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"center\",\r\n }}\r\n transformOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"center\",\r\n }}\r\n >\r\n <List component=\"nav\" aria-label=\"main mailbox folders\">\r\n <ListItem button>\r\n <ListItemIcon>\r\n <AutorenewIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Đổi mật khẩu\" />\r\n </ListItem>\r\n <ListItem button>\r\n <ListItemIcon>\r\n <SettingsIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Cài đặt\" />\r\n </ListItem>\r\n <ListItem button onClick={logout}>\r\n <ListItemIcon>\r\n <ExitToAppIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Đăng xuất\" style={{ color: \"red\" }} />\r\n </ListItem>\r\n </List>\r\n </Popover>\r\n </div>\r\n );\r\n}\r\n"," const colors= {\r\n main:'#3c8dbc' \r\n }\r\n\r\n\r\n export default colors;","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport PropTypes from \"prop-types\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n Drawer,\r\n AppBar,\r\n Toolbar,\r\n List,\r\n CssBaseline,\r\n Typography,\r\n Divider,\r\n IconButton,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Avatar,\r\n Badge,\r\n AccordionSummary,\r\n Accordion,\r\n AccordionDetails,\r\n Collapse,\r\n} from \"@material-ui/core\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\r\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\r\nimport InboxIcon from \"@material-ui/icons/MoveToInbox\";\r\nimport MailIcon from \"@material-ui/icons/Mail\";\r\nimport HomeIcon from \"@material-ui/icons/Home\";\r\nimport NotificationsActiveIcon from \"@material-ui/icons/NotificationsActive\";\r\nimport FlagIcon from \"@material-ui/icons/Flag\";\r\nimport ApartmentIcon from \"@material-ui/icons/Apartment\";\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\nimport EqualizerIcon from \"@material-ui/icons/Equalizer\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport DraftsIcon from \"@material-ui/icons/Drafts\";\r\nimport SendIcon from \"@material-ui/icons/Send\";\r\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\r\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\r\nimport StarBorder from \"@material-ui/icons/StarBorder\";\r\nimport MeetingRoomIcon from \"@material-ui/icons/MeetingRoom\";\r\nimport {\r\n updateMenuCheckIn,\r\n updateMenuDepartment,\r\n updateMenuEmployee,\r\n updateMenuReport,\r\n updateMenuSalary,\r\n updateMenuLetter,\r\n} from \"../actions/menu\";\r\nimport {\r\n BrowserRouter as Router,\r\n Switch,\r\n Route,\r\n Link,\r\n useHistory,\r\n} from \"react-router-dom\";\r\nimport EmailIcon from \"@material-ui/icons/Email\";\r\nimport AttachMoneyIcon from \"@material-ui/icons/AttachMoney\";\r\nimport AssignmentTurnedInIcon from \"@material-ui/icons/AssignmentTurnedIn\";\r\nimport Popper from \"../Component/Popup/Popper\";\r\nimport colors from \"../assets/Color\";\r\n\r\nconst drawerWidth = 240;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n },\r\n drawer: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n },\r\n appBar: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n marginLeft: drawerWidth,\r\n },\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n // necessary for content to be below app bar\r\n toolbar: theme.mixins.toolbar,\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n toolbarLogo: {\r\n ...theme.mixins.toolbar,\r\n backgroundColor: colors.main,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n paddingTop: 8,\r\n position: \"sticky\",\r\n },\r\n}));\r\n\r\nfunction ResponsiveDrawer(props) {\r\n const { window } = props;\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [mobileOpen, setMobileOpen] = React.useState(false);\r\n const [open, setOpen] = React.useState(false);\r\n const {\r\n openCheckIn,\r\n openDepartment,\r\n openEmployee,\r\n openSalary,\r\n openReport,\r\n openLetter,\r\n } = props.menuReducer;\r\n const handleDrawerToggle = () => {\r\n setMobileOpen(!mobileOpen);\r\n };\r\n\r\n const drawer = (\r\n <div>\r\n <AppBar position=\"fixed\" className={classes.toolbarLogo}>\r\n <img\r\n src=\"/asset/logodcv.png\"\r\n style={{ width: 100, display: \"block\" }}\r\n />\r\n </AppBar>\r\n <Divider />\r\n <List>\r\n <Link\r\n to={\"/home\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon>\r\n <HomeIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={\"Trang chủ\"} />\r\n </ListItem>\r\n <Divider />\r\n </Link>\r\n\r\n <ListItem button onClick={() => props.updateMenuLetter(!openLetter)}>\r\n <ListItemIcon>\r\n <EmailIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Đơn từ\" />\r\n {openLetter ? <ExpandLess /> : <ExpandMore />}\r\n </ListItem>\r\n <Collapse in={openLetter} timeout=\"auto\" unmountOnExit>\r\n <List component=\"div\" disablePadding>\r\n <Divider />\r\n <Link\r\n to={\"/letter\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Chờ xử lý\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/letterhandled\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Đã xử lý\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/letterreport\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Báo cáo\"} />\r\n </ListItem>\r\n </Link>\r\n </List>\r\n </Collapse>\r\n <Divider />\r\n <ListItem button onClick={() => props.updateMenuCheckIn(!openCheckIn)}>\r\n <ListItemIcon>\r\n <AssignmentTurnedInIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Chấm công\" />\r\n {openCheckIn ? <ExpandLess /> : <ExpandMore />}\r\n </ListItem>\r\n <Collapse in={openCheckIn} timeout=\"Inbox\" unmountOnExit>\r\n <List component=\"div\" disablePadding>\r\n <Divider />\r\n <Link\r\n to={\"/timekeeping/setup\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Thiết lập\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/timekeeping\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Danh sách\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/timekeeping/report\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Báo cáo\"} />\r\n </ListItem>\r\n </Link>\r\n </List>\r\n </Collapse>\r\n <Divider />\r\n <ListItem\r\n button\r\n onClick={() => props.updateMenuDepartment(!openDepartment)}\r\n >\r\n <ListItemIcon>\r\n <ApartmentIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Phòng ban\" />\r\n {openDepartment ? <ExpandLess /> : <ExpandMore />}\r\n </ListItem>\r\n <Collapse in={openDepartment} timeout=\"auto\" unmountOnExit>\r\n <List component=\"div\" disablePadding>\r\n <Divider />\r\n <Link\r\n to={\"/department/struct\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Sơ đồ\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/department/report\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Danh sách\"} />\r\n </ListItem>\r\n </Link>\r\n </List>\r\n </Collapse>\r\n <Divider />\r\n <ListItem\r\n button\r\n onClick={() => props.updateMenuEmployee(!openEmployee)}\r\n >\r\n <ListItemIcon>\r\n <PeopleIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Nhân viên\" />\r\n {openEmployee ? <ExpandLess /> : <ExpandMore />}\r\n </ListItem>\r\n <Collapse in={openEmployee} timeout=\"auto\" unmountOnExit>\r\n <List component=\"div\" disablePadding>\r\n <Divider />\r\n <Link\r\n to={\"/employee/createemployee\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Thêm mới\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/employee\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Danh sách\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/reportemployee\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Báo cáo\"} />\r\n </ListItem>\r\n </Link>\r\n </List>\r\n </Collapse>\r\n <Divider />\r\n <ListItem button onClick={() => props.updateMenuSalary(!openSalary)}>\r\n <ListItemIcon>\r\n <AttachMoneyIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Lương thưởng\" />\r\n {openSalary ? <ExpandLess /> : <ExpandMore />}\r\n </ListItem>\r\n <Collapse in={openSalary} timeout=\"auto\" unmountOnExit>\r\n <List component=\"div\" disablePadding>\r\n <Divider />\r\n <Link\r\n to={\"/letter\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Thiết lập\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/salary\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Danh sách\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/salary/report\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"Báo cáo\"} />\r\n </ListItem>\r\n </Link>\r\n </List>\r\n </Collapse>\r\n <Divider />\r\n <ListItem button onClick={() => props.updateMenuReport(!openReport)}>\r\n <ListItemIcon>\r\n <EqualizerIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Báo cáo\" />\r\n {openReport ? <ExpandLess /> : <ExpandMore />}\r\n </ListItem>\r\n <Collapse in={openReport} timeout=\"auto\" unmountOnExit>\r\n <List component=\"div\" disablePadding>\r\n <Divider />\r\n <Link\r\n to={\"/report\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"NV thử việc\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/report\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"NV chưa có HDLD\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/report\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"NV sắp hết HDLD\"} />\r\n </ListItem>\r\n </Link>\r\n <Divider />\r\n <Link\r\n to={\"/report\"}\r\n underline=\"hover\"\r\n style={{ textDecoration: \"none\", color: \"black\" }}\r\n >\r\n <ListItem button>\r\n <ListItemIcon></ListItemIcon>\r\n <ListItemText primary={\"NV nghỉ việc\"} />\r\n </ListItem>\r\n </Link>\r\n </List>\r\n </Collapse>\r\n <Divider />\r\n </List>\r\n </div>\r\n );\r\n\r\n const container =\r\n window !== undefined ? () => window().document.body : undefined;\r\n\r\n return (\r\n <div className={classes.root}>\r\n <CssBaseline />\r\n <AppBar\r\n position=\"fixed\"\r\n className={clsx(classes.appBar, {\r\n [classes.appBarShift]: open,\r\n })}\r\n style={{ backgroundColor: \"#3c8dbc\" }}\r\n >\r\n <Toolbar>\r\n <div\r\n style={{\r\n flex: 1,\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <IconButton\r\n color=\"inherit\"\r\n aria-label=\"open drawer\"\r\n edge=\"start\"\r\n onClick={handleDrawerToggle}\r\n className={classes.menuButton}\r\n >\r\n <MenuIcon />\r\n </IconButton>\r\n <div />\r\n <div\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <ListItem button>\r\n <IconButton\r\n aria-label=\"delete\"\r\n className={classes.margin}\r\n size=\"small\"\r\n >\r\n <Badge badgeContent={4} color=\"error\">\r\n <MailIcon fontSize=\"small\" style={{ color: \"white\" }} />\r\n </Badge>\r\n </IconButton>\r\n </ListItem>\r\n <ListItem button>\r\n <IconButton\r\n aria-label=\"delete\"\r\n className={classes.margin}\r\n size=\"small\"\r\n >\r\n <Badge badgeContent={2} color=\"secondary\">\r\n <NotificationsActiveIcon\r\n fontSize=\"small\"\r\n style={{ color: \"white\" }}\r\n />\r\n </Badge>\r\n </IconButton>\r\n </ListItem>\r\n <ListItem button>\r\n <IconButton\r\n aria-label=\"delete\"\r\n className={classes.margin}\r\n size=\"small\"\r\n >\r\n <Badge badgeContent={0} color=\"secondary\">\r\n <FlagIcon fontSize=\"small\" style={{ color: \"white\" }} />\r\n </Badge>\r\n </IconButton>\r\n </ListItem>\r\n <ListItemIcon\r\n style={{ justifyContent: \"center\", alignItems: \"center\" }}\r\n >\r\n <Popper />\r\n <div>\r\n <Typography\r\n style={{ textAlign: \"center\", color: \"white\" }}\r\n variant=\"caption\"\r\n noWrap\r\n >\r\n HR Name\r\n </Typography>\r\n </div>\r\n </ListItemIcon>\r\n </div>\r\n </div>\r\n </Toolbar>\r\n </AppBar>\r\n <nav className={classes.drawer} aria-label=\"mailbox folders\">\r\n {/* The implementation can be swapped with js to avoid SEO duplication of links. */}\r\n <Hidden smUp implementation=\"css\">\r\n <Drawer\r\n container={container}\r\n variant=\"temporary\"\r\n anchor={theme.direction === \"rtl\" ? \"right\" : \"left\"}\r\n open={mobileOpen}\r\n onClose={handleDrawerToggle}\r\n classes={{\r\n paper: classes.drawerPaper,\r\n }}\r\n ModalProps={{\r\n keepMounted: true, // Better open performance on mobile.\r\n }}\r\n >\r\n {drawer}\r\n </Drawer>\r\n </Hidden>\r\n <Hidden xsDown implementation=\"css\">\r\n <Drawer\r\n classes={{\r\n paper: classes.drawerPaper,\r\n }}\r\n variant=\"permanent\"\r\n open\r\n >\r\n {drawer}\r\n </Drawer>\r\n </Hidden>\r\n </nav>\r\n <main className={classes.content}>\r\n <div style={{ height: 50 }} />\r\n\r\n {props.children}\r\n </main>\r\n </div>\r\n );\r\n}\r\n\r\nResponsiveDrawer.propTypes = {\r\n /**\r\n * Injected by the documentation to work in an iframe.\r\n * You won't need it on your project.\r\n */\r\n window: PropTypes.func,\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n user: state.userReducer,\r\n menuReducer: state.menuReducer,\r\n };\r\n};\r\nexport default connect(mapStateToProps, {\r\n updateMenuCheckIn,\r\n updateMenuDepartment,\r\n updateMenuEmployee,\r\n updateMenuReport,\r\n updateMenuSalary,\r\n updateMenuLetter,\r\n})(ResponsiveDrawer);\r\n","import {\r\n UPDATE_MENU_OPENCHECKIN,\r\n UPDATE_MENU_SALARY,\r\n UPDATE_MENU_EMPLOYEE,\r\n UPDATE_MENU_REPORT,\r\n UPDATE_MENU_DEPARTMENT,\r\n UPDATE_MENU_OPENLETTER,\r\n} from \"./actionTypes\";\r\n\r\nexport function updateMenuCheckIn(data) {\r\n return {\r\n type: UPDATE_MENU_OPENCHECKIN,\r\n data,\r\n };\r\n}\r\n\r\nexport function updateMenuSalary(data) {\r\n return {\r\n type: UPDATE_MENU_SALARY,\r\n data,\r\n };\r\n}\r\n\r\nexport function updateMenuEmployee(data) {\r\n return {\r\n type: UPDATE_MENU_EMPLOYEE,\r\n data,\r\n };\r\n}\r\n\r\nexport function updateMenuReport(data) {\r\n return {\r\n type: UPDATE_MENU_REPORT,\r\n data,\r\n };\r\n}\r\n\r\nexport function updateMenuDepartment(data) {\r\n return {\r\n type: UPDATE_MENU_DEPARTMENT,\r\n data,\r\n };\r\n}\r\n\r\nexport function updateMenuLetter(data) {\r\n return {\r\n type: UPDATE_MENU_OPENLETTER,\r\n data,\r\n };\r\n}\r\n","import { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport React from \"react\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport Header from \"./Header\";\r\nimport Body from \"./Body\";\r\nimport DrawerView from \"../Drawer\";\r\nconst HomeView = (props) => {\r\n return (\r\n <DrawerView>\r\n <div styles={{ flexGrow: 1, backgroundColor: \"#f5f5f5\" }}>\r\n <Grid container spacing={3}>\r\n <Grid item sm={12}>\r\n <Header />\r\n </Grid>\r\n <Grid item sm={12}>\r\n <Body />\r\n </Grid>\r\n </Grid>\r\n </div>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default HomeView;\r\n","import HomeView from \"./HomeView\";\r\nimport { connect } from \"react-redux\";\r\n\r\n\r\nconst HomeContainer = (props) => {\r\n console.log(props.user);\r\n return <HomeView />;\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n user: state.userReducer,\r\n };\r\n};\r\nexport default connect(mapStateToProps, {})(HomeContainer);\r\n","import { PostLogin, PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const getListEmployee = async (body) =>\r\n GetData(url.GETLISTEMPLOYEE, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getListEmployeePaging = async (body) =>\r\n PostData(url.GETLISTEMPLOYEEPAGING, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const createNewEmployee = async (body) =>\r\n PostData(url.NEWEMPLOYEE, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const deleteEmployee = async (body) =>\r\n GetData(url.DELETEEMPLOYEE, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const detailEmployee = async (body) =>\r\n GetData(url.DETAILEMPLOYEE, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n","import React from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst departments = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"KT\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"HR\",\r\n label: \"Nhân sự\",\r\n },\r\n];\r\n\r\nconst _status = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"0\",\r\n label: \"Hoạt động\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nghỉ\",\r\n },\r\n];\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: \"25ch\",\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst Header = (props) => {\r\n const [department, setDepartment] = React.useState(\"\");\r\n const [status, setStatus] = React.useState(\"\");\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n\r\n const handleSelectStatus = (event) => {\r\n setStatus(event.target.value);\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n <Grid container justify={\"space-around\"} alignItems={\"center\"}>\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n onChange={handleSelectDepartment}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n >\r\n {departments.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField id=\"standard-basic\" label=\"Họ Tên\" />\r\n </form>\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField id=\"standard-basic\" label=\"Mã nhân viên\" />\r\n </form>\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Trạng thái\"\r\n value={status}\r\n onChange={handleSelectStatus}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n >\r\n {_status.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport { Card, Typography, Button, Grid } from \"@material-ui/core\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport { deleteEmployee } from \"../../apis/Functions/employee\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 500,\r\n },\r\n tableHeader: {\r\n backgroundColor: \"red\",\r\n },\r\n});\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nexport default function StickyHeadTable(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(5);\r\n const [open, setOpen] = React.useState(false);\r\n const [idEmployee, setIdEmployee] = React.useState(\"\");\r\n const [pageCurrent, setPageCurrent] = React.useState(1);\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const handleClickOpen = (id) => {\r\n setOpen(true);\r\n setIdEmployee(id);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleAgree = async () => {\r\n let res = await deleteEmployee({\r\n id: idEmployee,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Xóa nhân viên thành công\", { variant: \"success\" });\r\n setOpen(false);\r\n if (props.rows.length == 1) {\r\n setPage(page - 1);\r\n setPageCurrent(pageCurrent - 1);\r\n props.changePage(page);\r\n }\r\n props.changeStatusDelete(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n let history = useHistory();\r\n\r\n const goToEmployee = (id) => {\r\n history.push(`/profile/${id}`);\r\n };\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n props.changePage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n props.changeRowPerPage(+event.target.value);\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n props.changePage(0);\r\n };\r\n\r\n return (\r\n <div className={classes.root}>\r\n <Dialog\r\n open={open}\r\n onClose={handleClose}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n <DialogTitle id=\"alert-dialog-title\"></DialogTitle>\r\n <DialogContent>\r\n <DialogContentText\r\n id=\"alert-dialog-description\"\r\n style={{ fontWeight: \"bold\" }}\r\n >\r\n Bạn có thực sự muốn xóa nhân viên này?\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleClose}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgree}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead color={\"red\"}>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 120, textAlign: \"center\" }}>\r\n Trạng thái\r\n </StyledTableCell>\r\n <StyledTableCell style={{ minWidth: 120, textAlign: \"center\" }}>\r\n Hành động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell>\r\n {row.status ? (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00A65A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Hoạt động</Typography>\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#FF8C1A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Nghỉ</Typography>\r\n </div>\r\n )}\r\n </TableCell>\r\n\r\n <TableCell>\r\n <IconButton\r\n onClick={() => {\r\n history.push(`/detailemployee/${row.id}`);\r\n }}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"black\" }}\r\n >\r\n <VisibilityIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n onClick={() => goToEmployee(row.id)}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"#3C8DBC\" }}\r\n >\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n onClick={() => handleClickOpen(row.id)}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <Grid container justify={\"center\"} style={{ padding: 10 }}>\r\n <Pagination\r\n count={Math.ceil(props.totalPage / 10)}\r\n color=\"secondary\"\r\n page={pageCurrent}\r\n onChange={(event, page) => {\r\n setPageCurrent(page);\r\n props.changePage(parseInt(page) - 1);\r\n }}\r\n />\r\n </Grid>\r\n </div>\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\n\r\nimport { Grid, Card, Paper, Typography } from \"@material-ui/core\";\r\nimport Header from \"./Header\";\r\nimport DrawerView from \"../Drawer\";\r\nimport TableUser from \"../../Component/Table/TableUser\";\r\n\r\nfunction createData(id, name, phone, email, positon, department, status) {\r\n return { id, name, phone, email, positon, department, status };\r\n}\r\n\r\nconst columns = [\r\n { id: \"name\", label: \"Tên\", minWidth: 170 },\r\n {\r\n id: \"phone\",\r\n label: \"Điện thoại\",\r\n minWidth: 170,\r\n align: \"right\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"email\",\r\n label: \"Email\",\r\n minWidth: 170,\r\n align: \"right\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"positon\",\r\n label: \"Chức vụ\",\r\n minWidth: 170,\r\n align: \"right\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n {\r\n id: \"department\",\r\n label: \"Phòng ban\",\r\n minWidth: 170,\r\n align: \"center\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n];\r\n\r\nconst EmployeeView = (props) => {\r\n const [list, setList] = useState([]);\r\n useEffect(() => {\r\n console.log(encodeURIComponent(\"DepartmentCode:KT\"));\r\n const listPush = [];\r\n if (props.list.data) {\r\n props.list.data.forEach((el) => {\r\n listPush.push(\r\n createData(\r\n el.id,\r\n el.fullName,\r\n el.phone,\r\n el.email,\r\n el.description,\r\n el.departmentCode,\r\n el.workingStatus\r\n )\r\n );\r\n });\r\n setList(listPush);\r\n }\r\n }, [props.list]);\r\n return (\r\n <DrawerView>\r\n <Typography variant={\"h5\"}>Danh sách nhân viên</Typography>\r\n <br />\r\n <Paper>\r\n <Grid container spacing={1}>\r\n <Grid item xs={12}>\r\n <Header />\r\n </Grid>\r\n <Grid xs={12} item spacing={1}>\r\n <TableUser\r\n rows={list}\r\n columns={columns}\r\n changePage={props.changePage}\r\n changeRowPerPage={props.changeRowPerPage}\r\n totalPage={props.totalRows}\r\n changeStatusDelete={props.changeStatusDelete}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nconst styles = {\r\n contaienr: {\r\n backgroundColor: \"blue\",\r\n color: \"yellow\",\r\n flex: 1,\r\n },\r\n};\r\n\r\nexport default EmployeeView;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n getListEmployee,\r\n getListEmployeePaging,\r\n} from \"../../apis/Functions/employee\";\r\nimport EmployeeView from \"./EmployeeView\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nconst EmployeeContainer = (props) => {\r\n const [data, setData] = useState([]);\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n const [totalRows, setTotalRows] = useState(0);\r\n const [statusDelete, setStatusDelete] = useState(0);\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const changePage = (page) => {\r\n setPage(page);\r\n };\r\n const changeRowPerPage = (rowper) => {\r\n setRowsPerPage(rowper);\r\n };\r\n\r\n const changeStatusDelete = (status) => {\r\n setStatusDelete(status);\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [page, rowsPerPage, statusDelete]);\r\n const getData = async () => {\r\n const res = await getListEmployeePaging({\r\n pageIndex: page + 1,\r\n pageSize: 10,\r\n orderBy: \"CreatedAt\",\r\n directionSort: \"DESC\",\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n setData(res.data);\r\n setTotalRows(res.data.metaData.outRowsNumber);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <EmployeeView\r\n list={data}\r\n changePage={changePage}\r\n changeRowPerPage={changeRowPerPage}\r\n totalRows={totalRows}\r\n changeStatusDelete={changeStatusDelete}\r\n />\r\n );\r\n};\r\n\r\nexport default EmployeeContainer;\r\n","import { PostLogin, PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const getListDepartmentPaging = async (body) =>\r\n PostData(url.GETLISTDEPARTMENTPAGING, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const deleteDepartment = async (body) =>\r\n GetData(url.DELETEDEPARTMENT, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const createNewDepartment = async (body) =>\r\n PostData(url.NEWDEPARTMENT, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const detailDepartment = async (body) =>\r\n GetData(url.DETAILDEPARTMENT, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport { Card, Typography, Button, Grid, TextField } from \"@material-ui/core\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport {\r\n deleteDepartment,\r\n detailDepartment,\r\n createNewDepartment,\r\n} from \"../../apis/Functions/department\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 500,\r\n },\r\n tableHeader: {\r\n backgroundColor: \"red\",\r\n },\r\n});\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nexport default function StickyHeadTable(props) {\r\n const classes = useStyles();\r\n let history = useHistory();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n const [open, setOpen] = useState(false);\r\n const [openEdit, setOpenEdit] = useState(false);\r\n const [idDepartment, setIdDepartment] = useState(\"\");\r\n const [pageCurrent, setPageCurrent] = useState(props.pageCurrent);\r\n const [state, setState] = useState({\r\n name: \"\",\r\n phone: \"\",\r\n leaderCode: \"\",\r\n id: \"\",\r\n description: \"\",\r\n code: \"\",\r\n companyCode: \"\",\r\n });\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const handleClickOpen = (id) => {\r\n setOpen(true);\r\n setIdDepartment(id);\r\n };\r\n\r\n const handleClickOpenEdit = async (id) => {\r\n setIdDepartment(id);\r\n let res = await detailDepartment({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n name: content.name,\r\n id: id,\r\n phone: content.phone,\r\n code: content.code,\r\n leaderCode: content.leaderCode,\r\n description: content.description,\r\n companyCode: content.companyCode,\r\n });\r\n setOpenEdit(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleCloseEdit = () => {\r\n setOpenEdit(false);\r\n };\r\n\r\n const handleAgreeEdit = async () => {\r\n const res = await createNewDepartment(state);\r\n if (res.data && res.data.errorCode === 0) {\r\n enqueueSnackbar(\"Tạo mới thành công\", { variant: \"success\" });\r\n setOpenEdit(false);\r\n props.changeStatusUpdate(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleAgree = async () => {\r\n let res = await deleteDepartment({\r\n id: idDepartment,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Xóa phòng ban thành công\", { variant: \"success\" });\r\n setOpen(false);\r\n if (props.rows.length == 1) {\r\n setPage(page - 1);\r\n setPageCurrent(pageCurrent - 1);\r\n props.changePage(page);\r\n }\r\n props.changeStatusDelete(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const goToEmployee = (id) => {\r\n history.push(`/profile/${id}`);\r\n };\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n props.changePage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n props.changeRowPerPage(+event.target.value);\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n props.changePage(0);\r\n };\r\n\r\n useEffect(() => {\r\n setPageCurrent(props.pageCurrent);\r\n }, [props.pageCurrent]);\r\n\r\n return (\r\n <div className={classes.root}>\r\n <Dialog\r\n fullWidth=\"true\"\r\n maxWidth=\"sm\"\r\n open={openEdit}\r\n onClose={handleCloseEdit}\r\n aria-labelledby=\"max-width-dialog-title\"\r\n >\r\n <DialogTitle id=\"max-width-dialog-title\">\r\n Thông tin phòng ban\r\n </DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>\r\n <Grid container spacing={1}>\r\n <Grid item xs={6}>\r\n <TextField\r\n label=\"Tên phòng ban\"\r\n value={state.name}\r\n fullWidth\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n name: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n label=\"Trưởng phòng\"\r\n fullWidth\r\n value={state.leaderCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n leaderCode: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n label=\"Số điện thoại\"\r\n fullWidth\r\n value={state.phone}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n phone: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n label=\"Mô tả\"\r\n fullWidth\r\n value={state.description}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n description: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n label=\"Mã phòng\"\r\n fullWidth\r\n value={state.code}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n code: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n label=\"Mã công ty\"\r\n fullWidth\r\n value={state.companyCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n companyCode: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n </Grid>\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleCloseEdit}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgreeEdit}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Cập nhật\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <Dialog\r\n open={open}\r\n onClose={handleClose}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n <DialogTitle id=\"alert-dialog-title\"></DialogTitle>\r\n <DialogContent>\r\n <DialogContentText\r\n id=\"alert-dialog-description\"\r\n style={{ fontWeight: \"bold\" }}\r\n >\r\n Bạn có thực sự muốn xóa phòng ban này?\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleClose}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgree}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead color={\"red\"}>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 120, textAlign: \"center\" }}>\r\n Trạng thái\r\n </StyledTableCell>\r\n <StyledTableCell style={{ minWidth: 120, textAlign: \"center\" }}>\r\n Hành động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell>\r\n {row.isDeleted == 0 ? (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00A65A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Hoạt động</Typography>\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#FF8C1A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Nghỉ</Typography>\r\n </div>\r\n )}\r\n </TableCell>\r\n\r\n <TableCell>\r\n <IconButton\r\n onClick={() => handleClickOpenEdit(row.id)}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"#3C8DBC\" }}\r\n >\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n onClick={() => handleClickOpen(row.id)}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <Grid container justify={\"center\"} style={{ padding: 10 }}>\r\n <Pagination\r\n count={Math.ceil(props.totalPage / 10)}\r\n color=\"secondary\"\r\n page={pageCurrent}\r\n onChange={(event, page) => {\r\n setPageCurrent(page);\r\n props.changePage(parseInt(page) - 1);\r\n }}\r\n />\r\n </Grid>\r\n </div>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport { Paper, Button } from \"@material-ui/core\";\r\nimport DrawerView from \"../../Drawer\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { createNewDepartment } from \"../../../apis/Functions/department\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../../assets/AsynStorage\";\r\n\r\nexport default function CreateDeparment(props) {\r\n const { closeCreateView } = props;\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n const [state, setState] = useState({\r\n name: \"\",\r\n leaderCode: \"\",\r\n phone: \"\",\r\n description: \"\",\r\n code: \"\",\r\n companyCode: \"\",\r\n });\r\n\r\n const newDepartment = async () => {\r\n const res = await createNewDepartment(state);\r\n if (res.data && res.data.errorCode === 0) {\r\n enqueueSnackbar(\"Tạo mới thành công\", { variant: \"success\" });\r\n props.changeStatusCreate(Math.random() * 10);\r\n props.changePage(0);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Lỗi mã phòng ban đã tồn tại hoặc sai định dạng\", {\r\n variant: \"error\",\r\n });\r\n }\r\n };\r\n return (\r\n <div>\r\n <Paper elevation={3} style={{ padding: 20 }}>\r\n <Typography variant=\"h6\" gutterBottom>\r\n Thêm mới phòng ban\r\n </Typography>\r\n <Grid container spacing={3}>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"leaderCode\"\r\n name=\"leaderCode\"\r\n label=\"Tên phòng ban\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n value={state.name}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n name: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"leader\"\r\n name=\"leader\"\r\n label=\"Trưởng phòng\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.leaderCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n leaderCode: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"phone\"\r\n name=\"phone\"\r\n label=\"Số điện thoại\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.phone}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n phone: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n id=\"description\"\r\n name=\"description\"\r\n label=\"Mô tả\"\r\n fullWidth\r\n autoComplete=\"shipping address-line1\"\r\n value={state.description}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n description: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n id=\"description\"\r\n name=\"description\"\r\n label=\"Mã phòng\"\r\n fullWidth\r\n autoComplete=\"shipping address-line1\"\r\n value={state.code}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n code: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n id=\"description\"\r\n name=\"description\"\r\n label=\"Mã công ty\"\r\n fullWidth\r\n autoComplete=\"shipping address-line1\"\r\n value={state.companyCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n companyCode: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n\r\n <Grid\r\n container\r\n xs={12}\r\n spacing={3}\r\n justify=\"center\"\r\n alignItems=\"flex-end\"\r\n style={{ marginTop: 20 }}\r\n direction=\"column\"\r\n >\r\n <Grid item xs={12} sm={6}>\r\n <Button\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n onClick={closeCreateView}\r\n >\r\n Hủy\r\n </Button>\r\n <Button\r\n onClick={newDepartment}\r\n variant=\"contained\"\r\n style={{\r\n backgroundColor: \"green\",\r\n marginLeft: 30,\r\n color: \"white\",\r\n }}\r\n >\r\n Tạo\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </div>\r\n );\r\n}\r\n","import { useState } from \"react\";\r\nimport { Grid, Button, Card, Typography } from \"@material-ui/core\";\r\nimport CreateDeparment from \"./CreateDepartment/CreateDepartment\";\r\nconst Header = (props) => {\r\n const [isCreate, setIsCreate] = useState(false);\r\n\r\n const closeCreateView = () => {\r\n setIsCreate(false);\r\n };\r\n\r\n return (\r\n <div>\r\n {isCreate ? (\r\n <CreateDeparment\r\n changeStatusCreate={props.changeStatusCreate}\r\n changePage={props.changePage}\r\n closeCreateView={closeCreateView}\r\n />\r\n ) : (\r\n <div style={{ flexGrow: 1 }}>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid item xs={6}>\r\n <Typography variant={\"h5\"}>Quản lý phòng ban</Typography>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ padding: 10 }}\r\n >\r\n <Typography variant={\"h5\"}></Typography>\r\n <Button\r\n onClick={() => setIsCreate(true)}\r\n style={{ backgroundColor: \"#3C8DBC\", color: \"white\" }}\r\n variant=\"contained\"\r\n >\r\n Thêm mới\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport Container from \"@material-ui/core/Container\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport { Button, Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\nimport Table from \"../../Component/Table/TableDepartment\";\r\nimport DrawerView from \"../Drawer\";\r\nimport CreateDeparment from \"./CreateDepartment/CreateDepartment\";\r\nimport Header from \"./Header\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nfunction createData(\r\n id,\r\n name,\r\n phone,\r\n leaderCode,\r\n description,\r\n members,\r\n isDeleted\r\n) {\r\n return { id, name, phone, leaderCode, description, members, isDeleted };\r\n}\r\n\r\nconst columns = [\r\n { id: \"name\", label: \"Tên phòng ban\", minWidth: 170 },\r\n {\r\n id: \"phone\",\r\n label: \"Điện thoại\",\r\n minWidth: 170,\r\n align: \"right\",\r\n },\r\n {\r\n id: \"leaderCode\",\r\n label: \"Trường phòng\",\r\n minWidth: 170,\r\n align: \"right\",\r\n },\r\n {\r\n id: \"description\",\r\n label: \"Mô tả\",\r\n minWidth: 170,\r\n align: \"right\",\r\n },\r\n {\r\n id: \"members\",\r\n label: \"Thành viên\",\r\n minWidth: 170,\r\n align: \"right\",\r\n },\r\n];\r\n\r\nconst DepartmentView = (props) => {\r\n const [list, setList] = useState([]);\r\n useEffect(() => {\r\n const listPush = [];\r\n if (props.list.data) {\r\n props.list.data.forEach((el) => {\r\n listPush.push(\r\n createData(\r\n el.id,\r\n el.name,\r\n el.phone,\r\n el.leaderCode,\r\n el.description,\r\n el.members,\r\n el.isDeleted\r\n )\r\n );\r\n });\r\n setList(listPush);\r\n }\r\n }, [props.list]);\r\n return (\r\n <DrawerView>\r\n <br />\r\n <Header\r\n changeStatusCreate={props.changeStatusCreate}\r\n changePage={props.changePage}\r\n />\r\n <br />\r\n <Grid container spacing={3}>\r\n <Grid item xs={12}>\r\n <Table\r\n rows={list}\r\n columns={columns}\r\n changePage={props.changePage}\r\n totalPage={props.totalRows}\r\n changeStatusDelete={props.changeStatusDelete}\r\n pageCurrent={props.pageCurrent}\r\n changeStatusUpdate={props.changeStatusUpdate}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default DepartmentView;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport DepartmentView from \"./DepartmentView\";\r\nimport { getListDepartmentPaging } from \"../../apis/Functions/department\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nconst DepartmentContainer = (props) => {\r\n const [data, setData] = useState([]);\r\n const [page, setPage] = useState(0);\r\n const [pageCurrent, setPageCurrent] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n const [totalRows, setTotalRows] = useState(0);\r\n const [statusDelete, setStatusDelete] = useState(0);\r\n const [statusCreate, setStatusCreate] = useState(0);\r\n const [statusUpdate, setStatusUpdate] = useState(0);\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const changePage = (page) => {\r\n setPage(page);\r\n setPageCurrent(page);\r\n };\r\n\r\n const changeStatusDelete = (status) => {\r\n setStatusDelete(status);\r\n };\r\n\r\n const changeStatusCreate = (create) => {\r\n setStatusCreate(create);\r\n };\r\n\r\n const changeStatusUpdate = (update) => {\r\n setStatusUpdate(update);\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [page, rowsPerPage, statusDelete, statusCreate, statusUpdate]);\r\n\r\n const getData = async () => {\r\n const res = await getListDepartmentPaging({\r\n pageIndex: page + 1,\r\n pageSize: 10,\r\n orderBy: \"CreatedAt\",\r\n directionSort: \"DESC\",\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n setData(res.data);\r\n setTotalRows(res.data.metaData.outRowsNumber);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <DepartmentView\r\n list={data}\r\n changePage={changePage}\r\n totalRows={totalRows}\r\n changeStatusDelete={changeStatusDelete}\r\n changeStatusCreate={changeStatusCreate}\r\n changeStatusUpdate={changeStatusUpdate}\r\n pageCurrent={pageCurrent + 1}\r\n />\r\n );\r\n};\r\n\r\nexport default DepartmentContainer;\r\n","import React from \"react\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport {makeStyles, withStyles} from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport Input from \"@material-ui/core/Input\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: '#e6e6e6',\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 500,\r\n },\r\n});\r\n\r\nexport default function TableReport(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n return (\r\n <div className={classes.root} style={{ padding: \"10px\" }}>\r\n\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 120, textAlign: \"center\" }}>\r\n Trạng thái\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell>\r\n {row.status ? (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00A65A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Hoạt động</Typography>\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#FF8C1A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Nghỉ</Typography>\r\n </div>\r\n )}\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <TablePagination\r\n rowsPerPageOptions={[10, 25, 100]}\r\n component=\"div\"\r\n count={props.rows.length}\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n onChangePage={handleChangePage}\r\n onChangeRowsPerPage={handleChangeRowsPerPage}\r\n />\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n\r\nconst departments = [\r\n {\r\n value: \"0\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nhân sự\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"Kế toán\",\r\n },\r\n];\r\n\r\nconst _status = [\r\n {\r\n value: \"0\",\r\n label: \"Hoạt động\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nghỉ\",\r\n }\r\n]\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: \"25ch\",\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst FilteReport = (props) => {\r\n const [department, setDepartment] = React.useState(\"\");\r\n const [status, setStatus] = React.useState(\"\");\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n\r\n const handleSelectStatus = (event) => {\r\n setStatus(event.target.value);\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n\r\n\r\n return (\r\n <Grid container justify={\"space-around\"} alignItems={'center'}>\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n onChange={handleSelectDepartment}\r\n >\r\n {departments.map((option) => (\r\n <MenuItem key={option.value} value={option.value}>\r\n {option.label}\r\n </MenuItem>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField id=\"standard-basic\" label=\"Họ Tên\" />\r\n </form>\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField id=\"standard-basic\" label=\"Mã nhân viên\" />\r\n </form>\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Trạng thái\"\r\n value={status}\r\n onChange={handleSelectStatus}\r\n >\r\n {_status.map((option) => (\r\n <MenuItem key={option.value} value={option.value}>\r\n {option.label}\r\n </MenuItem>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default FilteReport;\r\n","import Table from \"../../Component/Table/TableReport\";\r\nimport { Button, Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\nimport FilteReport from \"./FilterReport\";\r\nimport DrawerView from '../Drawer';\r\nimport Input from \"@material-ui/core/Input\";\r\nimport React from \"react\";\r\nfunction createData(ids, name, city, email, office, role, status, code) {\r\n return { ids, name, city, email, office, role, status, code };\r\n}\r\n\r\n\r\nconst rows = [\r\n createData(\r\n \"001\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"ab\"\r\n ),\r\n createData(\r\n \"002\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 0,\r\n \"cd\"\r\n ),\r\n createData(\r\n \"003\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"ef\"\r\n ),\r\n createData(\r\n \"003\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"kl\"\r\n ),\r\n createData(\r\n \"003\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"zz\"\r\n ),\r\n createData(\r\n \"003\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"uu\"\r\n ),\r\n createData(\r\n \"003\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"kk\"\r\n ),\r\n createData(\r\n \"003\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"nn\"\r\n ),\r\n createData(\r\n \"003\",\r\n \"Đỗ Chung\",\r\n \"Công ty TNHH 365 Việt Nam\",\r\n \"chung.do@365.vn\",\r\n \"Ban Giam đôc\",\r\n \"Truong chỉ huy\",\r\n 1,\r\n \"uh\"\r\n ),\r\n];\r\n\r\nconst columns = [\r\n {\r\n id: \"ids\",\r\n label: \"ID\",\r\n minWidth: 50,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"name\",\r\n label: \"Tên\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"city\",\r\n label: \"Công ty\",\r\n minWidth: 170,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"email\",\r\n label: \"Email\",\r\n minWidth: 170,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"office\",\r\n label: \"Phòng ban\",\r\n minWidth: 100,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"role\",\r\n label: \"Chức vụ\",\r\n minWidth: 90,\r\n align: \"left\",\r\n },\r\n];\r\n\r\nconst ReportView = (props) => {\r\n return (\r\n <DrawerView>\r\n <Grid container direction={'row'} justify={'space-between' } alignItems={'center'} >\r\n <Typography variant={\"h5\"}>Báo cáo nhân viên</Typography>\r\n <div style={{ marginBottom: 5 }}>\r\n <Button\r\n variant=\"contained\"\r\n style={{\r\n marginRight: 10,\r\n backgroundColor: \"#00802b\",\r\n color: \"white\",\r\n }}\r\n >\r\n Excel\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n style={{\r\n marginRight: 10,\r\n backgroundColor: \"#dd4b39\",\r\n color: \"white\",\r\n }}\r\n >\r\n PDF\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n style={{ backgroundColor: \"#00c0ef\", color: \"white\" }}\r\n >\r\n Print\r\n </Button>\r\n </div>\r\n </Grid>\r\n\r\n <Card elevation={2} style={{marginTop:20}}>\r\n <Grid container spacing={3}>\r\n <FilteReport />\r\n <Table columns={columns} rows={rows} />\r\n </Grid>\r\n </Card>\r\n\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default ReportView;\r\n","\r\nimport ReportView from './ReportView';\r\nconst ReportContainer=(props)=>{\r\n\r\n return(\r\n <ReportView \r\n />\r\n )\r\n}\r\n\r\nexport default ReportContainer;","import React from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n} from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport CalendarTodayIcon from \"@material-ui/icons/CalendarToday\";\r\nimport PersonIcon from \"@material-ui/icons/Person\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n}));\r\n\r\nconst Header = (props) => {\r\n const classes = useStyles();\r\n const [state, setState] = React.useState({\r\n age: \"\",\r\n name: \"hai\",\r\n });\r\n\r\n const handleChange = (event) => {\r\n const name = event.target.name;\r\n setState({\r\n ...state,\r\n [name]: event.target.value,\r\n });\r\n };\r\n return (\r\n <Grid container spacing={3}>\r\n <Grid item xs={12}>\r\n <Card>\r\n <Grid style={{ padding: 20 }} xs={12} container spacing={3}>\r\n <Grid item xs={3}>\r\n <b>Tên: </b>\r\n <span>{props.info.employeeName}</span>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <b>Phòng ban: </b>\r\n <span>{props.info.departmentName}</span>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <b>Từ ngày: </b>\r\n <span>{props.info.fromDate}</span>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <b>Đến ngày: </b>\r\n <span>{props.info.toDate}</span>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <b>Công hợp lệ: </b>\r\n <span>{props.info.validCheckIn}</span>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <b>Đi muộn về sớm: </b>\r\n <span>{props.info.count_Dmvs}</span>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <b>Vắng mặt: </b>\r\n <span>{props.info.absent}</span>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <b>Chờ xử lý: </b>\r\n <span>{props.info.pending}</span>\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { useState } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport DoneIcon from \"@material-ui/icons/Done\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 440,\r\n },\r\n});\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nexport default function StickyHeadTable(props) {\r\n const classes = useStyles();\r\n const [pageCurrent, setPageCurrent] = useState(1);\r\n\r\n return (\r\n <Paper className={classes.root}>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 100, textAlign: \"center\" }}>\r\n Hợp lệ\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell>\r\n {row.check ? (\r\n <div\r\n style={{\r\n color: \"green\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n <DoneIcon />\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n color: \"red\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n <CloseIcon />\r\n </div>\r\n )}\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <Grid container justify={\"center\"} style={{ padding: 10 }}>\r\n <Pagination\r\n count={Math.ceil(props.totalPage / 10)}\r\n color=\"secondary\"\r\n page={pageCurrent}\r\n onChange={(event, page) => {\r\n setPageCurrent(page);\r\n props.changePage(page);\r\n }}\r\n />\r\n </Grid>\r\n </Paper>\r\n );\r\n}\r\n","import { PostLogin, PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const getListCheckInPaging = async (body) =>\r\n GetData(url.GETLISTCHECKIN, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getCheckInEachMonth = async (body) =>\r\n GetData(url.GETCHECKINEACHMONTH, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport Header from \"./Header\";\r\nimport { Grid, Card, Typography } from \"@material-ui/core\";\r\nimport TableTimeKeeping from \"../../Component/Table/TableTimeKeeping\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport DrawerView from \"../Drawer\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport { getListCheckInPaging } from \"../../apis/Functions/checkin\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nimport {\r\n formatTimeStampMMDDYYYY,\r\n formatTimeStampDDMMYYYY,\r\n formatTimeStampHHMM,\r\n} from \"../../config/Function\";\r\nfunction createData(date, status, checkin, checkout, dm, vs, check) {\r\n let absentTime = \"-\";\r\n let soonTime = \"-\";\r\n if (check == 0) {\r\n console.log(Math.floor(Math.round(dm) / 60));\r\n let minutesLate = Math.round(dm) - 60 * Math.floor(Math.round(dm) / 60);\r\n absentTime = `0${Math.floor(Math.round(dm) / 60)}:${\r\n minutesLate < 10 ? `0${minutesLate}` : minutesLate\r\n }`;\r\n let minutesSoon = Math.round(vs) - 60 * Math.floor(Math.round(vs) / 60);\r\n soonTime = `0${Math.floor(Math.round(vs) / 60)}:${\r\n minutesSoon < 10 ? `0${minutesSoon}` : minutesSoon\r\n }`;\r\n }\r\n return {\r\n date,\r\n status,\r\n checkin,\r\n checkout,\r\n dm: absentTime,\r\n vs: soonTime,\r\n check,\r\n };\r\n}\r\n\r\nconst columns = [\r\n {\r\n id: \"date\",\r\n label: \"Ngày\",\r\n minWidth: 120,\r\n align: \"center\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"status\",\r\n label: \"Trạng thái\",\r\n minWidth: 120,\r\n align: \"right\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"checkin\",\r\n label: \"Bắt đầu\",\r\n minWidth: 120,\r\n align: \"right\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n {\r\n id: \"checkout\",\r\n label: \"Kết thúc\",\r\n minWidth: 120,\r\n align: \"right\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n {\r\n id: \"dm\",\r\n label: \"Đi muộn\",\r\n minWidth: 100,\r\n align: \"right\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n {\r\n id: \"vs\",\r\n label: \"Về sớm\",\r\n minWidth: 100,\r\n align: \"right\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n];\r\n\r\nconst TimeKeepingView = (props) => {\r\n const [selectedDate, setSelectedDate] = React.useState(Date.now());\r\n const [pageCurrent, setPageCurrent] = useState(1);\r\n const [totalRows, setTotalRows] = useState(0);\r\n const [list, setList] = useState([]);\r\n const history = useHistory();\r\n const [state, setState] = useState({\r\n employeeName: \"\",\r\n departmentName: \"\",\r\n fromDate: \"\",\r\n toDate: \"\",\r\n validCheckIn: \"\",\r\n count_Dmvs: \"\",\r\n absent: \"\",\r\n pending: \"\",\r\n });\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const formatTimeFrom = (time) => {\r\n let dateFrom = formatTimeStampMMDDYYYY(time).split(\"/\");\r\n let dateFromNew = dateFrom[2] + \"-\" + dateFrom[0] + \"-\" + \"01\";\r\n return dateFromNew;\r\n };\r\n\r\n const formatTimeEnd = (time) => {\r\n let dateFrom = formatTimeStampMMDDYYYY(time).split(\"/\");\r\n let dateFromNew = dateFrom[2] + \"-\" + dateFrom[0] + \"-\" + dateFrom[1];\r\n return dateFromNew;\r\n };\r\n\r\n const changePage = (page) => {\r\n setPageCurrent(page);\r\n };\r\n\r\n const getDataCheckIn = async (id) => {\r\n let res = await getListCheckInPaging({\r\n empCode: id,\r\n fromDate: formatTimeFrom(new Date()),\r\n toDate: formatTimeEnd(new Date()),\r\n pageIndex: pageCurrent,\r\n pageSize: 10,\r\n });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n let listCheckIn = [];\r\n setState({\r\n ...state,\r\n employeeName: content[0].employeeName,\r\n departmentName: content[0].departmentName,\r\n fromDate: formatTimeStampDDMMYYYY(content[0].fromDate),\r\n toDate: formatTimeStampDDMMYYYY(content[0].toDate),\r\n validCheckIn: content[0].validCheckIn,\r\n count_Dmvs: content[0].count_Dmvs,\r\n absent: content[0].absent,\r\n pending: content[0].pending,\r\n });\r\n content[0].checkInList.forEach((el) => {\r\n listCheckIn.push(\r\n createData(\r\n formatTimeStampDDMMYYYY(el.startTime),\r\n el.trangThai,\r\n formatTimeStampHHMM(el.startTime),\r\n formatTimeStampHHMM(el.endTime),\r\n el.diMuonChenhLech,\r\n el.veSomChenhLech,\r\n el.hopLe\r\n )\r\n );\r\n });\r\n setList(listCheckIn);\r\n setTotalRows(res.data.metaData.outRowsNumber);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(date);\r\n };\r\n\r\n let { id } = useParams();\r\n\r\n useEffect(() => {\r\n getDataCheckIn(id);\r\n }, [pageCurrent]);\r\n return (\r\n <DrawerView>\r\n <Grid container spacing={3}>\r\n <Grid item xs={12}>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <Typography variant={\"h5\"}>Quản lý chấm công</Typography>\r\n </Grid>\r\n </Grid>\r\n <Grid item xs={12}>\r\n <Header info={state} />\r\n </Grid>\r\n <Grid item xs={12}>\r\n <TableTimeKeeping\r\n rows={list}\r\n columns={columns}\r\n totalPage={totalRows}\r\n changePage={changePage}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default TimeKeepingView;\r\n","import TimeKeepingView from './TimeKeepingView';\r\n\r\nconst LetterContainer = (props) => {\r\n return <TimeKeepingView />;\r\n};\r\n\r\nexport default LetterContainer;\r\n","import { PostLogin, PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const getListLetterPaging = async (body) =>\r\n GetData(url.GETLISTLETTERPAGING, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const agreeComplain = async (body) =>\r\n PostData(url.AGREELETTER, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getDetailComplain = async (body) =>\r\n GetData(url.GETDETAILLETTER, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const disagreeComplain = async (body) =>\r\n PostData(url.DISAGREELETTER, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const typeHRReport = async (body) =>\r\n GetData(url.GETTYPEHRREPORT, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const statusHRReport = async (body) =>\r\n GetData(url.GETSTATUSHRREPORT, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n","import React from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { Link } from \"react-router-dom\";\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\nimport DomainIcon from \"@material-ui/icons/Domain\";\r\nimport AssessmentIcon from \"@material-ui/icons/Assessment\";\r\nimport EmailIcon from \"@material-ui/icons/Email\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst departments = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"KT\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"HR\",\r\n label: \"Nhân sự\",\r\n },\r\n];\r\n\r\nconst lettertypes = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nghỉ chế độ\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"Chấm công bù\",\r\n },\r\n {\r\n value: \"3\",\r\n label: \"Khiếu nại\",\r\n },\r\n {\r\n value: \"4\",\r\n label: \"Nghỉ phép năm\",\r\n },\r\n {\r\n value: \"5\",\r\n label: \"Nghỉ không lương\",\r\n },\r\n];\r\n\r\nconst _status = [\r\n {\r\n value: \"0\",\r\n label: \"Leader xác nhận\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Giám đốc xác nhận\",\r\n },\r\n];\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: \"25ch\",\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst Header = (props) => {\r\n const classes = useStyles();\r\n\r\n const [department, setDepartment] = React.useState(\"\");\r\n const [status, setStatus] = React.useState(\"\");\r\n const [letter, setLetter] = React.useState(\"\");\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n\r\n const handleSelectStatus = (event) => {\r\n setStatus(event.target.value);\r\n };\r\n\r\n const handleSelectLetter = (event) => {\r\n setLetter(event.target.value);\r\n };\r\n\r\n return (\r\n <div>\r\n <Grid\r\n style={{\r\n paddingLeft: 20,\r\n paddingRight: 20,\r\n paddingBottom: 20,\r\n paddingTop: 30,\r\n }}\r\n container\r\n spacing={3}\r\n alignContent={\"center\"}\r\n justify={\"space-around\"}\r\n >\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n onChange={handleSelectDepartment}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n >\r\n {departments.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField id=\"standard-basic\" label=\"Họ Tên\" />\r\n </form>\r\n\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Loại đơn\"\r\n value={letter}\r\n onChange={handleSelectLetter}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n >\r\n {lettertypes.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n </Grid>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport DoneIcon from \"@material-ui/icons/Done\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport { Card, Button, Grid, TextField } from \"@material-ui/core\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport {\r\n agreeComplain,\r\n getDetailComplain,\r\n disagreeComplain,\r\n} from \"../../apis/Functions/letter\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nimport axios from \"axios\";\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 500,\r\n },\r\n});\r\n\r\nexport default function TableLetter(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const [pageCurrent, setPageCurrent] = useState(props.pageCurrent);\r\n const [openAgree, setOpenAgree] = useState(false);\r\n const [openDisagree, setOpenDisagree] = useState(false);\r\n const [state, setState] = useState({\r\n complainId: \"\",\r\n type: 0,\r\n employeeCode: \"\",\r\n statusCheckIn: 0,\r\n hrComment: \"\",\r\n });\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const goToEmployee = () => {\r\n history.push(\"/profile\");\r\n };\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n\r\n const handleCloseAgree = () => {\r\n setOpenAgree(false);\r\n };\r\n\r\n const handleOpenAgree = async (id) => {\r\n let res = await getDetailComplain({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n complainId: content.id,\r\n type: 0,\r\n hrComment: \"\",\r\n });\r\n setOpenAgree(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleOpenDisagree = async (id) => {\r\n let res = await getDetailComplain({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n complainId: content.id,\r\n type: 1,\r\n hrComment: \"\",\r\n });\r\n setOpenDisagree(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleCloseDisagree = () => {\r\n setOpenDisagree(false);\r\n };\r\n\r\n const handleAgreeComplain = async () => {\r\n let res = await agreeComplain(state);\r\n if (res.data && res.data.errorCode === 200) {\r\n enqueueSnackbar(\"Đồng ý đơn từ thành công\", { variant: \"success\" });\r\n if (props.rows.length == 1) {\r\n setPage(page - 1);\r\n setPageCurrent(pageCurrent - 1);\r\n props.changePage(pageCurrent - 2);\r\n }\r\n props.changeStatusUpdate(Math.random() * 10);\r\n setOpenAgree(false);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleDisagreeComplain = async () => {\r\n let res = await agreeComplain(state);\r\n if (res.data && res.data.errorCode === 200) {\r\n enqueueSnackbar(\"Từ chối đơn từ thành công\", { variant: \"success\" });\r\n if (props.rows.length == 1) {\r\n setPage(page - 1);\r\n setPageCurrent(pageCurrent - 1);\r\n props.changePage(pageCurrent - 2);\r\n }\r\n props.changeStatusUpdate(Math.random() * 10);\r\n setOpenDisagree(false);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setPageCurrent(props.pageCurrent);\r\n }, [props.pageCurrent]);\r\n\r\n return (\r\n <div className={classes.root}>\r\n <Dialog\r\n fullWidth=\"true\"\r\n maxWidth=\"sm\"\r\n open={openAgree}\r\n onClose={handleCloseAgree}\r\n aria-labelledby=\"max-width-dialog-title\"\r\n >\r\n <DialogTitle id=\"max-width-dialog-title\"></DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>\r\n Bạn có thực sự muốn chấp nhận đơn từ này?\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n onClick={handleCloseAgree}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n onClick={handleAgreeComplain}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <Dialog\r\n fullWidth=\"true\"\r\n maxWidth=\"sm\"\r\n open={openDisagree}\r\n onClose={handleCloseDisagree}\r\n aria-labelledby=\"max-width-dialog-title\"\r\n >\r\n <DialogTitle id=\"max-width-dialog-title\"></DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>\r\n Bạn có thực sự muốn từ chối đơn từ này?\r\n <br />\r\n <TextField\r\n label=\"Lí do\"\r\n style={{ width: \"85%\" }}\r\n value={state.hrComment}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n hrComment: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleCloseDisagree}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n onClick={handleDisagreeComplain}\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 160, textAlign: \"center\" }}>\r\n Trạng thái\r\n </StyledTableCell>\r\n <StyledTableCell style={{ minWidth: 150, textAlign: \"center\" }}>\r\n Hành động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell>\r\n {row.status == 1 ? (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#FF8C1A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\">Chờ xử lý</Typography>\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00A65A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\">\r\n Không xác định\r\n </Typography>\r\n </div>\r\n )}\r\n </TableCell>\r\n\r\n <TableCell style={{ textAlign: \"center\" }}>\r\n <IconButton\r\n onClick={() => {\r\n handleOpenAgree(row.id);\r\n }}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"#3C8DBC\" }}\r\n >\r\n <DoneIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n onClick={() => {\r\n handleOpenDisagree(row.id);\r\n }}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <CloseIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <Grid container justify={\"center\"} style={{ padding: 10 }}>\r\n <Pagination\r\n count={Math.ceil(props.totalPage / 10)}\r\n color=\"secondary\"\r\n page={pageCurrent}\r\n onChange={(event, page) => {\r\n setPageCurrent(page);\r\n props.changePage(parseInt(page) - 1);\r\n }}\r\n />\r\n </Grid>\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Grid, Paper, Typography, Card } from \"@material-ui/core\";\r\n\r\nimport DrawerView from \"../Drawer\";\r\nimport Header from \"./Header\";\r\nimport TableLetter from \"../../Component/Table/TableLetter\";\r\nimport {\r\n formatTimeStampDDMM,\r\n formatTimeStampHHMM,\r\n formatTimeStampDDMMNew,\r\n formatTimeStampDDMMYYYYNew,\r\n} from \"../../config/Function\";\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\nimport DomainIcon from \"@material-ui/icons/Domain\";\r\nimport AssessmentIcon from \"@material-ui/icons/Assessment\";\r\nimport EmailIcon from \"@material-ui/icons/Email\";\r\nimport DoneOutlineOutlinedIcon from \"@material-ui/icons/DoneOutlineOutlined\";\r\nimport HourglassEmptyOutlinedIcon from \"@material-ui/icons/HourglassEmptyOutlined\";\r\nimport EmojiEmotionsOutlinedIcon from \"@material-ui/icons/EmojiEmotionsOutlined\";\r\nimport SentimentDissatisfiedOutlinedIcon from \"@material-ui/icons/SentimentDissatisfiedOutlined\";\r\n\r\nfunction createData(\r\n id,\r\n employeeCode,\r\n email,\r\n type,\r\n fromDate,\r\n toDate,\r\n reason,\r\n status,\r\n createdAt\r\n) {\r\n let date = \"\";\r\n switch (type) {\r\n case 0:\r\n type = \"Nghỉ Phép\";\r\n date =\r\n formatTimeStampDDMMNew(fromDate) +\r\n \" - \" +\r\n formatTimeStampDDMMNew(toDate);\r\n break;\r\n case 1:\r\n type = \"Chấm công bù\";\r\n date =\r\n formatTimeStampHHMM(fromDate) +\r\n \" - \" +\r\n formatTimeStampHHMM(toDate) +\r\n \" \" +\r\n formatTimeStampDDMMNew(toDate);\r\n break;\r\n case 5:\r\n type = \"Khiếu nại\";\r\n date = formatTimeStampDDMMYYYYNew(createdAt);\r\n break;\r\n default:\r\n type = \"Nghỉ\";\r\n date = \"\";\r\n break;\r\n }\r\n return {\r\n id,\r\n employeeCode,\r\n email,\r\n type,\r\n date,\r\n reason,\r\n status,\r\n };\r\n}\r\n\r\nconst columns = [\r\n { id: \"employeeCode\", label: \"Mã nhân viên\", minWidth: 80 },\r\n {\r\n id: \"email\",\r\n label: \"Email\",\r\n minWidth: 80,\r\n align: \"right\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"type\",\r\n label: \"Loại đơn\",\r\n minWidth: 50,\r\n align: \"left\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"date\",\r\n label: \"Thời gian\",\r\n minWidth: 150,\r\n align: \"center\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n {\r\n id: \"reason\",\r\n label: \"Lý do\",\r\n minWidth: 240,\r\n align: \"center\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n];\r\n\r\nconst LetterView = (props) => {\r\n const [list, setList] = useState([]);\r\n useEffect(() => {\r\n const listPush = [];\r\n if (props.list.data) {\r\n props.list.data.forEach((el) => {\r\n listPush.push(\r\n createData(\r\n el.id,\r\n el.employeeCode,\r\n el.companyEmail,\r\n el.type,\r\n el.fromDate,\r\n el.toDate,\r\n el.reason,\r\n el.status,\r\n el.createdAt\r\n )\r\n );\r\n });\r\n setList(listPush);\r\n }\r\n }, [props.list]);\r\n return (\r\n <DrawerView>\r\n <Typography variant=\"h5\">Quản lý đơn từ chờ xử lý</Typography>\r\n <br />\r\n <Grid container direction=\"row\" spacing={2}>\r\n <Grid item item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#f39c12\",\r\n paddingTop: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\">{props.totalRows}</Typography>\r\n <Typography variant=\"p\">Chờ xử lý</Typography>\r\n </Grid>\r\n <Grid item>\r\n <HourglassEmptyOutlinedIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n <Grid item item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#00c0ef\",\r\n paddingTop: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> {props.totalHandled}</Typography>\r\n <Typography variant=\"p\">Đã xử lý</Typography>\r\n </Grid>\r\n <Grid item>\r\n <DoneOutlineOutlinedIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n <Grid item item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#00a65a\",\r\n paddingTop: 20,\r\n minWidth: 200,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> {props.totalApproved}</Typography>\r\n <Typography variant=\"p\">Chấp nhận</Typography>\r\n </Grid>\r\n <Grid item>\r\n <EmojiEmotionsOutlinedIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n\r\n <Grid item item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#ef4f4f\",\r\n paddingTop: 20,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <Typography variant=\"h3\"> {props.totalRejected}</Typography>\r\n <Typography variant=\"p\">Từ chối</Typography>\r\n </Grid>\r\n <Grid item>\r\n <SentimentDissatisfiedOutlinedIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n <br />\r\n <br />\r\n <br />\r\n <Paper>\r\n <Grid container direction=\"row\">\r\n <Grid item xs={12}>\r\n <Header\r\n totalPageWaitHandled={props.totalRows}\r\n totalApproved={props.totalApproved}\r\n totalHandled={props.totalHandled}\r\n totalRejected={props.totalRejected}\r\n />\r\n </Grid>\r\n <Grid xs={12} item>\r\n <TableLetter\r\n rows={list}\r\n columns={columns}\r\n changePage={props.changePage}\r\n totalPage={props.totalRows}\r\n changeStatusUpdate={props.changeStatusUpdate}\r\n pageCurrent={props.pageCurrent}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default LetterView;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getListLetterPaging } from \"../../apis/Functions/letter\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nimport LetterView from \"./LetterView\";\r\n\r\nconst LetterContainer = (props) => {\r\n const [data, setData] = useState([]);\r\n const [page, setPage] = useState(0);\r\n const [pageCurrent, setPageCurrent] = useState(0);\r\n const [statusUpdate, setStatusUpdate] = useState(0);\r\n const [totalRows, setTotalRows] = useState(0);\r\n const [totalApproved, setTotalApproved] = useState(0);\r\n const [totalHandled, setTotalHandled] = useState(0);\r\n const [totalRejected, setTotalRejected] = useState(0);\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const changePage = (page) => {\r\n setPage(page);\r\n setPageCurrent(page);\r\n };\r\n\r\n const changeStatusUpdate = (update) => {\r\n setStatusUpdate(update);\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [page, statusUpdate]);\r\n\r\n const getData = async () => {\r\n const [res, res2, res3, res4] = await Promise.all([\r\n getListLetterPaging({\r\n pageIndex: page + 1,\r\n pageSize: 10,\r\n orderBy: \"createdAt\",\r\n directionSort: \"DESC\",\r\n complainStatus: 1,\r\n }),\r\n getListLetterPaging({\r\n pageIndex: page + 1,\r\n pageSize: 5,\r\n orderBy: \"createdAt\",\r\n directionSort: \"DESC\",\r\n complainStatus: \"3,5\",\r\n }),\r\n getListLetterPaging({\r\n pageIndex: page + 1,\r\n pageSize: 5,\r\n orderBy: \"createdAt\",\r\n directionSort: \"DESC\",\r\n complainStatus: \"3,4,5,6\",\r\n }),\r\n getListLetterPaging({\r\n pageIndex: page + 1,\r\n pageSize: 5,\r\n orderBy: \"createdAt\",\r\n directionSort: \"DESC\",\r\n complainStatus: \"4,6\",\r\n }),\r\n ]);\r\n if (res.data && res.data.errorCode == 0) {\r\n setData(res.data);\r\n setTotalRows(res.data.metaData.outRowsNumber);\r\n setTotalApproved(res2.data.metaData.outRowsNumber);\r\n setTotalHandled(res3.data.metaData.outRowsNumber);\r\n setTotalRejected(res4.data.metaData.outRowsNumber);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <LetterView\r\n list={data}\r\n changePage={changePage}\r\n totalRows={totalRows}\r\n totalApproved={totalApproved}\r\n totalHandled={totalHandled}\r\n totalRejected={totalRejected}\r\n pageCurrent={pageCurrent + 1}\r\n changeStatusUpdate={changeStatusUpdate}\r\n />\r\n );\r\n};\r\nexport default LetterContainer;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Card from \"@material-ui/core/Card\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport ArrowBackIosIcon from \"@material-ui/icons/ArrowBackIos\";\r\nimport ArrowForwardIosIcon from \"@material-ui/icons/ArrowForwardIos\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {},\r\n paper: {\r\n padding: theme.spacing(2),\r\n textAlign: \"center\",\r\n color: theme.palette.text.secondary,\r\n },\r\n}));\r\n\r\nexport default function Content() {\r\n const classes = useStyles();\r\n\r\n return (\r\n <div className={classes.container}>\r\n <Card\r\n style={{\r\n padding: \"10px\",\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"column\"\r\n justify=\"flex-start\"\r\n alignItems=\"center\"\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ padding: \"5px\" }}\r\n >\r\n <div>Read Mail</div>\r\n <div>\r\n <ArrowBackIosIcon style={{ fontSize: \"small\" }} />\r\n <ArrowForwardIosIcon style={{ fontSize: \"small\" }} />\r\n </div>\r\n </Grid>\r\n </Grid>\r\n <Divider />\r\n <Grid\r\n container\r\n direction=\"column\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ padding: \"8px\" }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <div>Message Subject Is Placed Here</div>\r\n </Grid>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <div style={{ fontSize: \"12px\", color: \"grey\" }}>\r\n From: help@example.com\r\n </div>\r\n <div style={{ fontSize: \"12px\", color: \"grey\" }}>\r\n 09 Dec,2020 3:00 PM\r\n </div>\r\n </Grid>\r\n </Grid>\r\n <Divider />\r\n <Grid\r\n container\r\n direction=\"column\"\r\n justify=\"flex-start\"\r\n alignItems=\"center\"\r\n style={{ padding: \"6px\" }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"left\"\r\n >\r\n <div>\r\n <p>Hello John,</p>\r\n <p>\r\n Johnny Depp has applied directly to the court of appeal in a bid\r\n to overturn a high court ruling that he assaulted his ex-wife\r\n Amber Heard and put her in fear for her life.\r\n </p>\r\n <p>\r\n The Hollywood star sued The Sun’s publisher for libel after a\r\n 2018 column by its executive editor Dan Wootton described him as\r\n a “wife beater”.\r\n </p>\r\n <p>\r\n The 57-year-old took legal action against the paper’s parent\r\n company, News Group Newspapers (NGN), over the column, which\r\n referred to “overwhelming evidence” he attacked Heard, 34,\r\n during their relationship.\r\n </p>\r\n <p>\r\n In November, Mr Justice Nicol dismissed the claim, finding NGN\r\n had proved what was in the article was “substantially true”.\r\n </p>\r\n <p>\r\n His solicitor Jenny Afia, from the Schillings law firm, had said\r\n the high court ruling was “as perverse as it is bewildering”,\r\n adding: “The judgment is so flawed that it would be ridiculous\r\n for Mr Depp not to appeal this decision.”\r\n </p>\r\n </div>\r\n </Grid>\r\n </Grid>\r\n <Divider />\r\n <Grid\r\n container\r\n direction=\"column\"\r\n justify=\"flex-start\"\r\n style={{ margin: \"10px\" }}\r\n alignItems=\"center\"\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"flex-end\"\r\n alignItems=\"center\"\r\n >\r\n <div>\r\n <Button\r\n style={{\r\n color: \"white\",\r\n backgroundColor: \"red\",\r\n marginRight: \"20px\",\r\n }}\r\n >\r\n Reject\r\n </Button>\r\n </div>\r\n <div>\r\n <Button\r\n style={{\r\n color: \"white\",\r\n backgroundColor: \"green\",\r\n marginRight: \"10px\",\r\n }}\r\n >\r\n Accept\r\n </Button>\r\n </div>\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n ListItemText,\r\n Collapse,\r\n ListItemIcon,\r\n ListItem,\r\n List,\r\n ListSubheader,\r\n Divider,\r\n Paper,\r\n Chip,\r\n} from \"@material-ui/core\";\r\nimport InboxIcon from \"@material-ui/icons/MoveToInbox\";\r\nimport DraftsIcon from \"@material-ui/icons/Drafts\";\r\nimport CachedIcon from \"@material-ui/icons/Cached\";\r\nimport SendIcon from \"@material-ui/icons/Send\";\r\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\r\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\r\nimport StarBorder from \"@material-ui/icons/StarBorder\";\r\nimport AnnouncementIcon from \"@material-ui/icons/Announcement\";\r\nimport RemoveCircleOutlineIcon from \"@material-ui/icons/RemoveCircleOutline\";\r\nimport HowToRegIcon from \"@material-ui/icons/HowToReg\";\r\nimport { useHistory } from \"react-router-dom\";\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: \"100%\",\r\n maxWidth: 360,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n nested: {\r\n paddingLeft: theme.spacing(4),\r\n },\r\n}));\r\n\r\nexport default function ControlLetter() {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n let history = useHistory();\r\n\r\n const handleClick = () => {\r\n setOpen(!open);\r\n };\r\n\r\n const goLetter = () => {\r\n history.push(\"/letter\");\r\n };\r\n\r\n return (\r\n <Paper>\r\n <List\r\n component=\"nav\"\r\n aria-labelledby=\"nested-list-subheader\"\r\n subheader={\r\n <ListSubheader component=\"div\" id=\"nested-list-subheader\">\r\n Menu\r\n </ListSubheader>\r\n }\r\n className={classes.root}\r\n >\r\n <Divider />\r\n <ListItem button onClick={handleClick}>\r\n <ListItemIcon style={{ color: \"green\" }}>\r\n <CachedIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Đơn chưa xử lý\" />\r\n <Chip color=\"secondary\" size=\"small\" label=\"5\" />\r\n {open ? <ExpandLess /> : <ExpandMore />}\r\n </ListItem>\r\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\r\n <List component=\"div\" disablePadding>\r\n <ListItem button onClick={goLetter} className={classes.nested}>\r\n <ListItemIcon style={{ color: \"#f39c12\" }}>\r\n <RemoveCircleOutlineIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Nghỉ phép\" />\r\n <Chip color=\"secondary\" size=\"small\" label=\"3\" />\r\n </ListItem>\r\n <ListItem button onClick={goLetter} className={classes.nested}>\r\n <ListItemIcon style={{ color: \"#00c0ef\" }}>\r\n <HowToRegIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Chấm công bù\" />\r\n <Chip color=\"secondary\" size=\"small\" label=\"1\" />\r\n </ListItem>\r\n <ListItem button onClick={goLetter} className={classes.nested}>\r\n <ListItemIcon style={{ color: \"red\" }}>\r\n <AnnouncementIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Khiếu nại\" />\r\n <Chip color=\"secondary\" size=\"small\" label=\"1\" />\r\n </ListItem>\r\n </List>\r\n </Collapse>\r\n <Divider />\r\n <ListItem button onClick={goLetter}>\r\n <ListItemIcon style={{ color: \"#f39c12\" }}>\r\n <RemoveCircleOutlineIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Đơn xin nghỉ phép\" />\r\n </ListItem>\r\n <Divider />\r\n <ListItem button onClick={goLetter}>\r\n <ListItemIcon style={{ color: \"#00c0ef\" }}>\r\n <HowToRegIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Đơn chấm công bù\" />\r\n </ListItem>\r\n <Divider />\r\n <ListItem button onClick={goLetter}>\r\n <ListItemIcon style={{ color: \"red\" }}>\r\n <AnnouncementIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Đơn khiếu nại\" />\r\n </ListItem>\r\n </List>\r\n </Paper>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nimport Content from \"./Content\";\r\nimport ControlLetter from \"../ControlLetter\";\r\nimport DrawerView from \"../../Drawer\";\r\nexport default function DetailLetterView() {\r\n return (\r\n <DrawerView>\r\n <h2>Quản lý đơn từ</h2>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid item xs={3}>\r\n <ControlLetter />\r\n </Grid>\r\n <Grid item xs={9}>\r\n <Content />\r\n </Grid>\r\n </Grid>\r\n </DrawerView>\r\n );\r\n}\r\n","import DetailLetterView from \"./DetailLetterView\";\r\n\r\nconst DetailLetterContainer = (props) => {\r\n return <DetailLetterView />;\r\n};\r\n\r\nexport default DetailLetterContainer;\r\n","import React from \"react\";\r\nimport {makeStyles, withStyles} from \"@material-ui/core/styles\";\r\nimport { Paper, Button, Table, Typography, Grid } from \"@material-ui/core\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: '#e6e6e6',\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 500,\r\n },\r\n});\r\n\r\nexport default function TableReport(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n let history = useHistory();\r\n const [selectedDate, setSelectedDate] = React.useState(Date.now());\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(date);\r\n };\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n return (\r\n <div className={classes.root} style={{ padding: \"10px\" }}>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n\r\n </Grid>\r\n\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ minWidth: 150, textAlign: \"center\" }}>\r\n Hành động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell style={{ textAlign: \"center\" }}>\r\n <Button\r\n onClick={() => history.push(\"/salarydetail\")}\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00c0ef\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Chi tiết</Typography>\r\n </Button>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <TablePagination\r\n rowsPerPageOptions={[10, 25, 100]}\r\n component=\"div\"\r\n count={props.rows.length}\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n onChangePage={handleChangePage}\r\n onChangeRowsPerPage={handleChangeRowsPerPage}\r\n />\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {KeyboardDatePicker, MuiPickersUtilsProvider} from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\n\r\nimport {DateRangeInput} from '@datepicker-react/styled'\r\n\r\n\r\n\r\n\r\nconst departments = [\r\n {\r\n value: \"0\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nhân sự\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"Kế toán\",\r\n },\r\n];\r\n\r\nconst _status = [\r\n {\r\n value: \"0\",\r\n label: \"Hoạt động\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nghỉ\",\r\n }\r\n]\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: \"25ch\",\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst FillterSalary = (props) => {\r\n const [department, setDepartment] = React.useState(\"\");\r\n const [status, setStatus] = React.useState(\"\");\r\n const [selectedDate, setSelectedDate] = React.useState(Date.now());\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(date);\r\n };\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n\r\n const handleSelectStatus = (event) => {\r\n setStatus(event.target.value);\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n\r\n\r\n return (\r\n <Grid container justify={\"space-around\"} alignItems={'center'}>\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n onChange={handleSelectDepartment}\r\n >\r\n {departments.map((option) => (\r\n <MenuItem key={option.value} value={option.value}>\r\n {option.label}\r\n </MenuItem>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField id=\"standard-basic\" label=\"Họ Tên\" />\r\n </form>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{ paddingRight: 10, paddingLeft: 20 }}\r\n views={[\"year\", \"month\"]}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"MM/yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDate}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{ paddingRight: 10, paddingLeft: 20 }}\r\n views={[\"year\", \"month\"]}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"MM/yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDate}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default FillterSalary;\r\n","import React from \"react\";\r\nimport Table from \"../../Component/Table/TableSalary\";\r\nimport {Button, Grid, Paper, Card, Typography, FormControl, TextField, MenuItem} from \"@material-ui/core\";\r\nimport FilterSalary from \"./FilterSalary\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport DrawerView from \"../Drawer\";\r\nimport FillterSalary from \"./FilterSalary\";\r\n\r\nfunction createData(\r\n name,\r\n office,\r\n role,\r\n salary_amount,\r\n salary_reduce,\r\n salary_real\r\n) {\r\n return {\r\n name,\r\n office,\r\n role,\r\n salary_amount,\r\n salary_reduce,\r\n salary_real,\r\n };\r\n}\r\n\r\nconst rows = [\r\n createData(\r\n \"Nguyễn Văn A\",\r\n \"Kỹ Thuật\",\r\n \"Nhân viên\",\r\n \"10000000\",\r\n \"100000\",\r\n \"9900000\"\r\n ),\r\n createData(\r\n \"Nguyễn Văn A\",\r\n \"Kỹ Thuật\",\r\n \"Nhân viên\",\r\n \"10000000\",\r\n \"100000\",\r\n \"9900000\"\r\n ),\r\n createData(\r\n \"Nguyễn Văn A\",\r\n \"Kỹ Thuật\",\r\n \"Nhân viên\",\r\n \"10000000\",\r\n \"100000\",\r\n \"9900000\"\r\n ),\r\n createData(\r\n \"Nguyễn Văn A\",\r\n \"Kỹ Thuật\",\r\n \"Nhân viên\",\r\n \"10000000\",\r\n \"100000\",\r\n \"9900000\"\r\n ),\r\n];\r\n\r\nconst columns = [\r\n {\r\n id: \"name\",\r\n label: \"Họ tên\",\r\n minWidth: 150,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"office\",\r\n label: \"Phòng ban\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"role\",\r\n label: \"Chức vụ\",\r\n minWidth: 130,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"salary_amount\",\r\n label: \"Tổng thu nhập\",\r\n minWidth: 140,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"salary_reduce\",\r\n label: \"Tổng trừ\",\r\n minWidth: 100,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"salary_real\",\r\n label: \"Thực lĩnh\",\r\n minWidth: 90,\r\n align: \"left\",\r\n },\r\n];\r\n\r\nconst SalaryView = (props) => {\r\n const [selectedDate, setSelectedDate] = React.useState(Date.now());\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(date);\r\n };\r\n return (\r\n <DrawerView>\r\n <Typography variant={'h5'}>Danh sách lương nhân viên</Typography>\r\n <Card>\r\n <Grid container spacing={3}>\r\n <FillterSalary />\r\n <Table columns={columns} rows={rows} />\r\n </Grid>\r\n </Card>\r\n\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default SalaryView;\r\n","import SalaryView from './SalaryView';\r\n\r\nconst SaralyContainer = (props) => {\r\n return (\r\n <SalaryView></SalaryView>\r\n )\r\n}\r\n\r\nexport default SaralyContainer;","import React from \"react\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport {makeStyles, withStyles} from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: '#e6e6e6',\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 1500,\r\n },\r\n});\r\n\r\nconst TableDetailSalary = (props) => {\r\n console.log(props);\r\n const classes = useStyles();\r\n return (\r\n <Paper className={classes.root} style={{ padding: \"10px\" }}>\r\n <h3>Bảng lương tháng 11</h3>\r\n <TableContainer className={classes.container}>\r\n <Table\r\n stickyHeader\r\n aria-label=\"sticky table\"\r\n style={{ border: \"1px solid #d2c3c3\" }}\r\n >\r\n <TableHead>\r\n <TableRow>\r\n <TableCell\r\n style={{ minWidth: 150, borderRight: \"1px solid #d2c3c3\" }}\r\n ></TableCell>\r\n <TableCell\r\n style={{ minWidth: 150, borderRight: \"1px solid #d2c3c3\" }}\r\n ></TableCell>\r\n <TableCell\r\n style={{ minWidth: 150, borderRight: \"1px solid #d2c3c3\" }}\r\n ></TableCell>\r\n <TableCell style={{ minWidth: 100 }}>Ghi chú</TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n <TableCell\r\n rowSpan=\"6\"\r\n align=\"center\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n Ngày công\r\n </TableCell>\r\n <TableCell style={{ borderRight: \"1px solid #d2c3c3\" }}>\r\n {props.rows[0].name}\r\n </TableCell>\r\n <TableCell\r\n align=\"right\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n {props.rows[0].value}\r\n </TableCell>\r\n <TableCell></TableCell>\r\n </TableRow>\r\n {props.rows1.map((row1) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n <TableCell style={{ borderRight: \"1px solid #d2c3c3\" }}>\r\n {row1.name}\r\n </TableCell>\r\n <TableCell\r\n align=\"right\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n {row1.value}\r\n </TableCell>\r\n <TableCell>{row1.note}</TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n <TableCell\r\n rowSpan=\"8\"\r\n align=\"center\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n Tổng tiền lương\r\n </TableCell>\r\n <TableCell style={{ borderRight: \"1px solid #d2c3c3\" }}>\r\n {props.rows[1].name}\r\n </TableCell>\r\n <TableCell\r\n align=\"right\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n {props.rows[1].value}\r\n </TableCell>\r\n <TableCell>{props.rows[1].note}</TableCell>\r\n </TableRow>\r\n {props.rows2.map((row2) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n <TableCell style={{ borderRight: \"1px solid #d2c3c3\" }}>\r\n {row2.name}\r\n </TableCell>\r\n <TableCell\r\n align=\"right\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n {row2.value}\r\n </TableCell>\r\n <TableCell>{row2.note}</TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n <TableCell\r\n rowSpan=\"6\"\r\n align=\"center\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n Các khoản trừ\r\n </TableCell>\r\n <TableCell style={{ borderRight: \"1px solid #d2c3c3\" }}>\r\n {props.rows[2].name}\r\n </TableCell>\r\n <TableCell\r\n align=\"right\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n {props.rows[2].value}\r\n </TableCell>\r\n <TableCell>{props.rows[2].note}</TableCell>\r\n </TableRow>\r\n {props.rows3.map((row3) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n <TableCell style={{ borderRight: \"1px solid #d2c3c3\" }}>\r\n {row3.name}\r\n </TableCell>\r\n <TableCell\r\n align=\"right\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n {row3.value}\r\n </TableCell>\r\n <TableCell>{row3.note}</TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n <TableCell\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n ></TableCell>\r\n <TableCell style={{ borderRight: \"1px solid #d2c3c3\" }}>\r\n Thực lĩnh\r\n </TableCell>\r\n <TableCell\r\n align=\"right\"\r\n style={{ borderRight: \"1px solid #d2c3c3\" }}\r\n >\r\n 1000000\r\n </TableCell>\r\n <TableCell></TableCell>\r\n </TableRow>\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default TableDetailSalary;\r\n","export const energyConsumption = [\r\n {\r\n month: \"1\",\r\n basic: 5,\r\n efficient: 8,\r\n },\r\n {\r\n month: \"2\",\r\n basic: 3,\r\n efficient: 6,\r\n },\r\n {\r\n month: \"3\",\r\n basic: 2,\r\n efficient: 3,\r\n },\r\n {\r\n month: \"4\",\r\n basic: 8,\r\n efficient: 2,\r\n },\r\n {\r\n month: \"5\",\r\n basic: 8,\r\n efficient: 2,\r\n },\r\n {\r\n month: \"6\",\r\n basic: 8,\r\n efficient: 2,\r\n },\r\n {\r\n month: \"7\",\r\n basic: 8,\r\n efficient: 2,\r\n },\r\n {\r\n month: \"8\",\r\n basic: 5,\r\n efficient: 4,\r\n },\r\n {\r\n month: \"9\",\r\n basic: 8,\r\n efficient: 2,\r\n },\r\n {\r\n month: \"10\",\r\n basic: 8,\r\n efficient: 2,\r\n },\r\n {\r\n month: \"11\",\r\n basic: 2,\r\n efficient: 9,\r\n },\r\n {\r\n month: \"12\",\r\n basic: 1,\r\n efficient: 7,\r\n },\r\n];\r\n","import * as React from \"react\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport {\r\n Chart,\r\n ArgumentAxis,\r\n ValueAxis,\r\n BarSeries,\r\n Title,\r\n Legend,\r\n} from \"@devexpress/dx-react-chart-material-ui\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport { Stack, Animation } from \"@devexpress/dx-react-chart\";\r\n\r\nimport { energyConsumption as data } from \"./data-vizualization-salary\";\r\n\r\nconst legendStyles = () => ({\r\n root: {\r\n display: \"flex\",\r\n margin: \"auto\",\r\n flexDirection: \"row\",\r\n },\r\n});\r\nconst legendRootBase = ({ classes, ...restProps }) => (\r\n <Legend.Root {...restProps} className={classes.root} />\r\n);\r\nconst Root = withStyles(legendStyles, { name: \"LegendRoot\" })(legendRootBase);\r\nconst legendLabelStyles = () => ({\r\n label: {\r\n whiteSpace: \"nowrap\",\r\n },\r\n});\r\nconst legendLabelBase = ({ classes, ...restProps }) => (\r\n <Legend.Label className={classes.label} {...restProps} />\r\n);\r\nconst Label = withStyles(legendLabelStyles, { name: \"LegendLabel\" })(\r\n legendLabelBase\r\n);\r\n\r\nexport default class Demo extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n\r\n return (\r\n <Paper>\r\n <Chart data={chartData} hegiht={500}>\r\n <ArgumentAxis />\r\n <ValueAxis max={2400} />\r\n <BarSeries\r\n name=\"Lương cơ bản\"\r\n valueField=\"basic\"\r\n argumentField=\"month\"\r\n />\r\n <BarSeries\r\n name=\"Lương hiệu suất\"\r\n valueField=\"efficient\"\r\n argumentField=\"month\"\r\n />\r\n\r\n <Animation />\r\n <Legend\r\n position=\"bottom\"\r\n rootComponent={Root}\r\n labelComponent={Label}\r\n />\r\n <Title text=\"Báo cáo lương 2020\" />\r\n <Stack stacks={[{ series: [\"Lương cơ bản\", \"Lương hiệu suất\"] }]} />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Button, Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\n\r\nconst DetailStaffHeader = (props) => {\r\n return (\r\n <Paper style={{ padding: 15, height: 150, marginTop: 20 }}>\r\n <Grid container spacing={3}>\r\n <Grid item xs={3}>\r\n <Avatar\r\n src=\"/asset/avatar.jpg\"\r\n style={{ width: \"120px\", height: \"120px\" }}\r\n ></Avatar>\r\n </Grid>\r\n <Grid item xs={9}>\r\n <div style={{ width: \"100%\", display: \"flex\", padding: \"26px 0px\" }}>\r\n <div style={{ width: \"50%\" }}>\r\n <b style={{ marginBottom: \"2px\" }}>Mã nhân viên: </b>\r\n <span> 123456</span>\r\n <br />\r\n <br />\r\n <b style={{ marginBottom: \"2px\" }}>Họ tên: </b>\r\n <span> Lê Trọng Trí</span>\r\n </div>\r\n <div style={{ width: \"50%\" }}>\r\n <b style={{ marginBottom: \"2px\" }}>Chức vụ: </b>\r\n <span> Developer</span>\r\n <br />\r\n <br />\r\n <b style={{ marginBottom: \"2px\" }}>Phòng ban: </b>\r\n <span> IT</span>\r\n </div>\r\n </div>\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default DetailStaffHeader;\r\n","import React from \"react\";\r\nimport Table from \"../../Component/Table/TableDetailSalary\";\r\nimport { Button, Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\nimport BartChart from \"../../Component/Chart/BarChartSalary\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport DetailStaffHeader from \"./DetailStaffHeader\";\r\n\r\nconst row = [\r\n {\r\n name: \"Ngày công chuẩn tháng\",\r\n value: 23,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Lương cơ bản\",\r\n value: 0,\r\n note: \"Lương đóng BHXH\",\r\n },\r\n {\r\n name: \"Bảo hiểm\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n];\r\n\r\nconst row1 = [\r\n {\r\n name: \"Ngày công thực tế\",\r\n value: 22,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Ngày công OT\",\r\n value: \"-\",\r\n note: \"\",\r\n },\r\n {\r\n name: \"Ngày nghỉ phép\",\r\n value: \"-\",\r\n note: \"\",\r\n },\r\n {\r\n name: \"Ngày Lễ tết\",\r\n value: \"-\",\r\n note: \"\",\r\n },\r\n {\r\n name: \"Tổng lương\",\r\n value: 1000000,\r\n note: \"\",\r\n },\r\n];\r\nconst row2 = [\r\n {\r\n name: \"Lương hiệu suất\",\r\n value: 1000000,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Lương OT\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Lương nghỉ phép\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Lương Lễ,Tết\",\r\n value: 0,\r\n note: \"Lương đóng BHXH\",\r\n },\r\n {\r\n name: \"Hỗ trợ onsite\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Các khoản cộng lương\",\r\n value: 0,\r\n note: \"Vé xe\",\r\n },\r\n {\r\n name: \"Tổng thu nhập\",\r\n value: 1000000,\r\n note: \"\",\r\n },\r\n];\r\n\r\nconst row3 = [\r\n {\r\n name: \"Công đoàn\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Thuế TNCN\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Ứng lương\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Các khoản trừ lương khác\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n {\r\n name: \"Tổng khấu trừ\",\r\n value: 0,\r\n note: \"\",\r\n },\r\n];\r\n\r\nconst DetailSalaryView = (props) => {\r\n return (\r\n <Grid container spacing={3}>\r\n <Grid item xs={12}>\r\n <DetailStaffHeader></DetailStaffHeader>\r\n </Grid>\r\n <Grid item xs={5}>\r\n <BartChart></BartChart>\r\n </Grid>\r\n <Grid item xs={7}>\r\n <Table rows1={row1} rows={row} rows2={row2} rows3={row3}></Table>\r\n </Grid>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default DetailSalaryView;\r\n","import React from \"react\";\r\nimport DetailSalaryView from \"./DetailSalaryView\";\r\nimport DrawerView from \"../Drawer\";\r\n\r\nconst DetailSalaryContainer = (props) => {\r\n return (\r\n <DrawerView>\r\n <DetailSalaryView></DetailSalaryView>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default DetailSalaryContainer;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { detailEmployee } from \"../../../apis/Functions/employee\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../../assets/AsynStorage\";\r\n\r\nimport {\r\n ButtonGroup,\r\n Card,\r\n Grid,\r\n Divider,\r\n Button,\r\n Avatar,\r\n} from \"@material-ui/core\";\r\nimport GetAppIcon from \"@material-ui/icons/GetApp\";\r\n\r\nexport default function AvatarProfile() {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const history = useHistory();\r\n const [state, setState] = useState({\r\n fullName: \"\",\r\n id: \"\",\r\n description: \"\",\r\n departmentCode: \"\",\r\n });\r\n let { id } = useParams();\r\n const getDataEmployee = async (id) => {\r\n let res = await detailEmployee({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n fullName: content.fullName,\r\n id: id,\r\n description: content.description,\r\n departmentCode: content.departmentCode,\r\n });\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n useEffect(() => {\r\n getDataEmployee(id);\r\n }, []);\r\n return (\r\n <Card>\r\n <div\r\n style={{\r\n display: \"block\",\r\n backgroundColor: \"#3c8dbc\",\r\n height: \"150px\",\r\n }}\r\n >\r\n <div style={{ position: \"relative\", bottom: \"-70px\" }}>\r\n <Avatar style={{ height: \"150px\", width: \"150px\", margin: \"0 auto\" }}>\r\n TungNguyen\r\n </Avatar>\r\n <p\r\n style={{ textAlign: \"center\", color: \"dimgrey\", fontSize: \"15px\" }}\r\n >\r\n {state.fullName}\r\n </p>\r\n </div>\r\n </div>\r\n <div style={{ height: \"140px\", backgroundColor: \"white\" }} />\r\n <Divider />\r\n <Grid>\r\n <div\r\n style={{\r\n textAlign: \"center\",\r\n backgroundColor: \"#F5F7F7\",\r\n fontSize: \"15px\",\r\n }}\r\n >\r\n {state.description}\r\n </div>\r\n <Divider />\r\n <div\r\n style={{\r\n textAlign: \"center\",\r\n backgroundColor: \"#F5F7F7\",\r\n fontSize: \"15px\",\r\n }}\r\n >\r\n {state.departmentCode}\r\n </div>\r\n </Grid>\r\n <Divider />\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <ButtonGroup fullWidth variant=\"contained\">\r\n <Button\r\n size=\"small\"\r\n style={{ backgroundColor: \"white\" }}\r\n startIcon={<GetAppIcon />}\r\n >\r\n Tải hồ sơ\r\n </Button>\r\n <Button\r\n size=\"small\"\r\n style={{ backgroundColor: \"white\" }}\r\n startIcon={<GetAppIcon />}\r\n >\r\n Tải hợp đồng\r\n </Button>\r\n </ButtonGroup>\r\n </Grid>\r\n </Card>\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n makeStyles,\r\n Divider,\r\n Grid,\r\n Card,\r\n Tabs,\r\n Tab,\r\n Typography,\r\n Box,\r\n Paper,\r\n TextField,\r\n MenuItem,\r\n Button,\r\n} from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport PhoneIcon from \"@material-ui/icons/Phone\";\r\nimport SecurityIcon from \"@material-ui/icons/Security\";\r\nimport RestoreIcon from \"@material-ui/icons/Restore\";\r\nimport PublicIcon from \"@material-ui/icons/Public\";\r\nimport AccountCircleIcon from \"@material-ui/icons/AccountCircle\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { detailEmployee } from \"../../../apis/Functions/employee\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { formatTimeStamp } from \"../../../config/Function\";\r\nimport { createNewEmployee } from \"../../../apis/Functions/employee\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\n\r\nimport KEY from \"../../../assets/AsynStorage\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nconst genders = [\r\n {\r\n value: \"0\",\r\n label: \"Nữ\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nam\",\r\n },\r\n];\r\n\r\nconst status = [\r\n {\r\n value: \"0\",\r\n label: \"Nghỉ\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Hoạt động\",\r\n },\r\n];\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`full-width-tabpanel-${index}`}\r\n aria-labelledby={`full-width-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box p={3}>\r\n <Typography>{children}</Typography>\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-prevent-tab-${index}`,\r\n \"aria-controls\": `scrollable-prevent-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n width: \"100%\",\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n container: {\r\n maxHeight: 500,\r\n },\r\n}));\r\n\r\nexport default function Content(props) {\r\n const classes = useStyles();\r\n const history = useHistory();\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [value, setValue] = useState(0);\r\n const [openActivites, setOpenActivites] = useState(false);\r\n const [selectedDate, setSelectedDate] = useState(Date.now());\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(date);\r\n };\r\n const [gender, setGender] = useState(\"\");\r\n const [state, setState] = useState({\r\n fullName: \"\",\r\n id: \"\",\r\n cardId: \"\",\r\n code: \"\",\r\n gender: 1,\r\n issueDate: \"\",\r\n incomeTaxCode: \"\",\r\n issuePlace: \"\",\r\n workingStatus: 1,\r\n birthPlace: \"\",\r\n dateOfBirth: \"\",\r\n temporaryAddress: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n bankAccount: \"\",\r\n socialInsuranceCode: \"\",\r\n socialInsurancePayroll: \"\",\r\n socialInsuranceStartDate: \"\",\r\n workDate: \"\",\r\n description: \"\",\r\n departmentCode: \"\",\r\n expire: \"\",\r\n contractCode: \"\",\r\n contractCodeReal: \"\",\r\n salaryTry: \"\",\r\n salaryReal: \"\",\r\n inOfficial: \"\",\r\n kindContract: \"\",\r\n });\r\n let { id } = useParams();\r\n const getDataEmployee = async (id) => {\r\n let res = await detailEmployee({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n fullName: content.fullName,\r\n id: id,\r\n cardId: content.cardId,\r\n code: content.code,\r\n gender: content.gender,\r\n issueDate: formatTimeStamp(content.issueDate),\r\n incomeTaxCode: content.incomeTaxCode,\r\n issuePlace: content.issuePlace,\r\n workingStatus: content.workingStatus,\r\n birthPlace: content.birthPlace,\r\n dateOfBirth: formatTimeStamp(content.dateOfBirth),\r\n temporaryAddress: content.temporaryAddress,\r\n phone: content.phone,\r\n email: content.email,\r\n bankAccount: content.bankAccount,\r\n socialInsuranceCode: content.socialInsuranceCode,\r\n socialInsurancePayroll: content.socialInsurancePayroll,\r\n socialInsuranceStartDate: formatTimeStamp(\r\n content.socialInsuranceStartDate\r\n ),\r\n socialInsuranceEndDate: formatTimeStamp(content.socialInsuranceEndDate),\r\n workDate: formatTimeStamp(content.workDate),\r\n description: content.description,\r\n departmentCode: content.departmentCode,\r\n });\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n useEffect(() => {\r\n getDataEmployee(id);\r\n }, []);\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const handleSelectGender = (event) => {\r\n setState({\r\n ...state,\r\n gender: parseInt(event.target.value),\r\n });\r\n };\r\n\r\n const editEmployee = async () => {\r\n const res = await createNewEmployee(state);\r\n if (res.data && res.data.errorCode === 0) {\r\n enqueueSnackbar(\"Chỉnh sửa thành công\", { variant: \"success\" });\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleCloseActivites = () => {\r\n setOpenActivites(false);\r\n };\r\n\r\n const handleOpenActivities = () => {\r\n setOpenActivites(true);\r\n };\r\n\r\n const handleNewActivites = () => {};\r\n\r\n return (\r\n <Card className={classes.root}>\r\n <Paper square>\r\n <Tabs\r\n value={value}\r\n onChange={handleChange}\r\n textColor=\"primary\"\r\n variant=\"fullWidth\"\r\n aria-label=\"scrollable prevent tabs example\"\r\n >\r\n <Tab\r\n style={{ fontSize: \"15px\" }}\r\n label=\"Thông tin cơ bản\"\r\n icon={<AccountCircleIcon />}\r\n aria-label=\"phone\"\r\n {...a11yProps(0)}\r\n />\r\n <Tab\r\n style={{ fontSize: \"15px\" }}\r\n label=\"Quá trình công tác\"\r\n icon={<RestoreIcon />}\r\n aria-label=\"favorite\"\r\n {...a11yProps(1)}\r\n />\r\n <Tab\r\n style={{ fontSize: \"15px\" }}\r\n label=\"Hợp đồng\"\r\n icon={<SecurityIcon />}\r\n aria-label=\"help\"\r\n {...a11yProps(3)}\r\n />\r\n <Tab\r\n style={{ fontSize: \"15px\" }}\r\n label=\"BH & Thuế TNCN\"\r\n icon={<PublicIcon />}\r\n aria-label=\"shopping\"\r\n {...a11yProps(4)}\r\n />\r\n </Tabs>\r\n </Paper>\r\n <TabPanel\r\n value={value}\r\n index={0}\r\n style={{ position: \"relative\", padding: \"10px\" }}\r\n >\r\n <p>\r\n <b>Thông tin cơ bản</b>\r\n </p>\r\n\r\n <Divider />\r\n\r\n <Grid container spacing={5}>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-around\"\r\n alignItems=\"center\"\r\n item\r\n xs={12}\r\n sm={6}\r\n >\r\n <Grid item xs={6}>\r\n <p>Tên nhân viên</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.fullName}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n fullName: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Email</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.email}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n email: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Số điện thoại</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.phone}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n phone: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Mã nhân viên</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.code}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n code: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Giới tính</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n select\r\n value={state.gender}\r\n onChange={handleSelectGender}\r\n fullWidth\r\n >\r\n {genders.map((option) => (\r\n <MenuItem key={option.value} value={option.value}>\r\n {option.label}\r\n </MenuItem>\r\n ))}\r\n </TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Mã số thuế cá nhân</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.incomeTaxCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n incomeTaxCode: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Sinh nhật</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <form className={classes.container} noValidate>\r\n <TextField\r\n id=\"date\"\r\n type=\"date\"\r\n fullWidth\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={state.dateOfBirth}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n dateOfBirth: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Mã số bảo hiểm xã hội</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.socialInsuranceCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsuranceCode: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Thời gian kết thúc BHXH</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <form className={classes.container} noValidate>\r\n <TextField\r\n id=\"date\"\r\n type=\"date\"\r\n fullWidth\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={state.socialInsuranceEndDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsuranceEndDate: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n </Grid>\r\n\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n item\r\n xs={12}\r\n sm={6}\r\n >\r\n <Grid item xs={6}>\r\n <p>Số CMND-TCC</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.cardId}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n cardId: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Ngày cấp CMND-TCC</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <form className={classes.container} noValidate>\r\n <TextField\r\n id=\"date\"\r\n type=\"date\"\r\n value={state.issueDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n issueDate: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Thời gian bắt đầu BHXH</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <form className={classes.container} noValidate>\r\n <TextField\r\n id=\"date\"\r\n type=\"date\"\r\n value={state.socialInsuranceStartDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsuranceStartDate: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Nơi cấp CMND-TCC</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.issuePlace}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n issuePlace: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Trạng thái</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n select\r\n value={state.workingStatus}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n workingStatus: parseInt(e.target.value),\r\n });\r\n }}\r\n fullWidth\r\n >\r\n {status.map((option) => (\r\n <MenuItem key={option.value} value={option.value}>\r\n {option.label}\r\n </MenuItem>\r\n ))}\r\n </TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Biên chế đóng BHXH</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.socialInsurancePayroll}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsurancePayroll: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Số tài khoản</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.bankAccount}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n bankAccount: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Quê quán</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.birthPlace}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n birthPlace: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Hộ khẩu thường trú</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.temporaryAddress}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n temporaryAddress: e.target.value,\r\n });\r\n }}\r\n ></TextField>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n\r\n <p>\r\n <b>Thông tin công việc</b>\r\n </p>\r\n\r\n <Divider />\r\n\r\n <Grid container spacing={5} style={{ marginBottom: \"10px\" }}>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-around\"\r\n alignItems=\"center\"\r\n item\r\n xs={12}\r\n sm={6}\r\n >\r\n <Grid item xs={6}>\r\n <p>Ngày vào làm (thử việc)</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <form className={classes.container} noValidate>\r\n <TextField\r\n id=\"date\"\r\n type=\"date\"\r\n value={state.workDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n workDate: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Hạn</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.expire}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n expire: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Ngày vào làm (chính thức)</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <form className={classes.container} noValidate>\r\n <TextField\r\n id=\"date\"\r\n type=\"date\"\r\n value={state.dateOfBirth}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n dateOfBirth: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Lương chính thức</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.salaryReal}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n salaryReal: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Chức vụ</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.description}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n description: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Ngày nghỉ việc</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <form className={classes.container} noValidate>\r\n <TextField\r\n id=\"date\"\r\n type=\"date\"\r\n value={state.dateOfBirth}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n dateOfBirth: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n </Grid>\r\n\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n item\r\n xs={12}\r\n sm={6}\r\n >\r\n <Grid item xs={6}>\r\n <p>Số hợp đồng thử viẹc</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.contractCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n contractCode: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Lương thử việc</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.salaryTry}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n salaryTry: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Số hợp đồng lao động</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.contractCodeReal}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n contractCodeReal: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Loại hợp đồng lao động</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.kindContract}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n kindContract: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n\r\n <Grid item xs={6}>\r\n <p>Phòng ban</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.departmentCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n departmentCode: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <p>Hồ sơ(ghi chú)</p>\r\n </Grid>\r\n <Grid item xs={6} style={{ paddingRight: \"30px\" }}>\r\n <TextField\r\n value={state.departmentCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n departmentCode: e.target.value,\r\n });\r\n }}\r\n fullWidth\r\n ></TextField>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n style={{\r\n position: \"absolute\",\r\n bottom: \"0px\",\r\n right: \"50px\",\r\n marginBottom: \"12px\",\r\n }}\r\n onClick={editEmployee}\r\n >\r\n Sửa\r\n </Button>\r\n </TabPanel>\r\n <TabPanel value={value} index={1}>\r\n <Dialog\r\n fullWidth=\"true\"\r\n maxWidth=\"sm\"\r\n open={openActivites}\r\n onClose={handleCloseActivites}\r\n aria-labelledby=\"max-width-dialog-title\"\r\n >\r\n <DialogTitle id=\"max-width-dialog-title\">\r\n Thêm mới hoạt động\r\n </DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>\r\n <Grid container spacing={3} style={{ padding: 20 }}>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"10px\", fontSize: \"16px\" }}>\r\n Tên hoạt động\r\n </div>\r\n </Grid>\r\n <Grid item xs={8} style={{ paddingLeft: \"33px\" }}>\r\n <TextField id=\"standard-basic\" style={{ width: \"95%\" }} />\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"22px\", fontSize: \"16px\" }}>\r\n Ngày\r\n </div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{\r\n paddingRight: 10,\r\n paddingLeft: 20,\r\n width: \"98%\",\r\n }}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"dd/MM/yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDate}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </Grid>\r\n </Grid>\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleCloseActivites}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleNewActivites}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Thêm mới\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n style={{ padding: 10 }}\r\n >\r\n <Typography variant={\"h5\"}></Typography>\r\n <Button\r\n style={{ backgroundColor: \"#3C8DBC\", color: \"white\" }}\r\n variant=\"contained\"\r\n onClick={() => {\r\n setOpenActivites(true);\r\n }}\r\n >\r\n Thêm mới hoạt động\r\n </Button>\r\n </Grid>\r\n <br />\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </TabPanel>\r\n <TabPanel value={value} index={2}>\r\n Item Three\r\n </TabPanel>\r\n <TabPanel value={value} index={3}>\r\n Item Four\r\n </TabPanel>\r\n </Card>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport AvatarProfile from \"./Avatar\";\r\nimport Content from \"./Content\";\r\nimport DrawerView from \"../../Drawer\";\r\n\r\nimport { Grid } from \"@material-ui/core\";\r\n\r\nfunction createData(stt, date, activities) {\r\n return { stt, date, activities };\r\n}\r\n\r\nconst columns = [\r\n { id: \"stt\", label: \"STT\", minWidth: 10, align: \"center\" },\r\n {\r\n id: \"date\",\r\n label: \"Ngày\",\r\n minWidth: 80,\r\n align: \"center\",\r\n },\r\n {\r\n id: \"activities\",\r\n label: \"Hoạt động\",\r\n minWidth: 150,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nconst rows = [\r\n createData(1, \"20/11/2020\", \"Vào công ty\"),\r\n createData(2, \"15/12/2020\", \"Ký hợp đồng thử việc\"),\r\n createData(3, \"30/12/2020\", \"Ký hợp đồng chính thức\"),\r\n];\r\n\r\nexport default function Profile() {\r\n return (\r\n <DrawerView>\r\n <h2>Chi tiết nhân viên</h2>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid item xs={3}>\r\n <AvatarProfile />\r\n </Grid>\r\n <Grid item xs={9}>\r\n <Content columns={columns} rows={rows} />\r\n </Grid>\r\n </Grid>\r\n </DrawerView>\r\n );\r\n}\r\n","import ProfileView from \"./ProfileView\";\r\nconst ProfileContainer = (props) => {\r\n return <ProfileView />;\r\n};\r\n\r\nexport default ProfileContainer;\r\n","import React, { useState } from \"react\";\r\nimport { createNewEmployee } from \"../../../apis/Functions/employee\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Typography,\r\n Paper,\r\n Button,\r\n Divider,\r\n MenuItem,\r\n ListItem,\r\n ListItemText,\r\n Collapse,\r\n} from \"@material-ui/core\";\r\nimport { ExpandMore } from \"@material-ui/icons\";\r\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../../assets/AsynStorage\";\r\n\r\nconst genders = [\r\n {\r\n value: \"0\",\r\n label: \"Nữ\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nam\",\r\n },\r\n];\r\n\r\nexport default function CreateDeparment(props) {\r\n const [gender, setGender] = useState(\"\");\r\n const [openPersonal, setOpenPersonal] = useState(true);\r\n const [openWork, setOpenWork] = useState(false);\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n const [state, setState] = useState({\r\n fullName: \"\",\r\n gender: 0,\r\n dateOfBirth: null,\r\n birthPlace: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n room: \"\",\r\n description: \"\",\r\n cardId: \"\",\r\n issueDate: null,\r\n issuePlace: \"\",\r\n temporaryAddress: \"\",\r\n incomeTaxCode: \"\",\r\n socialInsuranceCode: \"\",\r\n socialInsurancePayroll: \"\",\r\n socialInsuranceStartDate: null,\r\n socialInsuranceEndDate: null,\r\n workingStatus: 1,\r\n departmentCode: \"\",\r\n workDate: null,\r\n code: \"\",\r\n });\r\n\r\n const handleSelectGender = (event) => {\r\n setGender(event.target.value);\r\n };\r\n\r\n const newEmployee = async () => {\r\n const res = await createNewEmployee(state);\r\n if (res.data && res.data.errorCode === 0) {\r\n enqueueSnackbar(\"Tạo mới thành công\", { variant: \"success\" });\r\n setTimeout(() => {\r\n history.push(\"/employee\");\r\n }, 1000);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n <Typography variant=\"h5\">Thêm mới nhân viên</Typography>\r\n <Paper elevation={3} style={{ padding: 20, marginTop: 20 }}>\r\n <ListItem button onClick={() => setOpenPersonal(!openPersonal)}>\r\n {openPersonal ? <ChevronRightIcon /> : <ExpandMore />}\r\n <ListItemText primary=\"Thông tin cơ bản\" />\r\n </ListItem>\r\n <Divider />\r\n\r\n <Collapse\r\n style={{ padding: 10 }}\r\n in={openPersonal}\r\n timeout=\"auto\"\r\n unmountOnExit\r\n >\r\n <Grid container spacing={3}>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"name\"\r\n name=\"name\"\r\n label=\"Tên nhân viên\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n value={state.fullName}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n fullName: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n select\r\n value={state.gender}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n gender: parseInt(e.target.value),\r\n });\r\n }}\r\n label=\"Giới tính\"\r\n fullWidth\r\n >\r\n {genders.map((option) => (\r\n <MenuItem key={option.value} value={option.value}>\r\n {option.label}\r\n </MenuItem>\r\n ))}\r\n </TextField>\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"dateOfbirth\"\r\n type=\"date\"\r\n name=\"dateOfbirth\"\r\n label=\"Ngày sinh\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={state.dateOfBirth}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n dateOfBirth: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Số CMTND\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n value={state.cardId}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n cardId: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n type=\"date\"\r\n label=\"Ngày cấp CMTND\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={state.issueDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n issueDate: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Nơi cấp CMTND\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n value={state.issuePlace}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n issuePlace: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n id=\"address\"\r\n name=\"address\"\r\n label=\"Quê quán\"\r\n fullWidth\r\n autoComplete=\"shipping address-line2\"\r\n value={state.birthPlace}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n birthPlace: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Hộ khẩu thường chú\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n value={state.temporaryAddress}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n temporaryAddress: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"phone\"\r\n name=\"phone\"\r\n label=\"Số điện thoại\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.phone}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n phone: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"email\"\r\n name=\"email\"\r\n label=\"Email\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.email}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n email: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"email\"\r\n name=\"email\"\r\n label=\"Mã số thuế thu nhập cá nhân\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.incomeTaxCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n incomeTaxCode: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n id=\"address\"\r\n name=\"address\"\r\n label=\"Số TKNH nhận lương\"\r\n fullWidth\r\n autoComplete=\"shipping address-line2\"\r\n value={state.bankAccount}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n bankAccount: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"email\"\r\n name=\"email\"\r\n label=\"Mã số bảo hiểm xã hội\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.socialInsuranceCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsuranceCode: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"email\"\r\n name=\"email\"\r\n label=\"Biên chế đóng bảo hiểm xã hội\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.socialInsurancePayroll}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsurancePayroll: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"startInsurance\"\r\n name=\"startInsurance\"\r\n type=\"date\"\r\n label=\"Thời gian bắt đầu (BHXH)\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={state.socialInsuranceStartDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsuranceStartDate: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"finishInsurance\"\r\n name=\"finishInsurance\"\r\n type=\"date\"\r\n label=\"Thời gian kết thúc (BHXH)\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={state.socialInsuranceEndDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n socialInsuranceEndDate: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"code\"\r\n name=\"code\"\r\n label=\"Mã nhân viên\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n value={state.code}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n code: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n </Grid>\r\n </Collapse>\r\n\r\n <ListItem button onClick={() => setOpenWork(!openWork)}>\r\n {openWork ? <ChevronRightIcon /> : <ExpandMore />}\r\n <ListItemText primary=\"Thông tin công việc\" />\r\n </ListItem>\r\n <Divider />\r\n\r\n <Collapse\r\n style={{ padding: 10 }}\r\n in={openWork}\r\n timeout=\"auto\"\r\n unmountOnExit\r\n >\r\n <Grid container spacing={3}>\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n type=\"date\"\r\n label=\"Ngày vào làm (thử việc)\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Hạn\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Số hợp đồng thử việc\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Lương thử việc\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n type=\"date\"\r\n label=\"Ngày vào làm (Chính thức)\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={state.workDate}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n workDate: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Hạn\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Số hợp đồng lao động\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Lương chính thức\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"cmnd\"\r\n name=\"cmnd\"\r\n label=\"Loại hợp đồng lao động\"\r\n fullWidth\r\n autoComplete=\"given-name\"\r\n />\r\n </Grid>\r\n\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"postion\"\r\n name=\"postion\"\r\n label=\"Chức vụ\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.description}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n description: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <TextField\r\n required\r\n id=\"department\"\r\n name=\"department\"\r\n label=\"Phòng ban\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n value={state.departmentCode}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n departmentCode: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={12} sm={6}>\r\n <form noValidate>\r\n <TextField\r\n required\r\n id=\"department\"\r\n name=\"department\"\r\n type=\"date\"\r\n label=\"Ngày nghỉ việc\"\r\n fullWidth\r\n autoComplete=\"family-name\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n </Grid>\r\n </Collapse>\r\n <Grid\r\n container\r\n xs={12}\r\n spacing={3}\r\n justify=\"center\"\r\n alignItems=\"flex-end\"\r\n style={{ marginTop: 20 }}\r\n direction=\"column\"\r\n >\r\n <Grid item xs={12} sm={6}>\r\n <Button variant=\"contained\" color=\"secondary\">\r\n Hủy\r\n </Button>\r\n <Button\r\n onClick={newEmployee}\r\n variant=\"contained\"\r\n style={{\r\n backgroundColor: \"green\",\r\n marginLeft: 30,\r\n color: \"white\",\r\n }}\r\n >\r\n Tạo\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </React.Fragment>\r\n );\r\n}\r\n","import CreateEmployee from \"./CreateEmployee\";\r\n\r\nimport DrawerView from \"../../Drawer\";\r\n\r\nconst CreateEmployeeContainer = (props) => {\r\n return (\r\n <DrawerView>\r\n <CreateEmployee />\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default CreateEmployeeContainer;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Typography,\r\n Paper,\r\n Button,\r\n Divider,\r\n MenuItem,\r\n ListItem,\r\n ListItemText,\r\n Collapse,\r\n} from \"@material-ui/core\";\r\nimport { detailEmployee } from \"../../../apis/Functions/employee\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport {\r\n formatTimeStamp,\r\n formatTimeStampDDMMYYYY,\r\n} from \"../../../config/Function\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nimport KEY from \"../../../assets/AsynStorage\";\r\n\r\nconst DetailEmployeeView = () => {\r\n const history = useHistory();\r\n const [state, setState] = useState({\r\n fullName: \"\",\r\n id: \"\",\r\n cardId: \"\",\r\n code: \"\",\r\n gender: 1,\r\n issueDate: \"\",\r\n incomeTaxCode: \"\",\r\n issuePlace: \"\",\r\n workingStatus: 1,\r\n birthPlace: \"\",\r\n dateOfBirth: \"\",\r\n temporaryAddress: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n bankAccount: \"\",\r\n socialInsuranceCode: \"\",\r\n socialInsurancePayroll: \"\",\r\n socialInsuranceStartDate: \"\",\r\n workDate: \"\",\r\n description: \"\",\r\n departmentCode: \"\",\r\n twFromDate: \"\",\r\n no: \"\",\r\n wfromDate: \"\",\r\n regimeTrain: \"\",\r\n });\r\n let { id } = useParams();\r\n const { enqueueSnackbar } = useSnackbar();\r\n const getDataEmployee = async (id) => {\r\n let res = await detailEmployee({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n fullName: content.fullName,\r\n id: id,\r\n cardId: content.cardId,\r\n code: content.code,\r\n gender: content.gender,\r\n issueDate: formatTimeStampDDMMYYYY(content.issueDate),\r\n incomeTaxCode: content.incomeTaxCode,\r\n issuePlace: content.issuePlace,\r\n workingStatus: content.workingStatus,\r\n birthPlace: content.birthPlace,\r\n dateOfBirth: formatTimeStampDDMMYYYY(content.dateOfBirth),\r\n temporaryAddress: content.temporaryAddress,\r\n phone: content.phone,\r\n email: content.email,\r\n bankAccount: content.bankAccount,\r\n socialInsuranceCode: content.socialInsuranceCode,\r\n socialInsurancePayroll: content.socialInsurancePayroll,\r\n socialInsuranceStartDate: formatTimeStampDDMMYYYY(\r\n content.socialInsuranceStartDate\r\n ),\r\n socialInsuranceEndDate: formatTimeStampDDMMYYYY(\r\n content.socialInsuranceEndDate\r\n ),\r\n workDate: formatTimeStampDDMMYYYY(content.workDate),\r\n description: content.description,\r\n departmentCode: content.departmentCode,\r\n twFromDate:\r\n content.myContract != null\r\n ? formatTimeStampDDMMYYYY(content.myContract.twFromDate)\r\n : \"\",\r\n no: content.myContract != null ? content.myContract.no : \"\",\r\n wfromDate:\r\n content.myContract != null\r\n ? formatTimeStampDDMMYYYY(content.myContract.wfromDate)\r\n : \"\",\r\n regimeTrain:\r\n content.myContract != null ? content.myContract.regimeTrain : \"\",\r\n cancelDate:\r\n content.myContract != null\r\n ? formatTimeStampDDMMYYYY(content.myContract.cancelDate)\r\n : \"\",\r\n });\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n useEffect(() => {\r\n getDataEmployee(id);\r\n }, []);\r\n return (\r\n <Paper>\r\n <div\r\n style={{ textAlign: \"center\", fontSize: \"25px\", fontWeight: \"bold\" }}\r\n >\r\n Thông tin nhân viên\r\n </div>\r\n <Grid container spacing={2} style={{ padding: \"10px\" }}>\r\n <Grid item xs={12} style={{ fontSize: \"22px\", fontWeight: \"bold\" }}>\r\n 1. Thông tin cơ bản\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Tên nhân viên: {state.fullName}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Giới tính: {state.gender == 1 ? \"Nam\" : \"Nữ\"}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Ngày sinh: {state.dateOfBirth}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Số CMTND: {state.cardId}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Ngày cấp CMTND: {state.issueDate}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Nơi cấp CMTND: {state.issuePlace}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Quê quán: {state.birthPlace}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Hộ khẩu thường chú: {state.temporaryAddress}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Số điện thoại: {state.phone}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Email: {state.email}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Mã số thuế cá nhân: {state.incomeTaxCode}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Số tài khoản: {state.bankAccount}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Mã số bảo hiểm xã hội: {state.socialInsuranceCode}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Biên chế đóng bảo hiểm xã hội: {state.socialInsurancePayroll}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Thời gian bắt đầu( BHXH ): {state.socialInsuranceStartDate}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Thời gian kết thúc( BHXH ): {state.socialInsuranceEndDate}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Mã nhân viên: {state.code}\r\n </Grid>\r\n <Grid item xs={12} style={{ fontSize: \"22px\", fontWeight: \"bold\" }}>\r\n 2. Thông tin công việc\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Ngày vào làm(thử việc): {state.twFromDate}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Hạn: Nam\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Số hợp đồng thử việc: {state.no}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Lương thử việc: 5 triệu\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Ngày vào làm( chính thức ): {state.wfromDate}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Số hợp đồng lao động: {state.no}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Lương chính thức: HN\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Loại hợp đồng lao động: {state.regimeTrain}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Chức vụ: {state.description}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Phòng ban: {state.departmentCode}\r\n </Grid>\r\n <Grid item xs={4} style={{ fontSize: \"18px\" }}>\r\n Ngày nghỉ việc: {state.cancelDate}\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default DetailEmployeeView;\r\n","import React from \"react\";\r\nimport DrawerView from \"../../Drawer\";\r\nimport DetailEmployeeView from \"./DetailEmployeeView\";\r\n\r\nconst DetailEmployeeContainer = () => {\r\n return (\r\n <DrawerView>\r\n <DetailEmployeeView />\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default DetailEmployeeContainer;\r\n","import * as React from \"react\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport {\r\n Chart,\r\n ArgumentAxis,\r\n ValueAxis,\r\n BarSeries,\r\n Legend,\r\n} from \"@devexpress/dx-react-chart-material-ui\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport { scaleBand } from \"@devexpress/dx-chart-core\";\r\nimport { ArgumentScale, Stack } from \"@devexpress/dx-react-chart\";\r\n\r\nimport { ageStructure } from \"./data-vizualization-stacked\";\r\n\r\nconst styles = (theme) => ({\r\n title: {\r\n marginLeft: theme.spacing(2),\r\n marginBottom: 0,\r\n marginRight: theme.spacing(2),\r\n },\r\n item: {\r\n flexDirection: \"row-reverse\",\r\n },\r\n label: {\r\n textAlign: \"right\",\r\n },\r\n});\r\n\r\nconst Root = withStyles(styles)(({ classes, ...restProps }) => (\r\n <div>\r\n <Legend.Root {...restProps} />\r\n </div>\r\n));\r\n\r\nconst Item = withStyles(styles)(({ classes, ...restProps }) => (\r\n <Legend.Item {...restProps} className={classes.item} />\r\n));\r\n\r\nconst Label = withStyles(styles)(({ classes, ...restProps }) => (\r\n <Legend.Label {...restProps} className={classes.label} />\r\n));\r\n\r\nconst stacks = [{ series: [\"Nhân viên vào\", \"Nhân viên ra\"] }];\r\n\r\nexport default class StackedSeriesChart extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: ageStructure,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n\r\n return (\r\n <Paper>\r\n <Chart data={chartData}>\r\n <ArgumentScale factory={scaleBand} />\r\n <ArgumentAxis />\r\n <ValueAxis />\r\n\r\n <BarSeries\r\n valueField=\"come\"\r\n argumentField=\"state\"\r\n name=\"Vào công ty\"\r\n />\r\n <BarSeries valueField=\"out\" argumentField=\"state\" name=\"Ra công ty\" />\r\n <Stack stacks={stacks} />\r\n <Legend\r\n rootComponent={Root}\r\n itemComponent={Item}\r\n labelComponent={Label}\r\n />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport StackedSeriesChart from \"../../../Component/Chart/StackedSeriesChart\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport {\r\n KeyboardDatePicker,\r\n MuiPickersUtilsProvider,\r\n} from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { formatTimeStampYYYY } from \"../../../config/Function\";\r\n\r\nconst ReportEmployeeView = () => {\r\n const [selectedDate, setSelectedDate] = useState(Date.now());\r\n\r\n const handleDateChange = (date) => {\r\n console.log(formatTimeStampYYYY(date));\r\n setSelectedDate(date);\r\n };\r\n return (\r\n <Paper>\r\n <div\r\n style={{ textAlign: \"center\", fontSize: \"30px\", fontWeight: \"bold\" }}\r\n >\r\n Báo cáo nhân viên vào/ra\r\n </div>\r\n <div style={{ textAlign: \"right\" }}>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{\r\n paddingRight: 10,\r\n paddingLeft: 20,\r\n width: \"15%\",\r\n }}\r\n views={[\"year\"]}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDate}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </div>\r\n <StackedSeriesChart></StackedSeriesChart>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default ReportEmployeeView;\r\n","import React from \"react\";\r\nimport DrawerView from \"../../Drawer\";\r\nimport ReportEmployeeView from \"./ReportEmployeeView\";\r\n\r\nconst ReportEmployeeContainer = () => {\r\n return (\r\n <DrawerView>\r\n <ReportEmployeeView />\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default ReportEmployeeContainer;\r\n","import { PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const applicationList = async (body) =>\r\n PostData(url.APPLICATION, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getListDayOffPaging = async (body) =>\r\n PostData(url.GETLISTDAYOFFPAGING, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const createDayOff = async (body) =>\r\n PostData(url.CREATEDAYOFF, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const deleteDayOff = async (body) =>\r\n GetData(url.DELETEDAYOFF, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getDayOff = async (body) =>\r\n GetData(url.GETDAYOFF, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\n\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport colors from \"../../assets/Color\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport {\r\n deleteDayOff,\r\n getDayOff,\r\n createDayOff,\r\n} from \"../../apis/Functions/application\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { formatTimeStamp } from \"../../config/Function\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 1000,\r\n },\r\n});\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nexport default function StickyHeadTable(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n const [openDeleteDayOff, setOpenDeleteDayOff] = useState(false);\r\n const [openEditDayOff, setOpenEditDayOff] = useState(false);\r\n const [id, setId] = useState(\"\");\r\n const [state, setState] = useState({\r\n id: \"\",\r\n name: \"\",\r\n dayOff: \"\",\r\n });\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n\r\n const handleCloseDeleteDayOff = () => {\r\n setOpenDeleteDayOff(false);\r\n };\r\n\r\n const hanldeOpenDeleteDayOff = (id) => {\r\n setOpenDeleteDayOff(true);\r\n setId(id);\r\n };\r\n\r\n const handleAgreeDeleteDayOff = async () => {\r\n const res = await deleteDayOff({\r\n id: id,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Xóa thành công\", { variant: \"success\" });\r\n setOpenDeleteDayOff(false);\r\n props.getDataAgain(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const hanldeOpenEditDayOff = async (id) => {\r\n setId(id);\r\n const res = await getDayOff({\r\n id: id,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n setState({\r\n id: id,\r\n name: res.data.data.name,\r\n dayOff: formatTimeStamp(res.data.data.dayOff),\r\n });\r\n setOpenEditDayOff(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const hanldeCloseEditDayOff = (id) => {\r\n setOpenEditDayOff(false);\r\n };\r\n\r\n const handleAgreeEditDayOff = async () => {\r\n const res = await createDayOff(state);\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Cập nhật thành công\", { variant: \"success\" });\r\n setOpenEditDayOff(false);\r\n props.getDataAgain(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <div className={classes.root}>\r\n <Dialog\r\n open={openDeleteDayOff}\r\n onClose={handleCloseDeleteDayOff}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n <DialogTitle id=\"alert-dialog-title\"></DialogTitle>\r\n <DialogContent>\r\n <DialogContentText\r\n id=\"alert-dialog-description\"\r\n style={{ fontWeight: \"bold\" }}\r\n >\r\n Bạn có thực sự muốn xóa ngày nghỉ này?\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleCloseDeleteDayOff}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgreeDeleteDayOff}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <Dialog\r\n open={openEditDayOff}\r\n onClose={hanldeCloseEditDayOff}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n <DialogTitle id=\"form-dialog-title\">Thông tin ngày lễ</DialogTitle>\r\n <DialogContent style={{ height: \"150px\" }}>\r\n <DialogContentText style={{ width: \"500px\" }}></DialogContentText>\r\n <Grid container spacing={3}>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"3%\", fontSize: \"16px\" }}>\r\n Tên ngày nghỉ\r\n </div>\r\n </Grid>\r\n <Grid item xs={8} style={{ paddingLeft: \"33px\" }}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={state.name}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n name: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"22px\", fontSize: \"16px\" }}>\r\n Ngày nghỉ\r\n </div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{ paddingRight: 10, paddingLeft: 20 }}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"dd/MM/yyyy\"\r\n onChange={(date) => {\r\n setState({\r\n ...state,\r\n dayOff: date,\r\n });\r\n }}\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={state.dayOff}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={hanldeCloseEditDayOff}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgreeEditDayOff}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 180, textAlign: \"center\" }}>\r\n Hành động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell style={{ textAlign: \"center\" }}>\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: colors.main }}\r\n onClick={() => {\r\n hanldeOpenEditDayOff(row.id);\r\n }}\r\n >\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n onClick={() => {\r\n hanldeOpenDeleteDayOff(row.id);\r\n }}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </div>\r\n );\r\n}\r\n","import { PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const createWifi = async (body) =>\r\n PostData(url.CREATEWIFI, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const deleteWifi = async (body) =>\r\n GetData(url.DELETEWIFI, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getWifi = async (body) =>\r\n PostData(url.GETWIFI, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getWifiDetail = async (body) =>\r\n GetData(url.GETWIFIDETAIL, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\n\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport colors from \"../../assets/Color\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport {\r\n deleteWifi,\r\n createWifi,\r\n getWifiDetail,\r\n} from \"../../apis/Functions/wifi\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { formatTimeStamp } from \"../../config/Function\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 1000,\r\n },\r\n});\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nexport default function StickyHeadTable(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n const [openDeleteDayOff, setOpenDeleteDayOff] = useState(false);\r\n const [openEditDayOff, setOpenEditDayOff] = useState(false);\r\n const [id, setId] = useState(\"\");\r\n const [state, setState] = useState({\r\n id: \"\",\r\n name: \"\",\r\n ip: \"\",\r\n });\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n\r\n const handleCloseDeleteDayOff = () => {\r\n setOpenDeleteDayOff(false);\r\n };\r\n\r\n const hanldeOpenDeleteDayOff = (id) => {\r\n setOpenDeleteDayOff(true);\r\n setId(id);\r\n };\r\n\r\n const handleAgreeDeleteDayOff = async () => {\r\n const res = await deleteWifi({\r\n id: id,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Xóa thành công\", { variant: \"success\" });\r\n setOpenDeleteDayOff(false);\r\n props.getDataAgain(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const hanldeOpenEditDayOff = async (id) => {\r\n setId(id);\r\n const res = await getWifiDetail({\r\n id: id,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n setState({\r\n id: id,\r\n name: res.data.data.name,\r\n ip: res.data.data.ip,\r\n });\r\n setOpenEditDayOff(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const hanldeCloseEditDayOff = (id) => {\r\n setOpenEditDayOff(false);\r\n };\r\n\r\n const handleAgreeEditDayOff = async () => {\r\n const res = await createWifi(state);\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Cập nhật thành công\", { variant: \"success\" });\r\n setOpenEditDayOff(false);\r\n props.getDataAgain(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <div className={classes.root}>\r\n <Dialog\r\n open={openDeleteDayOff}\r\n onClose={handleCloseDeleteDayOff}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n <DialogTitle id=\"alert-dialog-title\"></DialogTitle>\r\n <DialogContent>\r\n <DialogContentText\r\n id=\"alert-dialog-description\"\r\n style={{ fontWeight: \"bold\" }}\r\n >\r\n Bạn có thực sự muốn xóa wifi này?\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleCloseDeleteDayOff}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgreeDeleteDayOff}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <Dialog\r\n open={openEditDayOff}\r\n onClose={hanldeCloseEditDayOff}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n <DialogTitle id=\"form-dialog-title\">Thông tin ngày lễ</DialogTitle>\r\n <DialogContent style={{ height: \"150px\" }}>\r\n <DialogContentText style={{ width: \"500px\" }}></DialogContentText>\r\n <Grid container spacing={3}>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"4%\", fontSize: \"16px\" }}>Tên wifi</div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={state.name}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n name: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"3%\", fontSize: \"16px\" }}>\r\n Địa chỉ IP\r\n </div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={state.ip}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n ip: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={hanldeCloseEditDayOff}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgreeEditDayOff}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 180, textAlign: \"center\" }}>\r\n Hành động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell style={{ textAlign: \"center\" }}>\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: colors.main }}\r\n onClick={() => {\r\n hanldeOpenEditDayOff(row.id);\r\n }}\r\n >\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n onClick={() => {\r\n hanldeOpenDeleteDayOff(row.id);\r\n }}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </div>\r\n );\r\n}\r\n","import { PostData, GetData } from \"../helpers\";\r\nimport url from \"../url\";\r\n\r\nexport const createLocation = async (body) =>\r\n PostData(url.CREATELOCATION, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const deleteLocation = async (body) =>\r\n GetData(url.DELETELOCATION, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getLocation = async (body) =>\r\n PostData(url.GETLOCATION, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n\r\nexport const getLocationDetail = async (body) =>\r\n GetData(url.GETLOCATIONDETAIL, body)\r\n .then((res) => res)\r\n .catch((err) => err);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\n\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport colors from \"../../assets/Color\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport {\r\n deleteLocation,\r\n getLocationDetail,\r\n createLocation,\r\n} from \"../../apis/Functions/location\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { formatTimeStamp } from \"../../config/Function\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 1000,\r\n },\r\n});\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nexport default function StickyHeadTable(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n const [openDeleteDayOff, setOpenDeleteDayOff] = useState(false);\r\n const [openEditDayOff, setOpenEditDayOff] = useState(false);\r\n const [id, setId] = useState(\"\");\r\n const [state, setState] = useState({\r\n id: \"\",\r\n name: \"\",\r\n address: \"\",\r\n });\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n\r\n const handleCloseDeleteDayOff = () => {\r\n setOpenDeleteDayOff(false);\r\n };\r\n\r\n const hanldeOpenDeleteDayOff = (id) => {\r\n setOpenDeleteDayOff(true);\r\n setId(id);\r\n };\r\n\r\n const handleAgreeDeleteDayOff = async () => {\r\n const res = await deleteLocation({\r\n id: id,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Xóa thành công\", { variant: \"success\" });\r\n setOpenDeleteDayOff(false);\r\n props.getDataAgain(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const hanldeOpenEditDayOff = async (id) => {\r\n setId(id);\r\n const res = await getLocationDetail({\r\n id: id,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n setState({\r\n id: id,\r\n name: res.data.data.name,\r\n address: res.data.data.address,\r\n });\r\n setOpenEditDayOff(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const hanldeCloseEditDayOff = (id) => {\r\n setOpenEditDayOff(false);\r\n };\r\n\r\n const handleAgreeEditDayOff = async () => {\r\n const res = await createLocation(state);\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Cập nhật thành công\", { variant: \"success\" });\r\n setOpenEditDayOff(false);\r\n props.getDataAgain(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <div className={classes.root}>\r\n <Dialog\r\n open={openDeleteDayOff}\r\n onClose={handleCloseDeleteDayOff}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n <DialogTitle id=\"alert-dialog-title\"></DialogTitle>\r\n <DialogContent>\r\n <DialogContentText\r\n id=\"alert-dialog-description\"\r\n style={{ fontWeight: \"bold\" }}\r\n >\r\n Bạn có thực sự muốn xóa địa điểm này?\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={handleCloseDeleteDayOff}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgreeDeleteDayOff}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <Dialog\r\n open={openEditDayOff}\r\n onClose={hanldeCloseEditDayOff}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n <DialogTitle id=\"form-dialog-title\">Thông tin địa điểm</DialogTitle>\r\n <DialogContent style={{ height: \"150px\" }}>\r\n <DialogContentText style={{ width: \"500px\" }}></DialogContentText>\r\n <Grid container spacing={3}>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"3%\", fontSize: \"16px\" }}>\r\n Tên địa điểm\r\n </div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={state.name}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n name: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"3%\", fontSize: \"16px\" }}>Địa chỉ</div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={state.address}\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n address: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n onClick={hanldeCloseEditDayOff}\r\n style={{ backgroundColor: \"#f50057\", color: \"white\" }}\r\n >\r\n Hủy bỏ\r\n </Button>\r\n <Button\r\n onClick={handleAgreeEditDayOff}\r\n style={{ backgroundColor: \"#3f51b5\", color: \"white\" }}\r\n autoFocus\r\n >\r\n Đồng ý\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 180, textAlign: \"center\" }}>\r\n Hành động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell style={{ textAlign: \"center\" }}>\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: colors.main }}\r\n onClick={() => {\r\n hanldeOpenEditDayOff(row.id);\r\n }}\r\n >\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n onClick={() => {\r\n hanldeOpenDeleteDayOff(row.id);\r\n }}\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </div>\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport DrawerView from \"../../Drawer\";\r\nimport {\r\n Grid,\r\n Card,\r\n Select,\r\n Button,\r\n TextField,\r\n Typography,\r\n Tabs,\r\n Tab,\r\n Box,\r\n Paper,\r\n} from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport TableDayOff from \"../../../Component/Table/TableDayOff\";\r\nimport TableWifi from \"../../../Component/Table/TableWifi\";\r\nimport TableLocation from \"../../../Component/Table/TableLocation\";\r\nimport Modal from \"@material-ui/core/Modal\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport PostAddIcon from \"@material-ui/icons/PostAdd\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport PropTypes from \"prop-types\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport {\r\n getListDayOffPaging,\r\n createDayOff,\r\n} from \"../../../apis/Functions/application\";\r\n\r\nimport { getWifi, createWifi } from \"../../../apis/Functions/wifi\";\r\nimport { getLocation, createLocation } from \"../../../apis/Functions/location\";\r\n\r\nimport KEY from \"../../../assets/AsynStorage\";\r\nimport {\r\n formatTimeStampDDMMNew,\r\n formatTimeStamp,\r\n} from \"../../../config/Function\";\r\n\r\nfunction createDataDayOff(id, date, dayoff) {\r\n return { id, date, dayoff };\r\n}\r\n\r\nfunction createDataWifi(id, name, ip) {\r\n return { id, name, ip };\r\n}\r\n\r\nfunction createDataLocation(id, name, address) {\r\n return { id, name, address };\r\n}\r\n\r\nconst rand = () => {\r\n return Math.round(Math.random() * 20) - 10;\r\n};\r\n\r\nconst getModalStyle = () => {\r\n const top = 50;\r\n const left = 50;\r\n\r\n return {\r\n top: `${top}%`,\r\n left: `${left}%`,\r\n transform: `translate(-${top}%, -${left}%)`,\r\n display: \"flex\",\r\n outline: \"none\",\r\n };\r\n};\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: \"25ch\",\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n paper: {\r\n position: \"absolute\",\r\n width: 500,\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: theme.shadows[5],\r\n padding: theme.spacing(2, 4, 3),\r\n border: \"2px solid white\",\r\n },\r\n}));\r\n\r\nconst columns = [\r\n {\r\n id: \"date\",\r\n label: \"Tên ngày lễ\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"dayoff\",\r\n label: \"Ngày nghỉ\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n];\r\n\r\nconst columnsWifi = [\r\n {\r\n id: \"name\",\r\n label: \"Tên wifi\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"ip\",\r\n label: \"IP Address\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n];\r\n\r\nconst columnsAddress = [\r\n {\r\n id: \"name\",\r\n label: \"Tên địa điểm\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"address\",\r\n label: \"Địa chỉ\",\r\n minWidth: 120,\r\n align: \"left\",\r\n },\r\n];\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n hidden={value !== index}\r\n id={`full-width-tabpanel-${index}`}\r\n aria-labelledby={`full-width-tab-${index}`}\r\n {...other}\r\n >\r\n {value === index && (\r\n <Box p={3}>\r\n <Typography>{children}</Typography>\r\n </Box>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-prevent-tab-${index}`,\r\n \"aria-controls\": `scrollable-prevent-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst SetupView = () => {\r\n const classes = useStyles();\r\n const [state, setState] = useState({\r\n year: \"\",\r\n });\r\n\r\n const [modalStyle] = useState(getModalStyle);\r\n const [open, setOpen] = useState(false);\r\n const [openWifi, setOpenWifi] = useState(false);\r\n const [openLocation, setOpenLocation] = useState(false);\r\n const [selectedDate, setSelectedDate] = useState(Date.now());\r\n const [value, setValue] = useState(0);\r\n const [pageDayOff, setPageDayOff] = useState(0);\r\n const [totalRowsDayOff, setTotalRowsDayOff] = useState(0);\r\n const [listDayOff, setListDayOff] = useState([]);\r\n const [listWifi, setListWifi] = useState([]);\r\n const [listLocation, setListLocation] = useState([]);\r\n const [stateDayOff, setStateDayOff] = useState({\r\n name: \"\",\r\n });\r\n const [stateWifi, setStateWifi] = useState({\r\n name: \"\",\r\n ip: \"\",\r\n });\r\n const [stateLocation, setStateLocation] = useState({\r\n name: \"\",\r\n address: \"\",\r\n });\r\n const [statusCreate, setStatusCreate] = useState(0);\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(date);\r\n };\r\n\r\n const getDataAgain = (again) => {\r\n setStatusCreate(again);\r\n };\r\n\r\n const handleOpen = () => {\r\n setStateDayOff({\r\n name: \"\",\r\n });\r\n setSelectedDate(Date.now());\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleOpenWifi = () => {\r\n setStateWifi({\r\n name: \"\",\r\n ip: \"\",\r\n });\r\n setOpenWifi(true);\r\n };\r\n\r\n const handleCloseWifi = () => {\r\n setOpenWifi(false);\r\n };\r\n\r\n const handleOpenLocation = () => {\r\n setStateLocation({\r\n name: \"\",\r\n address: \"\",\r\n });\r\n setOpenLocation(true);\r\n };\r\n\r\n const handleCloseLocation = () => {\r\n setOpenLocation(false);\r\n };\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const changePageDayOff = (page) => {\r\n setPageDayOff(page);\r\n };\r\n\r\n const handleChangeNameDayOff = (e) => {\r\n setStateDayOff({\r\n name: e.target.value,\r\n });\r\n };\r\n\r\n const createDayOffModal = async () => {\r\n const res = await createDayOff({\r\n name: stateDayOff.name,\r\n dayOff: formatTimeStamp(selectedDate),\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Tạo mới thành công\", { variant: \"success\" });\r\n setOpen(false);\r\n setStatusCreate(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const createWifiModal = async () => {\r\n const res = await createWifi(stateWifi);\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Tạo mới thành công\", { variant: \"success\" });\r\n setOpenWifi(false);\r\n setStatusCreate(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const createLocationModal = async () => {\r\n const res = await createLocation(stateLocation);\r\n if (res.data && res.data.errorCode == 0) {\r\n enqueueSnackbar(\"Tạo mới thành công\", { variant: \"success\" });\r\n setOpenLocation(false);\r\n setStatusCreate(Math.random() * 10);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const getData = async () => {\r\n const [res, res2, res3] = await Promise.all([\r\n getListDayOffPaging({\r\n pageIndex: pageDayOff + 1,\r\n pageSize: 10,\r\n orderBy: \"CreatedAt\",\r\n directionSort: \"DESC\",\r\n }),\r\n getWifi({\r\n pageIndex: 1,\r\n pageSize: 10,\r\n orderBy: \"CreatedAt\",\r\n directionSort: \"DESC\",\r\n }),\r\n getLocation({\r\n pageIndex: 1,\r\n pageSize: 10,\r\n orderBy: \"CreatedAt\",\r\n directionSort: \"DESC\",\r\n }),\r\n ]);\r\n if (res.data && res.data.errorCode == 0) {\r\n const arrayDayOff = [];\r\n res.data.data.forEach((el) => {\r\n arrayDayOff.push(\r\n createDataDayOff(el.id, el.name, formatTimeStampDDMMNew(el.dayOff))\r\n );\r\n });\r\n setListDayOff(arrayDayOff);\r\n const arrayWifi = [];\r\n res2.data.data.forEach((el) => {\r\n arrayWifi.push(createDataWifi(el.id, el.name, el.ip));\r\n });\r\n setListWifi(arrayWifi);\r\n const arrayLocation = [];\r\n res3.data.data.forEach((el) => {\r\n arrayLocation.push(createDataLocation(el.id, el.name, el.address));\r\n });\r\n setListLocation(arrayLocation);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [pageDayOff, statusCreate]);\r\n\r\n const body = (\r\n <div>\r\n <div style={modalStyle} className={classes.paper}>\r\n <Grid container spacing={3} style={{ padding: 20 }}>\r\n <Grid item xs={12}>\r\n <h2 style={{ marginTop: \"0px\" }}>Thêm ngày lễ</h2>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"10px\", fontSize: \"16px\" }}>\r\n Tên ngày nghỉ\r\n </div>\r\n </Grid>\r\n <Grid item xs={8} style={{ paddingLeft: \"33px\" }}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={stateDayOff.name}\r\n onChange={handleChangeNameDayOff}\r\n />\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"22px\", fontSize: \"16px\" }}>\r\n Ngày nghỉ\r\n </div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{ paddingRight: 10, paddingLeft: 20 }}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"dd/MM/yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDate}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </Grid>\r\n <Grid\r\n item\r\n xs={12}\r\n style={{ marginBottom: \"-32px\", textAlign: \"right\" }}\r\n >\r\n <Button\r\n onClick={handleClose}\r\n style={{\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n backgroundColor: \"red\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n marginRight: \"10px\",\r\n }}\r\n startIcon={<DeleteIcon />}\r\n >\r\n <Typography variant=\"caption\" style={{ fontSize: \"16px\" }}>\r\n Hủy\r\n </Typography>\r\n </Button>\r\n <Button\r\n style={{\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n backgroundColor: \"rgb(60, 141, 188)\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n startIcon={<PostAddIcon />}\r\n onClick={createDayOffModal}\r\n >\r\n <Typography variant=\"caption\" style={{ fontSize: \"16px\" }}>\r\n Tạo\r\n </Typography>\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n </div>\r\n );\r\n\r\n const bodyWifi = (\r\n <div>\r\n <div style={modalStyle} className={classes.paper}>\r\n <Grid container spacing={3} style={{ padding: 20 }}>\r\n <Grid item xs={12}>\r\n <h2 style={{ marginTop: \"0px\" }}>Thêm wifi</h2>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"10px\", fontSize: \"16px\" }}>Tên wifi</div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={stateWifi.name}\r\n onChange={(e) => {\r\n setStateWifi({\r\n ...stateWifi,\r\n name: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"22px\", fontSize: \"16px\" }}>\r\n IP Address\r\n </div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={stateWifi.ip}\r\n onChange={(e) => {\r\n setStateWifi({\r\n ...stateWifi,\r\n ip: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid\r\n item\r\n xs={12}\r\n style={{ marginBottom: \"-32px\", textAlign: \"right\" }}\r\n >\r\n <Button\r\n onClick={handleCloseWifi}\r\n style={{\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n backgroundColor: \"red\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n marginRight: \"10px\",\r\n }}\r\n startIcon={<DeleteIcon />}\r\n >\r\n <Typography variant=\"caption\" style={{ fontSize: \"16px\" }}>\r\n Hủy\r\n </Typography>\r\n </Button>\r\n <Button\r\n style={{\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n backgroundColor: \"rgb(60, 141, 188)\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n startIcon={<PostAddIcon />}\r\n onClick={createWifiModal}\r\n >\r\n <Typography variant=\"caption\" style={{ fontSize: \"16px\" }}>\r\n Tạo\r\n </Typography>\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n </div>\r\n );\r\n const bodyLocation = (\r\n <div>\r\n <div style={modalStyle} className={classes.paper}>\r\n <Grid container spacing={3} style={{ padding: 20 }}>\r\n <Grid item xs={12}>\r\n <h2 style={{ marginTop: \"0px\" }}>Thêm địa điểm</h2>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"4%\", fontSize: \"16px\" }}>\r\n Tên địa điểm\r\n </div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={stateLocation.name}\r\n onChange={(e) => {\r\n setStateLocation({\r\n ...stateLocation,\r\n name: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={4}>\r\n <div style={{ paddingTop: \"3%\", fontSize: \"16px\" }}>Địa chỉ</div>\r\n </Grid>\r\n <Grid item xs={8}>\r\n <TextField\r\n id=\"standard-basic\"\r\n style={{ width: \"95%\" }}\r\n value={stateLocation.address}\r\n onChange={(e) => {\r\n setStateLocation({\r\n ...stateLocation,\r\n address: e.target.value,\r\n });\r\n }}\r\n />\r\n </Grid>\r\n <Grid\r\n item\r\n xs={12}\r\n style={{ marginBottom: \"-32px\", textAlign: \"right\" }}\r\n >\r\n <Button\r\n onClick={handleCloseLocation}\r\n style={{\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n backgroundColor: \"red\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n marginRight: \"10px\",\r\n }}\r\n startIcon={<DeleteIcon />}\r\n >\r\n <Typography variant=\"caption\" style={{ fontSize: \"16px\" }}>\r\n Hủy\r\n </Typography>\r\n </Button>\r\n <Button\r\n style={{\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\",\r\n backgroundColor: \"rgb(60, 141, 188)\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n startIcon={<PostAddIcon />}\r\n onClick={createLocationModal}\r\n >\r\n <Typography variant=\"caption\" style={{ fontSize: \"16px\" }}>\r\n Tạo\r\n </Typography>\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n </div>\r\n );\r\n const handleChangeYear = (e) => {\r\n setState({\r\n ...state,\r\n year: e.target.value,\r\n });\r\n };\r\n return (\r\n <DrawerView>\r\n <Paper square>\r\n <Tabs\r\n value={value}\r\n onChange={handleChange}\r\n textColor=\"primary\"\r\n variant=\"fullWidth\"\r\n aria-label=\"scrollable prevent tabs example\"\r\n indicatorColor=\"primary\"\r\n >\r\n <Tab\r\n style={{ fontSize: \"15px\" }}\r\n label=\"Ngày lễ\"\r\n aria-label=\"phone\"\r\n {...a11yProps(0)}\r\n />\r\n <Tab\r\n style={{ fontSize: \"15px\" }}\r\n label=\"Wifi\"\r\n aria-label=\"favorite\"\r\n {...a11yProps(1)}\r\n />\r\n <Tab\r\n style={{ fontSize: \"15px\" }}\r\n label=\"Địa điểm\"\r\n aria-label=\"help\"\r\n {...a11yProps(3)}\r\n />\r\n </Tabs>\r\n </Paper>\r\n <TabPanel value={value} index={0} style={{ padding: \"10px\" }}>\r\n <Card>\r\n <Typography variant={\"h5\"} style={{ paddingLeft: \"12px\" }}>\r\n Thiết lập ngày lễ\r\n </Typography>\r\n <Grid container spacing={3} style={{ padding: 20 }}>\r\n <Grid item xs={8}></Grid>\r\n <Grid item xs={4} style={{ textAlign: \"center\" }}>\r\n <Button\r\n onClick={handleOpen}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n className={classes.button}\r\n style={{\r\n backgroundColor: \"rgb(60, 141, 188)\",\r\n fontSize: \"13px\",\r\n }}\r\n >\r\n Thêm ngày lễ\r\n </Button>\r\n </Grid>\r\n <Grid item xs={12}>\r\n <TableDayOff\r\n columns={columns}\r\n rows={listDayOff}\r\n getDataAgain={getDataAgain}\r\n ></TableDayOff>\r\n </Grid>\r\n <Modal\r\n open={open}\r\n onClose={handleClose}\r\n aria-labelledby=\"simple-modal-title\"\r\n aria-describedby=\"simple-modal-description\"\r\n >\r\n {body}\r\n </Modal>\r\n </Grid>\r\n </Card>\r\n </TabPanel>\r\n <TabPanel value={value} index={1} style={{ padding: \"10px\" }}>\r\n <Card>\r\n <Typography variant={\"h5\"} style={{ paddingLeft: \"12px\" }}>\r\n Thiết lập wifi\r\n </Typography>\r\n <Grid container spacing={3} style={{ padding: 20 }}>\r\n <Grid item xs={8}></Grid>\r\n <Grid item xs={4} style={{ textAlign: \"center\" }}>\r\n <Button\r\n onClick={handleOpenWifi}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n className={classes.button}\r\n style={{\r\n backgroundColor: \"rgb(60, 141, 188)\",\r\n fontSize: \"13px\",\r\n }}\r\n >\r\n Thêm wifi\r\n </Button>\r\n </Grid>\r\n <Grid item xs={12}>\r\n <TableWifi\r\n columns={columnsWifi}\r\n rows={listWifi}\r\n getDataAgain={getDataAgain}\r\n ></TableWifi>\r\n </Grid>\r\n <Modal\r\n open={openWifi}\r\n onClose={handleCloseWifi}\r\n aria-labelledby=\"simple-modal-title\"\r\n aria-describedby=\"simple-modal-description\"\r\n >\r\n {bodyWifi}\r\n </Modal>\r\n </Grid>\r\n </Card>\r\n </TabPanel>\r\n <TabPanel value={value} index={2} style={{ padding: \"10px\" }}>\r\n <Card>\r\n <Typography variant={\"h5\"} style={{ paddingLeft: \"12px\" }}>\r\n Thiết lập địa điểm\r\n </Typography>\r\n <Grid container spacing={3} style={{ padding: 20 }}>\r\n <Grid item xs={8}></Grid>\r\n <Grid item xs={4} style={{ textAlign: \"center\" }}>\r\n <Button\r\n onClick={handleOpenLocation}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n className={classes.button}\r\n style={{\r\n backgroundColor: \"rgb(60, 141, 188)\",\r\n fontSize: \"13px\",\r\n }}\r\n >\r\n Thêm địa điểm\r\n </Button>\r\n </Grid>\r\n <Grid item xs={12}>\r\n <TableLocation\r\n columns={columnsAddress}\r\n rows={listLocation}\r\n getDataAgain={getDataAgain}\r\n ></TableLocation>\r\n </Grid>\r\n <Modal\r\n open={openLocation}\r\n onClose={handleCloseLocation}\r\n aria-labelledby=\"simple-modal-title\"\r\n aria-describedby=\"simple-modal-description\"\r\n >\r\n {bodyLocation}\r\n </Modal>\r\n </Grid>\r\n </Card>\r\n </TabPanel>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default SetupView;\r\n","import SetupView from \"./SetupView\";\r\n\r\nconst SetupContainer = (props) => {\r\n return <SetupView />;\r\n};\r\n\r\nexport default SetupContainer;\r\n","import * as React from \"react\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport {\r\n Chart,\r\n ArgumentAxis,\r\n ValueAxis,\r\n LineSeries,\r\n Title,\r\n Legend,\r\n} from \"@devexpress/dx-react-chart-material-ui\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport { Animation } from \"@devexpress/dx-react-chart\";\r\n\r\nimport { confidence as data } from \"./data-vizualization\";\r\n\r\nconst format = () => (tick) => tick;\r\nconst legendStyles = () => ({\r\n root: {\r\n display: \"flex\",\r\n margin: \"auto\",\r\n flexDirection: \"row\",\r\n },\r\n});\r\nconst legendLabelStyles = (theme) => ({\r\n label: {\r\n paddingTop: theme.spacing(1),\r\n whiteSpace: \"nowrap\",\r\n },\r\n});\r\nconst legendItemStyles = () => ({\r\n item: {\r\n flexDirection: \"column\",\r\n },\r\n});\r\n\r\nconst legendRootBase = ({ classes, ...restProps }) => (\r\n <Legend.Root {...restProps} className={classes.root} />\r\n);\r\nconst legendLabelBase = ({ classes, ...restProps }) => (\r\n <Legend.Label className={classes.label} {...restProps} />\r\n);\r\nconst legendItemBase = ({ classes, ...restProps }) => (\r\n <Legend.Item className={classes.item} {...restProps} />\r\n);\r\nconst Root = withStyles(legendStyles, { name: \"LegendRoot\" })(legendRootBase);\r\nconst Label = withStyles(legendLabelStyles, { name: \"LegendLabel\" })(\r\n legendLabelBase\r\n);\r\nconst Item = withStyles(legendItemStyles, { name: \"LegendItem\" })(\r\n legendItemBase\r\n);\r\nconst demoStyles = () => ({\r\n chart: {\r\n paddingRight: \"20px\",\r\n },\r\n title: {\r\n whiteSpace: \"pre\",\r\n },\r\n});\r\n\r\nconst ValueLabel = (props) => {\r\n const { text } = props;\r\n return <ValueAxis.Label {...props} text={`${text}`} />;\r\n};\r\n\r\nconst titleStyles = {\r\n title: {\r\n whiteSpace: \"pre\",\r\n },\r\n};\r\nconst TitleText = withStyles(titleStyles)(({ classes, ...props }) => (\r\n <Title.Text {...props} className={classes.title} />\r\n));\r\n\r\nclass Demo extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n const { classes } = this.props;\r\n\r\n return (\r\n <Paper>\r\n <Chart height={500} data={this.props.data} className={classes.chart}>\r\n <ArgumentAxis tickFormat={format} />\r\n <ValueAxis max={50} labelComponent={ValueLabel} />\r\n\r\n <LineSeries\r\n name=\"Công hợp lệ\"\r\n valueField=\"validCheckIn\"\r\n argumentField=\"month\"\r\n />\r\n <LineSeries\r\n name=\"Đi muộn về sớm\"\r\n valueField=\"count_Dmvs\"\r\n argumentField=\"month\"\r\n />\r\n <LineSeries\r\n name=\"Vắng mặt\"\r\n valueField=\"absent\"\r\n argumentField=\"month\"\r\n />\r\n <LineSeries\r\n name=\"Chờ xử lý\"\r\n valueField=\"pending\"\r\n argumentField=\"month\"\r\n />\r\n <Legend\r\n position=\"bottom\"\r\n rootComponent={Root}\r\n itemComponent={Item}\r\n labelComponent={Label}\r\n />\r\n <Animation />\r\n </Chart>\r\n </Paper>\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(demoStyles, { name: \"Demo\" })(Demo);\r\n","export const energyConsumption = [\r\n { date: '1/12', leave: 0, new: 3 },\r\n { date: '2/12', leave: 0, new: 2 },\r\n { date: '3/12', leave: 0, new: 0 },\r\n { date: '4/12', leave: 0, new: 0 },\r\n { date: '5/12', leave: 1, new: 1 },\r\n { date: '6/12', leave: 2, new: 2 },\r\n { date: '7/12', leave: 0, new: 1 }\r\n ]\r\n ","import * as React from 'react';\r\nimport {\r\n Chart,\r\n ArgumentAxis,\r\n ValueAxis,\r\n BarSeries,\r\n Legend,\r\n} from '@devexpress/dx-react-chart-material-ui';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { Stack, Animation } from '@devexpress/dx-react-chart';\r\n\r\nimport { energyConsumption as data } from './data-vizualization-employees';\r\n\r\nconst legendStyles = () => ({\r\n root: {\r\n display: 'flex',\r\n margin: 'auto',\r\n flexDirection: 'row',\r\n },\r\n});\r\nconst legendRootBase = ({ classes, ...restProps }) => (\r\n <Legend.Root {...restProps} className={classes.root} />\r\n);\r\nconst Root = withStyles(legendStyles, { name: 'LegendRoot' })(legendRootBase);\r\nconst legendLabelStyles = () => ({\r\n label: {\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\nconst legendLabelBase = ({ classes, ...restProps }) => (\r\n <Legend.Label className={classes.label} {...restProps} />\r\n);\r\nconst Label = withStyles(legendLabelStyles, { name: 'LegendLabel' })(legendLabelBase);\r\n\r\nexport default class DemoEmp extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data,\r\n };\r\n }\r\n\r\n render() {\r\n const { data: chartData } = this.state;\r\n\r\n return (\r\n <div>\r\n <Chart\r\n data={chartData}\r\n >\r\n <ArgumentAxis />\r\n <ValueAxis\r\n max={10}\r\n />\r\n\r\n <BarSeries\r\n name=\"Nghỉ việc\"\r\n valueField=\"leave\"\r\n argumentField=\"date\"\r\n />\r\n <BarSeries\r\n name=\"Mới\"\r\n valueField=\"new\"\r\n argumentField=\"date\"\r\n />\r\n <Animation />\r\n <Legend position=\"bottom\" rootComponent={Root} labelComponent={Label} />\r\n <Stack\r\n stacks={[\r\n { series: ['Nghỉ việc', 'Mới'] },\r\n ]}\r\n />\r\n </Chart>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport DrawerView from \"../../Drawer\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport {\r\n People,\r\n Queue,\r\n QueryBuilder,\r\n PlaylistAddCheck,\r\n} from \"@material-ui/icons\";\r\n\r\nimport LineChart from \"../../../Component/Chart/LineChart\";\r\nimport DemoEmp from \"../../../Component/Chart/BarChartEmployees\";\r\nimport {\r\n KeyboardDatePicker,\r\n MuiPickersUtilsProvider,\r\n} from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { formatTimeStampYYYY } from \"../../../config/Function\";\r\nimport { getCheckInEachMonth } from \"../../../apis/Functions/checkin\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../../assets/AsynStorage\";\r\n\r\nconst departments = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"KT\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"HR\",\r\n label: \"Nhân sự\",\r\n },\r\n];\r\n\r\nconst ReportView = () => {\r\n const useStyles = makeStyles((theme) => ({\r\n toolbar: {\r\n margin: \"1% 0\",\r\n },\r\n toolbar2: {\r\n padding: \"20px\",\r\n },\r\n icons: {\r\n fontSize: \"40px\",\r\n },\r\n gridBoxItem: {\r\n padding: \"20px\",\r\n },\r\n button: {\r\n marginTop: \"2%\",\r\n },\r\n title: {\r\n marginBottom: \"2%\",\r\n },\r\n textField: {\r\n width: \"25ch\",\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n }));\r\n\r\n const classes = useStyles();\r\n const [department, setDepartment] = useState(\"\");\r\n const [dataLineChart, setDataLineChart] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const history = useHistory();\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n\r\n const [selectedDate, setSelectedDate] = useState(\r\n formatTimeStampYYYY(Date.now())\r\n );\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(formatTimeStampYYYY(date));\r\n };\r\n\r\n const getData = async () => {\r\n const res = await getCheckInEachMonth({\r\n year: selectedDate,\r\n depCode: department,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n const listData = [];\r\n res.data.data.forEach((el) => {\r\n listData.push({\r\n month: el.month,\r\n validCheckIn: el.validCheckIn,\r\n count_Dmvs: el.count_Dmvs,\r\n absent: el.absent,\r\n pending: el.pending,\r\n });\r\n });\r\n setDataLineChart(listData);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [selectedDate, department]);\r\n\r\n const FormReport = () => (\r\n <Paper elevation={3} className={classes.toolbar2}>\r\n <Grid container>\r\n <Grid className={classes.title} item>\r\n <Typography variant=\"h6\">Xuất báo cáo</Typography>\r\n </Grid>\r\n\r\n <Grid\r\n container\r\n item\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n spacing={3}\r\n >\r\n <Grid item>\r\n <TextField\r\n select\r\n size=\"medium\"\r\n className={classes.textField}\r\n label=\"Loại báo cáo\"\r\n variant=\"outlined\"\r\n />\r\n </Grid>\r\n <Grid item>\r\n <TextField\r\n select\r\n size=\"medium\"\r\n className={classes.textField}\r\n label=\"Chọn phòng\"\r\n variant=\"outlined\"\r\n />\r\n </Grid>\r\n <Grid item>\r\n <TextField\r\n select\r\n size=\"medium\"\r\n className={classes.textField}\r\n label=\"Chọn ban\"\r\n variant=\"outlined\"\r\n />\r\n </Grid>\r\n <Grid item>\r\n <form noValidate>\r\n <TextField\r\n type=\"date\"\r\n defaultValue=\"2020-12-01\"\r\n label=\"Từ ngày\"\r\n InputLabelProps={{ shrink: true }}\r\n />\r\n <TextField\r\n type=\"date\"\r\n defaultValue=\"2020-12-31\"\r\n label=\"Đến ngày\"\r\n InputLabelProps={{ shrink: true }}\r\n />\r\n </form>\r\n </Grid>\r\n </Grid>\r\n\r\n <Grid\r\n className={classes.button}\r\n container\r\n item\r\n justify=\"flex-end\"\r\n alignItems=\"flex-end\"\r\n >\r\n <Button variant=\"contained\" size=\"large\" color=\"primary\">\r\n Xuất báo cáo\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n );\r\n\r\n const ChartReport = () => (\r\n <Paper elevation={3} className={classes.toolbar2}>\r\n <div>\r\n <h1 style={{ textAlign: \"center\" }}>Báo cáo chấm công</h1>\r\n <div style={{ textAlign: \"right\" }}>\r\n <FormControl\r\n className={classes.formControl}\r\n style={{ margin: \"0px\", minWidth: \"160px\" }}\r\n >\r\n <TextField\r\n id=\"outlined-select-currency-native\"\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n onChange={handleSelectDepartment}\r\n >\r\n {departments.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{\r\n paddingRight: 10,\r\n paddingLeft: 20,\r\n width: \"15%\",\r\n }}\r\n views={[\"year\"]}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDate}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </div>\r\n </div>\r\n <br />\r\n <LineChart data={dataLineChart} />\r\n </Paper>\r\n );\r\n\r\n return (\r\n <DrawerView>\r\n <FormReport />\r\n <br />\r\n <ChartReport />\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default ReportView;\r\n","import ReportView from \"./ReportView\";\r\n\r\nconst ReportContainer = (props) => {\r\n return <ReportView />;\r\n};\r\n\r\nexport default ReportContainer;\r\n","import { Subject } from \"rxjs\";\r\n\r\nconst subject1 = new Subject();\r\nconst subject2 = new Subject();\r\n\r\nexport const dragNodeService = {\r\n sendDragInfo: id => subject1.next({ draggedNodeId: id }),\r\n clearDragInfo: () => subject1.next(),\r\n getDragInfo: () => subject1.asObservable()\r\n};\r\n\r\nexport const selectNodeService = {\r\n sendSelectedNodeInfo: id => subject2.next({ selectedNodeId: id }),\r\n clearSelectedNodeInfo: () => subject2.next(),\r\n getSelectedNodeInfo: () => subject2.asObservable()\r\n};\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { dragNodeService, selectNodeService } from \"./service\";\r\nimport \"./ChartNode.css\";\r\n\r\nconst propTypes = {\r\n datasource: PropTypes.object,\r\n NodeTemplate: PropTypes.elementType,\r\n draggable: PropTypes.bool,\r\n collapsible: PropTypes.bool,\r\n multipleSelect: PropTypes.bool,\r\n changeHierarchy: PropTypes.func,\r\n onClickNode: PropTypes.func\r\n};\r\n\r\nconst defaultProps = {\r\n draggable: false,\r\n collapsible: true,\r\n multipleSelect: false\r\n};\r\n\r\nconst ChartNode = ({\r\n datasource,\r\n NodeTemplate,\r\n draggable,\r\n collapsible,\r\n multipleSelect,\r\n changeHierarchy,\r\n onClickNode\r\n}) => {\r\n const node = useRef();\r\n\r\n const [isChildrenCollapsed, setIsChildrenCollapsed] = useState(false);\r\n const [topEdgeExpanded, setTopEdgeExpanded] = useState();\r\n const [rightEdgeExpanded, setRightEdgeExpanded] = useState();\r\n const [bottomEdgeExpanded, setBottomEdgeExpanded] = useState();\r\n const [leftEdgeExpanded, setLeftEdgeExpanded] = useState();\r\n const [allowedDrop, setAllowedDrop] = useState(false);\r\n const [selected, setSelected] = useState(false);\r\n\r\n const nodeClass = [\r\n \"oc-node\",\r\n isChildrenCollapsed ? \"isChildrenCollapsed\" : \"\",\r\n allowedDrop ? \"allowedDrop\" : \"\",\r\n selected ? \"selected\" : \"\"\r\n ]\r\n .filter(item => item)\r\n .join(\" \");\r\n\r\n useEffect(() => {\r\n const subs1 = dragNodeService.getDragInfo().subscribe(draggedInfo => {\r\n if (draggedInfo) {\r\n setAllowedDrop(\r\n !document\r\n .querySelector(\"#\" + draggedInfo.draggedNodeId)\r\n .closest(\"li\")\r\n .querySelector(\"#\" + node.current.id)\r\n ? true\r\n : false\r\n );\r\n } else {\r\n setAllowedDrop(false);\r\n }\r\n });\r\n\r\n const subs2 = selectNodeService\r\n .getSelectedNodeInfo()\r\n .subscribe(selectedNodeInfo => {\r\n if (selectedNodeInfo) {\r\n if (multipleSelect) {\r\n if (selectedNodeInfo.selectedNodeId === datasource.id) {\r\n setSelected(true);\r\n }\r\n } else {\r\n setSelected(selectedNodeInfo.selectedNodeId === datasource.id);\r\n }\r\n } else {\r\n setSelected(false);\r\n }\r\n });\r\n\r\n return () => {\r\n subs1.unsubscribe();\r\n subs2.unsubscribe();\r\n };\r\n }, [multipleSelect, datasource]);\r\n\r\n const addArrows = e => {\r\n const node = e.target.closest(\"li\");\r\n const parent = node.parentNode.closest(\"li\");\r\n const isAncestorsCollapsed =\r\n node && parent\r\n ? parent.firstChild.classList.contains(\"hidden\")\r\n : undefined;\r\n const isSiblingsCollapsed = Array.from(\r\n node.parentNode.children\r\n ).some(item => item.classList.contains(\"hidden\"));\r\n\r\n setTopEdgeExpanded(!isAncestorsCollapsed);\r\n setRightEdgeExpanded(!isSiblingsCollapsed);\r\n setLeftEdgeExpanded(!isSiblingsCollapsed);\r\n setBottomEdgeExpanded(!isChildrenCollapsed);\r\n };\r\n\r\n const removeArrows = () => {\r\n setTopEdgeExpanded(undefined);\r\n setRightEdgeExpanded(undefined);\r\n setBottomEdgeExpanded(undefined);\r\n setLeftEdgeExpanded(undefined);\r\n };\r\n\r\n const toggleAncestors = actionNode => {\r\n let node = actionNode.parentNode.closest(\"li\");\r\n if (!node) return;\r\n const isAncestorsCollapsed = node.firstChild.classList.contains(\"hidden\");\r\n if (isAncestorsCollapsed) {\r\n actionNode.classList.remove(\"isAncestorsCollapsed\");\r\n node.firstChild.classList.remove(\"hidden\");\r\n } else {\r\n const isSiblingsCollapsed = Array.from(\r\n actionNode.parentNode.children\r\n ).some(item => item.classList.contains(\"hidden\"));\r\n if (!isSiblingsCollapsed) {\r\n toggleSiblings(actionNode);\r\n }\r\n actionNode.classList.add(\r\n ...(\r\n \"isAncestorsCollapsed\" +\r\n (isSiblingsCollapsed ? \"\" : \" isSiblingsCollapsed\")\r\n ).split(\" \")\r\n );\r\n node.firstChild.classList.add(\"hidden\");\r\n if (\r\n node.parentNode.closest(\"li\") &&\r\n !node.parentNode.closest(\"li\").firstChild.classList.contains(\"hidden\")\r\n ) {\r\n toggleAncestors(node);\r\n }\r\n }\r\n };\r\n\r\n const topEdgeClickHandler = e => {\r\n e.stopPropagation();\r\n setTopEdgeExpanded(!topEdgeExpanded);\r\n toggleAncestors(e.target.closest(\"li\"));\r\n };\r\n\r\n const bottomEdgeClickHandler = e => {\r\n e.stopPropagation();\r\n setIsChildrenCollapsed(!isChildrenCollapsed);\r\n setBottomEdgeExpanded(!bottomEdgeExpanded);\r\n };\r\n\r\n const toggleSiblings = actionNode => {\r\n let node = actionNode.previousSibling;\r\n const isSiblingsCollapsed = Array.from(\r\n actionNode.parentNode.children\r\n ).some(item => item.classList.contains(\"hidden\"));\r\n actionNode.classList.toggle(\"isSiblingsCollapsed\", !isSiblingsCollapsed);\r\n while (node) {\r\n if (isSiblingsCollapsed) {\r\n node.classList.remove(\"hidden\");\r\n } else {\r\n node.classList.add(\"hidden\");\r\n }\r\n node = node.previousSibling;\r\n }\r\n node = actionNode.nextSibling;\r\n while (node) {\r\n if (isSiblingsCollapsed) {\r\n node.classList.remove(\"hidden\");\r\n } else {\r\n node.classList.add(\"hidden\");\r\n }\r\n node = node.nextSibling;\r\n }\r\n const isAncestorsCollapsed = actionNode.parentNode\r\n .closest(\"li\")\r\n .firstChild.classList.contains(\"hidden\");\r\n if (isAncestorsCollapsed) {\r\n toggleAncestors(actionNode);\r\n }\r\n };\r\n\r\n const hEdgeClickHandler = e => {\r\n e.stopPropagation();\r\n setLeftEdgeExpanded(!leftEdgeExpanded);\r\n setRightEdgeExpanded(!rightEdgeExpanded);\r\n toggleSiblings(e.target.closest(\"li\"));\r\n };\r\n\r\n const filterAllowedDropNodes = id => {\r\n dragNodeService.sendDragInfo(id);\r\n };\r\n\r\n const clickNodeHandler = event => {\r\n if (onClickNode) {\r\n onClickNode(datasource);\r\n }\r\n\r\n selectNodeService.sendSelectedNodeInfo(datasource.id);\r\n };\r\n\r\n const dragstartHandler = event => {\r\n const copyDS = { ...datasource };\r\n delete copyDS.relationship;\r\n event.dataTransfer.setData(\"text/plain\", JSON.stringify(copyDS));\r\n // highlight all potential drop targets\r\n filterAllowedDropNodes(node.current.id);\r\n };\r\n\r\n const dragoverHandler = event => {\r\n // prevent default to allow drop\r\n event.preventDefault();\r\n };\r\n\r\n const dragendHandler = () => {\r\n // reset background of all potential drop targets\r\n dragNodeService.clearDragInfo();\r\n };\r\n\r\n const dropHandler = event => {\r\n if (!event.currentTarget.classList.contains(\"allowedDrop\")) {\r\n return;\r\n }\r\n dragNodeService.clearDragInfo();\r\n changeHierarchy(\r\n JSON.parse(event.dataTransfer.getData(\"text/plain\")),\r\n event.currentTarget.id\r\n );\r\n };\r\n\r\n return (\r\n <li className=\"oc-hierarchy\">\r\n <div\r\n ref={node}\r\n id={datasource.id}\r\n className={nodeClass}\r\n draggable={draggable ? \"true\" : undefined}\r\n onClick={clickNodeHandler}\r\n onDragStart={dragstartHandler}\r\n onDragOver={dragoverHandler}\r\n onDragEnd={dragendHandler}\r\n onDrop={dropHandler}\r\n onMouseEnter={addArrows}\r\n onMouseLeave={removeArrows}\r\n >\r\n {NodeTemplate ? (\r\n <NodeTemplate nodeData={datasource} />\r\n ) : (\r\n <>\r\n <div className=\"oc-heading\">\r\n {datasource.relationship &&\r\n datasource.relationship.charAt(2) === \"1\" && (\r\n <i className=\"oci oci-leader oc-symbol\" />\r\n )}\r\n {datasource.name}\r\n </div>\r\n <div className=\"oc-content\">{datasource.title}</div>\r\n </>\r\n )}\r\n {collapsible &&\r\n datasource.relationship &&\r\n datasource.relationship.charAt(0) === \"1\" && (\r\n <i\r\n className={`oc-edge verticalEdge topEdge oci ${topEdgeExpanded === undefined\r\n ? \"\"\r\n : topEdgeExpanded\r\n ? \"oci-chevron-down\"\r\n : \"oci-chevron-up\"\r\n }`}\r\n onClick={topEdgeClickHandler}\r\n />\r\n )}\r\n {collapsible &&\r\n datasource.relationship &&\r\n datasource.relationship.charAt(1) === \"1\" && (\r\n <>\r\n <i\r\n className={`oc-edge horizontalEdge rightEdge oci ${rightEdgeExpanded === undefined\r\n ? \"\"\r\n : rightEdgeExpanded\r\n ? \"oci-chevron-left\"\r\n : \"oci-chevron-right\"\r\n }`}\r\n onClick={hEdgeClickHandler}\r\n />\r\n <i\r\n className={`oc-edge horizontalEdge leftEdge oci ${leftEdgeExpanded === undefined\r\n ? \"\"\r\n : leftEdgeExpanded\r\n ? \"oci-chevron-right\"\r\n : \"oci-chevron-left\"\r\n }`}\r\n onClick={hEdgeClickHandler}\r\n />\r\n </>\r\n )}\r\n {collapsible &&\r\n datasource.relationship &&\r\n datasource.relationship.charAt(2) === \"1\" && (\r\n <i\r\n className={`oc-edge verticalEdge bottomEdge oci ${bottomEdgeExpanded === undefined\r\n ? \"\"\r\n : bottomEdgeExpanded\r\n ? \"oci-chevron-up\"\r\n : \"oci-chevron-down\"\r\n }`}\r\n onClick={bottomEdgeClickHandler}\r\n />\r\n )}\r\n </div>\r\n {datasource.children && datasource.children.length > 0 && (\r\n <ul className={isChildrenCollapsed ? \"hidden\" : \"\"}>\r\n {datasource.children.map(node => (\r\n <ChartNode\r\n datasource={node}\r\n NodeTemplate={NodeTemplate}\r\n id={node.id}\r\n key={node.id}\r\n draggable={draggable}\r\n collapsible={collapsible}\r\n multipleSelect={multipleSelect}\r\n changeHierarchy={changeHierarchy}\r\n onClickNode={onClickNode}\r\n />\r\n ))}\r\n </ul>\r\n )}\r\n </li>\r\n );\r\n};\r\n\r\nChartNode.propTypes = propTypes;\r\nChartNode.defaultProps = defaultProps;\r\n\r\nexport default ChartNode;\r\n","import React, {\r\n useState,\r\n useEffect,\r\n useRef,\r\n forwardRef,\r\n useImperativeHandle\r\n} from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { selectNodeService } from \"./service\";\r\nimport JSONDigger from \"json-digger\";\r\nimport html2canvas from \"html2canvas\";\r\nimport jsPDF from \"jspdf\";\r\nimport ChartNode from \"./ChartNode\";\r\nimport \"./ChartContainer.css\";\r\nimport { Card } from '@material-ui/core';\r\n\r\nconst propTypes = {\r\n datasource: PropTypes.object.isRequired,\r\n pan: PropTypes.bool,\r\n zoom: PropTypes.bool,\r\n zoomoutLimit: PropTypes.number,\r\n zoominLimit: PropTypes.number,\r\n containerClass: PropTypes.string,\r\n chartClass: PropTypes.string,\r\n NodeTemplate: PropTypes.elementType,\r\n draggable: PropTypes.bool,\r\n collapsible: PropTypes.bool,\r\n multipleSelect: PropTypes.bool,\r\n onClickNode: PropTypes.func,\r\n onClickChart: PropTypes.func\r\n};\r\n\r\nconst defaultProps = {\r\n pan: false,\r\n zoom: false,\r\n zoomoutLimit: 0.5,\r\n zoominLimit: 7,\r\n containerClass: \"\",\r\n chartClass: \"\",\r\n draggable: false,\r\n collapsible: true,\r\n multipleSelect: false\r\n};\r\n\r\nconst ChartContainer = forwardRef(\r\n (\r\n {\r\n datasource,\r\n pan,\r\n zoom,\r\n zoomoutLimit,\r\n zoominLimit,\r\n containerClass,\r\n chartClass,\r\n NodeTemplate,\r\n draggable,\r\n collapsible,\r\n multipleSelect,\r\n onClickNode,\r\n onClickChart\r\n },\r\n ref\r\n ) => {\r\n const container = useRef();\r\n const chart = useRef();\r\n const downloadButton = useRef();\r\n\r\n const [startX, setStartX] = useState(0);\r\n const [startY, setStartY] = useState(0);\r\n const [transform, setTransform] = useState(\"\");\r\n const [panning, setPanning] = useState(false);\r\n const [cursor, setCursor] = useState(\"default\");\r\n const [exporting, setExporting] = useState(false);\r\n const [dataURL, setDataURL] = useState(\"\");\r\n const [download, setDownload] = useState(\"\");\r\n\r\n const attachRel = (data, flags) => {\r\n data.relationship =\r\n flags + (data.children && data.children.length > 0 ? 1 : 0);\r\n if (data.children) {\r\n data.children.forEach(function (item) {\r\n attachRel(item, \"1\" + (data.children.length > 1 ? 1 : 0));\r\n });\r\n }\r\n return data;\r\n };\r\n\r\n const [ds, setDS] = useState(datasource);\r\n useEffect(() => {\r\n setDS(datasource);\r\n }, [datasource]);\r\n\r\n const dsDigger = new JSONDigger(datasource, \"id\", \"children\");\r\n\r\n const clickChartHandler = event => {\r\n if (!event.target.closest(\".oc-node\")) {\r\n if (onClickChart) {\r\n onClickChart();\r\n }\r\n selectNodeService.clearSelectedNodeInfo();\r\n }\r\n };\r\n\r\n const panEndHandler = () => {\r\n setPanning(false);\r\n setCursor(\"default\");\r\n };\r\n\r\n const panHandler = e => {\r\n let newX = 0;\r\n let newY = 0;\r\n if (!e.targetTouches) {\r\n // pand on desktop\r\n newX = e.pageX - startX;\r\n newY = e.pageY - startY;\r\n } else if (e.targetTouches.length === 1) {\r\n // pan on mobile device\r\n newX = e.targetTouches[0].pageX - startX;\r\n newY = e.targetTouches[0].pageY - startY;\r\n } else if (e.targetTouches.length > 1) {\r\n return;\r\n }\r\n if (transform === \"\") {\r\n if (transform.indexOf(\"3d\") === -1) {\r\n setTransform(\"matrix(1,0,0,1,\" + newX + \",\" + newY + \")\");\r\n } else {\r\n setTransform(\r\n \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,\" + newX + \", \" + newY + \",0,1)\"\r\n );\r\n }\r\n } else {\r\n let matrix = transform.split(\",\");\r\n if (transform.indexOf(\"3d\") === -1) {\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 setTransform(matrix.join(\",\"));\r\n }\r\n };\r\n\r\n const panStartHandler = e => {\r\n if (e.target.closest(\".oc-node\")) {\r\n setPanning(false);\r\n return;\r\n } else {\r\n setPanning(true);\r\n setCursor(\"move\");\r\n }\r\n let lastX = 0;\r\n let lastY = 0;\r\n if (transform !== \"\") {\r\n let matrix = transform.split(\",\");\r\n if (transform.indexOf(\"3d\") === -1) {\r\n lastX = parseInt(matrix[4]);\r\n lastY = parseInt(matrix[5]);\r\n } else {\r\n lastX = parseInt(matrix[12]);\r\n lastY = parseInt(matrix[13]);\r\n }\r\n }\r\n if (!e.targetTouches) {\r\n // pand on desktop\r\n setStartX(e.pageX - lastX);\r\n setStartY(e.pageY - lastY);\r\n } else if (e.targetTouches.length === 1) {\r\n // pan on mobile device\r\n setStartX(e.targetTouches[0].pageX - lastX);\r\n setStartY(e.targetTouches[0].pageY - lastY);\r\n } else if (e.targetTouches.length > 1) {\r\n return;\r\n }\r\n };\r\n\r\n const updateChartScale = newScale => {\r\n let matrix = [];\r\n let targetScale = 1;\r\n if (transform === \"\") {\r\n setTransform(\"matrix(\" + newScale + \", 0, 0, \" + newScale + \", 0, 0)\");\r\n } else {\r\n matrix = transform.split(\",\");\r\n if (transform.indexOf(\"3d\") === -1) {\r\n targetScale = Math.abs(window.parseFloat(matrix[3]) * newScale);\r\n if (targetScale > zoomoutLimit && targetScale < zoominLimit) {\r\n matrix[0] = \"matrix(\" + targetScale;\r\n matrix[3] = targetScale;\r\n setTransform(matrix.join(\",\"));\r\n }\r\n } else {\r\n targetScale = Math.abs(window.parseFloat(matrix[5]) * newScale);\r\n if (targetScale > zoomoutLimit && targetScale < zoominLimit) {\r\n matrix[0] = \"matrix3d(\" + targetScale;\r\n matrix[5] = targetScale;\r\n setTransform(matrix.join(\",\"));\r\n }\r\n }\r\n }\r\n };\r\n\r\n const zoomHandler = e => {\r\n let newScale = 1 + (e.deltaY > 0 ? -0.2 : 0.2);\r\n updateChartScale(newScale);\r\n };\r\n\r\n const exportPDF = (canvas, exportFilename) => {\r\n const canvasWidth = Math.floor(canvas.width);\r\n const canvasHeight = Math.floor(canvas.height);\r\n const doc =\r\n canvasWidth > canvasHeight\r\n ? new jsPDF({\r\n orientation: \"landscape\",\r\n unit: \"px\",\r\n format: [canvasWidth, canvasHeight]\r\n })\r\n : new jsPDF({\r\n orientation: \"portrait\",\r\n unit: \"px\",\r\n format: [canvasHeight, canvasWidth]\r\n });\r\n doc.addImage(canvas.toDataURL(\"image/jpeg\", 1.0), \"JPEG\", 0, 0);\r\n doc.save(exportFilename + \".pdf\");\r\n };\r\n\r\n const exportPNG = (canvas, exportFilename) => {\r\n const isWebkit = \"WebkitAppearance\" in document.documentElement.style;\r\n const isFf = !!window.sidebar;\r\n const isEdge =\r\n navigator.appName === \"Microsoft Internet Explorer\" ||\r\n (navigator.appName === \"Netscape\" &&\r\n navigator.appVersion.indexOf(\"Edge\") > -1);\r\n\r\n if ((!isWebkit && !isFf) || isEdge) {\r\n window.navigator.msSaveBlob(canvas.msToBlob(), exportFilename + \".png\");\r\n } else {\r\n setDataURL(canvas.toDataURL());\r\n setDownload(exportFilename + \".png\");\r\n downloadButton.current.click();\r\n }\r\n };\r\n\r\n const changeHierarchy = async (draggedItemData, dropTargetId) => {\r\n await dsDigger.removeNode(draggedItemData.id);\r\n await dsDigger.addChildren(dropTargetId, draggedItemData);\r\n setDS({ ...dsDigger.ds });\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n exportTo: (exportFilename, exportFileextension) => {\r\n exportFilename = exportFilename || \"OrgChart\";\r\n exportFileextension = exportFileextension || \"png\";\r\n setExporting(true);\r\n const originalScrollLeft = container.current.scrollLeft;\r\n container.current.scrollLeft = 0;\r\n const originalScrollTop = container.current.scrollTop;\r\n container.current.scrollTop = 0;\r\n html2canvas(chart.current, {\r\n width: chart.current.clientWidth,\r\n height: chart.current.clientHeight,\r\n onclone: function (clonedDoc) {\r\n clonedDoc.querySelector(\".orgchart\").style.background = \"none\";\r\n clonedDoc.querySelector(\".orgchart\").style.transform = \"\";\r\n }\r\n }).then(\r\n canvas => {\r\n if (exportFileextension.toLowerCase() === \"pdf\") {\r\n exportPDF(canvas, exportFilename);\r\n } else {\r\n exportPNG(canvas, exportFilename);\r\n }\r\n setExporting(false);\r\n container.current.scrollLeft = originalScrollLeft;\r\n container.current.scrollTop = originalScrollTop;\r\n },\r\n () => {\r\n setExporting(false);\r\n container.current.scrollLeft = originalScrollLeft;\r\n container.current.scrollTop = originalScrollTop;\r\n }\r\n );\r\n },\r\n expandAllNodes: () => {\r\n chart.current\r\n .querySelectorAll(\r\n \".oc-node.hidden, .oc-hierarchy.hidden, .isSiblingsCollapsed, .isAncestorsCollapsed\"\r\n )\r\n .forEach(el => {\r\n el.classList.remove(\r\n \"hidden\",\r\n \"isSiblingsCollapsed\",\r\n \"isAncestorsCollapsed\"\r\n );\r\n });\r\n }\r\n }));\r\n\r\n return (\r\n <div\r\n ref={container}\r\n className={\"orgchart-container \" + containerClass}\r\n onWheel={zoom ? zoomHandler : undefined}\r\n onMouseUp={pan && panning ? panEndHandler : undefined}\r\n >\r\n <div\r\n ref={chart}\r\n className={\"orgchart \" + chartClass}\r\n style={{ transform: transform, cursor: cursor }}\r\n onClick={clickChartHandler}\r\n onMouseDown={pan ? panStartHandler : undefined}\r\n onMouseMove={pan && panning ? panHandler : undefined}\r\n >\r\n <ul>\r\n <ChartNode\r\n datasource={attachRel(ds, \"00\")}\r\n NodeTemplate={NodeTemplate}\r\n draggable={draggable}\r\n collapsible={collapsible}\r\n multipleSelect={multipleSelect}\r\n changeHierarchy={changeHierarchy}\r\n onClickNode={onClickNode}\r\n />\r\n </ul>\r\n </div>\r\n <a\r\n className=\"oc-download-btn hidden\"\r\n ref={downloadButton}\r\n href={dataURL}\r\n download={download}\r\n >\r\n \r\n </a>\r\n <div className={`oc-mask ${exporting ? \"\" : \"hidden\"}`}>\r\n <i className=\"oci oci-spinner spinner\"></i>\r\n </div>\r\n </div>\r\n\r\n );\r\n }\r\n);\r\n\r\nChartContainer.propTypes = propTypes;\r\nChartContainer.defaultProps = defaultProps;\r\n\r\nexport default ChartContainer;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport \"./my-node.css\";\r\nimport { Grid } from '@material-ui/core';\r\nimport AccountCircleIcon from \"@material-ui/icons/AccountCircle\";\r\n\r\nconst propTypes = {\r\n nodeData: PropTypes.object.isRequired\r\n};\r\n\r\nconst MyNode = ({ nodeData }) => {\r\n return (\r\n <div>\r\n <div\r\n className=\"position\"\r\n style={{\r\n borderTop: \"1px solid\",\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\"\r\n }}>\r\n {nodeData.title}\r\n </div>\r\n <div className=\"fullname\">{nodeData.name}</div>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"center\"\r\n alignItems=\"center\"\r\n className=\"total\"\r\n style={{\r\n borderTop: \"1px solid\",\r\n borderBottomLeftRadius: 8,\r\n borderBottomRightRadius: 8,\r\n }}>\r\n <AccountCircleIcon />\r\n {nodeData.total}\r\n </Grid>\r\n </div>\r\n );\r\n};\r\n\r\nMyNode.propTypes = propTypes;\r\n\r\nexport default MyNode;\r\n","import React, { useRef, useState } from \"react\";\r\nimport JSONDigger from \"json-digger\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport OrganizationChart from \"../../../Component/TreeChart/ChartContainer\";\r\nimport { TextField, Card, Grid, Button } from '@material-ui/core'\r\nimport MyNode from \"./my-node\";\r\nimport colors from '../../../assets/Color'\r\nimport Header from '../Header'\r\n\r\nconst StructDepartment = () => {\r\n const orgchart = useRef();\r\n const datasource = {\r\n id: \"n1\",\r\n name: \"Trần Văn A\",\r\n title: \"Quản lý công ty\",\r\n total: \"4\",\r\n children: [\r\n { id: \"n2\", name: \"Nguyễn Văn B\", title: \"Phòng nhân sự\", total: \"0\" },\r\n {\r\n id: \"n3\",\r\n name: \"VanHongKong\",\r\n title: \"Phòng kỹ thuật\",\r\n total: \"3\",\r\n children: [\r\n { id: \"n4\", name: \"Lê Văn D\", title: \"Đội NodeJs\", total: \"0\" },\r\n {\r\n id: \"n5\",\r\n name: \"Trần Đức Giang\",\r\n title: \"Đội ReactJs\",\r\n total: \"2\",\r\n children: [\r\n { id: \"n6\", name: \"Tùng\", title: \"TTS\", total: \"0\" },\r\n { id: \"n7\", name: \"Trí\", title: \"TTS\", total: \"0\", }\r\n ]\r\n },\r\n { id: \"n8\", name: \"Cường\", title: \"Đội Java\", total: \"0\" }\r\n ]\r\n },\r\n { id: \"n9\", name: \"Messi\", title: \"Phòng kế toán\", total: \"0\" },\r\n {\r\n id: \"n10\",\r\n name: \"Bruno\",\r\n title: \"Phòng Marketing\",\r\n total: \"1\",\r\n children: [{ id: \"n11\", name: \"Degea\", title: \"Đội marketing\", total: \"0\", }]\r\n }\r\n ]\r\n };\r\n const [ds, setDS] = useState(datasource);\r\n const dsDigger = new JSONDigger(ds, \"id\", \"children\");\r\n\r\n const [selectedNodes, setSelectedNodes] = useState(new Set());\r\n const [newNodeName, setNewNodeName] = useState(\"\");\r\n const [newNodeTitle, setNewNodeTitle] = useState(\"\");\r\n const [isEditMode, setIsEditMode] = useState(false);\r\n\r\n // const [isMultipleSelect, setIsMultipleSelect] = useState(false);\r\n\r\n const readSelectedNode = nodeData => {\r\n console.log(nodeData)\r\n setIsEditMode(true)\r\n setNewNodeName(nodeData.name);\r\n setNewNodeTitle(nodeData.title);\r\n setSelectedNodes(new Set([nodeData]));\r\n };\r\n\r\n const clearSelectedNode = () => {\r\n setSelectedNodes(new Set());\r\n };\r\n\r\n const onNameChange = e => {\r\n setNewNodeName(e.target.value);\r\n };\r\n\r\n const onTitleChange = e => {\r\n setNewNodeTitle(e.target.value);\r\n };\r\n\r\n const updateNodes = async () => {\r\n console.log(selectedNodes)\r\n if (selectedNodes.size != 0) {\r\n await dsDigger.updateNodes([...selectedNodes].map(node => node.id), { id: uuidv4(), name: newNodeName, title: newNodeTitle });\r\n setDS({ ...dsDigger.ds });\r\n }\r\n\r\n\r\n\r\n };\r\n\r\n // Multiple Select\r\n // const onMultipleSelectChange = e => {\r\n // setIsMultipleSelect(e.target.checked);\r\n // };\r\n\r\n // const onModeChange = e => {\r\n // setIsEditMode(e.target.checked);\r\n // if (e.target.checked) {\r\n // orgchart.current.expandAllNodes();\r\n // }\r\n // };\r\n\r\n return (\r\n <div>\r\n <Header />\r\n <div style={{height:20}} />\r\n <Card >\r\n <div style={{ paddingBottom:20,paddingRight:20,paddingLeft:20,paddingTop:10}}>\r\n <Grid container direction=\"row\" justify=\"space-between\" alignItems='center' >\r\n \r\n <TextField\r\n label=\"Tên\"\r\n value={newNodeName}\r\n onChange={onNameChange}\r\n />\r\n <TextField\r\n label=\"Phòng ban\"\r\n value={newNodeTitle}\r\n onChange={onTitleChange}\r\n />\r\n <div style={{ paddingTop: 25 }}>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n disabled={!isEditMode}\r\n onClick={updateNodes}\r\n style={{ marginLeft: \"auto\", backgroundColor: colors.main,color:'white' }}\r\n >\r\n Cập nhật\r\n </Button>\r\n </div>\r\n </Grid>\r\n </div>\r\n\r\n <OrganizationChart\r\n chartClass=\"myChart\"\r\n NodeTemplate={MyNode}\r\n ref={orgchart}\r\n datasource={ds}\r\n collapsible={!isEditMode}\r\n // multipleSelect={isMultipleSelect}\r\n onClickNode={readSelectedNode}\r\n onClickChart={clearSelectedNode}\r\n />\r\n \r\n </Card>\r\n\r\n \r\n </div>\r\n );\r\n};\r\n\r\nexport default StructDepartment;","import DrawerView from \"../../Drawer\";\r\nimport StructDepartment from './StructDepartment';\r\n\r\nconst StructContainer = (props) => {\r\n return (\r\n <DrawerView>\r\n <StructDepartment />\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default StructContainer;\r\n","import Container from \"@material-ui/core/Container\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport { Button, Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\n\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\nimport DomainIcon from \"@material-ui/icons/Domain\";\r\nimport AssessmentIcon from \"@material-ui/icons/Assessment\";\r\nimport EmailIcon from \"@material-ui/icons/Email\";\r\nimport EventIcon from \"@material-ui/icons/Event\";\r\nimport ArrowRightAltIcon from \"@material-ui/icons/ArrowRightAlt\";\r\nimport CalendarViewDayIcon from \"@material-ui/icons/CalendarViewDay\";\r\nimport DateRangeIcon from \"@material-ui/icons/DateRange\";\r\nimport PersonIcon from \"@material-ui/icons/Person\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst MeetingHeader = (props) => {\r\n return (\r\n <Grid container style={{ marginTop: 20 }}>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#dd4b39\",\r\n paddingTop: 20,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <CalendarViewDayIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n marginRight: \"10px\",\r\n }}\r\n />\r\n </Grid>\r\n <Grid item>\r\n <Typography variant=\"h3\"> 3</Typography>\r\n <Typography variant=\"p\">Hôm nay</Typography>\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#f39c12\",\r\n paddingTop: 20,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <ArrowRightAltIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n marginRight: \"10px\",\r\n }}\r\n />\r\n </Grid>\r\n <Grid item>\r\n <Typography variant=\"h3\"> 5</Typography>\r\n <Typography variant=\"p\">Ngày mai</Typography>\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#00c0ef\",\r\n paddingTop: 20,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <DateRangeIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n marginRight: \"10px\",\r\n }}\r\n />\r\n </Grid>\r\n <Grid item>\r\n <Typography variant=\"h3\"> 8</Typography>\r\n <Typography variant=\"p\">Tuần này</Typography>\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n\r\n <Grid item lg={3} md={6} sm={12}>\r\n <Card\r\n style={{\r\n backgroundColor: \"#00a65a\",\r\n paddingTop: 20,\r\n }}\r\n >\r\n <Grid\r\n container\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n style={{ color: \"white\", paddingLeft: 10, paddingRight: 10 }}\r\n >\r\n <Grid item>\r\n <PersonIcon\r\n style={{\r\n width: 100,\r\n height: 100,\r\n color: \"rgba(0,0,0,0.15)\",\r\n marginRight: \"10px\",\r\n }}\r\n />\r\n </Grid>\r\n <Grid item>\r\n <Typography variant=\"h3\"> 6</Typography>\r\n <Typography variant=\"p\">Tạo bởi tôi</Typography>\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default MeetingHeader;\r\n","import React, { useState } from \"react\";\r\nimport { Button, Grid, Paper, Card, Typography } from \"@material-ui/core\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n Calendar,\r\n} from \"@material-ui/pickers\";\r\n\r\nconst Body = (props) => {\r\n const [date, changeDate] = useState(new Date());\r\n const handleChangeDate = (date) => {\r\n changeDate(date);\r\n };\r\n return (\r\n <Grid container spacing={3}>\r\n <Grid item xs={9}>\r\n <Card>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n border: \"1px solid rgb(210, 195, 195)\",\r\n paddingBottom: \"25px\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n borderBottom: \"1px solid rgb(210, 195, 195)\",\r\n padding: \"7px\",\r\n }}\r\n >\r\n Hôm nay\r\n </div>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n style={{ padding: \"8px\", borderBottom: \"1px solid #a99898;\" }}\r\n >\r\n <Grid item style={{ marginRight: \"10px\" }}>\r\n <div\r\n style={{\r\n width: \"150px\",\r\n height: \"50px\",\r\n backgroundColor: \"#e04545\",\r\n }}\r\n ></div>\r\n <div\r\n style={{\r\n width: \"150px\",\r\n height: \"50px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <span\r\n style={{\r\n margin: \"0 auto\",\r\n fontWeight: \"bold\",\r\n fontSize: \"15px\",\r\n }}\r\n >\r\n 10:30\r\n </span>\r\n </div>\r\n </Grid>\r\n <Grid item style={{ marginRight: \"165px\" }}>\r\n <b>Họp triển khai dự án mới</b>\r\n <br />\r\n Tạo bởi<span> doanpv</span> vào lúc\r\n <span> 09:30 15/12/2020</span>\r\n <br />\r\n Chủ trì<span> P.kỹ thuật</span>\r\n </Grid>\r\n <Grid item style={{ marginRight: \"95px\" }}>\r\n <span>Tham gia</span>\r\n <br />\r\n <h1 style={{ fontSize: \"45px\", margin: \"0px\" }}>10</h1>\r\n </Grid>\r\n <Grid item>\r\n <div style={{ textAlign: \"center\", marginTop: \"-8px\" }}>\r\n Quan trọng\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n marginTop: \"10px\",\r\n marginBottom: \"-13px\",\r\n }}\r\n >\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"green\" }}\r\n >\r\n <VisibilityIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"#3C8DBC\" }}\r\n >\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </div>\r\n </Grid>\r\n </Grid>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n style={{ padding: \"8px\", borderBottom: \"1px solid #a99898\" }}\r\n >\r\n <Grid item style={{ marginRight: \"10px\" }}>\r\n <div\r\n style={{\r\n width: \"150px\",\r\n height: \"50px\",\r\n backgroundColor: \"#e04545\",\r\n }}\r\n ></div>\r\n <div\r\n style={{\r\n width: \"150px\",\r\n height: \"50px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <span\r\n style={{\r\n margin: \"0 auto\",\r\n fontWeight: \"bold\",\r\n fontSize: \"15px\",\r\n }}\r\n >\r\n 10:30\r\n </span>\r\n </div>\r\n </Grid>\r\n <Grid item style={{ marginRight: \"165px\" }}>\r\n <b>Họp triển khai dự án mới</b>\r\n <br />\r\n Tạo bởi<span> doanpv</span> vào lúc\r\n <span> 09:30 15/12/2020</span>\r\n <br />\r\n Chủ trì<span> P.kỹ thuật</span>\r\n </Grid>\r\n <Grid item style={{ marginRight: \"95px\" }}>\r\n <span>Tham gia</span>\r\n <br />\r\n <h1 style={{ fontSize: \"45px\", margin: \"0px\" }}>10</h1>\r\n </Grid>\r\n <Grid item>\r\n <div style={{ textAlign: \"center\", marginTop: \"-8px\" }}>\r\n Quan trọng\r\n </div>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n marginTop: \"10px\",\r\n marginBottom: \"-13px\",\r\n }}\r\n >\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"green\" }}\r\n >\r\n <VisibilityIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n style={{ color: \"#3C8DBC\" }}\r\n >\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n <IconButton\r\n aria-label=\"delete\"\r\n size=\"large\"\r\n color=\"secondary\"\r\n >\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </div>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n </Card>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <Card>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <Calendar date={date} onChange={handleChangeDate}></Calendar>\r\n </MuiPickersUtilsProvider>\r\n </Card>\r\n <br />\r\n <Card>\r\n <div\r\n style={{\r\n width: \"100%\",\r\n border: \"1px solid #a99898\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n borderBottom: \"1px solid #a99898\",\r\n width: \"100%\",\r\n padding: \"5px\",\r\n }}\r\n >\r\n Thông báo\r\n </div>\r\n <div style={{ padding: \"5px\" }}>Hôm nay cả công ty liên hoan</div>\r\n </div>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default Body;\r\n","import React from \"react\";\r\nimport Header from \"./Header\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport Body from \"./Body\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\n\r\nconst MeetingView = () => {\r\n return (\r\n <div styles={{ flexGrow: 1 }}>\r\n <Grid container spacing={3}>\r\n <Grid item sm={12}>\r\n <Header />\r\n </Grid>\r\n <Grid item sm={12}>\r\n <Body />\r\n </Grid>\r\n </Grid>\r\n </div>\r\n );\r\n};\r\n\r\nexport default MeetingView;\r\n","import React from \"react\";\r\nimport MeetingView from \"./MeetingView\";\r\nimport DrawerView from \"../Drawer\";\r\n\r\nconst MeetingContainer = () => {\r\n return (\r\n <DrawerView>\r\n <MeetingView></MeetingView>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default MeetingContainer;\r\n","import React from 'react'\r\nimport {Button} from \"@material-ui/core\";\r\nimport DrawerView from '../../Drawer';\r\nimport { useSnackbar } from 'notistack';\r\n\r\n\r\nconst ReportSalary =(props)=>{\r\n const { enqueueSnackbar } = useSnackbar();\r\n const handleClickVariant = (variant) => () => {\r\n enqueueSnackbar('This is a success message is is a success message is is a success message!', { variant });\r\n };\r\n\r\n return(\r\n <DrawerView>\r\n <Button onClick={handleClickVariant('success')}>Show success snackbar</Button>\r\n </DrawerView>\r\n )\r\n}\r\n\r\nexport default ReportSalary;\r\n\r\n","import React from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst departments = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"KT\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"HR\",\r\n label: \"Nhân sự\",\r\n },\r\n];\r\n\r\nconst lettertypes = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"1\",\r\n label: \"Nghỉ chế độ\",\r\n },\r\n {\r\n value: \"2\",\r\n label: \"Chấm công bù\",\r\n },\r\n {\r\n value: \"3\",\r\n label: \"Khiếu nại\",\r\n },\r\n {\r\n value: \"4\",\r\n label: \"Nghỉ phép năm\",\r\n },\r\n {\r\n value: \"5\",\r\n label: \"Nghỉ không lương\",\r\n },\r\n];\r\n\r\nconst _status = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"5\",\r\n label: \"HR xác nhận\",\r\n },\r\n {\r\n value: \"6\",\r\n label: \"HR từ chối\",\r\n },\r\n];\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: \"25ch\",\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst Header = (props) => {\r\n const classes = useStyles();\r\n\r\n const [department, setDepartment] = React.useState(\"\");\r\n const [status, setStatus] = React.useState(\"\");\r\n const [letter, setLetter] = React.useState(\"\");\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n\r\n const handleSelectStatus = (event) => {\r\n setStatus(event.target.value);\r\n };\r\n\r\n const handleSelectLetter = (event) => {\r\n setLetter(event.target.value);\r\n };\r\n\r\n return (\r\n <Grid\r\n style={{ paddingLeft: 20, paddingRight: 20, paddingBottom: 20 }}\r\n container\r\n spacing={3}\r\n alignContent={\"center\"}\r\n justify={\"space-around\"}\r\n >\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n onChange={handleSelectDepartment}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n >\r\n {departments.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField id=\"standard-basic\" label=\"Họ Tên\" />\r\n </form>\r\n\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Loại đơn\"\r\n value={letter}\r\n onChange={handleSelectLetter}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n >\r\n {lettertypes.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n select\r\n label=\"Trạng thái\"\r\n value={status}\r\n onChange={handleSelectStatus}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n >\r\n {_status.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport DoneIcon from \"@material-ui/icons/Done\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport { Card, Button, Grid, TextField } from \"@material-ui/core\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport {\r\n agreeComplain,\r\n getDetailComplain,\r\n disagreeComplain,\r\n} from \"../../apis/Functions/letter\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nimport axios from \"axios\";\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 500,\r\n },\r\n});\r\n\r\nexport default function TableLetter(props) {\r\n const classes = useStyles();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const [pageCurrent, setPageCurrent] = useState(props.pageCurrent);\r\n const [openAgree, setOpenAgree] = useState(false);\r\n const [openDisagree, setOpenDisagree] = useState(false);\r\n const [state, setState] = useState({\r\n complainId: \"\",\r\n type: 0,\r\n employeeCode: \"\",\r\n statusCheckIn: 0,\r\n hrComment: \"\",\r\n });\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const goToEmployee = () => {\r\n history.push(\"/profile\");\r\n };\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n\r\n const handleCloseAgree = () => {\r\n setOpenAgree(false);\r\n };\r\n\r\n const handleOpenAgree = async (id) => {\r\n let res = await getDetailComplain({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n complainId: content.id,\r\n type: content.type,\r\n employeeCode: content.employeeCode,\r\n });\r\n setOpenAgree(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleOpenDisagree = async (id) => {\r\n let res = await getDetailComplain({ id: id });\r\n if (res.data && res.data.errorCode === 0) {\r\n let content = res.data.data;\r\n setState({\r\n ...state,\r\n complainId: content.id,\r\n type: content.type,\r\n employeeCode: content.employeeCode,\r\n hrComment: \"\",\r\n });\r\n setOpenDisagree(true);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleCloseDisagree = () => {\r\n setOpenDisagree(false);\r\n };\r\n\r\n const handleAgreeComplain = async () => {\r\n let res = await agreeComplain(state);\r\n if (res.data && res.data.errorCode === 200) {\r\n enqueueSnackbar(\"Đồng ý đơn từ thành công\", { variant: \"success\" });\r\n if (props.rows.length == 1) {\r\n setPage(page - 1);\r\n setPageCurrent(pageCurrent - 1);\r\n props.changePage(page);\r\n }\r\n props.changeStatusUpdate(Math.random() * 10);\r\n setOpenAgree(false);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n const handleDisagreeComplain = async () => {\r\n let res = await disagreeComplain(state);\r\n if (res.data && res.data.errorCode === 200) {\r\n enqueueSnackbar(\"Từ chối đơn từ thành công\", { variant: \"success\" });\r\n if (props.rows.length == 1) {\r\n setPage(page - 1);\r\n setPageCurrent(pageCurrent - 1);\r\n props.changePage(page);\r\n }\r\n props.changeStatusUpdate(Math.random() * 10);\r\n setOpenDisagree(false);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 1000);\r\n } else {\r\n enqueueSnackbar(\"Lỗi\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setPageCurrent(props.pageCurrent);\r\n }, [props.pageCurrent]);\r\n\r\n return (\r\n <div className={classes.root}>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 160, textAlign: \"center\" }}>\r\n Trạng thái\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell>\r\n {row.status == 5 ? (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00A65A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\">HR xác nhận</Typography>\r\n </div>\r\n ) : row.status == 6 ? (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#FF8C1A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\">HR từ chối</Typography>\r\n </div>\r\n ) : row.status == 3 ? (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00A65A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\">\r\n Leader xác nhận\r\n </Typography>\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#FF8C1A\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\">\r\n Leader từ chối\r\n </Typography>\r\n </div>\r\n )}\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <Grid container justify={\"center\"} style={{ padding: 10 }}>\r\n <Pagination\r\n count={Math.ceil(props.totalPage / 10)}\r\n color=\"secondary\"\r\n page={pageCurrent}\r\n onChange={(event, page) => {\r\n setPageCurrent(page);\r\n props.changePage(parseInt(page) - 1);\r\n }}\r\n />\r\n </Grid>\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Grid, Paper, Typography } from \"@material-ui/core\";\r\n\r\nimport DrawerView from \"../Drawer\";\r\nimport Header from \"./Header\";\r\nimport TableLetter from \"../../Component/Table/TableLetterHandled\";\r\nimport {\r\n formatTimeStampDDMM,\r\n formatTimeStampHHMM,\r\n} from \"../../config/Function\";\r\n\r\nfunction createData(\r\n id,\r\n employeeCode,\r\n email,\r\n type,\r\n fromDate,\r\n toDate,\r\n reason,\r\n status\r\n) {\r\n switch (type) {\r\n case 1:\r\n type = \"Nghỉ chế độ\";\r\n break;\r\n case 2:\r\n type = \"Chấm công bù\";\r\n break;\r\n case 3:\r\n type = \"Khiếu nại\";\r\n break;\r\n case 4:\r\n type = \"Nghỉ phép năm\";\r\n break;\r\n case 5:\r\n type = \"Nghỉ không lương\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n id,\r\n employeeCode,\r\n email,\r\n type,\r\n date:\r\n formatTimeStampHHMM(fromDate) +\r\n \"-\" +\r\n formatTimeStampHHMM(toDate) +\r\n \" \" +\r\n formatTimeStampDDMM(fromDate),\r\n reason,\r\n status,\r\n };\r\n}\r\n\r\nconst columns = [\r\n { id: \"employeeCode\", label: \"Mã nhân viên\", minWidth: 40 },\r\n {\r\n id: \"email\",\r\n label: \"Email\",\r\n minWidth: 170,\r\n align: \"left\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"type\",\r\n label: \"Loại đơn\",\r\n minWidth: 100,\r\n align: \"center\",\r\n format: (value) => value.toLocaleString(\"en-US\"),\r\n },\r\n {\r\n id: \"date\",\r\n label: \"Thời gian\",\r\n minWidth: 170,\r\n align: \"center\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n {\r\n id: \"reason\",\r\n label: \"Lý do\",\r\n minWidth: 350,\r\n align: \"center\",\r\n format: (value) => value.toFixed(2),\r\n },\r\n];\r\n\r\nconst LetterView = (props) => {\r\n const [list, setList] = useState([]);\r\n useEffect(() => {\r\n const listPush = [];\r\n if (props.list.data) {\r\n props.list.data.forEach((el) => {\r\n listPush.push(\r\n createData(\r\n el.id,\r\n el.employeeCode,\r\n el.companyEmail,\r\n el.type,\r\n el.fromDate,\r\n el.toDate,\r\n el.reason,\r\n el.status\r\n )\r\n );\r\n });\r\n setList(listPush);\r\n }\r\n }, [props.list]);\r\n return (\r\n <DrawerView>\r\n <Typography variant=\"h5\">Quản lý đơn từ đã xử lý</Typography>\r\n <br />\r\n <Paper>\r\n <Grid container direction=\"row\">\r\n <Grid item xs={12}>\r\n <Header />\r\n </Grid>\r\n <Grid xs={12} item>\r\n <TableLetter\r\n rows={list}\r\n columns={columns}\r\n changePage={props.changePage}\r\n totalPage={props.totalRows}\r\n changeStatusUpdate={props.changeStatusUpdate}\r\n pageCurrent={props.pageCurrent}\r\n />\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default LetterView;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { getListLetterPaging } from \"../../apis/Functions/letter\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nimport LetterView from \"./LetterHandledView\";\r\n\r\nconst LetterContainer = (props) => {\r\n const [data, setData] = useState([]);\r\n const [page, setPage] = useState(0);\r\n const [pageCurrent, setPageCurrent] = useState(0);\r\n const [statusUpdate, setStatusUpdate] = useState(0);\r\n const [totalRows, setTotalRows] = useState(0);\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const changePage = (page) => {\r\n setPage(page);\r\n setPageCurrent(page);\r\n };\r\n\r\n const changeStatusUpdate = (update) => {\r\n setStatusUpdate(update);\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [page, statusUpdate]);\r\n\r\n const getData = async () => {\r\n const res = await getListLetterPaging({\r\n pageIndex: page + 1,\r\n pageSize: 10,\r\n orderBy: \"createdAt\",\r\n directionSort: \"DESC\",\r\n complainStatus: \"3,4,5,6\",\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n setData(res.data);\r\n setTotalRows(res.data.metaData.outRowsNumber);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <LetterView\r\n list={data}\r\n changePage={changePage}\r\n totalRows={totalRows}\r\n pageCurrent={pageCurrent + 1}\r\n changeStatusUpdate={changeStatusUpdate}\r\n />\r\n );\r\n};\r\nexport default LetterContainer;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport DrawerView from \"../Drawer\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport PiceChart from \"../../Component/Chart/PiceChart\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n KeyboardDatePicker,\r\n MuiPickersUtilsProvider,\r\n} from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { typeHRReport, statusHRReport } from \"../../apis/Functions/letter\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\n\r\nconst departments = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"KT\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"HR\",\r\n label: \"Nhân sự\",\r\n },\r\n];\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n}));\r\n\r\nconst LetterReportView = () => {\r\n const history = useHistory();\r\n const classes = useStyles();\r\n const [datatypeHR, setDataTypeHR] = useState([]);\r\n const [dataStatusHR, setDataStatusHR] = useState([]);\r\n const [department, setDepartment] = useState(\"\");\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const getData = async () => {\r\n const [res, res2] = await Promise.all([\r\n typeHRReport({ depCode: department }),\r\n statusHRReport({ depCode: department }),\r\n ]);\r\n if (res.data && res.data.errorCode == 0) {\r\n setDataTypeHR([\r\n { region: \"Chấm công bù\", val: res.data.data.chamCongBu },\r\n { region: \"Nghỉ phép\", val: res.data.data.nghiPhep },\r\n { region: \"Khiếu nại\", val: res.data.data.khieuNai },\r\n ]);\r\n setDataStatusHR([\r\n { region: \"Chờ xử lý\", val: res2.data.data.pending },\r\n { region: \"Đã xử lý\", val: res2.data.data.processed },\r\n { region: \"Chấp nhận\", val: res2.data.data.approved },\r\n { region: \"Từ chối\", val: res2.data.data.rejected },\r\n ]);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [department]);\r\n\r\n const [selectedDate, setSelectedDate] = React.useState(Date.now());\r\n\r\n const handleDateChange = (date) => {\r\n setSelectedDate(date);\r\n };\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n return (\r\n <DrawerView>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid xs={6} item>\r\n <Paper\r\n style={{\r\n fontSize: \"23px\",\r\n padding: \"5px\",\r\n paddingTop: \"15px\",\r\n paddingBottom: \"15px\",\r\n }}\r\n >\r\n Thống kê các loại đơn từ và trạng thái\r\n </Paper>\r\n </Grid>\r\n <Grid xs={6} item>\r\n <Paper\r\n style={{\r\n fontSize: \"23px\",\r\n padding: \"5px\",\r\n paddingTop: \"15px\",\r\n paddingBottom: \"15px\",\r\n }}\r\n >\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid\r\n xs={6}\r\n item\r\n style={{\r\n paddingBottom: \"0px\",\r\n paddingTop: \"0px\",\r\n paddingLeft: \"30px\",\r\n }}\r\n >\r\n <FormControl\r\n className={classes.formControl}\r\n style={{ margin: \"0px\", minWidth: \"160px\" }}\r\n >\r\n <TextField\r\n id=\"outlined-select-currency-native\"\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n onChange={handleSelectDepartment}\r\n >\r\n {departments.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n </Grid>\r\n <Grid\r\n xs={6}\r\n item\r\n style={{ paddingTop: \"0px\", paddingBottom: \"0px\" }}\r\n >\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{\r\n paddingRight: 10,\r\n paddingLeft: 20,\r\n }}\r\n views={[\"year\", \"month\"]}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"MM/yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDate}\r\n onChange={handleDateChange}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </Grid>\r\n </Grid>\r\n <br />\r\n <Grid container spacing={3}>\r\n <Grid xs={12} item>\r\n <Grid container direction=\"row\" spacing={3}>\r\n <Grid xs={12} sm={6} item>\r\n <PiceChart data={datatypeHR} title=\"Loại đơn từ\" />\r\n </Grid>\r\n <Grid xs={12} sm={6} item>\r\n <PiceChart data={dataStatusHR} title=\"Trạng thái\" />\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default LetterReportView;\r\n","import React from \"react\";\r\nimport LetterReportView from \"./LetterReportView\";\r\n\r\nconst LetterReportContainer = () => {\r\n return <LetterReportView />;\r\n};\r\n\r\nexport default LetterReportContainer;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n Grid,\r\n TextField,\r\n Paper,\r\n Button,\r\n Card,\r\n Typography,\r\n FormControl,\r\n Select,\r\n InputLabel,\r\n} from \"@material-ui/core\";\r\nimport SearchIcon from \"@material-ui/icons/Search\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from \"@material-ui/pickers\";\r\nimport { formatTimeStampMMDDYYYY } from \"../../config/Function\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n width: \"25ch\",\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst departments = [\r\n {\r\n value: \" \",\r\n label: \"Tất cả\",\r\n },\r\n {\r\n value: \"KT\",\r\n label: \"Kỹ thuật\",\r\n },\r\n {\r\n value: \"HR\",\r\n label: \"Nhân sự\",\r\n },\r\n];\r\n\r\nconst Header = (props) => {\r\n const classes = useStyles();\r\n const [state, setState] = React.useState({\r\n room: \"\",\r\n name: \"\",\r\n });\r\n\r\n const [department, setDepartment] = useState(\"\");\r\n\r\n const handleSelectDepartment = (event) => {\r\n setDepartment(event.target.value);\r\n };\r\n\r\n const handleChange = (event) => {\r\n const name = event.target.name;\r\n setState({\r\n ...state,\r\n [name]: event.target.value,\r\n });\r\n };\r\n\r\n const formatTimeFrom = (time) => {\r\n let dateFrom = formatTimeStampMMDDYYYY(time).split(\"/\");\r\n let dateFromNew = dateFrom[0] + \"/\" + \"01\" + \"/\" + dateFrom[2];\r\n return dateFromNew;\r\n };\r\n\r\n const [selectedDateFrom, setSelectedDateFrom] = React.useState(\r\n new Date(formatTimeFrom(new Date()))\r\n );\r\n\r\n const handleDateChangeFrom = (date) => {\r\n setSelectedDateFrom(date);\r\n };\r\n\r\n const [selectedDateEnd, setSelectedDateEnd] = React.useState(Date.now());\r\n\r\n const handleDateChangeEnd = (date) => {\r\n setSelectedDateEnd(date);\r\n };\r\n\r\n const search = () => {\r\n console.log(state);\r\n console.log(selectedDateFrom);\r\n };\r\n return (\r\n <Grid style={{ padding: 20 }} container spacing={3}>\r\n <Grid item xs={3}>\r\n <FormControl className={classes.formControl}>\r\n <TextField\r\n id=\"outlined-select-currency-native\"\r\n select\r\n label=\"Phòng ban\"\r\n value={department}\r\n SelectProps={{\r\n native: true,\r\n }}\r\n onChange={handleSelectDepartment}\r\n >\r\n {departments.map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </TextField>\r\n </FormControl>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <form className={classes.root} noValidate autoComplete=\"off\">\r\n <TextField\r\n id=\"standard-basic\"\r\n label=\"Tên\"\r\n onChange={(e) => {\r\n setState({\r\n ...state,\r\n name: e.target.value,\r\n });\r\n }}\r\n />\r\n </form>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <span style={{ paddingTop: \"15px\", fontSize: \"15px\" }}>Từ ngày</span>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{\r\n paddingRight: 10,\r\n paddingLeft: 20,\r\n width: \"70%\",\r\n marginTop: \"25px\",\r\n }}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"dd/MM/yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDateFrom}\r\n onChange={handleDateChangeFrom}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </Grid>\r\n </Grid>\r\n <Grid item xs={3}>\r\n <Grid\r\n container\r\n direction=\"row\"\r\n justify=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <span style={{ paddingTop: \"15px\", fontSize: \"15px\" }}>Đến ngày</span>\r\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\r\n <KeyboardDatePicker\r\n style={{\r\n paddingRight: 10,\r\n paddingLeft: 20,\r\n width: \"70%\",\r\n marginTop: \"25px\",\r\n }}\r\n disableToolbar\r\n variant=\"inline\"\r\n format=\"dd/MM/yyyy\"\r\n margin=\"normal\"\r\n id=\"date-picker-inline\"\r\n value={selectedDateEnd}\r\n onChange={handleDateChangeEnd}\r\n KeyboardButtonProps={{\r\n \"aria-label\": \"change date\",\r\n }}\r\n />\r\n </MuiPickersUtilsProvider>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport DoneIcon from \"@material-ui/icons/Done\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TablePagination from \"@material-ui/core/TablePagination\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport { Button, Grid } from \"@material-ui/core\";\r\nimport Pagination from \"@material-ui/lab/Pagination\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#e6e6e6\",\r\n },\r\n body: {\r\n fontSize: 16,\r\n },\r\n}))(TableCell);\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: \"100%\",\r\n },\r\n container: {\r\n maxHeight: 440,\r\n },\r\n});\r\n\r\nexport default function StickyHeadTable(props) {\r\n // console.log(props.totalPage);\r\n const classes = useStyles();\r\n let history = useHistory();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n const [pageCurrent, setPageCurrent] = useState(props.pageCurrent);\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n props.changePage(newPage);\r\n };\r\n\r\n useEffect(() => {\r\n setPageCurrent(props.pageCurrent);\r\n }, [props.pageCurrent]);\r\n\r\n return (\r\n <div className={classes.root}>\r\n <TableContainer className={classes.container}>\r\n <Table stickyHeader aria-label=\"sticky table\">\r\n <TableHead>\r\n <TableRow>\r\n {props.columns.map((column) => (\r\n <StyledTableCell\r\n key={column.id}\r\n align={column.align}\r\n style={{ minWidth: column.minWidth }}\r\n >\r\n {column.label}\r\n </StyledTableCell>\r\n ))}\r\n <StyledTableCell style={{ width: 100, textAlign: \"center\" }}>\r\n Hoạt động\r\n </StyledTableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.rows.map((row) => {\r\n return (\r\n <TableRow hover role=\"checkbox\" tabIndex={-1} key={row.code}>\r\n {props.columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n <TableCell key={column.id} align={column.align}>\r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n </TableCell>\r\n );\r\n })}\r\n <TableCell>\r\n <Button\r\n onClick={() =>\r\n history.push(`/timekeepingDetail/${row.employeeCode}`)\r\n }\r\n style={{\r\n padding: 2,\r\n backgroundColor: \"#00c0ef\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n }}\r\n >\r\n <Typography variant=\"caption\"> Chi tiết</Typography>\r\n </Button>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n <Grid container justify={\"center\"} style={{ padding: 10 }}>\r\n <Pagination\r\n count={Math.ceil(props.totalPage / 10)}\r\n color=\"secondary\"\r\n page={pageCurrent}\r\n onChange={(event, page) => {\r\n setPageCurrent(page);\r\n props.changePage(parseInt(page) - 1);\r\n }}\r\n />\r\n </Grid>\r\n </div>\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport DrawerView from \"../Drawer\";\r\nimport { Grid, Paper } from \"@material-ui/core\";\r\nimport Header from \"./Header\";\r\nimport TableTimeKeepingAll from \"../../Component/Table/TableTimeKeepingAll\";\r\nimport TableLetter from \"../../Component/Table/TableLetter\";\r\nimport { formatTimeStampDDMMYYYY } from \"../../config/Function\";\r\n\r\nfunction createData(\r\n employeeCode,\r\n employeeName,\r\n departmentCode,\r\n fromDate,\r\n toDate,\r\n validCheckIn,\r\n count_Dmvs,\r\n absent,\r\n pending\r\n) {\r\n return {\r\n employeeCode,\r\n employeeName,\r\n departmentCode,\r\n fromDate: formatTimeStampDDMMYYYY(fromDate),\r\n toDate: formatTimeStampDDMMYYYY(toDate),\r\n validCheckIn,\r\n count_Dmvs,\r\n absent,\r\n pending,\r\n };\r\n}\r\n\r\nconst columns = [\r\n { id: \"employeeName\", label: \"Tên\", minWidth: 80, align: \"left\" },\r\n {\r\n id: \"departmentCode\",\r\n label: \"Phòng ban\",\r\n minWidth: 100,\r\n align: \"left\",\r\n },\r\n {\r\n id: \"fromDate\",\r\n label: \"Từ ngày\",\r\n minWidth: 60,\r\n align: \"center\",\r\n },\r\n {\r\n id: \"toDate\",\r\n label: \"Đến ngày\",\r\n minWidth: 60,\r\n align: \"center\",\r\n },\r\n {\r\n id: \"validCheckIn\",\r\n label: \"Công hợp lệ\",\r\n minWidth: 60,\r\n align: \"center\",\r\n },\r\n {\r\n id: \"count_Dmvs\",\r\n label: \"Đi muộn về sớm\",\r\n minWidth: 60,\r\n align: \"center\",\r\n },\r\n {\r\n id: \"absent\",\r\n label: \"Vắng mặt\",\r\n minWidth: 60,\r\n align: \"center\",\r\n },\r\n {\r\n id: \"pending\",\r\n label: \"Chờ xử lý\",\r\n minWidth: 60,\r\n align: \"center\",\r\n },\r\n];\r\n\r\nconst TimeKeepingViewAll = (props) => {\r\n const [list, setList] = useState([]);\r\n useEffect(() => {\r\n const listPush = [];\r\n if (props.list.data) {\r\n props.list.data.forEach((el) => {\r\n listPush.push(\r\n createData(\r\n el.employeeCode,\r\n el.employeeName,\r\n el.departmentCode,\r\n el.fromDate,\r\n el.toDate,\r\n el.validCheckIn,\r\n el.count_Dmvs,\r\n el.absent,\r\n el.pending\r\n )\r\n );\r\n });\r\n setList(listPush);\r\n }\r\n console.log(listPush);\r\n }, [props.list]);\r\n return (\r\n <DrawerView>\r\n <Paper>\r\n <Grid container>\r\n <Grid item xs={12}>\r\n <Header changeDateFrom={props.changeDateFrom} />\r\n </Grid>\r\n <Grid item xs={12}>\r\n <TableTimeKeepingAll\r\n rows={list}\r\n columns={columns}\r\n changePage={props.changePage}\r\n totalPage={props.totalRows}\r\n pageCurrent={props.pageCurrent}\r\n ></TableTimeKeepingAll>\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </DrawerView>\r\n );\r\n};\r\n\r\nexport default TimeKeepingViewAll;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport TimeKeepingViewAll from \"./TimeKeepingViewAll\";\r\nimport KEY from \"../../assets/AsynStorage\";\r\nimport { getListCheckInPaging } from \"../../apis/Functions/checkin\";\r\nimport { formatTimeStampMMDDYYYY } from \"../../config/Function\";\r\n\r\nconst TimeKeepingContainerAll = (props) => {\r\n const [data, setData] = useState([]);\r\n const [page, setPage] = useState(0);\r\n const [pageCurrent, setPageCurrent] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n const [totalRows, setTotalRows] = useState(0);\r\n const { enqueueSnackbar } = useSnackbar();\r\n let history = useHistory();\r\n\r\n const changePage = (page) => {\r\n setPage(page);\r\n setPageCurrent(page);\r\n };\r\n\r\n const changeDateFrom = (time) => {};\r\n\r\n const formatTimeFrom = (time) => {\r\n let dateFrom = formatTimeStampMMDDYYYY(time).split(\"/\");\r\n let dateFromNew = dateFrom[2] + \"-\" + dateFrom[0] + \"-\" + \"01\";\r\n return dateFromNew;\r\n };\r\n\r\n const formatTimeEnd = (time) => {\r\n let dateFrom = formatTimeStampMMDDYYYY(time).split(\"/\");\r\n let dateFromNew = dateFrom[2] + \"-\" + dateFrom[0] + \"-\" + dateFrom[1];\r\n return dateFromNew;\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [page]);\r\n const getData = async () => {\r\n const res = await getListCheckInPaging({\r\n fromDate: formatTimeFrom(new Date()),\r\n toDate: formatTimeEnd(new Date()),\r\n pageIndex: page + 1,\r\n pageSize: 10,\r\n });\r\n if (res.data && res.data.errorCode == 0) {\r\n setData(res.data);\r\n setTotalRows(res.data.metaData.outRowsNumber);\r\n } else if (res.status == 403 || res.status == 401) {\r\n localStorage.removeItem(KEY.API_TOKEN);\r\n setTimeout(() => {\r\n history.push(\"/\");\r\n }, 100);\r\n } else {\r\n enqueueSnackbar(\"Error!\", { variant: \"error\" });\r\n }\r\n };\r\n return (\r\n <TimeKeepingViewAll\r\n list={data}\r\n changePage={changePage}\r\n totalRows={totalRows}\r\n pageCurrent={pageCurrent + 1}\r\n changeDateFrom={changeDateFrom}\r\n />\r\n );\r\n};\r\n\r\nexport default TimeKeepingContainerAll;\r\n","import { BrowserRouter, Switch, Route, Link } from \"react-router-dom\";\r\nimport { useHistory, Redirect } from \"react-router-dom\";\r\nimport React, { useEffect, useState } from \"react\";\r\n\r\nimport Login from \"./Login/LoginScreen\";\r\nimport Home from \"./Home/HomeContainer\";\r\nimport Employee from \"./Employee/EmployeeContainer\";\r\nimport Department from \"./Department/DepartmentContainer\";\r\nimport Report from \"./Report/ReportContainer\";\r\nimport TimeKeeping from \"./TimeKeeping/TimeKeepingContainer\";\r\nimport Letter from \"./Letter/LetterContainer\";\r\nimport DetailLetter from \"./Letter/DetailLetter/DetailLetterContainer\";\r\nimport Salary from \"./Salary/SalaryContainer\";\r\nimport DetailSalary from \"./DetailSalary/DetailSalaryContainer\";\r\nimport ProfileContainer from \"./Employee/Profile/ProfileContainer\";\r\nimport CreateEmployee from \"./Employee/CreateEmployee/CreateEmployeeContainer\";\r\nimport DetailEmployee from \"./Employee/DetailEmployee/DetailEmployeeContainer\";\r\nimport ReportEmployee from \"./Employee/ReportEmployee/ReportEmployeeContainer\";\r\nimport SetupTimeKeeping from \"./TimeKeeping/Setup/SetupContainer\";\r\nimport ReportTimeKeeping from \"./TimeKeeping/Report/ReportContainer\";\r\nimport CreateDepartment from \"./Department/CreateDepartment/CreateDepartment\";\r\nimport StructDepartment from \"./Department/Struct/StructContainer\";\r\nimport MeetingContainer from \"./Meeting/MeetingContainer\";\r\nimport ReportSalary from \"./Salary/ReportSalary/ReportSalary\";\r\nimport LetterHandled from \"./LetterHandled/LetterHandledContainer\";\r\nimport LetterReportContainer from \"./LetterReport/LetterReportContainer\";\r\n\r\nimport TimeKeepingContainerAll from \"./TimeKeepingAll/TimeKeepingContainerAll\";\r\nimport KEY from \"../assets/AsynStorage\";\r\n\r\nconst RootView = (props) => {\r\n let history = useHistory();\r\n function requireAuth() {\r\n let accessToken = localStorage.getItem(KEY.API_TOKEN);\r\n if (accessToken == \"\" || accessToken == null || accessToken == undefined) {\r\n }\r\n }\r\n\r\n function PrivateRoute({ children, ...rest }) {\r\n let accessToken = localStorage.getItem(KEY.API_TOKEN);\r\n return (\r\n <Route\r\n {...rest}\r\n render={({ location }) =>\r\n accessToken ? (\r\n children\r\n ) : (\r\n <Redirect\r\n to={{\r\n pathname: \"/\",\r\n state: { from: location },\r\n }}\r\n />\r\n )\r\n }\r\n />\r\n );\r\n }\r\n\r\n function PublicRoute({ children, ...rest }) {\r\n let accessToken = localStorage.getItem(KEY.API_TOKEN);\r\n return (\r\n <Route\r\n {...rest}\r\n render={({ location }) =>\r\n !accessToken ? (\r\n children\r\n ) : (\r\n <Redirect\r\n to={{\r\n pathname: \"/home\",\r\n state: { from: location },\r\n }}\r\n />\r\n )\r\n }\r\n />\r\n );\r\n }\r\n return (\r\n <Switch>\r\n <PrivateRoute path=\"/salary/report\">\r\n <ReportSalary />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/profile/:id\">\r\n <ProfileContainer />\r\n </PrivateRoute>\r\n <PrivateRoute exact path=\"/home\">\r\n <Home />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/department/create\">\r\n <CreateDepartment />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/department/struct\">\r\n <StructDepartment />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/department/report\">\r\n <Department />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/employee/createemployee\">\r\n <CreateEmployee />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/employee\">\r\n <Employee />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/report\">\r\n <Report />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/letterhandled\">\r\n <LetterHandled />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/letterreport\">\r\n <LetterReportContainer />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/detailemployee/:id\">\r\n <DetailEmployee />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/reportemployee\">\r\n <ReportEmployee />\r\n </PrivateRoute>\r\n\r\n <PrivateRoute path=\"/letter\">\r\n <Letter />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/timekeeping/report\">\r\n <ReportTimeKeeping />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/timekeeping/setup\">\r\n <SetupTimeKeeping />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/timekeeping\">\r\n <TimeKeepingContainerAll />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/timekeepingDetail/:id\">\r\n <TimeKeeping />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/detailletter\">\r\n <DetailLetter />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/salary\">\r\n <Salary />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/salarydetail\">\r\n <DetailSalary />\r\n </PrivateRoute>\r\n <PrivateRoute path=\"/meeting\">\r\n <MeetingContainer />\r\n </PrivateRoute>\r\n\r\n <PublicRoute path=\"/\">\r\n <Login />\r\n </PublicRoute>\r\n </Switch>\r\n );\r\n};\r\n\r\nexport default RootView;\r\n","import { put, takeLatest } from \"redux-saga/effects\";\r\n// @ts-ignore\r\n\r\nimport {\r\n LOGIN,\r\n UPDATE_INFOR,\r\n UPDATE_INFOR_FAILED,\r\n} from \"../actions/actionTypes\";\r\n\r\nfunction* updateUser(action) {\r\n try {\r\n yield put({ type: LOGIN, data: \"asdsad\" });\r\n } catch (error) {}\r\n}\r\n\r\nexport function* watchUpdateUser() {\r\n yield takeLatest(UPDATE_INFOR, updateUser);\r\n}\r\n","import { call, all } from \"redux-saga/effects\";\r\nimport { watchUpdateUser } from \"./userSaga\";\r\n\r\nexport default function* rootSaga() {\r\n yield all([call(watchUpdateUser)]);\r\n}\r\n","import React from \"react\";\r\n// @ts-ignore\r\nimport { Provider } from \"react-redux\";\r\nimport { createStore, applyMiddleware } from \"redux\";\r\n\r\nimport rootReducer from \"./reducers/index\";\r\nimport RootView from \"./View/RootView\";\r\n\r\n//redux saga\r\nimport createSagaMiddleware from \"redux-saga\";\r\nimport rootSaga from \"./saga/rootSaga\";\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\n\r\nlet store = createStore(rootReducer, applyMiddleware(sagaMiddleware));\r\n\r\nsagaMiddleware.run(rootSaga);\r\n\r\nfunction App() {\r\n return (\r\n <Provider store={store}>\r\n <RootView />\r\n </Provider>\r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { SnackbarProvider } from 'notistack';\r\nimport {\r\n BrowserRouter as Router,\r\n} from \"react-router-dom\";\r\nReactDOM.render(\r\n <React.StrictMode>\r\n <Router>\r\n <SnackbarProvider\r\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\r\n maxSnack={3}>\r\n <App />\r\n </SnackbarProvider>\r\n </Router>\r\n </React.StrictMode>,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}