{"version":3,"sources":["routes/public.jsx","services/logService.js","services/httpService.js","services/authService.js","routes/private.jsx","components/dashboard/header.jsx","components/dashboard/sideBar.jsx","components/common/table/tableMeta.jsx","components/common/pagination.jsx","utils/scripts/map.js","components/overview/mapView.jsx","components/common/table/tableBody.jsx","components/common/table/tableHeader.jsx","components/common/table.jsx","components/common/table/twin.jsx","components/common/misc/type.jsx","components/common/misc/lightBox.jsx","components/common/table/thumbnail.jsx","components/overview/tableView.jsx","components/common/expire.jsx","utils/scripts/paginate.js","services/commonService.js","services/fileService.js","services/poiService.js","services/categoryService.js","components/overview/overview.jsx","components/common/search.jsx","components/common/table/actions.jsx","components/categories/categoriesTable.jsx","components/categories/categories.jsx","components/common/form/select.jsx","components/common/form/input.jsx","components/common/form/password.jsx","components/common/form/textBox.jsx","components/common/form/toggle.jsx","components/common/map.jsx","components/common/form.jsx","components/common/form/back.jsx","components/categories/categoryForm.jsx","components/common/filter.jsx","components/pois/poisTable.jsx","services/itemService.js","components/pois/pois.jsx","components/pois/poiForm.jsx","components/items/itemsTable.jsx","components/items/items.jsx","components/items/itemForm.jsx","components/common/misc/role.jsx","components/common/misc/format.jsx","components/users/usersTable.jsx","services/userService.js","components/users/users.jsx","components/users/userForm.jsx","components/users/profile.jsx","components/dashboard/dashboard.jsx","components/landing/navBar.jsx","components/landing/footer.jsx","components/landing/home.jsx","components/landing/imprint.jsx","components/landing/privacyPolicy.jsx","components/landing/gallery.jsx","components/landing/notFound.jsx","components/landing/register.jsx","components/landing/login.jsx","components/users/logout.jsx","components/landing/landing.jsx","routes/routes.jsx","App.js","index.js"],"names":["Public","_ref","path","component","Component","rest","_jsx","Route","render","props","init","log","error","console","axios","defaults","baseURL","process","interceptors","response","use","status","logger","toast","Promise","reject","get","post","put","delete","setJwt","jwt","headers","common","tokenKey","getJwt","localStorage","getItem","http","login","async","email","password","remember","data","setItem","expiry","Date","now","logout","removeItem","getCurrentUser","jwtDecode","ex","loginWithJwt","Private","authService","Redirect","to","pathname","state","from","location","Header","user","_jsxs","className","id","children","src","alt","Link","style","color","name","_id","verticalAlign","SideBar","role","width","height","NavLink","title","React","Fragment","renderMeta","itemsCount","total","TableMeta","initial","onChange","defaultValue","value","htmlFor","Pagination","pageSize","onPageChange","currentPage","pagesCount","Math","ceil","startPage","endPage","pages","_","range","onClick","disabled","map","page","index","mapStyle","featureType","elementType","stylers","saturation","gamma","MapView","GoogleMapReact","bootstrapURLKeys","key","defaultCenter","defaultZoom","options","maps","zoomControlOptions","position","ControlPosition","RIGHT_BOTTOM","streetViewControlOptions","RIGHT_TOP","mapTypeControl","streetViewControl","styles","rotateControl","fullscreenControl","scrollwheel","disableDoubleClickZoom","this","pois","p","lat","lng","long","onMouseDown","priority","TableBody","constructor","arguments","renderCell","item","column","content","createKey","columns","startNumber","scope","indexOf","TableHeader","raiseSort","sortColumn","order","onSort","renderIcons","isSortable","label","Table","Twin","english","german","Type","getBadgeClasses","classes","type","images","LightboxExample","super","photoIndex","isOpen","setState","ReactTooltip","place","effect","Lightbox","mainSrc","image","url","nextSrc","prevSrc","onCloseRequest","onMovePrevRequest","length","onMoveNextRequest","Thumbnail","filename","match","TableView","poi","title_de","title_en","category","name_de","name_en","LighBox","Expire","visible","componentWillReceiveProps","nextProps","setTimer","componentDidMount","_timer","clearTimeout","setTimeout","bind","delay","componentWillUnmount","paginate","items","pageNumber","startIndex","slice","take","create","apiEndpoint","uploadFiles","file","header","onUploadProgress","formData","FormData","append","poiUrl","getPois","categoryUrl","getCategories","OverView","initialSize","selectedPoi","handlePageChange","handleSizeChange","currentTarget","input","handleMarkerClass","e","target","classList","toggle","document","querySelectorAll","forEach","el","display","handleMarkerClick","innerHTML","find","filter","i","searchQuery","handlePoiSelect","_ref2","handleReset","remove","handleSearch","query","handleSort","getData","allImages","filtered","toLowerCase","startsWith","orderBy","totalCount","allCategories","allPois","_ref3","has_histocache_location","getGategory","c","getPoi","getType","result","viewpoint_filename","search","_ref4","parent","category_id","count","Search","placeholder","borderRadius","Actions","flex","InlineConfirmButton","textValues","showTimer","isExecuting","paddingRight","paddingLeft","CategoriesTable","onDelete","categories","Categories","handleDelete","originalCategories","success","selectedCategory","Select","option","Input","text","Password","handleClick","TextBox","minHeight","_createElement","Toggle","checked","Map","zoom","center","LEFT_TOP","ZoomControlStyle","SMALL","mapTypeControlOptions","TOP_RIGHT","draggableCursor","defaultProps","imageUrl","From","_this","errors","validate","Joi","schema","abortEarly","details","message","validateProperty","obj","handleSubmit","preventDefault","doSubmit","renderButton","undefined","icon","handleChange","errorMessage","renderInput","renderNumberInput","step","renderPassword","renderTextBox","renderSelect","renderPriority","maxPriority","max","min","handleSwitchChange","renderToggle","handleCheckbox","renderCheckbox","handleMapClick","renderMap","latitude","longitude","handleImageLoad","img","dimensions","offsetHeight","offsetWidth","aspectRatio","round","inputLabels","fileNameHash","handlePreviewImage","selectedFiles","onLoad","handleLabel","labels","lastIndexOf","md5","renderFileInput","handleFileSelect","renderPreview","maxHeight","renderSinglePreview","source","poi_id","renderImage","renderProgress","progresses","fileName","percentage","event","URL","createObjectURL","files","selectedImages","shift","push","previewImages","fileNameObject","mapValues","o","Object","keys","Back","CategoryForm","Form","string","number","integer","required","body","saveCategory","history","handleBack","params","getCategory","replace","mapToViewModel","onSubmit","Filter","selectedOption","onOptionSelect","PoisTable","apiEnditemnt","itemUrl","getItems","getItemsMaxPriority","Pois","originalPois","handleCategorySelect","onLike","handleLike","PoiFrom","description_en","description_de","caption_en","caption_de","add_info_url","optional","allow","empty","is_displayed_on_table","boolean","when","is","then","otherwise","image_aspect_ratio","has_viewpoint_location","viewpoint_lat","viewpoint_long","viewpoint_image_aspect_ratio","viewpoint_image_height","viewpoint_image_offset","viewpoint_image_vertical_offset","cleanPoi","cleanDataObject","savePoi","property","encType","ItemsTable","Items","originalItems","item_id","file_name","allItems","ItemForm","saveItem","componentDidUpdate","prevProps","prevState","Role","capitalize","charAt","toUpperCase","reformatDate","date","Intl","DateTimeFormat","year","month","day","hour","minute","hour12","format","Format","UsersTable","href","created_at","users","usersUrl","getUsers","deleteUser","user_id","registerUsers","findUser","saveUser","upgradeUser","Users","originalUsers","u","selectedUser","allUsers","UserForm","currentUserRole","roles","userService","window","getStatus","currentUser","Profile","account","Dashboard","renderSidebar","toggleId","navId","bodyId","headerId","getElementById","nav","bodypd","headerpd","addEventListener","linkColor","activateLink","l","add","Switch","exact","Overview","PoiForm","NavBar","Footer","Home","viewBox","xmlns","gradientTransform","offset","cx","cy","r","x","y","rx","transform","muted","autoPlay","loop","maxWidth","controls","poster","Imprint","borderTop","PrivacyPolicy","class","rel","Gallery","backgroundColor","fontSize","NotFound","Register","Login","auth","Logout","Landing","Routes","ecxact","App","ToastContainer","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","ReactDOM","BrowserRouter"],"mappings":"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","file":"static/js/main.ae68af22.chunk.js","sourcesContent":["// Libraries\nimport React from \"react\";\nimport { Route } from \"react-router-dom\";\n\nconst Public = ({ path, component: Component, ...rest }) => {\n return (\n {\n return ;\n }}\n />\n );\n};\n\nexport default Public;\n","// For simplicity, I changed the implementation of this module\n// and removed Raven. We can always add that in the future\n// and this module is the only module we need to modify.\n\nfunction init() {}\n\nfunction log(error) {\n console.error(error);\n}\n\nexport default {\n init,\n log\n};\n","// Libraries\nimport axios from \"axios\";\nimport logger from \"./logService\";\nimport { toast } from \"react-toastify\";\n\n// Defaults\naxios.defaults.baseURL = process.env.REACT_APP_API_URL;\n\n// Sending headers with axios to REST API\naxios.interceptors.response.use(null, (error) => {\n const expectedError =\n error.response &&\n error.response.status >= 400 &&\n error.response.status < 500;\n\n if (!expectedError) {\n logger.log(error);\n toast.error(\"An unexpected error occurrred.\");\n }\n\n return Promise.reject(error);\n});\n\nfunction setJwt(jwt) {\n axios.defaults.headers.common[\"x-auth-token\"] = jwt;\n}\n\nexport default {\n get: axios.get,\n post: axios.post,\n put: axios.put,\n delete: axios.delete,\n setJwt,\n};\n","// Libraries\nimport jwtDecode from \"jwt-decode\";\n\n// Axios\nimport http from \"./httpService\";\n\n// Constants\nconst apiEndpoint = \"/auth\";\nconst tokenKey = process.env.REACT_APP_TOKEN_KEY;\n\n// Handling bi-directional dependencies\nhttp.setJwt(getJwt());\n\n// API login\nexport async function login(email, password, remember) {\n const { data: jwt } = await http.post(apiEndpoint, { email, password });\n localStorage.setItem(tokenKey, jwt);\n\n const expiry = Date.now() + 3600000;\n if (!remember) {\n localStorage.setItem(\"expire\", expiry);\n }\n}\n\nexport function logout() {\n localStorage.removeItem(tokenKey);\n const expiry = localStorage.getItem(\"expire\");\n if (expiry) {\n localStorage.removeItem(\"expire\");\n }\n localStorage.removeItem(tokenKey);\n}\n\nexport function getCurrentUser() {\n try {\n const expiry = localStorage.getItem(\"expire\");\n const jwt = localStorage.getItem(tokenKey);\n if (expiry) {\n if (Date.now() > expiry) {\n localStorage.removeItem(tokenKey);\n return null;\n }\n }\n return jwtDecode(jwt);\n } catch (ex) {\n return null;\n }\n}\n\nexport function loginWithJwt(jwt) {\n localStorage.setItem(tokenKey, jwt);\n}\n\nexport function getJwt() {\n return localStorage.getItem(tokenKey);\n}\n\nexport default {\n login,\n logout,\n getCurrentUser,\n loginWithJwt,\n getJwt,\n};\n","// Libraries\nimport React from \"react\";\nimport { Route, Redirect } from \"react-router-dom\";\n\n// Functions\nimport authService from \"../services/authService\";\n\nconst Private = ({ path, component: Component, render, ...rest }) => {\n return (\n {\n if (!authService.getCurrentUser()) {\n return (\n \n );\n }\n return Component ? : render(props);\n }}\n />\n );\n};\n\nexport default Private;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\n\nconst Header = ({ user }) => {\n return (\n
\n
\n {\" \"}\n {\" \"}\n
\n\n
\n
\n \"profile\"{\" \"}\n
\n \n {user.name}\n \n \n \n Profile\n \n \n Setting\n \n
\n \n {\" \"}\n Logout\n \n
\n \n
\n );\n};\n\n// Typechecking\nHeader.propTypes = {\n user: PropTypes.object.isRequired,\n};\n\nexport default Header;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link, NavLink } from \"react-router-dom\";\n\nconst SideBar = ({ role }) => {\n return (\n
\n \n
\n );\n};\n\n// Typechecking\nSideBar.propTypes = {\n role: PropTypes.string.isRequired,\n};\n\nexport default SideBar;\n","import React from \"react\";\n\nconst renderMeta = (itemsCount, total) => {\n if (itemsCount) {\n if (itemsCount === total) return `Showing all of ${total} entries.`;\n else return `Showing ${itemsCount} of ${total} entries.`;\n }\n return \"No enteries found!\";\n};\n\nconst TableMeta = ({ initial = 3, itemsCount, total, onChange }) => {\n return (\n
\n \n \n \n \n \n \n
\n \n
\n
\n );\n};\n\nexport default TableMeta;\n\n/*\n
\n {renderMeta(startNumber, itemsCount, total)}\n
\n\n\n
\n
\n \n 5\n \n \n
\n \n
\n\n */\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport _ from \"lodash\";\n\nconst Pagination = ({ itemsCount, pageSize, onPageChange, currentPage }) => {\n const pagesCount = Math.ceil(itemsCount / pageSize);\n\n if (pagesCount === 1) return null;\n\n let startPage, endPage;\n if (pagesCount <= 4) {\n // less than 4 total pages so show all\n startPage = 1;\n endPage = pagesCount;\n } else {\n // more than 4 total pages so calculate start and end pages\n if (currentPage <= 3) {\n startPage = 1;\n endPage = 4;\n } else if (currentPage + 1 >= pagesCount) {\n startPage = pagesCount - 3;\n endPage = pagesCount;\n } else {\n startPage = currentPage - 2;\n endPage = currentPage + 1;\n }\n }\n\n const pages = _.range(startPage, endPage + 1);\n\n return (\n \n );\n};\n\n// Typechecking\nPagination.propTypes = {\n itemsCount: PropTypes.number.isRequired,\n pageSize: PropTypes.number.isRequired,\n onPageChange: PropTypes.func.isRequired,\n currentPage: PropTypes.number.isRequired,\n};\n\nexport default Pagination;\n","// Sanzzy Map Config\n\nexport const mapStyle = [\n {\n featureType: \"all\",\n elementType: \"all\",\n stylers: [\n {\n saturation: -100,\n },\n {\n gamma: 0.5,\n },\n ],\n },\n];\n","// Libraries\nimport React, { Component } from \"react\";\nimport GoogleMapReact from \"google-map-react\";\n\n// Config\nimport { mapStyle } from \"../../utils/scripts/map\";\n\n// Constants\nconst googleMapKey = process.env.REACT_APP_GOOGLE_MAP_KEY;\n\nclass MapView extends Component {\n render() {\n function createMapOptions(maps) {\n return {\n zoomControlOptions: {\n position: maps.ControlPosition.RIGHT_BOTTOM,\n },\n streetViewControlOptions: {\n position: maps.ControlPosition.RIGHT_TOP,\n },\n mapTypeControl: false,\n streetViewControl: true,\n styles: mapStyle,\n rotateControl: true,\n fullscreenControl: false,\n scrollwheel: true,\n disableDoubleClickZoom: true,\n };\n }\n\n return (\n
\n \n {this.props.pois.map((p) => (\n \n
\n {p.name}\n
\n
\n ))}\n \n \n );\n }\n}\n\nexport default MapView;\n","import React, { Component } from \"react\";\nimport _ from \"lodash\";\n\nclass TableBody extends Component {\n renderCell = (item, column) => {\n if (column.content) return column.content(item);\n return _.get(item, column.path);\n };\n createKey = (item, column) => {\n return item._id + (column.path || column.key);\n };\n\n render() {\n const { data, columns, startNumber } = this.props;\n return (\n \n {data.map((item) => (\n \n \n {data.indexOf(item) + startNumber + 1}\n \n {columns.map((column) => (\n \n {this.renderCell(item, column)}\n \n ))}\n \n ))}\n \n );\n }\n}\n\nexport default TableBody;\n","import React, { Component } from \"react\";\n\nclass TableHeader extends Component {\n raiseSort = (path) => {\n const sortColumn = { ...this.props.sortColumn };\n if (sortColumn.path === path)\n sortColumn.order = sortColumn.order === \"asc\" ? \"desc\" : \"asc\";\n else {\n sortColumn.path = path;\n sortColumn.order = \"asc\";\n }\n this.props.onSort(sortColumn);\n };\n renderIcons = (column) => {\n const { sortColumn } = this.props;\n if (column.path !== sortColumn.path) return null;\n if (sortColumn.order === \"asc\") return ;\n return ;\n };\n render() {\n return (\n \n \n #\n {this.props.columns.map((column) => (\n column.isSortable && this.raiseSort(column.path)}\n scope=\"col\"\n className={column.isSortable ? \"clickable\" : \"disabled\"}\n >\n {column.label} {column.isSortable && this.renderIcons(column)}\n \n ))}\n \n \n );\n }\n}\n\nexport default TableHeader;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n// Child Components\nimport TableBody from \"./table/tableBody\";\nimport TableHeader from \"./table/tableHeader\";\n\nconst Table = ({ columns, sortColumn, onSort, data, startNumber }) => {\n return (\n \n \n \n
\n );\n};\n\n// Typechecking\nTable.propTypes = {\n columns: PropTypes.array.isRequired,\n onSort: PropTypes.func.isRequired,\n data: PropTypes.array.isRequired,\n startNumber: PropTypes.number.isRequired,\n};\n\nexport default Table;\n","import React from \"react\";\n\nconst Twin = ({ english, german }) => {\n return (\n
\n

{english}

\n
\n

{german}

\n
\n );\n};\n\nexport default Twin;\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass Type extends Component {\n getBadgeClasses() {\n let classes = \"badge badge-pill badge-\";\n\n const type = this.props.type;\n switch (type) {\n case \"Histocache\":\n classes += \"success\";\n break;\n case \"Viewpoint\":\n classes += \"secondary\";\n break;\n default:\n classes += \"warning\";\n }\n\n return classes;\n }\n\n render() {\n return {this.props.type};\n }\n}\n\n// Typechecking\nType.propTypes = {\n type: PropTypes.string.isRequired,\n};\n\nexport default Type;\n","// Libraries\nimport React, { Component } from \"react\";\nimport ReactTooltip from \"react-tooltip\";\nimport Lightbox from \"react-image-lightbox\";\n\nconst images = [\"\"];\n\nexport default class LightboxExample extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n photoIndex: 0,\n isOpen: false,\n };\n }\n\n render() {\n const { photoIndex, isOpen } = this.state;\n\n return (\n
\n this.setState({ isOpen: true })}\n >\n \n \n \n View\n \n {isOpen && (\n this.setState({ isOpen: false })}\n onMovePrevRequest={() =>\n this.setState({\n photoIndex: (photoIndex + images.length - 1) % images.length,\n })\n }\n onMoveNextRequest={() =>\n this.setState({\n photoIndex: (photoIndex + 1) % images.length,\n })\n }\n />\n )}\n
\n );\n }\n}\n","// Libraries\nimport React from \"react\";\n\n// Constants\nconst imageUrl = process.env.REACT_APP_IMAGE_URL;\n\nconst Thumbnail = ({ filename, alt, id }) => {\n const regex = /(http(s?)):\\/\\//i;\n let src = \"\";\n if (!filename) {\n src = `${process.env.PUBLIC_URL}/placeholder.png`;\n } else if (filename.match(regex)) {\n src = filename;\n } else {\n src = `${imageUrl}/${id}/${filename}`;\n }\n\n return (\n
\n
\n \n {alt}\n
\n
\n );\n};\n\nexport default Thumbnail;\n\n/*\n style={{\n maxWidth: \"200px\",\n maxHeight: \"200px\",\n verticalAlign: \"middle\",\n }}\nimport React from \"react\";\n\nconst Thumbnail = ({ filename, alt }) => {\n return (\n \n \n \n );\n};\n\nexport default Thumbnail;\n\n*/\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\n// Child Components\nimport Table from \"../common/table\";\nimport Twin from \"../common/table/twin\";\nimport Type from \"../common/misc/type\";\nimport LighBox from \"../common/misc/lightBox\";\nimport Thumbnail from \"../common/table/thumbnail\";\n\nclass TableView extends Component {\n columns = [\n {\n path: \"name\",\n label: \"Image\",\n isSortable: false,\n content: (image) => ,\n },\n\n {\n path: \"poi.title_en\",\n label: \"Histocache\",\n isSortable: true,\n content: (image) => (\n \n ),\n },\n {\n path: \"poi.category.name_en\",\n label: \"Category\",\n isSortable: true,\n content: (image) => (\n \n ),\n },\n {\n path: \"type\",\n label: \"Type\",\n isSortable: true,\n content: (image) => ,\n },\n {\n path: \"actions\",\n label: \"Actions\",\n isSortable: false,\n content: (image) => ,\n },\n ];\n\n render() {\n const { images, startNumber, onSort, sortColumn } = this.props;\n return (\n \n );\n }\n}\n\n// Typechecking\nTableView.propTypes = {\n images: PropTypes.array.isRequired,\n startNumber: PropTypes.number.isRequired,\n onSort: PropTypes.func.isRequired,\n sortColumn: PropTypes.object.isRequired,\n};\n\nexport default TableView;\n","// Libraries\nimport React, { Component } from \"react\";\n\nclass Expire extends Component {\n constructor(props) {\n super(props);\n this.state = { visible: true };\n }\n\n componentWillReceiveProps(nextProps) {\n // reset the timer if children are changed\n if (nextProps.children !== this.props.children) {\n this.setTimer();\n this.setState({ visible: true });\n }\n }\n\n componentDidMount() {\n this.setTimer();\n }\n\n setTimer() {\n // clear any existing timer\n if (this._timer != null) {\n clearTimeout(this._timer);\n }\n\n // hide after `delay` milliseconds\n this._timer = setTimeout(\n function () {\n this.setState({ visible: false });\n this._timer = null;\n }.bind(this),\n this.props.delay\n );\n }\n\n componentWillUnmount() {\n clearTimeout(this._timer);\n }\n\n render() {\n return this.state.visible ?
{this.props.children}
: ;\n }\n}\n\nexport default Expire;\n","import _ from \"lodash\";\n\nexport function paginate(items, pageNumber, pageSize) {\n const startIndex = (pageNumber - 1) * pageSize;\n //const endIndex = Math.min(startIndex + pageSize - 1, pageNumber - 1);\n return _(items).slice(startIndex).take(pageSize).value();\n}\n","// Libraries\nimport axios from \"axios\";\n\n// Constants\nconst baseURL = process.env.REACT_APP_API_URL;\n\nexport default axios.create({\n baseURL,\n headers: {\n \"Content-type\": \"application/json\",\n },\n});\n","// Axios\nimport http from \"./commonService\";\n\n// Constants\nconst apiEndpoint = \"/files\";\n\n// Upload a File or Files\nexport function uploadFiles(file, header, onUploadProgress) {\n let formData = new FormData();\n\n formData.append(\"file\", file);\n\n return http.post(`${apiEndpoint}/`, formData, {\n headers: {\n \"x-folder-name\": header,\n \"Content-Type\": \"multipart/form-data\",\n },\n onUploadProgress,\n });\n}\n\n// Get list of Files\nexport function getFiles() {\n return http.get(`${apiEndpoint}/`);\n}\n\n// Download a File by name\nexport function getFile(file_name) {\n return http.get(`${apiEndpoint}/${file_name}`);\n}\n\n// Delete a File by name\nexport function deleteFile(file_name) {\n return http.delete(`${apiEndpoint}/${file_name}`);\n}\n\n// Delete a Directory by ID\nexport function deleteDirectory(id) {\n return http.delete(`${apiEndpoint}/directory/${id}`);\n}\n","// Axios\nimport http from \"./httpService\";\n\n// Constants\nconst apiEndpoint = \"/poi\";\nconst tokenKey = process.env.REACT_APP_TOKEN_KEY;\n\n// Get the current logged-in-user Token from the Browser\nconst jwt = localStorage.getItem(tokenKey);\n\n// Define and get API routes\nfunction poiUrl(id) {\n return `${apiEndpoint}/${id}`;\n}\n\n// API request to get all of the Pois\nexport function getPois() {\n return http.get(apiEndpoint);\n}\n\n// API request to get the maximum Priority\nexport function getPoisMaxPriority() {\n return http.get(`${apiEndpoint}/priority`);\n}\n\n// API request to get a Poi by ID\nexport function getPoi(poi_id) {\n return http.get(poiUrl(poi_id));\n}\n\n// API request to create a new Poi or update an existing Poi by ID\nexport function savePoi(poi) {\n if (poi._id) {\n const body = { ...poi };\n delete body._id;\n return http.put(poiUrl(poi._id), body);\n }\n\n return http.post(apiEndpoint, poi);\n}\n\n// API request to delete a Poi by ID\nexport function deletePoi(poi_id) {\n return http.delete(poiUrl(poi_id), { headers: { \"x-auth-token\": jwt } });\n}\n","// Axios\nimport http from \"./httpService\";\n\n// Constants\nconst apiEndpoint = \"/category\";\nconst tokenKey = process.env.REACT_APP_TOKEN_KEY;\n\n// Get the current logged-in-user Token from the Browser\nconst jwt = localStorage.getItem(tokenKey);\n\n// Define and get API routes\nfunction categoryUrl(id) {\n return `${apiEndpoint}/${id}`;\n}\n\n// API request to get all of the Categories\nexport function getCategories() {\n return http.get(apiEndpoint);\n}\n\n// API request to get the maximum Priority\nexport function getCategoriesMaxPriority() {\n return http.get(`${apiEndpoint}/priority`);\n}\n\n// API request to get a Category by ID\nexport function getCategory(category_id) {\n return http.get(categoryUrl(category_id));\n}\n\n// API request to create a new Category or update an existing Category by ID\nexport function saveCategory(category) {\n if (category._id) {\n const body = { ...category };\n delete body._id;\n return http.put(categoryUrl(category._id), body);\n }\n\n return http.post(apiEndpoint, category);\n}\n\n// API request to delete a Category by ID\nexport function deleteCategory(category_id) {\n return http.delete(categoryUrl(category_id), {\n headers: { \"x-auth-token\": jwt },\n });\n}\n","// Libraries\nimport React, { Component } from \"react\";\nimport _ from \"lodash\";\n\n// Common Components\nimport TableMeta from \"../common/table/tableMeta\";\nimport Pagination from \"../common/pagination\";\n\n// Child Components\nimport MapView from \"./mapView\";\nimport TableView from \"./tableView\";\nimport Expire from \"../common/expire\";\n\n// Functions\nimport { paginate } from \"../../utils/scripts/paginate\";\nimport { getFiles } from \"../../services/fileService\";\nimport { getPois } from \"../../services/poiService\";\nimport { getCategories } from \"../../services/categoryService\";\n\nclass OverView extends Component {\n state = {\n images: [],\n pois: [],\n currentPage: 1,\n initialSize: 3,\n pageSize: 3,\n selectedPoi: null,\n sortColumn: { path: \"poi.title_en\", order: \"asc\" },\n };\n\n // Retrive data from the server\n async componentDidMount() {\n // Get Categories and Modify\n const { data: allCategories } = await getCategories();\n if (allCategories.length === 0) return;\n\n // Get Pois and Modify\n const { data: allPois } = await getPois();\n if (allPois.length === 0) return;\n\n const data = allPois.map(({ title_en: name, ...rest }) => ({\n name,\n ...rest,\n }));\n\n // Remove pois that doesn't have location\n const poisWithlocation = data.filter(\n (p) => p.has_histocache_location === true\n );\n\n const pois = [...poisWithlocation];\n\n // Mapping Functions\n function getGategory(id) {\n var category = allCategories.find((c) => {\n return c._id === id;\n });\n if (category) return category;\n }\n\n function getPoi(id) {\n var poi = allPois.find((p) => {\n return p._id === id;\n });\n if (poi) return poi;\n }\n\n function getType(name) {\n let type = \"\";\n let result;\n\n allPois.forEach((p) => {\n if (p.filename === name) {\n result = \"main\";\n } else if (p.viewpoint_filename === name) {\n result = \"viewpoint\";\n }\n });\n\n switch (result) {\n case \"main\":\n type = \"Histocache\";\n break;\n case \"viewpoint\":\n type = \"Viewpoint\";\n break;\n\n default:\n type = \"Item Image\";\n }\n\n return type;\n }\n\n // Get Images and Modify\n const { data: allImages } = await getFiles();\n if (allImages.length === 0) return;\n\n // Remove -thumb images from the array\n const filteredImages = allImages.filter(\n (i) => i.name.search(\"thumb\") === -1\n );\n\n // Make a new array of image objects\n const imagesWithPois = filteredImages.map(({ parent: poi, name, url }) => ({\n poi: {\n _id: getPoi(poi)._id,\n title_en: getPoi(poi).title_en,\n title_de: getPoi(poi).title_de,\n has_histocache_location: getPoi(poi).has_histocache_location,\n category: {\n name_en: getGategory(getPoi(poi).category_id).name_en,\n name_de: getGategory(getPoi(poi).category_id).name_de,\n },\n },\n type: getType(name),\n name,\n url,\n }));\n\n // Remove images of pois that doesn't have location\n const images = imagesWithPois.filter(\n (i) => (i.poi.has_histocache_location = true)\n );\n\n this.setState({ images, pois });\n }\n\n // Pagination event handler\n handlePageChange = (page) => {\n this.setState({ currentPage: page });\n };\n\n // Page size event handler\n handleSizeChange = ({ currentTarget: input }) => {\n let pageSize = { ...this.state.pageSize };\n pageSize = input.value;\n\n this.setState({ pageSize });\n };\n\n // Marker view classes event handler\n handleMarkerClass = (e) => {\n if (e.target.classList.value === \"map-box active\") {\n return;\n }\n\n e.target.classList.toggle(\"active\");\n e.currentTarget.classList.toggle(\"active\");\n\n document\n .querySelectorAll(\".map-tick:not(.active)\")\n .forEach((el) => (el.style.display = \"none\"));\n };\n\n // Filter Pois on Marker click event handler\n handleMarkerClick = (e) => {\n const selectedPoi = e.target.innerHTML;\n const poi = this.state.pois.find((p) => p.name === selectedPoi);\n\n const images = this.state.images.filter(\n (i) => i.poi.title_en === selectedPoi\n );\n\n this.setState({\n selectedPoi: poi,\n searchQuery: \"\",\n initialSize: images.length,\n pageSize: images.length,\n currentPage: 1,\n sortColumn: { path: \"type\", order: \"asc\" },\n });\n };\n\n // Filter event handler\n handlePoiSelect = ({ currentTarget: input }) => {\n const poi = this.state.pois.find((p) => p._id === input.value);\n\n this.setState({\n selectedPoi: poi,\n searchQuery: \"\",\n currentPage: 1,\n });\n };\n\n // Reset Button Event Handler\n handleReset = () => {\n document\n .querySelectorAll(\".active\")\n .forEach((el) => el.classList.remove(\"active\"));\n\n this.setState({\n selectedPoi: null,\n searchQuery: \"\",\n initialSize: 3,\n pageSize: 3,\n currentPage: 1,\n sortColumn: { path: \"poi.title_en\", order: \"asc\" },\n });\n\n document\n .querySelectorAll(\".map-tick:not(.active)\")\n .forEach((el) => (el.style.display = \"initial\"));\n };\n\n // Search event handler\n handleSearch = (query) => {\n this.setState({\n searchQuery: query,\n selectedPoi: null,\n currentPage: 1,\n });\n };\n\n // Sort event handler\n handleSort = (sortColumn) => {\n this.setState({ sortColumn });\n };\n\n getData = () => {\n const {\n currentPage,\n pageSize,\n images: allImages,\n selectedPoi,\n searchQuery,\n sortColumn,\n } = this.state;\n\n // Start Number\n const startNumber = (currentPage - 1) * pageSize;\n\n // Filter option\n let filtered = allImages;\n\n if (searchQuery)\n filtered = allImages.filter((i) =>\n i.name.toLowerCase().startsWith(searchQuery.toLowerCase())\n );\n else if (selectedPoi && selectedPoi._id)\n filtered = allImages.filter((i) => i.poi._id === selectedPoi._id);\n\n // Sorting option\n const sorted = _.orderBy(filtered, [sortColumn.path], [sortColumn.order]);\n\n // Pagination option\n const images = paginate(sorted, currentPage, pageSize);\n\n return {\n startNumber: startNumber,\n totalCount: filtered.length,\n data: images,\n };\n };\n\n render() {\n const { length: count } = this.state.images;\n const { currentPage, pageSize, sortColumn, initialSize } = this.state;\n const { startNumber, totalCount, data: images } = this.getData();\n\n return (\n
\n
\n
\n

\n Overview\n

\n
\n
\n \n View all\n Histocaches\n \n
\n
\n\n {count === 0 && (\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n )}\n\n {count !== 0 && (\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n )}\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default OverView;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst Search = ({ value, onChange }) => {\n return (\n \n onChange(e.currentTarget.value)}\n style={{\n borderRadius: \"50px\",\n }}\n >\n \n );\n};\n\n// Typechecking\nSearch.propTypes = {\n onChange: PropTypes.func.isRequired,\n};\n\nexport default Search;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ReactTooltip from \"react-tooltip\";\nimport InlineConfirmButton from \"react-inline-confirm\";\n\nconst Actions = (props) => {\n const textValues = [\"\", \" Sure?\", \" Deleting...\"];\n const confirmIconClass = \"fa fa-trash\";\n /*\n const confirmIconClass = `fa fa-${\n props.isExecuting ? \"circle-o-notch fa-spin\" : \"trash\" \n }`;\n*/\n return (\n
\n
\n \n \n \n \n Edit\n \n
\n
\n \n \n \n \n Delete\n \n
\n
\n );\n};\n\nexport default Actions;\n\n/*\n \n \n {\" \"}\n Delete\n \n\n\n\n*/\n\n/*\n \n\n
\n \n \n \n \n Web View\n \n
\n\n*/\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\n// Child Components\nimport Actions from \"../common/table/actions\";\nimport Table from \"../common/table\";\n\nclass CategoriesTable extends Component {\n columns = [\n { path: \"name_en\", label: \"Name (English)\", isSortable: true },\n { path: \"name_de\", label: \"Name (German)\", isSortable: true },\n { path: \"priority\", label: \"Priority\", isSortable: true },\n {\n key: \"actions\",\n label: \"Actions\",\n isSortable: false,\n content: (category) => (\n this.props.onDelete(category)}\n path=\"category\"\n item={category}\n />\n ),\n },\n ];\n\n render() {\n const { categories, startNumber, onSort, sortColumn } = this.props;\n return (\n \n );\n }\n}\n\n// Typechecking\nCategoriesTable.propTypes = {\n categories: PropTypes.array.isRequired,\n startNumber: PropTypes.number.isRequired,\n onSort: PropTypes.func.isRequired,\n sortColumn: PropTypes.object.isRequired,\n};\n\nexport default CategoriesTable;\n","// Libraries\nimport React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport _ from \"lodash\";\n\n// Common Components\nimport Search from \"../common/search\";\nimport Pagination from \"../common/pagination\";\nimport TableMeta from \"../common/table/tableMeta\";\n\n// Child Components\nimport CategoriesTable from \"./categoriesTable\";\nimport Expire from \"../common/expire\";\n\n// Functions\nimport { getCategories, deleteCategory } from \"../../services/categoryService\";\nimport { paginate } from \"../../utils/scripts/paginate\";\nimport { getPois } from \"../../services/poiService\";\n\nclass Categories extends Component {\n state = {\n categories: [],\n currentPage: 1,\n initialSize: 5,\n pageSize: 5,\n searchQuery: \"\",\n sortColumn: { path: \"name_en\", order: \"asc\" },\n };\n\n // Retrive the Data from the Server\n async componentDidMount() {\n // Get Categories\n const { data: categories } = await getCategories();\n\n this.setState({ categories });\n }\n\n // Delete Event Handler\n handleDelete = async (category) => {\n // Delete Validation\n const { data: pois } = await getPois();\n const result = pois.filter((p) => p.category_id === category._id);\n if (result.length !== 0) {\n toast.error(\n
\n Not allowed!\n
First, delete the {result.length} Histocache(s) of this\n Category.\n
\n );\n return;\n }\n\n // Delete the Category from the State\n const originalCategories = this.state.categories;\n const categories = originalCategories.filter((c) => c._id !== category._id);\n\n this.setState({ categories });\n\n try {\n const response = await deleteCategory(category._id);\n if (response.data && response.status === 200) {\n toast.success(\n
\n Category: \"{response.data.name_en}\"\n
deleted successfully.\n
\n );\n }\n } catch (ex) {\n if (ex.response && ex.response.status === 401) {\n toast.error(\"Only Admins can delete a Category!\");\n } else if (ex.response && ex.response.status === 404) {\n toast.error(\"This Category has already been deleted!\");\n }\n\n this.setState({ categories: originalCategories });\n }\n };\n\n // Pagination event handler\n handlePageChange = (page) => {\n this.setState({ currentPage: page });\n };\n\n // Page size event handler\n handleSizeChange = ({ currentTarget: input }) => {\n let pageSize = { ...this.state.pageSize };\n pageSize = input.value;\n this.setState({ pageSize });\n };\n\n // Search event handler\n handleSearch = (query) => {\n this.setState({\n searchQuery: query,\n selectedCategory: null,\n currentPage: 1,\n });\n };\n\n // Sort event handler\n handleSort = (sortColumn) => {\n this.setState({ sortColumn });\n };\n\n getData = () => {\n const {\n currentPage,\n pageSize,\n categories: allCategories,\n sortColumn,\n searchQuery,\n } = this.state;\n\n // Start number\n const startNumber = (currentPage - 1) * pageSize;\n\n // Filter option\n let filtered = allCategories;\n if (searchQuery)\n filtered = allCategories.filter(\n (c) =>\n c.name_en.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1 ||\n c.name_de.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1\n );\n\n // Sorting option\n const sorted = _.orderBy(filtered, [sortColumn.path], [sortColumn.order]);\n\n // Pagination option\n const categories = paginate(sorted, currentPage, pageSize);\n\n return {\n startNumber: startNumber,\n totalCount: filtered.length,\n data: categories,\n };\n };\n\n render() {\n const { length: count } = this.state.categories;\n const { currentPage, pageSize, sortColumn, searchQuery, initialSize } =\n this.state;\n const { startNumber, totalCount, data: categories } = this.getData();\n\n return (\n
\n
\n
\n

\n Categories\n

\n
\n
\n \n Create a\n new Category\n \n
\n
\n\n {count !== 0 && (\n \n
\n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n )}\n\n {count === 0 && (\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n )}\n\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default Categories;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst Select = ({ name, label, options, status, error, ...rest }) => {\n return (\n
\n \n \n \n {options.map((option) => (\n \n ))}\n \n {error &&
{error}
}\n
\n );\n};\n\n// Typechecking\nSelect.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n options: PropTypes.array.isRequired,\n status: PropTypes.bool,\n};\n\nexport default Select;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst Input = ({ name, label, error, value, text, status, ...rest }) => {\n return (\n
\n \n \n \n {text}\n \n {error &&
{error}
}\n
\n );\n};\n\n// Typechecking\nInput.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n status: PropTypes.bool,\n};\n\nexport default Input;\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass Password extends Component {\n state = {\n type: \"password\",\n };\n\n handleClick = () =>\n this.setState(({ type }) => ({\n type: type === \"text\" ? \"password\" : \"text\",\n }));\n\n render() {\n const { name, label, error, value, text, status, ...rest } = this.props;\n return (\n
\n \n\n
\n \n
\n \n {this.state.type === \"text\" ? (\n \n ) : (\n \n )}\n \n
\n \n {text}\n \n
\n\n {error &&
{error}
}\n
\n );\n }\n}\n\n// Typechecking\nPassword.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n status: PropTypes.bool,\n};\n\nexport default Password;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst TextBox = ({ name, label, error, value, ...rest }) => {\n return (\n
\n \n \n {error &&
{error}
}\n
\n );\n};\n\n// Typechecking\nTextBox.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n};\n\nexport default TextBox;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst Toggle = ({ name, label, checked, onChange }) => {\n return (\n
\n \n \n
\n );\n};\n\n// Typechecking\nToggle.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default Toggle;\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport GoogleMapReact from \"google-map-react\";\n\n// Config\nimport { mapStyle } from \"../../utils/scripts/map\";\n\n// Constants\nconst googleMapKey = process.env.REACT_APP_GOOGLE_MAP_KEY;\n\nclass Map extends Component {\n static defaultProps = {\n center: {\n lat: 51.0504,\n lng: 13.7273,\n },\n zoom: 14,\n };\n\n render() {\n const {\n onClick,\n lat,\n long,\n zoom,\n style,\n center = [lat, long],\n } = this.props;\n\n function createMapOptions(maps) {\n return {\n zoomControlOptions: {\n position: maps.ControlPosition.LEFT_TOP,\n style: maps.ZoomControlStyle.SMALL,\n },\n mapTypeControlOptions: {\n position: maps.ControlPosition.TOP_RIGHT,\n },\n mapTypeControl: false,\n streetViewControl: true,\n styles: mapStyle,\n rotateControl: false,\n fullscreenControl: false,\n scrollwheel: true,\n disableDoubleClickZoom: true,\n draggableCursor: \"crosshair\",\n };\n }\n\n return (\n // Important! Always set the container height explicitly\n
\n \n \n \n
\n );\n }\n}\n\n// Typechecking\nMap.propTypes = {\n lat: PropTypes.number.isRequired,\n long: PropTypes.number.isRequired,\n zoom: PropTypes.number.isRequired,\n onClick: PropTypes.func,\n};\n\nexport default Map;\n","// Libraries\nimport React, { Component } from \"react\";\nimport Joi from \"joi-browser\";\nimport _ from \"lodash\";\nimport md5 from \"md5\";\n\n// Child Components\nimport Select from \"./form/select\";\nimport Input from \"./form/input\";\nimport Password from \"./form/password\";\nimport TextBox from \"./form/textBox\";\nimport Toggle from \"./form/toggle\";\nimport Map from \"./map\";\n\n// Constants\nconst imageUrl = process.env.REACT_APP_IMAGE_URL;\n\nclass From extends Component {\n state = { data: {}, errors: {} };\n\n //---- From Validation ----//\n validate = () => {\n const options = {\n abortEarly: false,\n };\n const { error } = Joi.validate(this.state.data, this.schema, options);\n if (!error) return null;\n\n const errors = {};\n for (let item of error.details) {\n errors[item.path[0]] = item.message;\n }\n return errors;\n };\n\n validateProperty = ({ name, value }) => {\n const obj = { [name]: value };\n const schema = { [name]: this.schema[name] };\n const { error } = Joi.validate(obj, schema);\n return error ? error.details[0].message : null;\n };\n\n //---- Save Button ----//\n handleSubmit = (e) => {\n e.preventDefault();\n\n const errors = this.validate();\n this.setState({ errors: errors || {} });\n\n if (errors) return;\n this.doSubmit();\n };\n\n renderButton = (\n label,\n style = \"btn btn-primary\",\n icon = \"fa fa-floppy-o\"\n ) => {\n return (\n \n );\n };\n\n //---- Text Inputs ----//\n handleChange = ({ currentTarget: input }) => {\n const errors = { ...this.state.errors };\n const errorMessage = this.validateProperty(input);\n\n if (errorMessage) {\n errors[input.name] = errorMessage;\n } else {\n delete errors[input.name];\n }\n\n const data = { ...this.state.data };\n data[input.name] = input.value;\n this.setState({ data, errors });\n };\n\n renderInput = (name, label, type = \"text\", text = \"\", status) => {\n const { data, errors } = this.state;\n\n return (\n \n );\n };\n\n renderNumberInput = (name, label, type = \"text\", text = \"\", status) => {\n const { data, errors } = this.state;\n\n return (\n \n );\n };\n\n renderPassword = (name, label, text = \"\", status) => {\n const { data, errors } = this.state;\n\n return (\n \n );\n };\n\n renderTextBox = (name, label, type = \"text\") => {\n const { data, errors } = this.state;\n\n return (\n \n );\n };\n\n renderSelect = (name, label, options, status = false) => {\n const { data, errors } = this.state;\n\n return (\n \n );\n };\n\n renderPriority = (name, label) => {\n const { data, errors, maxPriority } = this.state;\n\n return (\n \n );\n };\n\n //---- Switch Button ----//\n handleSwitchChange = (name) => {\n const data = { ...this.state.data };\n\n data[name] = !this.state.data[name];\n\n this.setState({ data });\n };\n\n renderToggle = (name, label) => {\n const { data } = this.state;\n\n return (\n this.handleSwitchChange(name)}\n />\n );\n };\n\n //---- Checkbox Button ----//\n handleCheckbox = () => {\n let remember = { ...this.state.remember };\n\n remember = !this.state.remember;\n\n this.setState({ remember });\n };\n\n renderCheckbox = (label) => {\n return (\n
\n \n \n
\n );\n };\n\n //---- Map Input ----//\n handleMapClick = (e, lat, long) => {\n const data = { ...this.state.data };\n\n data[lat] = e.lat;\n data[long] = e.lng;\n\n this.setState({ data });\n };\n\n renderMap = (lat, long) => {\n const { data } = this.state;\n let latitude = data[lat] > 51 ? data[lat] : 51.0502;\n let longitude = data[long] > 13 ? data[long] : 13.7385;\n return (\n this.handleMapClick(e, lat, long)}\n lat={data[lat] > 51 ? data[lat] : 51.0502}\n long={data[long] > 13 ? data[long] : 13.7385}\n zoom={15}\n center={[latitude, longitude]}\n style={{ height: \"351px\", width: \"100%\" }}\n />\n );\n };\n\n //---- Image Input ----//\n handleFileSelect(event) {\n event.preventDefault();\n\n const selectedFiles = { ...this.state.selectedFiles };\n selectedFiles[event.target.id] = URL.createObjectURL(event.target.files[0]);\n\n const inputLabels = { ...this.state.inputLabels };\n inputLabels[event.target.id] = event.target.files[0].name;\n\n if (inputLabels[\"filename\"] && inputLabels[\"viewpoint_filename\"]) {\n const selectedImages = [...this.state.selectedImages];\n\n if (event.target.id === \"filename\") {\n selectedImages[0] = event.target.files[0];\n } else {\n selectedImages[1] = event.target.files[0];\n }\n\n this.setState({ selectedImages });\n } else {\n const selectedImages = [...this.state.selectedImages];\n\n if (selectedImages.length !== 0) {\n selectedImages.shift();\n }\n selectedImages.push(event.target.files[0]);\n\n this.setState({ selectedImages });\n }\n\n this.setState({ selectedFiles, inputLabels });\n\n // Images\n const images = [];\n\n for (let i = 0; i < event.target.files.length; i++) {\n images.push(URL.createObjectURL(event.target.files[i]));\n }\n\n this.setState({ previewImages: images });\n\n if (event.target.files) {\n const fileNameObject = _.mapValues(event.target.files, function (o) {\n return o.name;\n });\n\n const labels = Object.keys(fileNameObject).map(function (key) {\n return fileNameObject[key];\n });\n\n this.setState({ labels });\n }\n }\n\n handleImageLoad = ({ target: img }) => {\n const dimensions = { ...this.state.dimensions };\n\n const data = { ...this.state.data };\n\n if (img.id !== \"new\") {\n dimensions.height = img.offsetHeight;\n dimensions.width = img.offsetWidth;\n\n const aspectRatio = dimensions.width / dimensions.height;\n\n data[img.id] = Math.round(aspectRatio * 100) / 100;\n }\n\n // Asign filenames to the data\n const inputLabels = { ...this.state.inputLabels };\n if (inputLabels[\"filename\"]) {\n data.filename = this.fileNameHash(inputLabels[\"filename\"]);\n }\n if (inputLabels[\"viewpoint_filename\"]) {\n data.viewpoint_filename = this.fileNameHash(\n inputLabels[\"viewpoint_filename\"]\n );\n }\n\n this.setState({ dimensions, data });\n };\n\n handlePreviewImage = (selectedFiles, data, aspectRatio, name) => {\n if (selectedFiles[name]) {\n return (\n \n );\n } else if (data[name]) {\n return (\n \n );\n }\n };\n\n handleLabel = (labels, data) => {\n if (labels) {\n return labels;\n } else if (data) {\n return data;\n } else {\n return \"Choose a file from device ...\";\n }\n };\n\n fileNameHash = (name) => {\n const index = name.lastIndexOf(\".\");\n const uniqueName = md5(name);\n const filename = uniqueName + name.slice(index);\n return filename.toLowerCase();\n };\n\n renderFileInput = (name) => {\n const { data, inputLabels } = this.state;\n\n return (\n \n \n
\n \n \n
\n
\n );\n };\n\n renderPreview = (aspectRatio, name) => {\n const { selectedFiles, data } = this.state;\n\n return (\n
\n
\n
\n {this.handlePreviewImage(selectedFiles, data, aspectRatio, name)}\n
\n
\n
\n );\n };\n\n renderSinglePreview = (aspectRatio, name) => {\n const { selectedFiles, data } = this.state;\n\n let source = \"\";\n\n if (selectedFiles[name]) {\n source = selectedFiles[name];\n } else if (data.poi_id && data[name]) {\n source = `${imageUrl}/${data.poi_id}/${data[name]}`;\n }\n\n return (\n
\n
\n
\n \n
\n
\n
\n );\n };\n\n renderImage = (filename) => {\n return (\n
\n
\n \" alt={filename} />\n
\n );\n };\n\n renderProgress = () => {\n const { progresses } = this.state;\n return (\n progresses &&\n progresses.map((p, index) => (\n
\n
\n \n
\n
\n
\n \n {p.percentage}%\n
\n
\n
\n \n ))\n );\n };\n}\n\nexport default From;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst Back = ({ onClick }) => {\n return (\n \n );\n};\n\n// Typechecking\nBack.propTypes = {\n onClick: PropTypes.func.isRequired,\n};\n\nexport default Back;\n","// Libraries\nimport React from \"react\";\nimport Joi from \"joi-browser\";\nimport { toast } from \"react-toastify\";\n\n// Parent Component\nimport Form from \"../common/form\";\nimport Back from \"../common/form/back\";\n\n// Functions\nimport {\n getCategory,\n saveCategory,\n getCategoriesMaxPriority,\n} from \"../../services/categoryService\";\n\nclass CategoryForm extends Form {\n state = {\n data: {\n priority: \"\",\n name_de: \"\",\n name_en: \"\",\n },\n pois: [],\n errors: {},\n maxPriority: \"\",\n };\n\n schema = {\n _id: Joi.string(),\n priority: Joi.number().integer().min(1).max(100).label(\"Priority\"),\n name_de: Joi.string().min(3).max(100).required().label(\"Name (German)\"),\n name_en: Joi.string().min(3).max(100).required().label(\"Name (English)\"),\n };\n\n // Retrive the Data from the Server\n async componentDidMount() {\n // Get the maximum Priority\n const { data: max } = await getCategoriesMaxPriority();\n\n // Get the Given ID\n const category_id = this.props.match.params.id;\n\n if (category_id === \"new\") {\n const data = { ...this.state.data };\n\n if (max.length === 0) {\n data.priority = 1;\n return this.setState({ data, maxPriority: 1 });\n } else {\n data.priority = max[0].priority + 1;\n return this.setState({ data, maxPriority: max[0].priority });\n }\n }\n\n // Get Poi related to the Given ID\n const { data: category } = await getCategory(category_id);\n if (!category) return this.props.history.replace(\"/not-found\");\n\n this.setState({\n data: this.mapToViewModel(category),\n maxPriority: max[0].priority,\n });\n }\n\n // Map current Poi to the Form Inputs\n mapToViewModel(category) {\n return {\n _id: category._id,\n priority: category.priority,\n name_en: category.name_en,\n name_de: category.name_de,\n };\n }\n\n doSubmit = async () => {\n // Save Item to the Database\n try {\n const response = await saveCategory(this.state.data);\n\n if (response.data && response.status === 200) {\n toast.success(\n
\n Category: \"{response.data.name_en}\"\n
saved successfully.\n
\n );\n }\n } catch (ex) {\n if (ex.response && ex.response.status === 400) {\n toast.error(\"A Category with that name already exists!\");\n }\n return;\n }\n this.props.history.push(\"/dashboard/categories\");\n };\n\n // Back button Event Handler\n handleBack = () => {\n this.props.history.push(\"/dashboard/categories\");\n };\n\n render() {\n const id = this.props.match.params.id;\n return (\n
\n
\n
\n

\n {\" \"}\n {id === \"new\" ? \"New Category\" : \"Edit Category Details\"}\n

\n
\n
\n\n
\n
\n
\n {this.renderPriority(\"priority\", \"Priority\")}\n
\n
\n
\n\n
\n\n
\n
\n \n {this.renderInput(\"name_en\", \"Name (English)\")}\n
\n\n
\n {this.renderInput(\"name_de\", \"Name (German)\")}\n
\n
\n\n
\n\n
\n
\n \n
\n\n
\n {this.renderButton(\"Save\", \"btn btn-outline-success rounded\")}\n
\n
\n
\n
\n );\n }\n}\n\nexport default CategoryForm;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst Filter = ({\n name,\n label,\n options,\n selectedOption,\n onOptionSelect,\n ...rest\n}) => {\n return (\n
\n
\n \n
\n\n \n {options.map((option) => (\n \n ))}\n \n
\n );\n};\n\n// Typechecking\nFilter.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n options: PropTypes.array.isRequired,\n onOptionSelect: PropTypes.func,\n};\n\nexport default Filter;\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\n// Child Components\nimport Table from \"../common/table\";\nimport Actions from \"../common/table/actions\";\nimport Twin from \"../common/table/twin\";\nimport Thumbnail from \"../common/table/thumbnail\";\nimport Map from \"../common/map\";\n\nclass PoisTable extends Component {\n columns = [\n {\n path: \"filename\",\n label: \"Image\",\n isSortable: false,\n content: (poi) => (\n \n ),\n },\n {\n path: \"lat\",\n label: \"Location\",\n isSortable: false,\n content: (poi) => (\n \n ),\n },\n {\n path: \"title_en\",\n label: \"Title\",\n isSortable: true,\n content: (poi) => ,\n },\n {\n path: \"category.name\",\n label: \"Category\",\n isSortable: true,\n content: (poi) => (\n \n ),\n },\n\n { path: \"priority\", label: \"Priority\", isSortable: true },\n {\n key: \"actions\",\n label: \"Actions\",\n isSortable: false,\n content: (poi) => (\n this.props.onDelete(poi)}\n path=\"poi\"\n item={poi}\n />\n ),\n },\n ];\n\n render() {\n const { pois, startNumber, onSort, sortColumn } = this.props;\n return (\n \n );\n }\n}\n\n// Typechecking\nPoisTable.propTypes = {\n pois: PropTypes.array.isRequired,\n startNumber: PropTypes.number.isRequired,\n onSort: PropTypes.func.isRequired,\n sortColumn: PropTypes.object.isRequired,\n};\n\nexport default PoisTable;\n","// Axios\nimport http from \"./httpService\";\n\n// Constants\nconst apiEnditemnt = \"/item\";\nconst tokenKey = process.env.REACT_APP_TOKEN_KEY;\n\n// Get the current logged-in-user Token from the Browser\nconst jwt = localStorage.getItem(tokenKey);\n\n// Define and get API routes\nfunction itemUrl(id) {\n return `${apiEnditemnt}/${id}`;\n}\n\n// API request to get all of the Items\nexport function getItems() {\n return http.get(apiEnditemnt);\n}\n\n// API request to get the maximum Priority\nexport function getItemsMaxPriority(item) {\n if (item.poi_id) {\n return http.get(`${apiEnditemnt}/priority/${item.poi_id}`);\n }\n}\n\n// API request to get an Item by ID\nexport function getItem(item_id) {\n return http.get(itemUrl(item_id));\n}\n\n// API request to create a new Item or update an existing Item by ID\nexport function saveItem(item) {\n if (item._id) {\n const body = { ...item };\n delete body._id;\n return http.put(itemUrl(item._id), body);\n }\n\n return http.post(apiEnditemnt, item);\n}\n\n// API request to delete an Item by ID\nexport function deleteItem(item_id) {\n return http.delete(itemUrl(item_id), { headers: { \"x-auth-token\": jwt } });\n}\n","// Libraries\nimport React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport _ from \"lodash\";\n\n// Common Components\nimport Search from \"../common/search\";\nimport Filter from \"../common/filter\";\nimport TableMeta from \"../common/table/tableMeta\";\nimport Pagination from \"../common/pagination\";\n\n// Child Components\nimport PoisTable from \"./poisTable\";\nimport Expire from \"../common/expire\";\n\n// Functions\nimport { paginate } from \"../../utils/scripts/paginate\";\nimport { getPois, deletePoi } from \"../../services/poiService\";\nimport { getCategories } from \"../../services/categoryService\";\nimport { deleteDirectory } from \"../../services/fileService\";\nimport { getItems } from \"../../services/itemService\";\n\nclass Pois extends Component {\n state = {\n pois: [],\n categories: [],\n currentPage: 1,\n initialSize: 3,\n pageSize: 3,\n searchQuery: \"\",\n selectedCategory: null,\n sortColumn: { path: \"title_en\", order: \"asc\" },\n };\n\n // Retrive the Data from the Server\n async componentDidMount() {\n // Get Categories and Modify\n const { data: allCategories } = await getCategories();\n if (allCategories.length === 0) return;\n\n // When at least a Poi exists in the database:\n const data = allCategories.map(({ name_en: name, ...rest }) => ({\n name,\n ...rest,\n }));\n const categories = [{ _id: \"\", name: \"All Categories\" }, ...data];\n\n // Find related Category\n function getGategory(id) {\n var category = allCategories.find((c) => {\n return c._id === id;\n });\n if (category) return category;\n }\n\n // Get Pois and Modify\n const { data: allPois } = await getPois();\n\n const pois = allPois.map(({ category_id: category, ...rest }) => ({\n category: {\n _id: getGategory(category)._id,\n name: getGategory(category).name_en,\n name_de: getGategory(category).name_de,\n },\n\n ...rest,\n }));\n\n this.setState({ pois, categories });\n }\n\n // Delete a Poi by ID\n handleDelete = async (poi) => {\n // Delete Validation\n const { data: items } = await getItems();\n const result = items.filter((i) => i.poi_id === poi._id);\n if (result.length !== 0) {\n toast.error(\n
\n Not allowed!\n
First, delete the {result.length} Item(s) of this Histocache.\n
\n );\n return;\n }\n\n // Delete Poi from the State\n const originalPois = this.state.pois;\n const pois = originalPois.filter((p) => p._id !== poi._id);\n\n this.setState({ pois });\n\n try {\n const response = await deletePoi(poi._id);\n if (response.data && response.status === 200) {\n toast.success(\n
\n Histocache: \"{response.data.title_en}\"
deleted successfully.\n
\n );\n\n //this.deleteFolder(poi._id);\n await deleteDirectory(poi._id);\n }\n } catch (ex) {\n if (ex.response && ex.response.status === 401) {\n toast.error(\"Only Admins can delete a Histocache!\");\n } else if (ex.response && ex.response.status === 404) {\n toast.error(\"This Histocache has already been deleted.\");\n }\n\n this.setState({ pois: originalPois });\n }\n };\n\n // Pagination Event Handler\n handlePageChange = (page) => {\n this.setState({ currentPage: page });\n };\n\n // PageSize Event Handler\n handleSizeChange = ({ currentTarget: input }) => {\n let pageSize = { ...this.state.pageSize };\n pageSize = input.value;\n\n this.setState({ pageSize });\n };\n\n // Filter Event Handler\n handleCategorySelect = ({ currentTarget: input }) => {\n const category = this.state.categories.find((c) => c._id === input.value);\n\n this.setState({\n selectedCategory: category,\n searchQuery: \"\",\n currentPage: 1,\n });\n };\n\n // Search Event Handler\n handleSearch = (query) => {\n this.setState({\n searchQuery: query,\n selectedCategory: null,\n currentPage: 1,\n });\n };\n\n // Sort Event Handler\n handleSort = (sortColumn) => {\n this.setState({ sortColumn });\n };\n\n // Get state Data\n getData = () => {\n const {\n currentPage,\n pageSize,\n pois: allPois,\n selectedCategory,\n searchQuery,\n sortColumn,\n } = this.state;\n\n // Calculate StartNumber\n const startNumber = (currentPage - 1) * pageSize;\n\n // Get Filter Options\n let filtered = allPois;\n if (searchQuery)\n filtered = allPois.filter(\n (p) =>\n p.title_en.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1 ||\n p.title_de.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1\n );\n else if (selectedCategory && selectedCategory._id)\n filtered = allPois.filter((p) => p.category._id === selectedCategory._id);\n\n // Define Sorting Option\n const sorted = _.orderBy(filtered, [sortColumn.path], [sortColumn.order]);\n\n // Define Pagination\n const pois = paginate(sorted, currentPage, pageSize);\n\n return {\n startNumber: startNumber,\n totalCount: filtered.length,\n data: pois,\n };\n };\n\n render() {\n const { length: count } = this.state.pois;\n const {\n currentPage,\n pageSize,\n sortColumn,\n searchQuery,\n categories,\n initialSize,\n } = this.state;\n const { startNumber, totalCount, data: pois } = this.getData();\n\n return (\n
\n
\n
\n

\n Histocaches\n

\n
\n
\n {categories.length === 0 && (\n \n {\" \"}\n First create a new Category{\" \"}\n \n )}\n {categories.length !== 0 && (\n \n Create\n a new Histocache\n \n )}\n
\n
\n {count !== 0 && (\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n )}\n\n {count === 0 && (\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n )}\n\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default Pois;\n","// Libraries\nimport React from \"react\";\nimport Joi from \"joi-browser\";\nimport { toast } from \"react-toastify\";\n\n// Parent Component\nimport Form from \"../common/form\";\nimport Back from \"../common/form/back\";\n\n// Functions\nimport { getCategories } from \"../../services/categoryService\";\nimport { uploadFiles } from \"../../services/fileService\";\nimport { getPoi, savePoi, getPoisMaxPriority } from \"../../services/poiService\";\n\nclass PoiFrom extends Form {\n constructor(props) {\n super(props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleImageLoad = this.handleImageLoad.bind(this);\n this.handleLabel = this.handleLabel.bind(this);\n this.handleMapClick = this.handleMapClick.bind(this);\n\n this.state = {\n data: {\n category_id: \"\",\n priority: \"\",\n title_en: \"\",\n title_de: \"\",\n description_en: \"\",\n description_de: \"\",\n caption_en: \"\",\n caption_de: \"\",\n add_info_url: \"\",\n is_displayed_on_table: false,\n has_histocache_location: false,\n lat: \"\",\n long: \"\",\n filename: \"\",\n image_aspect_ratio: \"\",\n has_viewpoint_location: false,\n viewpoint_lat: \"\",\n viewpoint_long: \"\",\n viewpoint_filename: \"\",\n viewpoint_image_aspect_ratio: \"\",\n viewpoint_image_height: \"\",\n viewpoint_image_offset: \"\",\n viewpoint_image_vertical_offset: \"\",\n },\n maxPriority: \"\",\n categories: [],\n selectedFiles: { filename: \"\", viewpoint_filename: \"\" },\n previewImages: [],\n selectedImages: [],\n images: [],\n inputLabels: { filename: \"\", viewpoint_filename: \"\" },\n labels: [],\n dimensions: {},\n errors: {},\n };\n }\n\n // Define the Form Schema\n schema = {\n _id: Joi.string(),\n category_id: Joi.string().required().label(\"Category\"),\n priority: Joi.number().integer().min(1).max(100).label(\"Priority\"),\n title_en: Joi.string().min(5).max(100).required().label(\"Title (English)\"),\n title_de: Joi.string().min(5).max(100).required().label(\"Title (German)\"),\n description_en: Joi.string()\n .min(50)\n .max(5000)\n .required()\n .label(\"Description (English)\"),\n description_de: Joi.string()\n .min(50)\n .max(5000)\n .required()\n .label(\"Description (German)\"),\n caption_en: Joi.string()\n .min(5)\n .max(500)\n .required()\n .label(\"Caption (English)\"),\n caption_de: Joi.string()\n .min(5)\n .max(500)\n .required()\n .label(\"Caption (German)\"),\n add_info_url: Joi.string()\n .optional()\n .allow(null)\n .allow(\"\")\n .empty(\"\")\n .label(\"Add Info URL\"),\n\n is_displayed_on_table: Joi.boolean().label(\"Displayed on Table\").required(),\n\n has_histocache_location: Joi.boolean()\n .label(\"Histocache Location\")\n .required(),\n lat: Joi.number()\n .min(51.0)\n .max(51.1)\n .label(\"Latitude\")\n .when(\"has_histocache_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n long: Joi.number()\n .min(13.0)\n .max(13.9)\n .label(\"Longitude\")\n .when(\"has_histocache_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n filename: Joi.string().label(\"File Name\").required(),\n\n image_aspect_ratio: Joi.number()\n .min(0.1)\n .max(4)\n .label(\"Aspect Ratio\")\n .when(\"has_histocache_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n\n has_viewpoint_location: Joi.boolean()\n .label(\"Viewpoint Location\")\n .required(),\n viewpoint_lat: Joi.number()\n .min(51.0)\n .max(51.1)\n .label(\"Latitude\")\n .when(\"has_viewpoint_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n viewpoint_long: Joi.number()\n .min(13.0)\n .max(13.9)\n .label(\"Longitude\")\n .when(\"has_viewpoint_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n viewpoint_filename: Joi.string()\n .label(\"File Name\")\n .when(\"has_viewpoint_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n viewpoint_image_aspect_ratio: Joi.number()\n .min(0.1)\n .max(4)\n .label(\"Aspect Ratio\")\n .when(\"has_viewpoint_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n viewpoint_image_height: Joi.number()\n .min(1)\n .label(\"Image Height\")\n .when(\"has_viewpoint_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n viewpoint_image_offset: Joi.number()\n .min(1)\n .label(\"Image Offset\")\n .when(\"has_viewpoint_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\"),\n }),\n viewpoint_image_vertical_offset: Joi.number()\n .label(\"Vertical Offset\")\n .when(\"has_viewpoint_location\", {\n is: true,\n then: Joi.required(),\n otherwise: Joi.allow(null).allow(\"\").empty(\"\").allow(0),\n }),\n };\n\n // Retrive the Data from the Server\n async componentDidMount() {\n // Get Categories and Modify\n const { data: allCategories } = await getCategories();\n if (allCategories.length === 0) return;\n\n // When at least a Poi exists in the database:\n const categories = allCategories.map(({ name_en: name, ...rest }) => ({\n name,\n ...rest,\n }));\n\n this.setState({ categories });\n\n // Get the maximum Priority\n const { data: max } = await getPoisMaxPriority();\n\n // Get the Given ID\n const poi_id = this.props.match.params.id;\n\n if (poi_id === \"new\") {\n const data = { ...this.state.data };\n\n if (max.length === 0) {\n data.priority = 1;\n return this.setState({ data, maxPriority: 1 });\n } else {\n data.priority = max[0].priority + 1;\n return this.setState({ data, maxPriority: max[0].priority });\n }\n }\n\n // Get Poi related to the Given ID\n const { data: poi } = await getPoi(poi_id);\n if (!poi) return this.props.history.replace(\"/not-found\");\n\n this.setState({\n data: this.mapToViewModel(poi),\n maxPriority: max[0].priority,\n });\n }\n\n // Map current Poi to the Form Inputs\n mapToViewModel(poi) {\n return {\n _id: poi._id,\n priority: poi.priority,\n category_id: poi.category_id,\n title_en: poi.title_en,\n title_de: poi.title_de,\n description_en: poi.description_en,\n description_de: poi.description_de,\n caption_en: poi.caption_en,\n caption_de: poi.caption_de,\n add_info_url: poi.add_info_url,\n is_displayed_on_table: poi.is_displayed_on_table,\n has_histocache_location: poi.has_histocache_location,\n lat: poi.lat,\n long: poi.long,\n filename: poi.filename,\n image_aspect_ratio: poi.image_aspect_ratio,\n has_viewpoint_location: poi.has_viewpoint_location,\n viewpoint_lat: poi.viewpoint_lat,\n viewpoint_long: poi.viewpoint_long,\n viewpoint_filename: poi.viewpoint_filename,\n viewpoint_image_aspect_ratio: poi.viewpoint_image_aspect_ratio,\n viewpoint_image_height: poi.viewpoint_image_height,\n viewpoint_image_offset: poi.viewpoint_image_offset,\n viewpoint_image_vertical_offset: poi.viewpoint_image_vertical_offset,\n };\n }\n\n // Form submit Function\n doSubmit = async () => {\n // Poi to Save\n const data = { ...this.state.data };\n const cleanPoi = this.cleanDataObject(data);\n\n // Save Item to the Database\n try {\n const response = await savePoi(cleanPoi);\n if (response.data && response.status === 200) {\n toast.success(\n
\n Histocache: \"{response.data.title_en}\"
saved successfully.\n
\n );\n\n // Images to Save\n const selectedImages = [...this.state.selectedImages];\n // Image Upload Header\n const header = response.data._id;\n\n for (let i = 0; i < selectedImages.length; i++) {\n await uploadFiles(selectedImages[i], header, () => {});\n }\n }\n } catch (ex) {\n if (ex.response && ex.response.status === 400) {\n toast.error(\"This Histocache has already exists!\");\n }\n return;\n }\n\n // Return to Pois TableView after saving\n this.props.history.push(\"/dashboard/pois\");\n };\n\n // Data Object cleaning Function\n cleanDataObject(obj) {\n for (var property in obj) {\n if (\n obj[property] === null ||\n obj[property] === undefined ||\n obj[property] === \"\"\n ) {\n delete obj[property];\n }\n }\n return obj;\n }\n\n // Back button Event Handler\n handleBack = () => {\n this.props.history.push(\"/dashboard/pois\");\n };\n\n render() {\n const id = this.props.match.params.id;\n\n return (\n
\n
\n
\n

\n {\" \"}\n {id === \"new\" ? \"New Histocache\" : \"Edit Histocache Details\"}\n

\n
\n
\n \n
\n
\n {this.renderSelect(\n \"category_id\",\n \"Category\",\n this.state.categories\n )}\n {this.renderPriority(\"priority\", \"Priority\")}\n {this.renderFileInput(\"filename\")}\n
\n
\n {this.renderInput(\n \"image_aspect_ratio\",\n \"Aspect Ratio\",\n \"number\",\n \"\",\n true\n )}\n
\n
\n {this.renderInput(\"add_info_url\", \"Additional info URL\")}\n
\n
\n
\n
\n {this.renderPreview(\"image_aspect_ratio\", \"filename\")}\n
\n
\n\n
\n\n
\n
\n {this.renderInput(\"title_en\", \"Title (English)\")}\n
\n\n
\n {this.renderInput(\"title_de\", \"Title (German)\")}\n
\n
\n\n
\n
\n {this.renderTextBox(\"description_en\", \"Description (English)\")}\n
\n\n
\n {this.renderTextBox(\"description_de\", \"Description (German)\")}\n
\n
\n\n
\n
\n {this.renderTextBox(\"caption_en\", \"Caption (English)\")}\n
\n
\n {this.renderTextBox(\"caption_de\", \"Caption (German)\")}\n
\n
\n\n
\n\n
\n
\n {this.renderToggle(\"is_displayed_on_table\", \"Displayed on Table\")}\n
\n
\n\n
\n\n
\n
\n {this.renderToggle(\n \"has_histocache_location\",\n \"Histocache Location\"\n )}\n
\n
\n\n {this.state.data.has_histocache_location && (\n
\n
\n {this.renderMap(\"lat\", \"long\")}\n
\n
\n {this.renderInput(\"lat\", \"Latitude\", \"number\")}\n
\n
\n {this.renderInput(\"long\", \"Longitude\", \"number\")}\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n )}\n\n
\n\n
\n
\n {this.renderToggle(\n \"has_viewpoint_location\",\n \"Viewpoint Location\"\n )}\n
\n
\n\n {this.state.data.has_viewpoint_location && (\n
\n
\n {this.renderMap(\"viewpoint_lat\", \"viewpoint_long\")}\n
\n
\n {this.renderInput(\"viewpoint_lat\", \"Latitude\", \"number\")}\n
\n
\n {this.renderInput(\"viewpoint_long\", \"Longitude\", \"number\")}\n
\n
\n
\n\n
\n
\n
\n {this.renderPreview(\n \"viewpoint_image_aspect_ratio\",\n \"viewpoint_filename\"\n )}\n
\n
\n\n
\n
\n {this.renderInput(\n \"viewpoint_image_aspect_ratio\",\n \"Aspect Ratio\",\n \"number\",\n \"\",\n true\n )}\n
\n
\n {this.renderInput(\n \"viewpoint_image_height\",\n \"Image Height\",\n \"number\"\n )}\n
\n
\n {this.renderInput(\n \"viewpoint_image_offset\",\n \"Image Offset\",\n \"number\"\n )}\n
\n
\n {this.renderNumberInput(\n \"viewpoint_image_vertical_offset\",\n \"Vertical Offset\",\n \"number\"\n )}\n
\n
\n\n
\n
\n {this.renderFileInput(\"viewpoint_filename\")}\n
\n
\n
\n
\n )}\n\n
\n\n
\n
\n \n
\n
\n {this.renderButton(\"Save\", \"btn btn-success rounded\")}\n
\n
\n \n
\n );\n }\n}\n\nexport default PoiFrom;\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\n// Child Components\nimport Table from \"../common/table\";\nimport Twin from \"../common/table/twin\";\nimport Thumbnail from \"../common/table/thumbnail\";\nimport Actions from \"../common/table/actions\";\n\nclass ItemsTable extends Component {\n columns = [\n {\n path: \"filename\",\n label: \"Item Image\",\n isSortable: false,\n content: (item) => (\n \n ),\n },\n {\n path: \"poi.title_en\",\n label: \"Histocache\",\n isSortable: true,\n content: (item) => (\n \n ),\n },\n { path: \"priority\", label: \"Priority\", isSortable: true },\n {\n key: \"actions\",\n label: \"Actions\",\n isSortable: false,\n content: (item) => (\n this.props.onDelete(item)}\n path=\"item\"\n item={item}\n />\n ),\n },\n ];\n\n render() {\n const { items, startNumber, onSort, sortColumn } = this.props;\n return (\n \n );\n }\n}\n\n// Typechecking\nItemsTable.propTypes = {\n items: PropTypes.array.isRequired,\n startNumber: PropTypes.number.isRequired,\n onSort: PropTypes.func.isRequired,\n sortColumn: PropTypes.object.isRequired,\n};\n\nexport default ItemsTable;\n","// Libraries\nimport React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport _ from \"lodash\";\n\n// Common Components\nimport Search from \"../common/search\";\nimport Filter from \"../common/filter\";\nimport TableMeta from \"../common/table/tableMeta\";\nimport Pagination from \"../common/pagination\";\n\n// Child Components\nimport ItemsTable from \"./itemsTable\";\nimport Expire from \"../common/expire\";\n\n// Functions\nimport { paginate } from \"../../utils/scripts/paginate\";\nimport { getItems, deleteItem } from \"../../services/itemService\";\nimport { getPois } from \"../../services/poiService\";\nimport { deleteFile } from \"../../services/fileService\";\n\nclass Items extends Component {\n state = {\n items: [],\n pois: [],\n currentPage: 1,\n initialSize: 3,\n pageSize: 3,\n searchQuery: \"\",\n selectedPoi: null,\n sortColumn: { path: \"poi.title_en\", order: \"asc\" },\n };\n\n // Retrive the Data from the Server\n async componentDidMount() {\n // Get Pois and Modify\n const { data: allPois } = await getPois();\n if (allPois.length === 0) return;\n\n // When at least a Poi exists in the database:\n const data = allPois.map(({ title_en: name, ...rest }) => ({\n name,\n ...rest,\n }));\n const pois = [{ _id: \"\", name: \"All Histocaches\" }, ...data];\n\n // Find related Poi\n function getPoi(id) {\n var poi = allPois.find((p) => {\n return p._id === id;\n });\n if (poi) return poi;\n }\n\n // Get Items and Modify\n const { data: allItems } = await getItems();\n\n if (allItems.length) {\n const items = allItems.map(({ poi_id: poi, ...rest }) => ({\n poi: {\n _id: getPoi(poi)._id,\n title_en: getPoi(poi).title_en,\n title_de: getPoi(poi).title_de,\n },\n ...rest,\n }));\n\n this.setState({ items, pois });\n }\n\n this.setState({ pois });\n }\n\n // Delete Event Handler\n handleDelete = async (item) => {\n const originalItems = this.state.items;\n const items = originalItems.filter((i) => i._id !== item._id);\n\n this.setState({ items });\n\n try {\n const response = await deleteItem(item._id);\n if (response.data && response.status === 200) {\n toast.success(\n
\n Item of priority: \"{response.data.priority}\"\n
deleted successfully.\n
\n );\n\n await deleteFile(item.filename);\n }\n } catch (ex) {\n if (ex.response && ex.response.status === 401) {\n toast.error(\"Only Admins can delete an Item!\");\n } else if (ex.response && ex.response.status === 404) {\n toast.error(\"This Item has already been deleted.\");\n }\n\n this.setState({ items: originalItems });\n }\n };\n\n // Pagination Event Handler\n handlePageChange = (page) => {\n this.setState({ currentPage: page });\n };\n\n // PageSize Event Handler\n handleSizeChange = ({ currentTarget: input }) => {\n let pageSize = { ...this.state.pageSize };\n pageSize = input.value;\n\n this.setState({ pageSize });\n };\n\n // Filter Event Handler\n handlePoiSelect = ({ currentTarget: input }) => {\n const poi = this.state.pois.find((p) => p._id === input.value);\n\n this.setState({\n selectedPoi: poi,\n searchQuery: \"\",\n currentPage: 1,\n });\n };\n\n // Search Event Handler\n handleSearch = (query) => {\n this.setState({\n searchQuery: query,\n selectedPoi: null,\n currentPage: 1,\n });\n };\n\n // Sort Event Handler\n handleSort = (sortColumn) => {\n this.setState({ sortColumn });\n };\n\n // Get state Data\n getData = () => {\n const {\n currentPage,\n pageSize,\n items: allItems,\n selectedPoi,\n searchQuery,\n sortColumn,\n } = this.state;\n\n // Calculate StartNumber\n const startNumber = (currentPage - 1) * pageSize;\n\n // Get Filter Options\n let filtered = allItems;\n\n if (searchQuery)\n filtered = allItems.filter(\n (i) =>\n i.poi.title_en.toLowerCase().indexOf(searchQuery.toLowerCase()) !==\n -1 ||\n i.poi.title_de.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1\n );\n else if (selectedPoi && selectedPoi._id)\n filtered = allItems.filter((i) => i.poi._id === selectedPoi._id);\n\n // Define Sorting Option\n const sorted = _.orderBy(filtered, [sortColumn.path], [sortColumn.order]);\n\n // Define Pagination\n const items = paginate(sorted, currentPage, pageSize);\n\n return {\n startNumber: startNumber,\n totalCount: filtered.length,\n data: items,\n };\n };\n\n render() {\n const { length: count } = this.state.items;\n const {\n currentPage,\n pageSize,\n sortColumn,\n searchQuery,\n pois,\n initialSize,\n } = this.state;\n const { startNumber, totalCount, data: items } = this.getData();\n\n return (\n
\n
\n
\n

\n Items\n

\n
\n
\n {pois.length === 0 && (\n \n {\" \"}\n First create a new Histocache{\" \"}\n \n )}\n {pois.length !== 0 && (\n \n Create\n a new Item\n \n )}\n
\n
\n\n {count !== 0 && (\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n )}\n\n {count === 0 && (\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n )}\n\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default Items;\n","// Libraries\nimport React from \"react\";\nimport Joi from \"joi-browser\";\nimport { toast } from \"react-toastify\";\n// import _ from \"lodash\";\n\n// Parent Component\nimport Form from \"../common/form\";\nimport Back from \"../common/form/back\";\n\n// Functions\nimport { getPois } from \"../../services/poiService\";\nimport { uploadFiles } from \"../../services/fileService\";\nimport {\n getItem,\n saveItem,\n getItemsMaxPriority,\n} from \"../../services/itemService\";\n\nclass ItemForm extends Form {\n constructor(props) {\n super(props);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleImageLoad = this.handleImageLoad.bind(this);\n this.handleLabel = this.handleLabel.bind(this);\n this.handleMapClick = this.handleMapClick.bind(this);\n\n this.state = {\n data: {\n poi_id: \"\",\n priority: 1,\n description_en: \"\",\n description_de: \"\",\n caption_en: \"\",\n caption_de: \"\",\n filename: \"\",\n image_aspect_ratio: \"\",\n },\n pois: [],\n selectedFiles: { filename: \"\" },\n selectedImages: [],\n previewImages: [],\n images: [],\n inputLabels: { filename: \"\" },\n labels: [],\n dimensions: {},\n errors: {},\n maxPriority: \"\",\n };\n }\n\n // Define the Form Schema\n schema = {\n _id: Joi.string(),\n poi_id: Joi.string().required().label(\"Histocache\"),\n priority: Joi.number().integer().min(1).max(100).label(\"Priority\"),\n description_en: Joi.string()\n .min(10)\n .max(5000)\n .required()\n .label(\"Description (English)\"),\n description_de: Joi.string()\n .min(10)\n .max(5000)\n .required()\n .label(\"Description (German)\"),\n caption_en: Joi.string()\n .min(5)\n .max(500)\n .required()\n .label(\"Caption (English)\"),\n caption_de: Joi.string()\n .min(5)\n .max(500)\n .required()\n .label(\"Caption (German)\"),\n filename: Joi.string().required().label(\"File Name\"),\n image_aspect_ratio: Joi.number()\n .min(0.1)\n .max(4)\n .required()\n .label(\"Aspect Ratio\"),\n };\n\n // Retrive the Data from the Server\n async componentDidMount() {\n // Get Pois and Modify\n const { data: allPois } = await getPois();\n if (allPois.length === 0) return;\n\n // When at least a Poi exists in the database:\n const pois = allPois.map(({ title_en: name, ...rest }) => ({\n name,\n ...rest,\n }));\n\n this.setState({ pois });\n\n // Get the Given ID\n const item_id = this.props.match.params.id;\n\n if (item_id === \"new\") return;\n\n // Get Item related to the Given ID\n const { data: item } = await getItem(item_id);\n if (!item) return this.props.history.replace(\"/not-found\");\n\n // Get the maximum Priority\n const { data: max } = await getItemsMaxPriority(item);\n\n this.setState({\n data: this.mapToViewModel(item),\n maxPriority: max[0].priority,\n });\n }\n\n // Update the priority after selcting the Poi\n async componentDidUpdate(prevProps, prevState) {\n if (prevProps.match.params.id === \"new\") {\n if (prevState.data.poi_id !== this.state.data.poi_id) {\n const data = { ...this.state.data };\n const { data: max } = await getItemsMaxPriority(data);\n\n if (max.length === 0) {\n data.priority = 1;\n return this.setState({ data, maxPriority: 1 });\n } else {\n data.priority = max[0].priority + 1;\n return this.setState({ data, maxPriority: max[0].priority });\n }\n }\n }\n }\n\n // Map current Item to the Form Inputs\n mapToViewModel(item) {\n return {\n _id: item._id,\n priority: item.priority,\n poi_id: item.poi_id,\n description_en: item.description_en,\n description_de: item.description_de,\n caption_en: item.caption_en,\n caption_de: item.caption_de,\n filename: item.filename,\n image_aspect_ratio: item.image_aspect_ratio,\n };\n }\n\n // Form submit Function\n doSubmit = async () => {\n // Save Item to the Database\n try {\n // Item to save\n const response = await saveItem(this.state.data);\n if (response.data && response.status === 200) {\n toast.success(\n
\n Item of priority: \"{response.data.priority}\"\n
saved successfully.\n
\n );\n\n // Image to Save\n const selectedImages = [...this.state.selectedImages];\n // Image Upload Header\n const header = this.state.data.poi_id;\n const index = selectedImages.length - 1;\n\n await uploadFiles(selectedImages[index], header, () => {});\n }\n } catch (ex) {\n if (ex.response && ex.response.status === 400) {\n toast.error(\"This Item has already exists!\");\n }\n return;\n }\n\n // Return to Items TableView after saving\n this.props.history.push(\"/dashboard/items\");\n };\n\n // Back button Event Handler\n handleBack = () => {\n this.props.history.push(\"/dashboard/items\");\n };\n\n render() {\n const id = this.props.match.params.id;\n\n return (\n
\n
\n
\n

\n {\" \"}\n {id === \"new\" ? \"New Item\" : \"Edit Item Details\"}\n

\n
\n
\n\n \n
\n
\n {this.renderSelect(\"poi_id\", \"Histocache\", this.state.pois)}\n {this.renderPriority(\"priority\", \"Priority\")}\n {this.renderFileInput(\"filename\")}\n
\n
\n {this.renderInput(\n \"image_aspect_ratio\",\n \"Aspect Ratio\",\n \"number\",\n \"\",\n true\n )}\n
\n
\n
\n
\n {this.renderSinglePreview(\"image_aspect_ratio\", \"filename\")}\n
\n
\n\n
\n\n
\n
\n {this.renderTextBox(\"description_en\", \"Description (English)\")}\n
\n\n
\n {this.renderTextBox(\"description_de\", \"Description (German)\")}\n
\n
\n
\n
\n {this.renderTextBox(\"caption_en\", \"Caption (English)\")}\n
\n\n
\n {this.renderTextBox(\"caption_de\", \"Caption (German)\")}\n
\n
\n\n
\n\n
\n
\n \n
\n\n
\n {this.renderButton(\"Save\", \"btn btn-success rounded\")}\n
\n
\n \n
\n );\n }\n}\n\nexport default ItemForm;\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass Role extends Component {\n getBadgeClasses() {\n let classes = \"badge badge-pill badge-\";\n\n const role = this.props.role;\n switch (role) {\n case \"owner\":\n classes += \"success\";\n break;\n case \"admin\":\n classes += \"primary\";\n break;\n default:\n classes += \"secondary\";\n }\n\n return classes;\n }\n\n capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n render() {\n return (\n \n {this.capitalize(this.props.role)}\n \n );\n }\n}\n\n// Typechecking\nRole.propTypes = {\n role: PropTypes.string.isRequired,\n};\n\nexport default Role;\n","// Libraries\nimport React from \"react\";\n\nconst reformatDate = (e) => {\n const date = new Date(e);\n const options = {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n };\n\n return new Intl.DateTimeFormat(\"en-GB\", options).format(date);\n};\n\nconst Format = ({ date }) => {\n return

{reformatDate(date)}

;\n};\n\nexport default Format;\n","// Libraries\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\n// Child Components\nimport Table from \"../common/table\";\nimport Actions from \"../common/table/actions\";\nimport Role from \"../common/misc/role\";\nimport Format from \"../common/misc/format\";\n\nclass UsersTable extends Component {\n columns = [\n { path: \"name\", label: \"Name\", isSortable: true },\n {\n path: \"email\",\n label: \"Email\",\n isSortable: true,\n content: (user) => {user.email},\n },\n {\n path: \"role\",\n label: \"Role\",\n isSortable: false,\n content: (user) => ,\n },\n {\n path: \"created_at\",\n label: \"Created\",\n isSortable: true,\n content: (user) => ,\n },\n {\n key: \"actions\",\n label: \"Actions\",\n isSortable: false,\n content: (user) => (\n this.props.onDelete(user)}\n path=\"user\"\n item={user}\n />\n ),\n },\n ];\n\n render() {\n const { users, startNumber, onSort, sortColumn } = this.props;\n return (\n \n );\n }\n}\n\n// Typechecking\nUsersTable.propTypes = {\n users: PropTypes.array.isRequired,\n startNumber: PropTypes.number.isRequired,\n onSort: PropTypes.func.isRequired,\n sortColumn: PropTypes.object.isRequired,\n};\n\nexport default UsersTable;\n","// Axios\nimport http from \"./httpService\";\n\n// Constants\nconst apiEndpoint = \"/users\";\n\n// Define and get API routes\nfunction usersUrl(id) {\n return `${apiEndpoint}/${id}`;\n}\n\nfunction upgradeUrl(id) {\n return `${apiEndpoint}/upgrade/${id}`;\n}\n\n// API request to get all of the Users\nexport function getUsers() {\n return http.get(apiEndpoint);\n}\n\n// API request to get an User by ID\nexport function findUser(user_id) {\n return http.get(usersUrl(user_id));\n}\n\n// API request to register a new User\nexport function registerUsers(user) {\n return http.post(apiEndpoint, {\n name: user.name,\n email: user.email,\n password: user.password,\n });\n}\n\n// API request to create a new User or update an existing User by ID\nexport function saveUser(user) {\n if (user._id) {\n const body = { ...user };\n delete body._id;\n return http.put(usersUrl(user._id), body);\n }\n\n return http.post(apiEndpoint, user);\n}\n\n// API request to upgrade an existing User by ID\nexport function upgradeUser(user) {\n const body = { ...user };\n delete body._id;\n return http.put(upgradeUrl(user._id), body);\n}\n\n// API request to delete an existing User by ID\nexport function deleteUser(user_id) {\n return http.delete(usersUrl(user_id));\n}\n\nexport default {\n getUsers,\n registerUsers,\n deleteUser,\n findUser,\n saveUser,\n upgradeUser,\n};\n","// Libraries\nimport React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport _ from \"lodash\";\n\n// Child Components\nimport UsersTable from \"./usersTable\";\nimport Expire from \"../common/expire\";\nimport Pagination from \"../common/pagination\";\nimport TableMeta from \"../common/table/tableMeta\";\nimport Search from \"../common/search\";\n\n// Functions\nimport { getUsers, deleteUser } from \"../../services/userService\";\nimport { paginate } from \"../../utils/scripts/paginate\";\n\nclass Users extends Component {\n state = {\n users: [],\n currentPage: 1,\n initialSize: 5,\n pageSize: 5,\n searchQuery: \"\",\n sortColumn: { path: \"name\", order: \"asc\" },\n };\n\n // Retrive data from the server\n async componentDidMount() {\n const { data: allUsers } = await getUsers();\n const users = allUsers.filter((u) => u.role !== \"owner\");\n\n this.setState({ users });\n }\n\n // Delete event handler\n handleDelete = async (user) => {\n const originalUsers = this.state.users;\n const users = originalUsers.filter((u) => u._id !== user._id);\n\n this.setState({ users });\n\n try {\n const response = await deleteUser(user._id);\n if (response.data && response.status === 200) {\n toast.success(`The User ${response.data.name} deleted successfully.`);\n }\n } catch (ex) {\n if (ex.response && ex.response.status === 404) {\n toast.error(\"This user has already been deleted.\");\n }\n\n this.setState({ users: originalUsers });\n }\n };\n\n // Pagination event handler\n handlePageChange = (page) => {\n this.setState({ currentPage: page });\n };\n\n // Page size event handler\n handleSizeChange = ({ currentTarget: input }) => {\n let pageSize = { ...this.state.pageSize };\n pageSize = input.value;\n\n this.setState({ pageSize });\n };\n\n // Search event handler\n handleSearch = (query) => {\n this.setState({\n searchQuery: query,\n selectedUser: null,\n currentPage: 1,\n });\n };\n\n // Sort event handler\n handleSort = (sortColumn) => {\n this.setState({ sortColumn });\n };\n\n getData = () => {\n const {\n currentPage,\n pageSize,\n users: allUsers,\n sortColumn,\n searchQuery,\n } = this.state;\n\n // Start number\n const startNumber = (currentPage - 1) * pageSize;\n\n // Filter option\n let filtered = allUsers;\n if (searchQuery)\n filtered = allUsers.filter(\n (u) => u.name.toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1\n );\n\n // Sorting option\n const sorted = _.orderBy(filtered, [sortColumn.path], [sortColumn.order]);\n\n // Pagination option\n const users = paginate(sorted, currentPage, pageSize);\n\n return {\n startNumber: startNumber,\n totalCount: filtered.length,\n data: users,\n };\n };\n\n render() {\n const { length: count } = this.state.users;\n const { currentPage, pageSize, sortColumn, searchQuery, initialSize } =\n this.state;\n const { startNumber, totalCount, data: users } = this.getData();\n const { user } = this.props;\n\n return (\n
\n
\n
\n

\n Users\n

\n
\n
\n {user === \"owner\" && (\n \n Create\n a new User\n \n )}\n
\n
\n\n
\n
\n
\n \n
\n
\n\n {count !== 0 && (\n
\n
\n \n
\n
\n )}\n\n {count === 0 && (\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n )}\n\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default Users;\n","// Libraries\nimport React from \"react\";\nimport Joi from \"joi-browser\";\n\n// Child Components\nimport Form from \"../common/form\";\nimport Back from \"../common/form/back\";\n\n// Functions\nimport userService from \"../../services/userService\";\nimport authService from \"../../services/authService\";\n\nclass UserForm extends Form {\n state = {\n data: { name: \"\", email: \"\", password: \"\" },\n errors: { name: \"\", email: \"\", password: \"\" },\n currentUserRole: \"\",\n roles: [\n { name: \"owner\", _id: \"owner\" },\n { name: \"admin\", _id: \"admin\" },\n { name: \"editor\", _id: \"editor\" },\n ],\n };\n\n schema = {\n _id: Joi.string(),\n role: Joi.string().label(\"Role\"),\n name: Joi.string().label(\"Name\"),\n email: Joi.string().email().label(\"Email\"),\n password: Joi.string().min(8).label(\"Password\"),\n };\n\n async componentDidMount() {\n const currentUser = authService.getCurrentUser();\n const currentUserRole = currentUser.role;\n this.setState({ currentUserRole });\n\n // Get Poi related to the Given ID\n const user_id = this.props.match.params.id;\n\n if (user_id === \"new\") return;\n\n const { data: user } = await userService.findUser(user_id);\n if (!user) return this.props.history.replace(\"/not-found\");\n\n this.setState({ data: this.mapToViewModel(user) });\n }\n\n mapToViewModel(user) {\n return {\n _id: user._id,\n name: user.name,\n email: user.email,\n password: user.password,\n role: user.role,\n };\n }\n\n doSubmit = async () => {\n const id = this.props.match.params.id;\n const { currentUserRole } = this.state;\n\n // Owner functionality\n if (currentUserRole === \"owner\") {\n try {\n if (id !== \"new\") {\n await userService.upgradeUser(this.state.data);\n }\n await userService.saveUser(this.state.data);\n\n // routing after submitting the form\n this.props.history.push(\"/dashboard/users\");\n } catch (ex) {\n if (ex.response && ex.response.status === 400) {\n const errors = { ...this.state.errors };\n errors.email = ex.response.data;\n this.setState({ errors });\n }\n }\n } else {\n // non-Owner functionality\n try {\n await userService.saveUser(this.state.data);\n\n // routing after submitting the form\n window.location = \"/logout\";\n } catch (ex) {\n if (ex.response && ex.response.status === 400) {\n const errors = { ...this.state.errors };\n errors.email = ex.response.data;\n this.setState({ errors });\n }\n }\n }\n };\n\n handleBack = () => {\n this.props.history.push(\"/dashboard/users\");\n };\n\n getStatus = () => {\n const currentUser = authService.getCurrentUser();\n const id = this.props.match.params.id;\n\n if (currentUser.role === \"editor\") {\n if (currentUser._id === id) {\n return false;\n }\n return true;\n }\n\n return false;\n };\n\n render() {\n const id = this.props.match.params.id;\n const { roles, currentUserRole } = this.state;\n const status = this.getStatus();\n\n return (\n
\n
\n
\n

\n {\" \"}\n {id === \"new\" ? \"New User\" : \"Edit User Profile\"}\n

\n
\n
\n\n
\n
\n
\n {this.renderInput(\"name\", \"Name\", \"text\", \"\", status)}\n {this.renderInput(\"email\", \"Email\", \"text\", \"\", status)}\n {this.renderPassword(\n \"password\",\n \"Password\",\n \"* new password must be set each time before saving!\",\n status\n )}\n {this.renderSelect(\n \"role\",\n \"Role\",\n roles,\n currentUserRole === \"owner\" ? false : true\n )}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n
\n\n
\n
\n \n
\n\n
\n {this.renderButton(\"Save\", \"btn btn-outline-success rounded\")}\n
\n
\n
\n
\n );\n }\n}\n\nexport default UserForm;\n","// Libraries\nimport React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\n// Child Components\nimport Role from \"../common/misc/role\";\nimport Format from \"../common/misc/format\";\nimport Back from \"../common/form/back\";\n\n// Functions\nimport userService from \"../../services/userService\";\n\nclass Profile extends Component {\n state = { account: \"\" };\n\n async componentDidMount() {\n const { data: account } = await userService.findUser(this.props.user._id);\n this.setState({ account });\n }\n\n handleBack = () => {\n this.props.history.push(\"/dashboard/users\");\n };\n\n render() {\n const { account } = this.state;\n\n return (\n
\n
\n
\n

\n Profile\n

\n
\n
\n\n
\n {account && (\n
\n
\n \n
\n
\n
Name
\n

{account.name}

\n
\n
\n
Email Address
\n
\n {account.email}\n
\n
\n
\n
Created
\n\n
\n \n
\n
\n
\n )}\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n \n Edit Profile\n \n
\n
\n
\n );\n }\n}\n\nexport default Profile;\n","// Libraries\nimport React from \"react\";\nimport { Switch, Redirect } from \"react-router-dom\";\n\n// Common Components\nimport Private from \"../../routes/private\";\n\n// Child Components\nimport Header from \"./header\";\nimport SideBar from \"./sideBar\";\nimport Overview from \"../overview/overview\";\nimport Categories from \"../categories/categories\";\nimport CategoryForm from \"../categories/categoryForm\";\nimport Pois from \"../pois/pois\";\nimport PoiForm from \"../pois/poiForm\";\nimport Items from \"../items/items\";\nimport ItemForm from \"../items/itemForm\";\nimport Users from \"../users/users\";\nimport UserForm from \"../users/userForm\";\nimport Profile from \"../users/profile\";\n\nclass Dashboard extends React.Component {\n constructor() {\n super();\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {\n this.handleClick();\n }\n\n // SideBar toggle button Evenet Handler\n handleClick() {\n const renderSidebar = (toggleId, navId, bodyId, headerId) => {\n const toggle = document.getElementById(toggleId),\n nav = document.getElementById(navId),\n bodypd = document.getElementById(bodyId),\n headerpd = document.getElementById(headerId);\n\n // Validate that all variables exist\n if (toggle && nav && bodypd && headerpd) {\n toggle.addEventListener(\"click\", () => {\n // Show SideBar\n nav.classList.toggle(\"show\");\n // Change toggle Icon\n toggle.classList.toggle(\"bx-x\");\n // Add padding to Body\n bodypd.classList.toggle(\"body-pd\");\n // Add padding to Header\n headerpd.classList.toggle(\"header-pd\");\n });\n }\n };\n\n // Render SiderBar Function\n renderSidebar(\"header-toggle\", \"nav-bar\", \"body-pd\", \"header\");\n\n // Link color\n const linkColor = document.querySelectorAll(\".nav_link\");\n\n // Active link event handler\n function activateLink() {\n if (linkColor) {\n linkColor.forEach((l) => l.classList.remove(\"active\"));\n this.classList.add(\"active\");\n }\n }\n\n linkColor.forEach((l) => l.addEventListener(\"click\", activateLink));\n }\n\n render() {\n const { user } = this.props;\n\n return (\n
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n }\n />\n \n }\n />\n \n \n \n \n
\n
\n
\n );\n }\n}\n\nexport default Dashboard;\n","// Libraries\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link, NavLink } from \"react-router-dom\";\n\nconst NavBar = ({ user }) => {\n if (window.location.pathname.startsWith(\"/gallery\")) {\n return null;\n } else {\n return (\n \n );\n }\n};\n\n// Typechecking\nNavBar.propTypes = {\n user: PropTypes.string.isRequired,\n};\n\nexport default NavBar;\n","// Libraries\nimport React, { Component } from \"react\";\nimport { NavLink } from \"react-router-dom\";\n\nclass Footer extends Component {\n render() {\n const url = window.location.search;\n if (url === \"\") {\n return (\n \n );\n } else {\n return (\n \n );\n }\n }\n}\n\nexport default Footer;\n","// Libraries\nimport React, { Component } from \"react\";\n\n// Child Component\nimport Footer from \"./footer\";\n\nclass Home extends Component {\n render() {\n const url = window.location.search;\n if (url === \"\") {\n return (\n
\n
\n
\n
\n
\n
\n

\n Explore Dresden's History.\n

\n

\n Download the mobile app and you are good to go.\n
\n Enjoy caching the history of Dresden!\n

\n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n \n \n