{"version":3,"sources":["config/config.ts","config/local.ts","common/Axios.tsx","common/Auth.tsx","assets/images/Arup_Red_RGB.svg","common/Topbar.tsx","common/Loading.tsx","common/ErrorComponent.tsx","config/mui.ts","store/incidence/reducer.ts","store/user/reducer.ts","store/reducer.ts","modules/FilterPane/SelectFilter.tsx","modules/FilterPane/ProgressBar.tsx","modules/FilterPane/DateRangeSlider.tsx","store/incidence/index.ts","modules/Content/utils.ts","modules/FilterPane/CheckboxGroup.tsx","modules/FilterPane/FilterHoC.tsx","modules/FilterPane/FilterPane.tsx","modules/Content/CustomTable/TableHeader.tsx","modules/Content/CustomTable/CollapseInfo.tsx","modules/Content/CustomTable/TableRow.tsx","modules/Content/CustomTable/Table.tsx","modules/Content/ContentContainer.tsx","modules/Frame.tsx","App.tsx","index.tsx"],"names":["config","window","location","hostname","API","S3_IMAGES","TOKEN_STORAGE","REFRESH_TOKEN_STORAGE","LOGIN_REDIRECT","APP_NAME","COGNITO_POOL_ID","COGNITO_CLIENT_ID","isTokenExpired","token","jwt","decode","decodeToken","Math","trunc","Date","getTime","Axios","props","axios","interceptors","request","use","a","url","includes","idToken","localStorage","getItem","refreshToken","post","headers","params","grant_type","refresh_token","client_id","response","data","id_token","setItem","children","Auth","search","useHistory","URLSearchParams","get","recievedRefreshToken","loginUrl","origin","replace","jwtFromLocalStorage","exp","withStyles","theme","createStyles","root","width","padding","display","alignItems","justifyContent","background","palette","primary","main","boxShadow","appName","logo","height","classes","className","Typography","variant","color","src","arupLogo","alt","justifycontent","flexDirection","position","top","left","transform","useState","text","setText","useEffect","start","setSeconds","getSeconds","interval","setInterval","clearInterval","CircularProgress","size","errorCode","customMessage","fontSize","composeErrorMessage","dHubTheme","createMuiTheme","light","dark","contrastText","secondary","default","paper","overrides","MuiButton","containedPrimary","backgroundColor","borderRadius","outlinedPrimary","MuiTableCell","head","fontWeight","borderColor","textTransform","typography","fontFamily","fontWeightLight","fontWeightRegular","fontWeightBold","h3","h4","letterSpacing","lineHeightStep","body1","lineHeight","body2","button","shadows","initialState","rawData","incidencesList","filteredIncidences","convertToIncidence","rawIncidence","elements","name","searchForObjectWithDataName","value","openDate","floor","zone","system","subsystem","type","resolveDate","isResolved","priority","comment","images","map","x","photo_id","e","console","log","dataName","list","find","object","data_name","Error","tokenInfo","rootReducer","combineReducers","incidence","state","incomingAction","action","incidences","convertedIncidences","filtered","user","CustomInput","input","border","join","InputBase","filterOptions","filterKey","activeFilters","handleSelection","optionsSelected","setOptionsSelected","isAllSelected","setIsAllSelected","checkAllSelected","currentSelection","every","selectAll","deselectAll","Select","multiple","onChange","event","selectionAll","nativeEvent","target","dataset","selection","renderValue","selected","MenuItem","Checkbox","checked","Divider","option","indexOf","random","indicatorContainer","indicatorBar","indicatorLabel","marginLeft","indicatorWithLabel","percentage","title","label","style","CustomSlider","thumb","track","valueLabel","markLabel","Slider","incidencesFromStore","useSelector","dates","setDates","dateRange","setDateRange","_dates","index","format","reduce","acc","current","push","sort","b","aDate","bDate","isAfter","date","length","convertToRange","newValue","step","marks","valueLabelFormat","valueLabelDisplay","incidencesActions","dispatch","convertPriority","CustomFormControlLabel","FormControlLabel","flexWrap","handleChange","filter","customHeight","i","control","marginBottom","margin","columnSpan","gridColumn","chartGroupTitle","marginTop","filterGrids","gridTemplateColumns","useDispatch","filteredFromStore","setActiveFilters","keySearch","criteria","currentActiveFilters","copy","filtersToApply","Object","keys","forEach","filterToApply","convertedDate","isWithinInterval","end","statusCalculations","total","pending","resolved","percentagePending","percentageResolved","incidencePriorityCalculations","high","medium","low","percentageHigh","percentageMedium","percentageLow","discardRepeated","FilterHoC","TableHead","TableRow","TableCell","incidenceDescription","marginRight","incidenceImages","flex","objectFit","aspectRatio","transition","cursor","incidenceDescriptionDates","incidenceImageResolved","incidenceImageNoResolved","image","id","onClick","open","clsx","statusIndicatorContainer","statusIndicatorBase","isOpen","setIsOpen","fill","IconButton","aria-label","paddingBottom","paddingTop","colSpan","Collapse","in","timeout","unmountOnExit","setIncidences","Table","TableBody","gap","composeEnhancers","composeWithDevTools","trace","traceLimit","middleware","applyMiddleware","thunkMiddleware","browserHistory","createBrowserHistory","store","createStore","undefined","Chore","isLoading","setIsLoading","error","setError","status","req","Fade","mountOnEnter","App","ThemeProvider","history","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.61e26492.chunk.js","sourcesContent":["import { localConfig } from \"./local\";\r\nimport { production } from \"./prod\";\r\n\r\nexport interface IConfig {\r\n TOKEN_STORAGE: string;\r\n REFRESH_TOKEN_STORAGE: string;\r\n LOGIN_REDIRECT: string;\r\n APP_NAME: string;\r\n COGNITO_POOL_ID: string;\r\n COGNITO_CLIENT_ID: string;\r\n API: string;\r\n S3_IMAGES: string;\r\n}\r\n\r\nconst location = window.location.hostname;\r\n\r\nlet config: IConfig;\r\nif (location === \"localhost\") config = localConfig;\r\nelse config = production;\r\n\r\nexport default config;\r\n","import { IConfig } from \"./config\";\r\n\r\nexport const localConfig: IConfig = {\r\n API: \"https://api.dhub.arup.com/pdg\",\r\n S3_IMAGES: \"https://dhub-pdg-prod.s3-eu-west-1.amazonaws.com/\",\r\n TOKEN_STORAGE: \"arup_login_microservice_user\",\r\n REFRESH_TOKEN_STORAGE: \"arup_login_microservice_user_refresh\",\r\n LOGIN_REDIRECT: \"https://d351b7s23jrl81.cloudfront.net/\",\r\n APP_NAME: \"dhub-pdg\",\r\n COGNITO_POOL_ID: \"eu-west-1_AoTfeHEFm\",\r\n COGNITO_CLIENT_ID: \"15t9296ccignmlbe9hblf30a04\",\r\n};\r\n","import React from \"react\";\r\nimport axios from \"axios\";\r\nimport jwt from \"jsonwebtoken\";\r\n\r\nimport config from \"../config/config\";\r\n\r\ninterface IProps {}\r\n\r\nexport const refreshToken = (refreshToken: string) =>\r\n axios.post(config.LOGIN_REDIRECT + `/oauth2/token/`, null, {\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n },\r\n params: {\r\n grant_type: \"refresh_token\",\r\n refresh_token: refreshToken,\r\n client_id: config.COGNITO_CLIENT_ID,\r\n },\r\n });\r\n\r\nexport const decodeToken = (token: string) => jwt.decode(token);\r\n\r\nexport const isTokenExpired = (token: string) => {\r\n const payload: any = decodeToken(token)!;\r\n return payload[\"exp\"] < Math.trunc(new Date().getTime() / 1000);\r\n};\r\n\r\nconst Axios: React.FC = (props) => {\r\n axios.interceptors.request.use(async (request) => {\r\n if (request.url?.includes(config.API)) {\r\n let idToken = localStorage.getItem(config.TOKEN_STORAGE)!;\r\n if (isTokenExpired(idToken)) {\r\n const response = await refreshToken(\r\n localStorage.getItem(config.REFRESH_TOKEN_STORAGE)!\r\n );\r\n idToken = response.data.id_token;\r\n localStorage.setItem(config.TOKEN_STORAGE, idToken);\r\n }\r\n request.headers[\"Authorization\"] = idToken;\r\n }\r\n return request;\r\n });\r\n return
{props.children}
;\r\n};\r\n\r\nexport default Axios;\r\n","import React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport jwt, { JwtPayload } from \"jsonwebtoken\";\r\n\r\nimport config from \"../config/config\";\r\n\r\ninterface IProps {}\r\n\r\nconst Auth: React.FC = (props) => {\r\n const history = useHistory();\r\n const search = history.location.search;\r\n const idToken = new URLSearchParams(search).get(\"idToken\");\r\n const recievedRefreshToken = new URLSearchParams(search).get(\"refreshToken\");\r\n\r\n const loginUrl = `${config.LOGIN_REDIRECT}?nextUrl=${window.location.origin}&poolid=${config.COGNITO_POOL_ID}&clientid=${config.COGNITO_CLIENT_ID}&app=${config.APP_NAME}`;\r\n\r\n if (idToken) {\r\n localStorage.setItem(config.TOKEN_STORAGE, idToken);\r\n }\r\n if (recievedRefreshToken) {\r\n localStorage.setItem(config.REFRESH_TOKEN_STORAGE, recievedRefreshToken);\r\n }\r\n\r\n if (\r\n !localStorage.getItem(config.TOKEN_STORAGE) ||\r\n !localStorage.getItem(config.REFRESH_TOKEN_STORAGE)\r\n )\r\n window.location.replace(loginUrl);\r\n\r\n const jwtFromLocalStorage = jwt.decode(\r\n localStorage.getItem(config.TOKEN_STORAGE)!\r\n );\r\n\r\n if (!jwtFromLocalStorage) {\r\n window.location.replace(loginUrl);\r\n } else {\r\n const hasExpired: boolean =\r\n (jwtFromLocalStorage as JwtPayload).exp! <\r\n Math.trunc(new Date().getTime() / 1000);\r\n if (hasExpired) {\r\n window.location.replace(loginUrl);\r\n } else {\r\n if (window.location.search !== \"\") window.location.search = \"\";\r\n }\r\n }\r\n\r\n return
{props.children}
;\r\n};\r\n\r\nexport default Auth;\r\n","export default __webpack_public_path__ + \"static/media/Arup_Red_RGB.aa5ffc32.svg\";","import {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\n\r\nimport arupLogo from \"./../assets/images/Arup_Red_RGB.svg\";\r\n\r\ninterface IProps {}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: \"100%\",\r\n padding: \"1.2rem 2.375rem 1.2rem 4.375rem\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n background: theme.palette.primary.main,\r\n boxShadow: \"0 0px 3px 2px #cccccc33\",\r\n },\r\n appName: {\r\n \"& > h4\": {\r\n display: \"inline-block\",\r\n },\r\n },\r\n logo: {\r\n height: \"1.5rem\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\" | \"appName\" | \"logo\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst Topbar: React.FC = (props) => {\r\n const { classes } = props;\r\n return (\r\n
\r\n
\r\n \r\n d.Hub\r\n \r\n  \r\n Passeig de Gràcia 109-111\r\n
\r\n \"Arup\r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(Topbar);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n CircularProgress,\r\n Typography,\r\n} from \"@material-ui/core\";\r\n\r\ninterface IProps {}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifycontent: \"center\",\r\n flexDirection: \"column\",\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"fit-contents\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst Loading: React.FC = (props) => {\r\n const { classes } = props;\r\n\r\n const [text, setText] = useState(\"Cargando contenido\");\r\n\r\n useEffect(() => {\r\n const start = new Date();\r\n start.setSeconds(start.getSeconds() + 15);\r\n const interval = setInterval(() => {\r\n if (new Date() > start) {\r\n setText(\r\n \"Por favor, espere unos minutos mientras actualizamos la información.\"\r\n );\r\n clearInterval(interval);\r\n }\r\n }, 1000);\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n {text}\r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(Loading);\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\r\n\r\ninterface IProps {\r\n errorCode: number;\r\n customMessage?: string;\r\n}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifycontent: \"center\",\r\n flexDirection: \"column\",\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"fit-contents\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst ErrorComponent: React.FC = (props) => {\r\n const { classes, errorCode, customMessage } = props;\r\n\r\n const composeErrorMessage = () => {\r\n switch (errorCode) {\r\n case 401:\r\n return \"Authentication failed. Please try again.\";\r\n case 403:\r\n return \"Forbidden access. If you think it's an error, contact the development team at digitalmadrid@arup.com\";\r\n case 404:\r\n return \"Resource not found.\";\r\n case 405:\r\n return \"Can't achive request. Please try again. If the problem persists, contact the development team at digitalmadrid@arup.com\";\r\n case 500:\r\n return \"Internal server error.\";\r\n default:\r\n return \"An error ocurred. If the problem persists, please contact the development team at digitalmadrid@arup.com\";\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {customMessage ? customMessage : composeErrorMessage()}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(ErrorComponent);\r\n","import { createMuiTheme } from \"@material-ui/core/styles\";\r\n\r\n// For all vars available to config Material-UI theme:\r\n// https://v3.material-ui.com/customization/themes/\r\nexport const dHubTheme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: \"#ffffff\",\r\n light: \"#F7F7F9\",\r\n dark: \"#c2c8c7\",\r\n contrastText: \"#000000\",\r\n },\r\n secondary: {\r\n main: \"#E61E28\",\r\n dark: \"#31BEB9\",\r\n },\r\n background: {\r\n default: \"#ffffff\",\r\n paper: \"#F8F8F8\",\r\n },\r\n text: {\r\n primary: \"#243533\",\r\n secondary: \"#8F9796\",\r\n },\r\n },\r\n overrides: {\r\n MuiButton: {\r\n containedPrimary: {\r\n height: \"2.5rem\",\r\n backgroundColor: \"#7CCDEF\",\r\n borderRadius: \"1.25rem\",\r\n boxShadow: \"0px 5px 10px #00000029\",\r\n \"&:hover\": {\r\n backgroundColor: \"#0092D1\",\r\n },\r\n },\r\n outlinedPrimary: {\r\n height: \"2.5rem\",\r\n backgroundColor: \"transparent\",\r\n borderRadius: \"1.25rem\",\r\n \"&:hover\": {\r\n backgroundColor: \"#0092D1\",\r\n color: \"#ffffff\",\r\n },\r\n },\r\n },\r\n MuiTableCell: {\r\n root: { fontSize: \"1rem\", height: \"fit-content\", padding: \"0.75rem 0\" },\r\n head: {\r\n color: \"#E61E28\",\r\n fontWeight: \"bold\",\r\n borderColor: \"#243533\",\r\n textTransform: \"capitalize\",\r\n },\r\n },\r\n },\r\n typography: {\r\n fontFamily: \"Roboto, Open Sans, Helvetica, Arial, sans-serif\",\r\n fontWeightLight: 300,\r\n fontWeightRegular: 500,\r\n fontWeightBold: 700,\r\n h3: { fontSize: \"1.375rem\" },\r\n h4: {\r\n fontSize: \"1.5rem\",\r\n fontFamily: \"Times New Roman, Arial, sans-serif\",\r\n fontWeight: 500,\r\n letterSpacing: -0.13,\r\n lineHeightStep: \"1.31rem\",\r\n },\r\n body1: {\r\n fontWeight: 500,\r\n lineHeight: 1.7,\r\n letterSpacing: -0.06,\r\n fontSize: \"1rem\",\r\n lineHeightStep: \"0.9rem\",\r\n },\r\n body2: {\r\n fontSize: \"0.6rem\",\r\n letterSpacing: 0.28,\r\n lineHeightStep: \"0.687rem\",\r\n },\r\n button: {\r\n fontSize: \"1rem\",\r\n fontWeight: 700,\r\n textTransform: \"capitalize\",\r\n letterSpacing: 0.32,\r\n },\r\n },\r\n});\r\n\r\ndHubTheme.shadows[24] = \"0px 5px 10px #00000029\";\r\n","import { Action, Reducer } from \"redux\";\r\n\r\nimport { IIncidence, IRawSection } from \"./../interfaces\";\r\nimport { KnownAction } from \"./actions\";\r\n\r\nexport interface IIncidenceState {\r\n rawData: IRawSection[][];\r\n incidencesList: IIncidence[];\r\n filteredIncidences: IIncidence[];\r\n}\r\n\r\nconst initialState: IIncidenceState = {\r\n rawData: [],\r\n incidencesList: [],\r\n filteredIncidences: [],\r\n};\r\n\r\nexport const incidenceReducer: Reducer = (\r\n state = initialState,\r\n incomingAction: Action\r\n) => {\r\n const action = incomingAction as KnownAction;\r\n\r\n switch (action.type) {\r\n case \"ADD_INCIDENCES_LIST\": {\r\n let incidences = [...action.rawData];\r\n\r\n incidences = typeof incidences !== \"string\" ? incidences : [];\r\n\r\n const convertedIncidences = incidences.map((incidence) =>\r\n convertToIncidence(incidence as [IRawSection])\r\n );\r\n return {\r\n ...state,\r\n rawData: incidences,\r\n incidencesList: convertedIncidences,\r\n filteredIncidences: convertedIncidences,\r\n };\r\n }\r\n case \"FILTER_INCIDENCES_LIST\": {\r\n return {\r\n ...state,\r\n filteredIncidences: [...action.filtered],\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst convertToIncidence = (rawIncidence: [IRawSection]): IIncidence => {\r\n const generalInformation = rawIncidence[0];\r\n const elements = (generalInformation.elements as any[]) || [];\r\n\r\n try {\r\n return {\r\n name: searchForObjectWithDataName(\"nombre_de_la_incidencia\", elements)\r\n .value! as string,\r\n openDate: searchForObjectWithDataName(\"fecha\", elements).value! || \"\",\r\n floor: searchForObjectWithDataName(\"localizacion\", elements).value![0],\r\n zone: searchForObjectWithDataName(\"localizacion\", elements).value![2],\r\n system: searchForObjectWithDataName(\"sistema\", elements).value![0],\r\n subsystem: searchForObjectWithDataName(\"sistema\", elements).value![1],\r\n type: searchForObjectWithDataName(\"tipo\", elements).value![0],\r\n resolveDate:\r\n (searchForObjectWithDataName(\"fecha_resolucion\", elements)\r\n .value as string) || \"\",\r\n isResolved:\r\n searchForObjectWithDataName(\"resuelto\", elements).value === \"Yes\"\r\n ? \"Resuelto\"\r\n : \"No resuelto\",\r\n priority: searchForObjectWithDataName(\"prioridad\", elements).value![0],\r\n comment:\r\n (searchForObjectWithDataName(\"comentario\", elements).value as string) ||\r\n \"\",\r\n images: [\r\n ...((searchForObjectWithDataName(\"fotos\", elements).value! ||\r\n []) as any[]).map<{ type: 0 | 1; url: string }>((x) => ({\r\n type: 0,\r\n url: x.photo_id,\r\n })),\r\n ...((searchForObjectWithDataName(\"fotos_resolucion\", elements).value! ||\r\n []) as any[]).map<{ type: 0 | 1; url: string }>((x) => ({\r\n type: 1,\r\n url: x.photo_id,\r\n })),\r\n ],\r\n };\r\n } catch (e) {\r\n console.log(e);\r\n return {\r\n name: \"\",\r\n openDate: \"\",\r\n floor: \"\",\r\n zone: \"\",\r\n system: \"\",\r\n subsystem: \"\",\r\n type: \"\",\r\n resolveDate: \"\",\r\n isResolved: \"\",\r\n priority: \"\",\r\n comment: \"\",\r\n images: [],\r\n };\r\n }\r\n};\r\n\r\nconst searchForObjectWithDataName = (\r\n dataName: string,\r\n list: any[]\r\n): any | Error =>\r\n list.find((object) => object.data_name.includes(dataName)) ||\r\n new Error(`Object with dataname ${dataName} not found`);\r\n","import { Action, Reducer } from \"redux\";\r\n\r\nimport { KnownAction } from \"./actions\";\r\n\r\nexport interface IUserState {\r\n tokenInfo: any;\r\n}\r\n\r\nconst initialState: IUserState = {\r\n tokenInfo: null,\r\n};\r\n\r\nexport const userReducer: Reducer = (\r\n state = initialState,\r\n incomingAction: Action\r\n) => {\r\n const action = incomingAction as KnownAction;\r\n\r\n switch (action.type) {\r\n case \"ADD_USER\": {\r\n return {\r\n ...state,\r\n tokenInfo: action.rawData,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { combineReducers } from \"redux\";\r\nimport { incidenceReducer } from \"./incidence/reducer\";\r\nimport { userReducer } from \"./user/reducer\";\r\n\r\nexport const rootReducer = combineReducers({\r\n incidence: incidenceReducer,\r\n user: userReducer,\r\n});\r\n\r\n/*eslint no-undef: \"off\"*/\r\nexport type RootState = ReturnType;\r\n","import React, { BaseSyntheticEvent, useEffect, useState } from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n InputBase,\r\n Select,\r\n MenuItem,\r\n Checkbox,\r\n Divider,\r\n} from \"@material-ui/core\";\r\n\r\nimport { IActiveFilters } from \"./FilterPane\";\r\n\r\nconst CustomInput = withStyles((theme) => ({\r\n root: {\r\n width: \"100%\",\r\n },\r\n input: {\r\n borderRadius: \"0.31rem\",\r\n position: \"relative\",\r\n border: `1px solid ${theme.palette.primary.dark}`,\r\n fontSize: \"0.8rem\",\r\n padding: \"10px 26px 10px 12px\",\r\n // Use the system font instead of the default Roboto font.\r\n fontFamily: [\r\n \"Roboto\",\r\n \"Open Sans\",\r\n \"-apple-system\",\r\n \"BlinkMacSystemFont\",\r\n '\"Segoe UI\"',\r\n \"Roboto\",\r\n '\"Helvetica Neue\"',\r\n \"Arial\",\r\n \"sans-serif\",\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(\",\"),\r\n \"&:focus\": {\r\n border: `1px solid ${theme.palette.secondary.main}`,\r\n borderRadius: \"0.31rem\",\r\n },\r\n },\r\n}))(InputBase);\r\n\r\ninterface IProps {\r\n filterOptions: any[];\r\n filterKey: string;\r\n activeFilters: IActiveFilters;\r\n handleSelection: (\r\n keySearch: string,\r\n criteria: string[],\r\n currentActiveFilters: IActiveFilters\r\n ) => void;\r\n}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst SelectFilter: React.FC = (props) => {\r\n const {\r\n classes,\r\n filterOptions,\r\n filterKey,\r\n activeFilters,\r\n handleSelection,\r\n } = props;\r\n\r\n const [optionsSelected, setOptionsSelected] = useState([]);\r\n const [isAllSelected, setIsAllSelected] = useState(true);\r\n\r\n const handleChange = (event: BaseSyntheticEvent) => {\r\n const selectionAll =\r\n (event.nativeEvent as any).target.dataset.value === \"all\";\r\n const selection = event.target.value as string[];\r\n if (selectionAll) {\r\n isAllSelected ? deselectAll() : selectAll();\r\n return;\r\n }\r\n setIsAllSelected(checkAllSelected(selection));\r\n handleSelection(filterKey, selection, activeFilters);\r\n setOptionsSelected(selection);\r\n };\r\n\r\n const checkAllSelected = (currentSelection: string[]) =>\r\n filterOptions.every((x) => currentSelection.includes(x));\r\n\r\n const selectAll = () => {\r\n setOptionsSelected([...filterOptions]);\r\n handleSelection(filterKey, [...filterOptions], activeFilters);\r\n setIsAllSelected(true);\r\n };\r\n\r\n const deselectAll = () => {\r\n setOptionsSelected([]);\r\n handleSelection(filterKey, [], activeFilters);\r\n setIsAllSelected(false);\r\n };\r\n\r\n useEffect(\r\n () => selectAll(),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n return (\r\n
\r\n }\r\n renderValue={(selected) => {\r\n const customSelected = selected as string[];\r\n if (checkAllSelected(customSelected)) return \"Todos los elementos\";\r\n else return (selected as string[]).join(\", \");\r\n }}\r\n >\r\n \r\n \r\n Todos los elementos\r\n \r\n \r\n {filterOptions.map((option) => (\r\n \r\n -1} />\r\n {typeof option === \"boolean\"\r\n ? option\r\n ? \"Resuelta\"\r\n : \"No resuelta\"\r\n : option}\r\n \r\n ))}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(SelectFilter);\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\n\r\ninterface IProps {\r\n percentage: number;\r\n color: string;\r\n title: string;\r\n label: string;\r\n}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n indicatorContainer: {\r\n width: \"100%\",\r\n display: \"inline-block\",\r\n },\r\n indicatorBar: {\r\n width: \"100%\",\r\n height: \"1rem\",\r\n backgroundColor: theme.palette.secondary.main,\r\n borderRadius: \"0.25rem\",\r\n position: \"relative\",\r\n },\r\n indicatorLabel: {\r\n marginLeft: \"1rem\",\r\n },\r\n indicatorWithLabel: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n });\r\n\r\ntype ClassKey =\r\n | \"root\"\r\n | \"indicatorContainer\"\r\n | \"indicatorBar\"\r\n | \"indicatorLabel\"\r\n | \"indicatorWithLabel\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst ProgressBar: React.FC = (props) => {\r\n const { classes, percentage, color, title, label } = props;\r\n return (\r\n
\r\n {title}\r\n
\r\n \r\n \r\n {label}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(ProgressBar);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Slider,\r\n} from \"@material-ui/core\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { format } from \"date-fns\";\r\n\r\nimport { RootState } from \"../../store/reducer\";\r\nimport { isAfter } from \"date-fns/esm\";\r\nimport { IActiveFilters } from \"./FilterPane\";\r\n\r\nconst CustomSlider = withStyles((theme: Theme) => ({\r\n thumb: {\r\n backgroundColor: theme.palette.primary.main,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n transform: \"scale(1.2)\",\r\n },\r\n track: {\r\n backgroundColor: theme.palette.text.primary,\r\n },\r\n valueLabel: {\r\n top: \"200%\",\r\n \"& *\": {\r\n fontSize: \".7rem\",\r\n background: \"transparent\",\r\n fontFamily: \"Roboto, Helvetica, Open Sans, Arial, sans-serif\",\r\n },\r\n },\r\n markLabel: {\r\n color: \"white\",\r\n },\r\n}))(Slider);\r\n\r\ninterface IProps {\r\n filterKey: string;\r\n activeFilters: IActiveFilters;\r\n handleSelection: (\r\n keySearch: string,\r\n criteria: any[],\r\n currentActiveFilters: IActiveFilters\r\n ) => void;\r\n}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n padding: \"0 0.5rem\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst DateRangeSlider: React.FC = (props) => {\r\n const { classes } = props;\r\n\r\n const incidencesFromStore = useSelector(\r\n (state: RootState) => state.incidence.incidencesList\r\n );\r\n\r\n const [dates, setDates] = useState([0, 0]);\r\n const [dateRange, setDateRange] = useState([]);\r\n\r\n const handleChange = (event: any, newValue: number | number[]) => {\r\n setDates(newValue as number[]);\r\n };\r\n\r\n const convertToRange = () => {\r\n let _dates: {\r\n label: string;\r\n value: number;\r\n }[] = incidencesFromStore.map((incidence, index) => ({\r\n label: format(new Date(incidence.openDate), \"yyyy-MM-dd\"),\r\n value: 0,\r\n }));\r\n\r\n _dates = _dates.reduce((acc, current) => {\r\n if (!acc.map((x: any) => x.label).includes(current.label))\r\n acc.push(current);\r\n return acc;\r\n }, []);\r\n\r\n _dates = _dates.sort((a, b) => {\r\n const aDate = new Date(a.label);\r\n const bDate = new Date(b.label);\r\n\r\n if (isAfter(aDate, bDate)) return 1;\r\n return -1;\r\n });\r\n\r\n _dates = _dates.map((date, index) => ({\r\n ...date,\r\n value: _dates.length > 1 ? index * (100 / (_dates.length - 1)) : 0,\r\n }));\r\n\r\n setDates([0, _dates[_dates.length - 1].value]);\r\n setDateRange(_dates);\r\n };\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => convertToRange(), [incidencesFromStore]);\r\n\r\n useEffect(\r\n () => {\r\n if (dates.length && dateRange.length)\r\n props.handleSelection(\r\n props.filterKey,\r\n [\r\n dateRange.find((x: any) => x.value === dates[0]).label,\r\n dateRange.find((x: any) => x.value === dates[1]).label,\r\n ],\r\n props.activeFilters\r\n );\r\n else props.handleSelection(props.filterKey, [], props.activeFilters);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [dates]\r\n );\r\n\r\n const valueLabelFormat = (value: number) => {\r\n if (!dateRange.find((x: any) => x.value === value)) return \"\";\r\n return (\r\n format(\r\n new Date(dateRange.find((x: any) => x.value === value)?.label),\r\n \"MMM/yy\"\r\n ) || \"\"\r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(DateRangeSlider);\r\n","import { IIncidence } from \"./../interfaces\";\r\nimport { AppThunk, IRawSection } from \"../interfaces\";\r\n\r\nexport const incidencesActions = {\r\n addIncidencesList: (rawData: [IRawSection[]]): AppThunk => (dispatch) => {\r\n dispatch({\r\n type: \"ADD_INCIDENCES_LIST\",\r\n rawData,\r\n });\r\n },\r\n filterIncidencesList: (filtered: IIncidence[]): AppThunk => (dispatch) => {\r\n dispatch({\r\n type: \"FILTER_INCIDENCES_LIST\",\r\n filtered,\r\n });\r\n },\r\n};\r\n","export const convertPriority = (priority: string): number =>\r\n priority === \"Alta\" ? 3 : priority === \"Baja\" ? 1 : 2;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n FormControlLabel,\r\n Checkbox,\r\n} from \"@material-ui/core\";\r\nimport { IActiveFilters } from \"./FilterPane\";\r\n\r\ninterface IProps {\r\n filterOptions: any[];\r\n filterKey: string;\r\n activeFilters: IActiveFilters;\r\n customHeight?: string;\r\n handleSelection: (\r\n keySearch: string,\r\n criteria: string[],\r\n currentActiveFilters: IActiveFilters\r\n ) => void;\r\n}\r\n\r\nconst CustomFormControlLabel = withStyles((theme) => ({\r\n root: { height: \"33%\" },\r\n label: { fontSize: \"0.7rem\" },\r\n}))(FormControlLabel);\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n flexDirection: \"column\",\r\n height: \"6rem\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst CheckboxGroup: React.FC = (props) => {\r\n const {\r\n classes,\r\n filterOptions,\r\n activeFilters,\r\n handleSelection,\r\n filterKey,\r\n } = props;\r\n\r\n const [optionsSelected, setOptionsSelected] = useState([]);\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n optionsSelected.includes(event.target.value)\r\n ? setOptionsSelected(\r\n optionsSelected.filter((x) => x !== event.target.value)\r\n )\r\n : setOptionsSelected([...optionsSelected, event.target.value]);\r\n };\r\n\r\n useEffect(\r\n () => handleSelection(filterKey, optionsSelected, activeFilters),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [optionsSelected]\r\n );\r\n\r\n useEffect(\r\n () => setOptionsSelected(filterOptions),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n return (\r\n \r\n {filterOptions.map((option, i) => (\r\n \r\n }\r\n label={option}\r\n />\r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(CheckboxGroup);\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\n\r\ninterface IProps {\r\n title: string;\r\n columnSpan: string;\r\n}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: { marginBottom: \"1rem\" },\r\n label: {\r\n margin: \"0.40rem 0\",\r\n fontWeight: theme.typography.fontWeightBold,\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\" | \"label\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst FIlterHoC: React.FC = (props) => {\r\n const { title, children, classes, columnSpan } = props;\r\n return (\r\n \r\n \r\n {title}\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(FIlterHoC);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\n\r\nimport SelectFilter from \"./SelectFilter\";\r\nimport ProgressBar from \"./ProgressBar\";\r\nimport DateRangeSlider from \"./DateRangeSlider\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { dHubTheme } from \"./../../config/mui\";\r\nimport { RootState } from \"../../store/reducer\";\r\nimport { incidencesActions } from \"../../store/incidence\";\r\nimport { format, isWithinInterval } from \"date-fns\";\r\nimport { convertPriority } from \"../Content/utils\";\r\nimport CheckboxGroup from \"./CheckboxGroup\";\r\nimport FilterHoC from \"./FilterHoC\";\r\n\r\nexport interface IActiveFilters {\r\n system: string[];\r\n floor: string[];\r\n zone: string[];\r\n isResolved: string[];\r\n priority: string[];\r\n openDate: number[];\r\n}\r\n\r\ninterface IProps {}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n backgroundColor: theme.palette.primary.main,\r\n padding: \"1.5rem\",\r\n gridColumn: \"1/4\",\r\n borderRadius: \"0.3rem\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n },\r\n chartGroupTitle: {\r\n marginTop: \"1.7rem\",\r\n },\r\n filterGrids: {\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(3, 1fr)\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\" | \"chartGroupTitle\" | \"filterGrids\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst FilterPane: React.FC = (props) => {\r\n const { classes } = props;\r\n const dispatch = useDispatch();\r\n\r\n const incidencesFromStore = useSelector(\r\n (state: RootState) => state.incidence.incidencesList\r\n );\r\n\r\n const filteredFromStore = useSelector(\r\n (state: RootState) => state.incidence.filteredIncidences\r\n );\r\n\r\n const [activeFilters, setActiveFilters] = useState({\r\n system: [],\r\n floor: [],\r\n zone: [],\r\n isResolved: [],\r\n priority: [],\r\n openDate: [],\r\n });\r\n\r\n const handleSelection = (\r\n keySearch: string,\r\n criteria: any[],\r\n currentActiveFilters: any\r\n ) => {\r\n const copy = { ...currentActiveFilters };\r\n copy[keySearch] = criteria;\r\n setActiveFilters(copy);\r\n };\r\n\r\n useEffect(() => {\r\n const filtersToApply = Object.keys(activeFilters);\r\n let filtered = [...incidencesFromStore];\r\n\r\n filtersToApply.forEach((filterToApply) => {\r\n if (activeFilters[filterToApply].length === 0) return;\r\n\r\n if (\r\n filterToApply === \"openDate\" &&\r\n activeFilters[filterToApply][0] !== null\r\n ) {\r\n filtered = filtered.filter((incidence) => {\r\n const convertedDate = new Date(\r\n format(new Date(incidence.openDate), \"MMM/yyyy\")\r\n );\r\n const dates = activeFilters[filterToApply].map(\r\n (date: string) => new Date(date)\r\n );\r\n if (\r\n isWithinInterval(convertedDate, {\r\n start: dates[0],\r\n end: dates[1],\r\n })\r\n )\r\n return incidence;\r\n // eslint-disable-next-line array-callback-return\r\n return;\r\n });\r\n } else\r\n filtered = filtered.filter((x) =>\r\n activeFilters[filterToApply].includes(\r\n (x as any)[filterToApply] as string\r\n )\r\n );\r\n });\r\n dispatch(incidencesActions.filterIncidencesList(filtered));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activeFilters]);\r\n\r\n const statusCalculations = () => {\r\n const total = filteredFromStore.length;\r\n return {\r\n pending: filteredFromStore.filter(\r\n (incidence) => incidence.isResolved === \"No resuelto\"\r\n ).length,\r\n resolved: filteredFromStore.filter(\r\n (incidence) => incidence.isResolved === \"Resuelto\"\r\n ).length,\r\n percentagePending:\r\n (filteredFromStore.filter(\r\n (incidence) => incidence.isResolved === \"No resuelto\"\r\n ).length /\r\n total) *\r\n 100,\r\n percentageResolved:\r\n (filteredFromStore.filter(\r\n (incidence) => incidence.isResolved === \"Resuelto\"\r\n ).length /\r\n total) *\r\n 100,\r\n };\r\n };\r\n\r\n const incidencePriorityCalculations = () => {\r\n const total = filteredFromStore.length;\r\n return {\r\n high: filteredFromStore.filter(\r\n (incidence) => convertPriority(incidence.priority) === 3\r\n ).length,\r\n medium: filteredFromStore.filter(\r\n (incidence) => convertPriority(incidence.priority) === 2\r\n ).length,\r\n low: filteredFromStore.filter(\r\n (incidence) => convertPriority(incidence.priority) === 1\r\n ).length,\r\n percentageHigh:\r\n (filteredFromStore.filter(\r\n (incidence) => convertPriority(incidence.priority) === 3\r\n ).length /\r\n total) *\r\n 100,\r\n percentageMedium:\r\n (filteredFromStore.filter(\r\n (incidence) => convertPriority(incidence.priority) === 2\r\n ).length /\r\n total) *\r\n 100,\r\n percentageLow:\r\n (filteredFromStore.filter(\r\n (incidence) => convertPriority(incidence.priority) === 1\r\n ).length /\r\n total) *\r\n 100,\r\n };\r\n };\r\n\r\n const discardRepeated = (list: any[]) =>\r\n list.reduce((acc, current) => {\r\n if (!acc.includes(current)) acc.push(current);\r\n return acc;\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n {incidencesFromStore.length > 0 && (\r\n \r\n incidence.floor)\r\n )}\r\n filterKey=\"floor\"\r\n handleSelection={handleSelection}\r\n activeFilters={activeFilters}\r\n />\r\n \r\n )}\r\n {incidencesFromStore.length > 0 && (\r\n \r\n incidence.zone)\r\n )}\r\n filterKey=\"zone\"\r\n handleSelection={handleSelection}\r\n activeFilters={activeFilters}\r\n />\r\n \r\n )}\r\n \r\n incidence.system)\r\n )}\r\n filterKey=\"system\"\r\n handleSelection={handleSelection}\r\n activeFilters={activeFilters}\r\n />\r\n \r\n \r\n incidence.subsystem)\r\n )}\r\n filterKey=\"subsystem\"\r\n handleSelection={handleSelection}\r\n activeFilters={activeFilters}\r\n />\r\n \r\n \r\n incidence.type)\r\n )}\r\n filterKey=\"type\"\r\n handleSelection={handleSelection}\r\n activeFilters={activeFilters}\r\n customHeight=\"3rem\"\r\n />\r\n \r\n \r\n incidence.isResolved)\r\n )}\r\n filterKey=\"isResolved\"\r\n handleSelection={handleSelection}\r\n activeFilters={activeFilters}\r\n customHeight=\"3rem\"\r\n />\r\n \r\n \r\n incidence.priority)\r\n )}\r\n filterKey=\"priority\"\r\n handleSelection={handleSelection}\r\n activeFilters={activeFilters}\r\n customHeight=\"3rem\"\r\n />\r\n \r\n {incidencesFromStore.length > 0 && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n Estado de las incidencias\r\n \r\n \r\n \r\n \r\n Nivel de prioridad de las incidencias\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(FilterPane);\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n TableRow,\r\n TableCell,\r\n TableHead,\r\n} from \"@material-ui/core\";\r\n\r\ninterface IProps {}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst TableHeader: React.FC = (props) => {\r\n const { classes } = props;\r\n return (\r\n \r\n \r\n Incidencia\r\n sistema\r\n subsistema\r\n tipología\r\n planta\r\n zona\r\n prioridad\r\n estado\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(TableHeader);\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { format } from \"date-fns\";\r\n\r\nimport config from \"./../../../config/config\";\r\nimport { IIncidence } from \"../../../store/interfaces\";\r\nimport clsx from \"clsx\";\r\ninterface IProps {\r\n data: IIncidence;\r\n}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n padding: \"1.3rem 0\",\r\n },\r\n incidenceDescription: {\r\n width: \"33%\",\r\n marginRight: \"3rem\",\r\n },\r\n incidenceImages: {\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\",\r\n \"&>img\": {\r\n height: \"10rem\",\r\n objectFit: \"cover\",\r\n marginTop: \"1rem\",\r\n marginLeft: \"1rem\",\r\n aspectRatio: \"1/1\",\r\n transition: \"all 0.3s\",\r\n \"&:hover\": {\r\n cursor: \"pointer\",\r\n transform: \"scale(1.1)\",\r\n },\r\n },\r\n },\r\n incidenceDescriptionDates: {\r\n marginBottom: \"2rem\",\r\n },\r\n incidenceImageResolved: {\r\n border: `2px solid ${theme.palette.secondary.dark}`,\r\n },\r\n incidenceImageNoResolved: {\r\n border: `2px solid ${theme.palette.secondary.main}`,\r\n },\r\n });\r\n\r\ntype ClassKey =\r\n | \"root\"\r\n | \"incidenceDescription\"\r\n | \"incidenceDescriptionDates\"\r\n | \"incidenceImages\"\r\n | \"incidenceImageResolved\"\r\n | \"incidenceImageNoResolved\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst CollapseInfo: React.FC = (props) => {\r\n const { classes, data } = props;\r\n return (\r\n
\r\n
\r\n
\r\n \r\n Fecha incidencia: \r\n {format(new Date(data.openDate), \"dd.MM.yyyy\")}\r\n \r\n {data.resolveDate && (\r\n \r\n Fecha resolución: \r\n {format(new Date(data.resolveDate), \"dd.MM.yyyy\")}\r\n \r\n )}\r\n
\r\n \r\n Comentario: {data.comment}\r\n \r\n
\r\n
\r\n {data.images.map((image, id) => (\r\n window.open(`${config.S3_IMAGES}${image.url}.jpg`)}\r\n className={clsx(\r\n image.type === 0\r\n ? classes.incidenceImageNoResolved\r\n : classes.incidenceImageResolved\r\n )}\r\n />\r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(CollapseInfo);\r\n","import React, { useState } from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n TableRow,\r\n TableCell,\r\n IconButton,\r\n Collapse,\r\n} from \"@material-ui/core\";\r\nimport KeyboardArrowDownIcon from \"@material-ui/icons/KeyboardArrowDown\";\r\nimport KeyboardArrowUpIcon from \"@material-ui/icons/KeyboardArrowUp\";\r\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\r\nimport CancelIcon from \"@material-ui/icons/Cancel\";\r\n\r\nimport { dHubTheme } from \"./../../../config/mui\";\r\nimport CollapseInfo from \"./CollapseInfo\";\r\nimport { IIncidence } from \"../../../store/interfaces\";\r\nimport { convertPriority } from \"./../utils\";\r\n\r\ninterface IProps {\r\n data: IIncidence;\r\n}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n statusIndicatorContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n statusIndicatorBase: {\r\n width: \"1rem\",\r\n height: \"1rem\",\r\n border: `1px solid ${theme.palette.primary.dark}`,\r\n borderRadius: \"50%\",\r\n marginRight: \"0.5rem\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\" | \"statusIndicatorContainer\" | \"statusIndicatorBase\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst CustomTableRow: React.FC = (props) => {\r\n const { classes, data } = props;\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n return (\r\n <>\r\n \r\n {data.name}\r\n {data.system}\r\n {data.subsystem}\r\n {data.type}\r\n {data.floor}\r\n {data.zone}\r\n \r\n
\r\n = 1 && {\r\n backgroundColor: dHubTheme.palette.primary.dark,\r\n }),\r\n }}\r\n />\r\n = 2 && {\r\n backgroundColor: dHubTheme.palette.text.secondary,\r\n }),\r\n }}\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n setIsOpen(!isOpen)}\r\n >\r\n {isOpen ? : }\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(CustomTableRow);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n withStyles,\r\n WithStyles,\r\n createStyles,\r\n Theme,\r\n Table,\r\n TableBody,\r\n Typography,\r\n} from \"@material-ui/core\";\r\n\r\nimport TableHeader from \"./TableHeader\";\r\nimport TableRow from \"./TableRow\";\r\nimport { IIncidence } from \"../../../store/interfaces\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../store/reducer\";\r\nimport CloudOffIcon from \"@material-ui/icons/CloudOff\";\r\n\r\ninterface IProps {}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst CustomTable: React.FC = (props) => {\r\n const { classes } = props;\r\n\r\n const incidencesFromStore = useSelector(\r\n (state: RootState) => state.incidence.filteredIncidences\r\n );\r\n\r\n const [incidences, setIncidences] = useState([]);\r\n\r\n useEffect(() => {\r\n setIncidences(incidencesFromStore);\r\n }, [incidencesFromStore]);\r\n\r\n return incidences.length > 0 ? (\r\n \r\n \r\n \r\n {incidences.map((incidence, index) => (\r\n \r\n ))}\r\n \r\n
\r\n ) : (\r\n \r\n Sin datos disponibles.\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(CustomTable);\r\n","import React from \"react\";\r\nimport { withStyles, WithStyles, createStyles, Theme } from \"@material-ui/core\";\r\n\r\nimport CustomTable from \"./CustomTable/Table\";\r\n\r\ninterface IProps {}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n backgroundColor: theme.palette.primary.main,\r\n padding: \"1.5rem\",\r\n gridColumn: \"4/13\",\r\n borderRadius: \"0.3rem\",\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst ContentContainer: React.FC = (props) => {\r\n const { classes } = props;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(ContentContainer);\r\n","import React from \"react\";\r\nimport { withStyles, WithStyles, createStyles, Theme } from \"@material-ui/core\";\r\n\r\nimport FilterPane from \"./FilterPane/FilterPane\";\r\nimport ContentContainer from \"./Content/ContentContainer\";\r\n\r\ninterface IProps {}\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n padding: \"2rem 2.375rem\",\r\n display: \"grid\",\r\n gridTemplateColumns: \"repeat(12,1fr)\",\r\n gap: 24,\r\n flex: 1,\r\n },\r\n });\r\n\r\ntype ClassKey = \"root\";\r\ntype PropsType = IProps & WithStyles;\r\n\r\nconst Frame: React.FC = (props) => {\r\n const { classes } = props;\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default withStyles(styles)(Frame);\r\n","import { ThemeProvider } from \"@material-ui/styles\";\r\nimport { Fade } from \"@material-ui/core\";\r\nimport axios from \"axios\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Provider, useDispatch } from \"react-redux\";\r\nimport thunkMiddleware from \"redux-thunk\";\r\nimport { applyMiddleware, createStore } from \"redux\";\r\nimport { composeWithDevTools } from \"redux-devtools-extension\";\r\nimport { createBrowserHistory } from \"history\";\r\nimport { Router } from \"react-router-dom\";\r\n\r\nimport Axios from \"./common/Axios\";\r\nimport Auth from \"./common/Auth\";\r\nimport Topbar from \"./common/Topbar\";\r\nimport Loading from \"./common/Loading\";\r\nimport ErrorComponent from \"./common/ErrorComponent\";\r\nimport { dHubTheme } from \"./config/mui\";\r\nimport { rootReducer } from \"./store/reducer\";\r\nimport Frame from \"./modules/Frame\";\r\nimport { incidencesActions } from \"./store/incidence\";\r\nimport config from \"./config/config\";\r\n\r\nconst composeEnhancers = composeWithDevTools({\r\n trace: true,\r\n traceLimit: 25,\r\n});\r\n\r\nconst middleware = applyMiddleware(thunkMiddleware);\r\nexport const browserHistory = createBrowserHistory();\r\n\r\nexport const store = createStore(\r\n rootReducer,\r\n undefined,\r\n composeEnhancers(middleware)\r\n);\r\n\r\nconst App = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst Chore = () => {\r\n const dispatch = useDispatch();\r\n\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [error, setError] = useState(null);\r\n\r\n useEffect(() => {\r\n const req = async () => {\r\n try {\r\n setIsLoading(true);\r\n await axios.post(`${config.API}/updateDB`);\r\n const response = await axios.get(`${config.API}/getData`);\r\n\r\n dispatch(incidencesActions.addIncidencesList(response.data));\r\n } catch (e: any) {\r\n console.error(e);\r\n if (e.response?.status) {\r\n setError(e.response.status);\r\n } else {\r\n setError(600);\r\n }\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n req();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","import ReactDOM from \"react-dom\";\r\n\r\nimport \"./reset.css\";\r\nimport App from \"./App\";\r\n\r\nReactDOM.render(, document.getElementById(\"root\"));\r\n"],"sourceRoot":""}