@galadrim/galadmin 0.1.8 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.js +2 -1
- package/dist/api.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +32 -31
- package/package.json +2 -2
- package/src/api.ts +2 -1
- package/src/front/build/asset-manifest.json +3 -3
- package/src/front/build/index.html +1 -1
- package/src/front/build/static/js/main.41b4c7b0.chunk.js +2 -0
- package/src/front/build/static/js/main.41b4c7b0.chunk.js.map +1 -0
- package/src/front/node_modules/.cache/.eslintcache +1 -1
- package/src/front/node_modules/.cache/babel-loader/9927257e5a1c34883ddacb1665837685.json +1 -0
- package/src/front/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/55/2e/532185baf9d4193531944361bcc44af3adc322983b2b219704fccdc42b234ac5a08820b33d496cb7f7a9b0a4b656ba46d4222c816658dfe7cba112ba0f8e +1 -0
- package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/{62/bf/4d0bed81c731f8de025d3d7325b3ddecae4d4940036de9027a342c5100df → 77/76/87d901f3ac114d66548b68159bacc2a530b3251dbe62c2c09ff6fd29bd73} +1 -1
- package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/87/08/421190bfe6e50816e059da6c33526c9943732ef856ebd2752d0cbfb4a852 +1 -1
- package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/f3/67/591e18ebf4c0bef454dd26c51b3a6caca691338ed27811d59ddef26e7031 +1 -1
- package/src/front/node_modules/.package-lock.json +6 -1
- package/src/front/package-lock.json +6 -1
- package/src/front/src/components/Input.js +1 -1
- package/src/types/config.ts +2 -0
- package/src/front/build/static/js/main.e23875e4.chunk.js +0 -2
- package/src/front/build/static/js/main.e23875e4.chunk.js.map +0 -1
- package/src/front/node_modules/.cache/babel-loader/35765a1a683877bd7229c164062f715e.json +0 -1
- package/src/front/node_modules/.cache/babel-loader/472483d7359abc2d6cbe00f9b7c22e55.json +0 -1
- package/src/front/node_modules/.cache/babel-loader/e37c21537bc5013b9a2a6a8c1ea68430.json +0 -1
- package/src/front/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b8/b1/e57a780a9fc2b75c19e27fcad6c93721d4ef879c4c43a4cde3329b80a7b59900e90e27e2aeeed48429537aa3f3a9b4933c386ef3418420556380b587306c +0 -1
- package/src/front/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/bd/f2/61c53645f95ac3ad1ace732e4a011e3590dd4c257cc9f0a88cef527de898b2c806512e065a25527232f30ac5cd37a6f14c0678a061cad3a0ed839cd34618 +0 -1
- package/src/front/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/c2/5c/7ec02edf68834865ea433a20d030f518416edf440adfad32f86931fc70519fb17d2ff282c9020744289218a9fe89f1e1d5f7280e9438171f28f8c5075582 +0 -1
- package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/bc/60/45a8cd3b5ff1c55a654323e4532eaa0218e186e53786ef1acf429ff046a5 +0 -2
- package/src/front/node_modules/.cache/terser-webpack-plugin/index-v5/e8/a0/0d48cce4b946fe50c4b6bf34f7e1a52058d2d785e0ff7d6f841b115a2f4a +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/evalExpression.js","contexts/ConfigContext.js","components/Sidebar.js","components/RedirectToFirstView.js","components/inputs/ColorInput.js","components/inputs/RichTextInput.js","components/inputs/DatetimeInput.js","components/inputs/AddressInput.js","components/inputs/FileInput.js","components/inputs/ForeignSelectInput.js","components/inputs/ForeignDatalistInput.js","components/Input.js","components/LabelTooltip.js","utils/checkRequiredColumns.js","pages/CreateRecord.js","pages/EditRecord.js","components/DownloadButton.js","components/OutsideClickHandler.js","components/AddFilterButton.js","components/BulkActionsButton.js","utils/getFormattedValue.js","pages/Records.js","components/ActionsButton.js","components/BackButton.js","components/DownloadTablePanelButton.js","components/panels/TablePanel.js","components/panels/GalleryPanel.js","components/panels/MapPanel.js","pages/Record.js","images/logo.png","pages/Login.js","pages/Iframe.js","components/CustomComponent.js","pages/CustomView.js","App.js","index.js"],"names":["expression","data","varString","key","replace","JSON","stringify","eval","e","console","log","error","ConfigContext","createContext","ConfigProvider","props","useState","config","setConfig","useEffect","axios","get","then","response","_config","googleMapsKey","script","document","createElement","src","body","appendChild","removeChild","Provider","value","children","SidebarItemIconAndLabel","view","class","icon","label","location","useLocation","useContext","history","useHistory","logo","name","views","filter","hidden","map","i","type","href","isActive","pathname","to","startsWith","onClick","push","subviews","subview","j","stopPropagation","hideBranding","firstView","column","onChange","initialData","colorPicker","useRef","current","window","$","spectrum","preferredFormat","showInput","chooseText","cancelText","color","on","_","toHexString","off","ref","target","Quill","prototype","getHTML","this","container","querySelector","innerHTML","quillContainer","editor","theme","modules","toolbar","contentField","setContents","parse","htmlField","getContents","style","height","withTime","datepicker","datepickerEl","language","autoClose","onSelect","date","moment","format","selectDate","Date","googleMapsInput","google","autocomplete","maps","places","Autocomplete","componentRestrictions","addListener","place","getPlace","length","geometry","fieldValues","latitudeField","lat","longitudeField","lng","addressField","formatted_address","streetNumberField","address_components","find","x","long_name","routeField","localityField","administrativeAreaLevel2Field","administrativeAreaLevel1Field","countryField","postalCodeField","placeData","setInputValue","addEventListener","removeEventListener","placeholder","defaultValue","form","viewIndex","useParams","isLoading","setIsLoading","path","setPath","onInputChange","a","f","FormData","method","url","params","columnId","__id__","headers","fileData","aspectRatioField","aspectRatio","originalNameField","originalFilename","id","Math","random","toString","htmlFor","display","preventDefault","options","setOptions","post","optional","option","query","setQuery","input","isInputValid","list","dataType","includes","Array","isArray","Object","keys","ForeignDatalistInput","ForeignSelectInput","AddressInput","ColorInput","FileInput","DatetimeInput","RichTextInput","text","visible","setVisible","onMouseLeave","onMouseEnter","columns","message","requiredUnfilledColumns","required","undefined","join","swal","title","dangerMode","panelIndex","recordId","panel","recordViewPanels","filteredColumns","createConfig","canEditOnCreation","canEdit","isCreating","setIsCreating","createRecord","checkRequiredColumns","createFilters","redirectToCreatedItems","responseText","aNewSingular","index","labelTooltip","LabelTooltip","Input","newValues","goBack","record","setRecord","dataToUpdate","isUpdating","setIsUpdating","updateRecord","primaryValue","previousData","subviewIndex","currentFilters","orderBy","isDesc","isDownloading","setIsDownloading","filters","download","content","OutsideClickHandler","handler","wrapperRef","onOutsideClick","handleClickOutside","event","contains","getElementById","onAddFilter","refreshData","filtersOpened","setFiltersOpened","field","setField","operator","setOperator","setValue","foreignSelectedLabel","c","searchableName","_column","info","from","fieldLabel","searchedField","formattedValue","queryItems","selectedRecordIds","bulkActionsOpened","setBulkActionsOpened","hideMultiselect","canDelete","customActions","action","actionIndex","alert","catch","buttons","willDelete","primaryValues","onTable","showAsPicture","imageUrl","baseUrl","pathField","width","objectFit","formatValue","dangerouslySetInnerHTML","__html","evalExpression","actionDisplayCondition","backgroundColor","constructor","_viewIndex","_page","_currentFilters","_orderBy","_isDesc","_query","page","setPage","setCurrentFilters","setOrderBy","setIsDesc","setSelectedRecordIds","setData","hideInTable","records","BulkActionsButton","AddFilterButton","DownloadButton","canCreate","sortName","cellIndex","primaryId","notClickable","tagName","clickToEdit","getFormattedValue","count","max","ceil","limit","min","actionsOpened","setActionsOpened","deleteRecord","deleteCallback","canDuplicate","formattedQuery","results","lines","result","formattedValues","setResults","deleteRow","row","panelId","folded","canShow","findIndex","tableName","onerror","mapRef","initMap","Lat","Lng","zoom","Map","center","Marker","position","BackButton","ActionsButton","canDownload","DownloadTablePanelButton","TablePanel","GalleryPanel","MapPanel","setIsAuthenticated","username","setUsername","password","setPassword","login","success","packages","exports","React","styled","getParsedModule","code","moduleName","_this","create","require","module","Function","wrapper","fetchComponent","componentPath","default","CustomComponent","Component","useMemo","lazy","fallback","memo","defaults","withCredentials","baseURL","App","isAuthenticated","basename","Sidebar","Records","Record","EditRecord","CreateRecord","Iframe","CustomView","RedirectToFirstView","Login","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.41b4c7b0.chunk.js","sourcesContent":["\nexport default (expression, data) => {\n try {\n var varString = '';\n for (var key in data) {\n varString += \"var \" + key + \" = \" + (typeof data[key] === \"string\" ? \"'\" + data[key].replace(/'/g, \"\\\\'\").replace(/\\n/g, \"<br>\").replace(/\\r/g, \"\") + \"'\" : (typeof data[key] === \"object\" ? JSON.stringify(data[key]) : data[key])) + \";\"\n }\n return eval(varString + expression)\n } catch (e) {\n console.log(varString + expression);\n console.error(e);\n return \"Error\"\n }\n}","\nimport React, { useEffect, createContext, useState } from \"react\";\nimport axios from \"axios\";\n\nconst ConfigContext = createContext(null);\n\nconst ConfigProvider = (props) => {\n const [config, setConfig] = useState(null);\n\n useEffect(() => {\n axios.get(\"/config\").then(response => {\n const _config = eval('(' + response.data.config + ')')\n setConfig(_config)\n\n if (_config.googleMapsKey) {\n const script = document.createElement('script');\n script.src = \"https://maps.googleapis.com/maps/api/js?key=\" + _config.googleMapsKey + \"&libraries=places,autocomplete\";\n document.body.appendChild(script);\n return () => {\n document.body.removeChild(script);\n }\n }\n })\n }, []);\n\n return config ? (\n <ConfigContext.Provider value={config} >\n {props.children}\n </ConfigContext.Provider >\n ) : null\n};\n\nexport { ConfigContext, ConfigProvider };","\nimport { useContext } from \"react\";\nimport {\n Link,\n useHistory,\n useLocation\n} from \"react-router-dom\";\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nconst SidebarItemIconAndLabel = ({ view }) => (\n <>\n <div class=\"sidebarIcon\">\n <i class={`fas fa-${view.icon || \"square\"}`}></i>\n </div>\n <div class=\"sidebarLabel\">{view.label}</div>\n </>\n)\n\nexport default () => {\n const location = useLocation();\n const config = useContext(ConfigContext)\n const history = useHistory();\n\n return (\n <div class=\"sidebar\">\n {config.logo ? <img src={config.logo} class=\"logo\" /> : null}\n <div class=\"sidebarTitle\">{config.name}</div>\n <div class=\"sidebarSubtitle\">Back-office</div>\n {config.views.filter(view => !view.hidden).map((view, i) => {\n if (view.type === \"link\") {\n return (\n <a href={view.src} key={i}>\n <div class=\"sidebarItem\">\n <div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n </div>\n </a>\n )\n } else if (view.type === \"iframe\") {\n const isActive = location.pathname === `/iframe/${i}`\n return (\n <Link to={`/iframe/${i}`} key={i}>\n <div class={`sidebarItem ${isActive ? \"active\" : \"\"}`}>\n <div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n </div>\n </Link>\n )\n } else if (view.type === \"custom\") {\n const isActive = location.pathname === `/customView/${i}`\n return (\n <Link to={`/customView/${i}`} key={i}>\n <div class={`sidebarItem ${isActive ? \"active\" : \"\"}`}>\n <div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n </div>\n </Link>\n )\n } else if (view.type === \"table\") {\n // TODO: bug quand la vue 10 est sélectionnée, la 1 aussi\n const isActive =\n location.pathname.startsWith(`/records/${i}`) ||\n location.pathname === `/createRecord/${i}` ||\n location.pathname.startsWith(`/record/${i}`) ||\n location.pathname.startsWith(`/editRecord/${i}`)\n return (\n <div onClick={() => history.push(`/records/${i}`)}>\n <div class={`sidebarItem ${isActive ? \"active\" : \"\"}`} key={i}>\n <div>\n <div class=\"notificationWrapper\"></div>\n <SidebarItemIconAndLabel view={view} />\n </div>\n {view.subviews ? (\n <>\n <div class=\"subviewsSeparator\"></div>\n {view.subviews.map((subview, j) => {\n const isActive = location.pathname == `/records/${i}/${j}`\n return (\n <div onClick={(e) => {\n history.push(`/records/${i}/${j}`);\n e.stopPropagation();\n }}>\n <div data-subview-index={j} class={isActive ? \"active\" : \"\"}>\n <div class=\"notificationWrapperForSubview\"></div>\n {subview.label}\n </div>\n </div>\n )\n })}\n </>\n ) : null}\n </div>\n </div>\n )\n }\n })}\n {!config.hideBranding ? (\n <div class=\"sidebarBranding\">Made with <i class=\"fas fa-heart\"></i> by Galadrim</div>\n ) : null}\n </div>\n )\n}","import { useContext } from \"react\"\nimport {\n\tRedirect\n} from \"react-router-dom\";\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default () => {\n\tconst config = useContext(ConfigContext)\n\tconst firstView = config.views[0]\n\n\tif (!firstView) {\n\t\treturn null\n\t}\n\tif (firstView.type === \"table\") {\n\t\treturn <Redirect to=\"/records/0\" />\n\t}\n\tif (firstView.type === \"iframe\") {\n\t\treturn <Redirect to=\"/iframe/0\" />\n\t}\n\tif (firstView.type === \"custom\") {\n\t\treturn <Redirect to=\"/customView/0\" />\n\t}\n\treturn null;\n}","import { useEffect, useRef } from \"react\";\n\nexport default ({ column, onChange, initialData }) => {\n const colorPicker = useRef(null);\n\n useEffect(() => {\n if (colorPicker.current) {\n window.$(colorPicker.current).spectrum({\n preferredFormat: \"hex\",\n showInput: true,\n chooseText: \"OK\",\n cancelText: \"Annuler\",\n color: initialData?.[column.name]\n });\n window.$(colorPicker.current).on(\"change.spectrum\", (_, value) => {\n onChange({ [column.name]: value.toHexString() })\n })\n }\n return () => window.$(colorPicker.current).off()\n }, [colorPicker.current])\n\n return (\n <input\n ref={colorPicker}\n type='text'\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n />\n );\n}","import { useEffect, useRef } from \"react\";\n\nwindow.Quill.prototype.getHTML = function () {\n return this.container.querySelector('.ql-editor').innerHTML;\n};\n\nexport default ({ column, onChange, initialData }) => {\n const quillContainer = useRef(null);\n\n useEffect(() => {\n if (quillContainer.current && !quillContainer.current.editor) {\n const editor = new window.Quill(quillContainer.current, {\n theme: 'snow',\n modules: {\n toolbar: [\n [{\n 'header': [1, 2, 3, 4, false]\n }],\n ['bold', 'italic', 'underline', 'link'],\n ['image'],\n [{\n 'align': []\n }],\n [{\n 'list': 'ordered'\n }, {\n 'list': 'bullet'\n }],\n ['clean']\n ]\n }\n });\n if (initialData?.[column.contentField]) {\n try {\n editor.setContents(JSON.parse(initialData?.[column.contentField]))\n } catch (e) { }\n }\n editor.on('text-change', () => {\n onChange({\n [column.htmlField]: editor.getHTML(),\n [column.contentField]: JSON.stringify(editor.getContents())\n })\n });\n quillContainer.current.editor = editor\n return editor.off();\n }\n }, [quillContainer.current])\n\n\n return (\n <div class='quillContainer'>\n <div class=\"quill\" ref={quillContainer} style={column.height ? { height: column.height } : null} />\n </div>\n )\n}\n","import { useEffect, useRef } from \"react\";\n\nexport default ({ column, onChange, initialData, withTime }) => {\n const datepicker = useRef(null);\n\n useEffect(() => {\n if (datepicker.current) {\n const datepickerEl = window.$(datepicker.current).datepicker({\n language: \"fr\",\n autoClose: true,\n onSelect: (_, date) => {\n onChange({ [column.name]: window.moment(date).format(withTime ? null : \"YYYY-MM-DD\") })\n }\n })\n if (initialData?.[column.name]) {\n datepickerEl.data(\"datepicker\").selectDate(new Date(initialData?.[column.name]))\n }\n }\n }, [datepicker.current])\n\n return (\n <div>\n <input type='text' ref={datepicker} data-timepicker={withTime ? \"true\" : \"false\"} />\n </div>\n )\n}","import { useEffect, useRef } from \"react\";\n\nexport default ({ column, onChange, initialData }) => {\n const googleMapsInput = useRef(null);\n\n useEffect(() => {\n if (googleMapsInput.current && window.google) {\n const autocomplete = new window.google.maps.places.Autocomplete(\n googleMapsInput.current,\n column.componentRestrictions ? {\n componentRestrictions: column.componentRestrictions\n } : {}\n )\n autocomplete.addListener('place_changed', () => {\n const place = autocomplete.getPlace();\n if (place.length === 0) {\n return;\n }\n if (!place.geometry) {\n return;\n } else {\n const fieldValues = {\n latitudeField: (place) => place.geometry.location.lat(),\n longitudeField: (place) => place.geometry.location.lng(),\n addressField: (place) => place.formatted_address,\n streetNumberField: (place) => place.address_components.find(x => x.type === \"street_number\")?.long_name,\n routeField: (place) => place.address_components.find(x => x.type === \"route\")?.long_name,\n localityField: (place) => place.address_components.find(x => x.type === \"locality\")?.long_name,\n administrativeAreaLevel2Field: (place) => place.address_components.find(x => x.type === \"administrative_area_level_2\")?.long_name,\n administrativeAreaLevel1Field: (place) => place.address_components.find(x => x.type === \"administrative_area_level_1\")?.long_name,\n countryField: (place) => place.address_components.find(x => x.type === \"country\")?.long_name,\n postalCodeField: (place) => place.address_components.find(x => x.type === \"postal_code\")?.long_name\n }\n const placeData = {}\n for (const key in fieldValues) {\n if (column[key]) {\n placeData[column[key]] = fieldValues[key](place)\n }\n }\n googleMapsInput.current.value = place.formatted_address\n onChange(placeData);\n }\n });\n }\n }, [googleMapsInput.current]);\n\n useEffect(() => {\n const setInputValue = () => {\n if (googleMapsInput.current) {\n googleMapsInput.current.value = \"\"\n }\n }\n googleMapsInput?.current?.addEventListener(\"focusout\", setInputValue)\n return () => googleMapsInput?.current?.removeEventListener(\"focusout\", setInputValue)\n }, [googleMapsInput.current])\n\n return (\n <div>\n <input\n type='text'\n placeholder=''\n ref={googleMapsInput}\n defaultValue={initialData?.[column.name]}\n />\n </div>\n )\n}","import { useRef, useState } from \"react\";\nimport axios from \"axios\";\nimport {\n useParams\n} from \"react-router-dom\";\n\nexport default ({ column, onChange, initialData }) => {\n const form = useRef(null);\n const { viewIndex } = useParams();\n const [isLoading, setIsLoading] = useState(false)\n const [path, setPath] = useState(initialData?.[column.name])\n\n const onInputChange = async () => {\n const f = new FormData(form.current);\n setIsLoading(true);\n\n const response = await axios({\n method: \"post\",\n url: `/uploadFile`,\n data: f,\n params: {\n viewIndex,\n columnId: column.__id__\n },\n headers: { \"Content-Type\": \"multipart/form-data\" }\n })\n const fileData = {\n [column.name]: response.data.path\n }\n if (column.aspectRatioField) {\n fileData[column.aspectRatioField] = response.data.aspectRatio\n }\n if (column.originalNameField) {\n fileData[column.originalNameField] = response.data.originalFilename\n }\n onChange(fileData)\n setIsLoading(false)\n setPath(response.data.path)\n // var showAsPicture = $(this).data(\"showAsPicture\") === 1\n //var baseUrl = $(\".fileInputContent[data-input-id='\" + inputId + \"']\").data(\"baseUrl\")\n //$(\".fileInputContent[data-input-id='\" + inputId + \"']\").removeClass(\"clickToSelectFile\").html(showAsPicture ? \"<div><img src='https://res.cloudinary.com/forest2/image/fetch/w_600,h_300,c_fit/\" + baseUrl + data.path + \"' /><div class='deleteFile'><i class='fal fa-trash-alt'></i></div></div>\" : \"<div class='nonImageFileOutput'><span>Fichier téléchargé</span><div class='deleteFile'><i class='fal fa-trash-alt'></i></div></div>\"\n }\n\n const deleteFile = (e) => {\n setPath(null);\n const fileData = {\n [column.name]: null\n }\n if (column.aspectRatioField) {\n fileData[column.aspectRatioField] = null\n }\n if (column.originalNameField) {\n fileData[column.originalNameField] = null\n }\n onChange(fileData)\n e.preventDefault()\n }\n\n var id = Math.random().toString()\n return (\n <div class='fileInputContainer'>\n <label htmlFor={id}>\n <form ref={form}>\n <input type='file' id={id} style={{ display: \"none\" }} name='file' onChange={onInputChange} />\n </form>\n <div class={`fileInputContent ${!path ? \"clickToSelectFile\" : \"\"}`}>\n {isLoading ?\n <i class='fa fa-circle-notch fa-spin'></i>\n : null\n }\n {!isLoading && !path ?\n <div>Cliquez pour sélectionner un fichier</div>\n : null}\n {!isLoading && path ? (\n <div class='nonImageFileOutput'>\n <span>Fichier téléchargé</span>\n <div class='deleteFile' onClick={deleteFile}><i class='fal fa-trash-alt'></i></div>\n </div>\n ) : null}\n </div>\n </label>\n </div>\n )\n}\n","import axios from \"axios\";\nimport { useEffect, useState } from \"react\"\nimport {\n useParams\n} from \"react-router-dom\";\n\nexport default ({ column, onChange, initialData }) => {\n const [options, setOptions] = useState(null)\n const { viewIndex } = useParams();\n\n useEffect(() => {\n axios.post(\"/foreignSelectRecords\", {\n viewIndex,\n columnId: column.__id__\n }).then((response) => {\n setOptions(response.data)\n onChange({ \n [column.name]: initialData?.[column.name] || (column.optional ? \"NULL\" : response.data[0]?.value) \n }, {\n label: column.optional ? \"-\" : response.data[0]?.label\n })\n })\n }, [])\n\n return options === null ? (\n <i class='fa fa-circle-notch fa-spin' style={{ color: \"#536579\" }}></i>\n ) : (\n <select\n onChange={(e) => onChange({ \n [column.name]: e.target.value \n }, {\n label: options.find(x => x.value == e.target.value)?.label\n })}\n defaultValue={initialData?.[column.name]}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n {options.map((option) => {\n return (\n <option value={option.value} key={option.value}>\n {option.label}\n </option>\n )\n })}\n </select>\n );\n}\n","import axios from \"axios\";\nimport { useEffect, useRef, useState } from \"react\"\nimport {\n useParams\n} from \"react-router-dom\";\n\nexport default ({ column, onChange, initialData }) => {\n const [options, setOptions] = useState([])\n const { viewIndex } = useParams();\n const [query, setQuery] = useState(\"\")\n const input = useRef(null)\n const isInputValid = useRef(false)\n\n useEffect(() => {\n axios.post(\"/foreignSelectRecords\", {\n viewIndex,\n columnId: column.__id__,\n query\n }).then((response) => {\n setOptions(response.data)\n })\n }, [query])\n\n useEffect(() => {\n const setInputValue = () => {\n if (input.current && !isInputValid.current) {\n input.current.value = \"\"\n }\n }\n input?.current?.addEventListener(\"focusout\", setInputValue)\n return () => input?.current?.removeEventListener(\"focusout\", setInputValue)\n }, [input.current])\n\n const id = Math.random();\n\n return options === null ? (\n <i class='fa fa-circle-notch fa-spin' style={{ color: \"#536579\" }}></i>\n ) : (\n <div>\n <input\n type='text'\n list={id}\n ref={input}\n onChange={(e) => {\n const value = options.find(x => x.label === e.target.value)?.value ?? null;\n isInputValid.current = !!value\n setQuery(e.target.value);\n onChange({ [column.name]: value })\n }}\n defaultValue={options.find(x => x.value === initialData?.[column.name])?.label}\n />\n <datalist id={id}>\n {column.optional ? <option value='NULL'>-</option> : null}\n {options.map((option) => {\n return (\n <option value={option.label} key={option.value}>\n {option.label}\n </option>\n )\n })}\n </datalist>\n </div>\n );\n}","import ColorInput from \"./inputs/ColorInput\"\nimport RichTextInput from \"./inputs/RichTextInput\";\nimport DatetimeInput from \"./inputs/DatetimeInput\";\nimport AddressInput from \"./inputs/AddressInput\";\nimport FileInput from \"./inputs/FileInput\";\nimport ForeignSelectInput from \"./inputs/ForeignSelectInput\";\nimport ForeignDatalistInput from \"./inputs/ForeignDatalistInput\";\n\nexport default ({ column, onChange, initialData }) => {\n const { dataType } = column;\n\n if ([\"int\", \"double\", \"float\", \"decimal\"].includes(dataType)) {\n return (\n <input\n type='number'\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n />\n );\n } else if (dataType === \"tinyint\") {\n return (\n <select\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n <option value='0'>Non</option>\n <option value='1'>Oui</option>\n </select>\n );\n } else if (dataType === \"select\" && Array.isArray(column.options)) {\n return (\n <select\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name] || column.defaultValue}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n {column.options.map(option => <option value={option} key={option}>{option}</option>)}\n </select>\n );\n } else if (dataType === \"select\") {\n return (\n <select\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n >\n {column.optional ? <option value='NULL'>-</option> : null}\n {Object.keys(column.options).map(key => <option value={key} key={key}>{column.options[key]}</option>)}\n </select>\n );\n } else if (dataType === \"datalist\") {\n return (\n <ForeignDatalistInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"foreign\") {\n return (\n <ForeignSelectInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"address\") {\n return (\n <AddressInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n )\n } else if (dataType === \"color\") {\n return (\n <ColorInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"file\") {\n return (\n <FileInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else if (dataType === \"datetime\") {\n return (\n <DatetimeInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n withTime={true}\n />\n );\n } else if (dataType === \"date\") {\n return (\n <DatetimeInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n withTime={false}\n />\n );\n } else if (dataType === \"textarea\") {\n return (\n <textarea\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n >\n </textarea>\n );\n } else if (dataType === \"richText\") {\n return (\n <RichTextInput\n column={column}\n onChange={onChange}\n initialData={initialData}\n />\n );\n } else {\n return (\n <input\n type='text'\n onChange={(e) => onChange({ [column.name]: e.target.value })}\n defaultValue={initialData?.[column.name]}\n />\n );\n }\n};","import { useState } from \"react\";\n\nexport default ({ text }) => {\n const [visible, setVisible] = useState(false);\n return (\n <div class=\"labelTooltipContainer\" onMouseLeave={() => setVisible(false)}>\n <div class=\"labelTooltipIcon\" onMouseEnter={() => setVisible(true)}>\n <i class='fa fa-question-circle' />\n </div>\n {visible ? (\n <div class='tooltip'>\n {text}\n </div>\n ) : null}\n </div>\n )\n}","function isNotFilled(x) {\n return x === undefined || x === null || x === ''\n}\n\nexport default (columns, data) => {\n const requiredUnfilledColumns = columns.filter(column => column.required && isNotFilled(data[column.name]))\n if (requiredUnfilledColumns.length > 0) {\n let message;\n if (requiredUnfilledColumns.length == 1) {\n message = `Le champ requis ${requiredUnfilledColumns.map(x => x.label).join(\", \")} n'a pas été rempli`\n } else {\n message = `Les champs requis ${requiredUnfilledColumns.map(x => x.label).join(\", \")} n'ont pas été remplis`\n }\n window.swal({\n title: \"Erreur\",\n text: message,\n dangerMode: true\n })\n return false;\n }\n return true;\n}","import { useContext, useRef, useState } from \"react\";\nimport {\n useParams,\n useHistory\n} from \"react-router-dom\";\nimport axios from \"axios\";\nimport Input from \"../components/Input\"\nimport LabelTooltip from \"../components/LabelTooltip\"\nimport { ConfigContext } from '../contexts/ConfigContext'\nimport checkRequiredColumns from \"../utils/checkRequiredColumns\";\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex, panelIndex, recordId } = useParams();\n const history = useHistory();\n const view = config.views[viewIndex];\n const panel = panelIndex ? view.recordViewPanels[panelIndex] : null;\n const filteredColumns = panel ? panel.createConfig.columns : view.columns.filter(\n column => column.dataType &&\n (column.canEditOnCreation === true || column.canEdit !== false)\n && !column.hidden\n )\n\n const initialData = {}\n for (const column of filteredColumns) {\n if (column.dataType === \"tinyint\") {\n initialData[column.name] = column.optional ? \"NULL\" : \"0\"\n } else if (column.dataType === \"select\" && Array.isArray(column.options)) {\n initialData[column.name] = column.options[0]\n } else if (column.dataType === \"select\") {\n initialData[column.name] = Object.keys(column.options)[0]\n }\n if (column.defaultValue) {\n initialData[column.name] = column.defaultValue\n }\n }\n const data = useRef(initialData)\n const [isCreating, setIsCreating] = useState(false)\n\n const createRecord = async () => {\n if (!checkRequiredColumns(filteredColumns, data.current)) return;\n for (const key in view.createFilters) {\n data.current[key] = view.createFilters[key]\n }\n setIsCreating(true)\n try {\n const response = await axios.post(\"/createRecord\", {\n viewIndex,\n panelIndex,\n recordId,\n data: data.current\n })\n setIsCreating(false)\n if (recordId) { // Create from panel view\n history.push(`/record/${viewIndex}/${recordId}`)\n } else if (view?.createConfig?.redirectToCreatedItems) {\n history.push(`/record/${viewIndex}/${response.data.id}`)\n } else {\n history.push(`/records/${viewIndex}`)\n }\n } catch (error) {\n if (error.response.responseText) {\n window.swal({\n title: \"Erreur\",\n text: error.response.responseText,\n dangerMode: true\n })\n }\n setIsCreating(false)\n }\n }\n\n return (\n <div class=\"view\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{panel ? panel.createConfig.label : `Créer ${view.aNewSingular}`}</div>\n </div>\n <div class=\"paddedView\">\n <div class=\"form\">\n {filteredColumns.map((column, index) => {\n return (\n <div class='formElement' key={index}>\n <div class='formLabel'>\n {column.label} {column.required ? \"*\" : \"\"}\n {column.labelTooltip ? <LabelTooltip text={column.labelTooltip} /> : null}\n </div>\n <div class='formInput'>\n <Input\n column={column}\n onChange={(newValues) => { data.current = { ...data.current, ...newValues } }}\n />\n </div>\n </div>\n )\n })}\n </div>\n <div class={`button greenButton ${isCreating ? \"loading\" : \"\"}`} onClick={createRecord}>{isCreating ? \"Sauvegarde en cours...\" : \"Créer\"}</div>\n <div class=\"button\" onClick={() => history.goBack()}>Annuler</div>\n </div>\n </div>\n )\n}","import { useContext, useRef, useState, useEffect } from \"react\";\nimport {\n useParams,\n useHistory\n} from \"react-router-dom\";\nimport axios from \"axios\";\nimport Input from \"../components/Input\"\nimport LabelTooltip from \"../components/LabelTooltip\"\nimport { ConfigContext } from '../contexts/ConfigContext'\nimport checkRequiredColumns from \"../utils/checkRequiredColumns\";\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex, recordId } = useParams();\n const history = useHistory();\n const view = config.views[viewIndex];\n const [record, setRecord] = useState(null);\n const filteredColumns = view.columns.filter(\n column => column.dataType &&\n column.canEdit !== false &&\n !column.hidden\n )\n\n const dataToUpdate = useRef({})\n const [isUpdating, setIsUpdating] = useState(false)\n\n useEffect(() => {\n axios.get(\"/record\", {\n params: {\n viewIndex,\n recordId\n }\n }).then((response) => {\n dataToUpdate.current = {};\n setRecord(response.data);\n });\n }, [viewIndex, recordId]);\n\n const updateRecord = async () => {\n if (!checkRequiredColumns(filteredColumns, {...record, ...dataToUpdate.current})) return;\n setIsUpdating(true)\n try {\n await axios.post(\"/updateRecord\", {\n viewIndex,\n primaryValue: recordId,\n data: dataToUpdate.current,\n previousData: record\n })\n setIsUpdating(false)\n history.push(`/record/${viewIndex}/${recordId}`)\n } catch (error) {\n if (error.response.responseText) {\n window.swal({\n title: \"Erreur\",\n text: error.response.responseText,\n dangerMode: true\n })\n }\n setIsUpdating(false)\n }\n }\n\n return (\n <div class=\"view\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{view.label}</div>\n </div>\n <div class=\"paddedView\">\n {record ? (\n <>\n <div class=\"form\">\n {filteredColumns.map((column, index) => {\n return (\n <div class='formElement' key={index}>\n <div class='formLabel'>\n {column.label} {column.required ? \"*\" : \"\"}\n {column.labelTooltip ? <LabelTooltip text={column.labelTooltip} /> : null}\n </div>\n <div class='formInput'>\n <Input\n column={column}\n initialData={record}\n onChange={(newValues) => { dataToUpdate.current = { ...dataToUpdate.current, ...newValues } }}\n />\n </div>\n </div>\n )\n })}\n </div>\n <div class={`button greenButton ${isUpdating ? \"loading\" : \"\"}`} onClick={updateRecord}>{isUpdating ? \"Sauvegarde en cours...\" : \"Sauvegarder\"}</div>\n <div class=\"button\" onClick={() => history.goBack()}>Annuler</div>\n </>\n ) : null}\n </div>\n </div>\n )\n}","\nimport { useState } from \"react\"\nimport axios from \"axios\";\n\nexport default ({ view, viewIndex, subviewIndex, currentFilters, orderBy, isDesc, query }) => {\n const [isDownloading, setIsDownloading] = useState(false)\n\n const downloadRecords = () => {\n setIsDownloading(true)\n axios.post(\"/recordsExport\", {\n viewIndex,\n subviewIndex,\n filters: currentFilters.map(function (x) {\n return x.query\n }),\n orderBy,\n isDesc,\n query\n }).then((response) => {\n setIsDownloading(false)\n window.download(response.data.content, view.label + \".csv\");\n })\n }\n\n return (\n <div class=\"downloadButton\" onClick={downloadRecords}>\n <i class={`fa ${!isDownloading ? \"fa-cloud-download\" : \"fa-spin fa-circle-notch\"}`}></i>\n </div>\n )\n}","import { useEffect, useRef } from \"react\"\n\nfunction useOutsideClickHandler(ref, handler) {\n useEffect(() => {\n function handleClickOutside(event) {\n if (\n ref.current && \n !ref.current.contains(event.target) && \n !document.getElementById(\"datepickers-container\")?.contains(event.target)\n ) {\n handler()\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref]);\n}\n\nexport default function OutsideClickHandler(props) {\n const wrapperRef = useRef(null);\n useOutsideClickHandler(wrapperRef, props.onOutsideClick);\n\n return <div ref={wrapperRef}>{props.children}</div>;\n}","import { useEffect, useState, useRef } from \"react\"\nimport OutsideClickHandler from \"./OutsideClickHandler\"\nimport ForeignSelectInput from \"./inputs/ForeignSelectInput\"\nimport DatetimeInput from \"./inputs/DatetimeInput\"\n\nexport default ({ view, refreshData, onAddFilter }) => {\n const [filtersOpened, setFiltersOpened] = useState(false)\n const [field, setField] = useState(null);\n const [operator, setOperator] = useState(\"contains\")\n const [value, setValue] = useState(null)\n\n const foreignSelectedLabel = useRef(\"-\");\n\n const column = view.columns.find(c => (c.searchableName || c.name) === field)\n\n useEffect(() => {\n if (column?.dataType === 'select') {\n setValue(Array.isArray(column.options) ? column.options[0] : Object.keys(column.options)[0])\n }\n }, [field])\n\n const addFilter = () => {\n if (field && value) {\n const fieldLabel = column?.label\n const searchedField = `(${column?.searchableName || column?.name})`\n if (column?.dataType === 'select') {\n const formattedValue = !Array.isArray(column?.options) ? column.options[value] : value\n onAddFilter({\n label: fieldLabel + \" est \" + formattedValue,\n query: searchedField + \" = '\" + value + \"'\"\n })\n } else if (column?.dataType === 'foreign') {\n onAddFilter({\n label: fieldLabel + \" est \" + foreignSelectedLabel.current,\n query: column.name + \" = '\" + value + \"'\"\n })\n } else if (column?.dataType === 'date' || column?.dataType === 'datetime') {\n let label;\n const queryItems = []\n if (value.from && !value.to) {\n label = fieldLabel + \" est après \" + value.from\n } else if (value.to && !value.from) {\n label = fieldLabel + \" est avant \" + value.to\n } else {\n label = fieldLabel + \" de \" + value.from + \" à \" + value.to\n }\n if (value.from) {\n queryItems.push(column.name + \" >= '\" + value.from + \"'\")\n }\n if (value.to) {\n queryItems.push(column.name + \" <= '\" + value.to + \"'\")\n }\n onAddFilter({\n label,\n query: queryItems.join(\" AND \")\n })\n } else if (operator === \"contains\") {\n onAddFilter({\n label: fieldLabel + \" contient \" + value,\n query: searchedField + \" LIKE '%\" + value + \"%'\"\n })\n } else if (operator === \"notContains\") {\n onAddFilter({\n label: fieldLabel + \" ne contient pas \" + value,\n query: searchedField + \" NOT LIKE '%\" + value + \"%'\"\n })\n } else if (operator === \"is\") {\n onAddFilter({\n label: fieldLabel + \" est \" + value,\n query: searchedField + \" = '\" + value + \"'\"\n })\n } else if (operator === \"isNot\") {\n onAddFilter({\n label: fieldLabel + \" n'est pas \" + value,\n query: searchedField + \" != '\" + value + \"'\"\n })\n } else if (operator === \"startsWith\") {\n onAddFilter({\n label: fieldLabel + \" commence par \" + value,\n query: searchedField + \" LIKE '\" + value + \"%'\"\n })\n } else if (operator === \"endsWith\") {\n onAddFilter({\n label: fieldLabel + \" finit par \" + value,\n query: searchedField + \" LIKE '%\" + value + \"'\"\n })\n } else if (operator === \"largerThan\") {\n onAddFilter({\n label: fieldLabel + \" supérieur à \" + value,\n query: searchedField + \" >= \" + value\n })\n } else if (operator === \"smallerThan\") {\n onAddFilter({\n label: fieldLabel + \" inférieur à \" + value,\n query: searchedField + \" <= \" + value\n })\n }\n setField(null)\n setValue(null)\n setFiltersOpened(false)\n }\n }\n\n return (\n <OutsideClickHandler onOutsideClick={() => setFiltersOpened(false)}>\n <div class=\"button openFilterPopup\" onClick={() => setFiltersOpened(!filtersOpened)}>\n <i class=\"fas fa-filter\"></i> Ajouter un filtre\n {filtersOpened ? (\n <div class=\"addFilterPopup\" onClick={(e) => e.stopPropagation()}>\n <div class=\"filterLabel\">Champ</div>\n <select onChange={(e) => setField(e.target.value)}>\n <option value=''>Sélectionnez un champ</option>\n {view.columns.filter(_column =>\n (_column.searchableName || _column.name) && _column.dataType !== \"datalist\"\n ).map((_column) => {\n const value = _column.searchableName || _column.name\n return (\n <option value={value} key={value}>\n {_column.label}\n </option>\n )\n })}\n </select>\n {column?.dataType === 'select' ? (\n <>\n <div class=\"filterLabel\">Valeur</div>\n <select onChange={(e) => setValue(e.target.value)}>\n {Array.isArray(column.options) ? column.options.map(value => (\n <option value={value}>{value}</option>\n )) : Object.keys(column.options).map(value => (\n <option value={value}>{column.options[value]}</option>\n ))}\n </select>\n </>\n ) : column?.dataType === 'foreign' ? (\n <>\n <div class=\"filterLabel\">Valeur</div>\n <ForeignSelectInput \n column={column} \n onChange={(data, info) => {\n setValue(data[column.name])\n foreignSelectedLabel.current = info.label\n }}\n />\n </>\n ) : column?.dataType === 'date' || column?.dataType === 'datetime' ? (\n <>\n <div class=\"filterLabel\">De</div>\n <DatetimeInput column={column} withTime={true} onChange={(data) => {\n setValue({\n from: data[column.name],\n to: value?.to\n })\n }} />\n <div class=\"filterLabel\">À</div>\n <DatetimeInput column={column} withTime={true} onChange={(data) => {\n setValue({\n from: value?.from,\n to: data[column.name]\n })\n }} />\n </>\n ) : (\n <>\n <div class=\"filterLabel\">Opérateur</div>\n <select onChange={(e) => setOperator(e.target.value)}>\n <option value=\"contains\">contient</option>\n <option value=\"notContains\">ne contient pas</option>\n <option value=\"startsWith\">commence par</option>\n <option value=\"endsWith\">finit par</option>\n <option value=\"is\">est</option>\n <option value=\"isNot\">n'est pas</option>\n <option value=\"largerThan\">est supérieur à</option>\n <option value=\"smallerThan\">est inférieur à</option>\n </select>\n <div class=\"filterLabel\">Valeur</div>\n <input onChange={(e) => setValue(e.target.value)} />\n </>\n )}\n <div class=\"button greenButton\" onClick={addFilter}>Ajouter</div>\n </div>\n ) : null}\n </div>\n </OutsideClickHandler >\n )\n}","import { useContext, useState } from \"react\"\nimport axios from \"axios\";\nimport OutsideClickHandler from \"./OutsideClickHandler\"\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default ({ viewIndex, selectedRecordIds, refreshData }) => {\n const config = useContext(ConfigContext)\n const view = config.views[viewIndex]\n const [bulkActionsOpened, setBulkActionsOpened] = useState(false)\n\n const bulkDelete = () => {\n window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n }).then((willDelete) => {\n if (willDelete) {\n axios.post(\"deleteRecords\", {\n viewIndex,\n primaryValues: selectedRecordIds\n }).then(function () {\n refreshData()\n }).catch(function () {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n });\n }\n });\n }\n\n const bulkCustomAction = (actionIndex) => () => {\n setBulkActionsOpened(false)\n axios.post(\"customAction\", {\n viewIndex,\n actionIndex,\n selectedRecordIds\n }).then(function (response) {\n if (response.data.message) {\n alert(response.data.message)\n }\n refreshData()\n }).catch(function () {\n window.swal({\n title: \"Erreur\",\n text: \"L'action a échoué\",\n dangerMode: true\n })\n });\n }\n\n return !config.hideMultiselect && (view.canDelete !== false || view.customActions?.length > 0) ? (\n <OutsideClickHandler onOutsideClick={() => setBulkActionsOpened(false)}>\n <div class=\"actionButtonsContainer\">\n <div class=\"button openBulkActionsButton\" onClick={() => setBulkActionsOpened(!bulkActionsOpened)}>Actions</div>\n {bulkActionsOpened ? <div class=\"bulkActions\">\n {view.customActions?.map((action, index) => (\n <div class=\"action recordAction\" onClick={bulkCustomAction(index)}>{action.label}</div>\n ))}\n {view.canDelete !== false ? <div class=\"action recordAction red\" onClick={bulkDelete}>Supprimer</div> : null}\n </div> : null}\n </div>\n </OutsideClickHandler>\n ) : null\n}","import evalExpression from \"./evalExpression\"\n\nexport default (column, record, onTable) => {\n if (column.showAsPicture) {\n const imageUrl = column.baseUrl + record[column.pathField];\n return record[column.pathField] ? (\n <a href={imageUrl} target='_blank'>\n <img src={imageUrl} style={{ width: onTable ? 60 : 300, height: onTable ? 30 : 150, objectFit: \"contain\" }} />\n </a>\n ) : null\n } else if (column.formatValue) {\n return <div dangerouslySetInnerHTML={{ __html: record[`__formatValue-${column.__id__}__`] }} />\n } else if (column.formattedValue) {\n return <div>{evalExpression(column.formattedValue, record)}</div>\n } else if (column.action) {\n if (column.actionDisplayCondition) {\n let isDisplaying = evalExpression(column.actionDisplayCondition, record)\n if (!isDisplaying)\n return \"\";\n }\n var data = JSON.parse(JSON.stringify(column.data));\n for (var key in data) {\n data[key] = evalExpression(data[key], record)\n }\n return (\n <div class='actionButton' data-route='\" + column.route + \"' data-data='\" + JSON.stringify(data) + \"'>{column.action}</div>\n )\n } else if (column.dataType === \"tinyint\") {\n return <div>{record[column.name] === 1 ? \"Oui\" : \"Non\"}</div>\n } else if (column.dataType === \"color\") {\n return <div class='colorPreview' style={{ backgroundColor: record[column.name] }}></div>\n } else if (column.dataType === \"richText\") {\n return <div dangerouslySetInnerHTML={{ __html: record[column.htmlField] }} />\n } else if (column.dataType === \"select\" && column.options && column.options.constructor == Object) {\n return <div>{column.options[record[column.name]]}</div>\n } else {\n return <div>{record[column.name]}</div>\n }\n}","import { useState, useEffect, useContext } from \"react\"\nimport axios from \"axios\";\nimport {\n Link,\n useParams,\n useHistory\n} from \"react-router-dom\";\nimport DownloadButton from \"../components/DownloadButton\"\nimport AddFilterButton from \"../components/AddFilterButton\"\nimport BulkActionsButton from \"../components/BulkActionsButton\"\nimport getFormattedValue from \"../utils/getFormattedValue\"\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nlet _viewIndex = null;\nlet _page = 1;\nlet _currentFilters = [];\nlet _orderBy = null;\nlet _isDesc = null;\nlet _query = \"\";\n\nexport default () => {\n const { viewIndex, subviewIndex } = useParams();\n const history = useHistory();\n const [page, setPage] = useState(_page)\n const [currentFilters, setCurrentFilters] = useState(_currentFilters)\n const [orderBy, setOrderBy] = useState(_orderBy);\n const [isDesc, setIsDesc] = useState(_isDesc);\n const [query, setQuery] = useState(_query);\n const [selectedRecordIds, setSelectedRecordIds] = useState([])\n const [data, setData] = useState(null)\n const config = useContext(ConfigContext);\n const view = config.views[viewIndex]\n\n const filteredColumns = view.columns?.filter(x => !x.hideInTable && !x.hidden)\n\n useEffect(() => {\n if (viewIndex !== _viewIndex) {\n setPage(1)\n setQuery(null)\n setOrderBy(null)\n setIsDesc(null)\n setQuery(\"\")\n if (selectedRecordIds.length > 0) {\n setSelectedRecordIds([])\n }\n if (currentFilters.length > 0) {\n setCurrentFilters([])\n }\n }\n }, [viewIndex])\n\n\n useEffect(() => {\n refreshData()\n _viewIndex = viewIndex;\n _page = page;\n _query = query;\n _currentFilters = currentFilters;\n _orderBy = orderBy;\n _isDesc = isDesc;\n }, [viewIndex, subviewIndex, page, query, currentFilters, orderBy, isDesc])\n\n function refreshData() {\n setData(null)\n axios.post(\"/records\", {\n viewIndex,\n subviewIndex,\n page,\n filters: currentFilters.map(function (x) {\n return x.query\n }),\n orderBy,\n isDesc,\n query\n }).then((response) => {\n if (response.data?.records?.length === 0 && page > 1) {\n setPage(1)\n }\n setData(response.data)\n })\n }\n\n return (\n <div class=\"view\">\n <div class=\"scrollable\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{view.label}</div>\n <div class=\"viewHeaderActions\">\n <div class=\"searchBarContainer\">\n <input type=\"text\" placeholder=\"Rechercher\" class=\"searchBar\" value={query} onChange={(e) => setQuery(e.target.value)} />\n <div class=\"searchBarIcon\">\n <i class=\"fa fa-search\"></i>\n </div>\n </div>\n <BulkActionsButton\n viewIndex={viewIndex}\n selectedRecordIds={selectedRecordIds}\n refreshData={refreshData}\n />\n <AddFilterButton\n view={view}\n refreshData={refreshData}\n onAddFilter={(filter) => setCurrentFilters([...currentFilters, filter])}\n />\n <DownloadButton\n view={view}\n viewIndex={viewIndex}\n subviewIndex={subviewIndex}\n currentFilters={currentFilters}\n orderBy={orderBy}\n isDesc={isDesc}\n query={query}\n />\n {view.canCreate ? (\n <Link to={`/createRecord/${viewIndex}`}>\n <div class=\"plusButton\"><i class=\"fa fa-plus\"></i></div>\n </Link>\n ) : null}\n </div>\n </div>\n {currentFilters.length > 0 ? (\n <div class=\"filtersContainer\">\n {currentFilters.map((filter, index) => (\n <div class='filterItem' key={index}>\n <div class='filterItemLabel'>{filter.label}</div>\n <div class=\"filterRemove\" onClick={() => {\n setCurrentFilters(currentFilters.filter(x => x.query !== filter.query))\n }}><i class='fa fa-times'></i></div>\n </div>\n ))}\n </div>\n ) : null}\n <table class=\"table\">\n <thead>\n <tr>\n {config.hideMultiselect ? null : <th></th>}\n {filteredColumns.map((column, index) => {\n const sortName = column.dataType === \"foreign\" || column.dataType === \"datalist\" ? column.formattedValue : column.sortName || column.name\n return (\n <th\n class={sortName ? \"sortable\" : \"\"}\n key={index}\n onClick={() => {\n if (sortName) {\n setOrderBy(sortName)\n setIsDesc(orderBy === sortName ? !isDesc : false)\n }\n }}\n >\n {column.label}\n {sortName ? (\n <div class='columnSortIcon'>\n <i class={`fas fa-sort${isDesc === true && sortName === orderBy ? \"-down\" : (isDesc === false && sortName === orderBy ? \"-up\" : \"\")}`}></i>\n </div>\n ) : null}\n </th>\n )\n })}\n\n </tr>\n </thead>\n <tbody>\n {!data ? Array.from({ length: 10 }).map((_, index) => (\n <tr class='record' key={index}>{\n Array.from({\n length: filteredColumns.length + (config.hideMultiselect ? 0 : 1)\n }).map((_, cellIndex) => (\n <td key={cellIndex}> </td>\n ))\n }</tr>\n )) : null}\n {data?.records?.map((record) => {\n const recordId = record[view.primaryId]\n return (\n <tr\n class={`record ${view.notClickable ? \"nonClickableRow\" : \"\"}`}\n onClick={(event) => {\n if (event.target.tagName == \"A\") {\n event.stopPropagation();\n return;\n }\n if (!view.notClickable) {\n if (view.clickToEdit) {\n history.push(`/editRecord/${viewIndex}/${recordId}`)\n } else {\n history.push(`/record/${viewIndex}/${recordId}`)\n }\n }\n }}\n key={recordId}\n >\n {config.hideMultiselect ? null : <td class='checkboxParent' onClick={(e) => {\n setSelectedRecordIds(selectedRecordIds.includes(recordId) ? selectedRecordIds.filter(x => x !== recordId) : [...selectedRecordIds, recordId])\n e.stopPropagation()\n }}><div class={`checkbox ${selectedRecordIds.includes(recordId) ? \"checked\" : \"\"}`}></div></td>}\n {filteredColumns.map((column, index) => (\n <td key={index}>{getFormattedValue(column, record, true)}</td>\n ))}\n </tr>\n )\n })}\n </tbody>\n\n </table>\n </div>\n <div class=\"tableFooter\">\n <div class=\"tableCounter\">{data?.count || \"-\"} {view.label}</div>\n <div class=\"paginator\">\n <div class=\"paginatorLeft\" onClick={() => setPage(Math.max(1, page - 1))}><i class=\"fas fa-caret-left\"></i></div>\n <div class=\"paginatorNumber\">{page} / {data && data.count ? Math.ceil(data.count / (view.limit || 10)) : \"-\"}</div>\n <div class=\"paginatorRight\" onClick={() => setPage(Math.min(page + 1, Math.ceil(data.count / (view.limit || 10))))}><i class=\"fas fa-caret-right\"></i></div>\n </div>\n </div>\n </div>\n )\n}\n","\nimport { useContext, useState } from \"react\"\nimport {\n useHistory\n} from \"react-router-dom\";\nimport axios from \"axios\";\nimport OutsideClickHandler from \"./OutsideClickHandler\"\nimport { ConfigContext } from \"../contexts/ConfigContext\";\n\nexport default ({ viewIndex, record, refreshData }) => {\n const config = useContext(ConfigContext)\n const view = config.views[viewIndex]\n const [actionsOpened, setActionsOpened] = useState(false)\n const history = useHistory()\n\n const deleteRecord = async () => {\n const willDelete = await window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n })\n if (willDelete) {\n if (view.deleteCallback) {\n axios.post(view.deleteCallback, {\n id: record[view.primaryId],\n data: record\n })\n }\n try {\n await axios.post(\"/deleteRecord\", {\n viewIndex,\n primaryValue: record[view.primaryId]\n })\n history.push(`/records/${viewIndex}`)\n } catch (e) {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n }\n }\n }\n\n const customAction = (actionIndex) => () => {\n setActionsOpened(false)\n axios.post(\"customAction\", {\n viewIndex,\n actionIndex,\n selectedRecordIds: [record[view.primaryId]]\n }).then(function (response) {\n if (response.data.message) {\n alert(response.data.message)\n }\n refreshData()\n }).catch(function () {\n window.swal({\n title: \"Erreur\",\n text: \"L'action a échoué\",\n dangerMode: true\n })\n });\n }\n\n return (\n (view.canDuplicate === true) || (view.canDelete !== false) || (view.customActions?.length > 0) ? (\n <OutsideClickHandler onOutsideClick={() => setActionsOpened(false)}>\n <div class=\"actionButtonsContainer\">\n <div class=\"button openActionsButton\" onClick={() => setActionsOpened(!actionsOpened)}>Actions</div>\n {actionsOpened ? (\n <div class=\"actions\">\n {view.customActions?.map((action, index) => (\n <div class=\"action recordAction\" onClick={customAction(index)}>{action.label}</div>\n ))}\n {view.canDuplicate === true ? <div class=\"action recordAction duplicateRecord\">Dupliquer</div> : null}\n {view.canDelete !== false ? <div class=\"action recordAction red\" onClick={deleteRecord}>Supprimer</div> : null}\n </div>\n ) : null}\n </div>\n </OutsideClickHandler>\n ) : null\n\n )\n}","\nimport {\n useHistory\n} from \"react-router-dom\";\n\nexport default () => {\n const history = useHistory();\n\n return (\n <div class=\"button backButton\" onClick={() => history.goBack()}>Retour</div>\n );\n}","import axios from \"axios\";\nimport evalExpression from \"../utils/evalExpression\";\n\nexport default ({ record, panel }) => {\n const downloadTable = () => {\n axios.get(\"/customQuery\", {\n params: {\n query: panel.query || evalExpression(panel.formattedQuery, record),\n primaryValue: 2630\n }\n }).then((response) => {\n const results = response.data;\n const lines = [];\n lines.push(Object.keys(results[0]).filter(key => key !== panel.primaryId).join(\",\"))\n for (let result of results) {\n lines.push(\n Object.keys(result).filter(key => key !== panel.primaryId).map((key) =>\n (panel.formattedValues && (key in panel.formattedValues)) ? evalExpression(panel.formattedValues[key], result) : result[key]\n ).join(\",\")\n )\n }\n\n window.download(lines.join(\"\\r\\n\"), panel.label + \".csv\");\n })\n }\n\n return (<div class='downloadPanelButton' onClick={downloadTable}><i class='fa fa-cloud-download'></i></div>)\n}","import { useState, useEffect, useContext } from \"react\"\nimport axios from \"axios\";\nimport evalExpression from \"../../utils/evalExpression\";\nimport {\n useHistory,\n useParams\n} from \"react-router-dom\";\nimport { ConfigContext } from \"../../contexts/ConfigContext\";\n\nexport default ({ panel, record, view, index }) => {\n const [results, setResults] = useState(null);\n const history = useHistory();\n const { viewIndex } = useParams();\n const config = useContext(ConfigContext)\n\n useEffect(() => {\n refreshData()\n }, [record])\n\n const refreshData = () => {\n axios.get(\"/customQuery\", {\n params: {\n viewIndex,\n panelIndex: index,\n query: panel.query || evalExpression(panel.formattedQuery, record),\n primaryValue: record[view.primaryId]\n }\n }).then((response) => {\n setResults(response.data)\n })\n }\n\n const deleteRow = async (row) => {\n const willDelete = await window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n })\n if (willDelete) {\n try {\n await axios.post(\"/deleteRecordFromPanel\", {\n viewIndex,\n panelId: panel.__id__,\n primaryValue: row[panel.primaryId]\n })\n refreshData();\n } catch (e) {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n }\n }\n }\n\n return (\n <div>\n {results?.length > 0 ? (\n <table class={`table panelTable ${panel.folded ? \"folded\" : \"\"}`}>\n <thead>\n <tr>\n {Object.keys(results[0]).filter(key => key !== panel.primaryId).map((key) =>\n <th key={key}>{key}</th>\n )}\n {panel.canDelete ? <th></th> : null}\n </tr>\n </thead>\n <tbody>\n {results.map((result) => (\n <tr\n class={`record ${panel.canShow ? \"\" : \"nonClickableRow\"}`}\n onClick={() => {\n const viewIndex = config.views.findIndex(x => x.type === \"table\" && x.tableName === panel.tableName)\n if (panel.canShow) {\n history.push(`/record/${viewIndex}/${result[panel.primaryId]}`)\n }\n }}\n >\n {Object.keys(result).filter(key => key !== panel.primaryId).map((key) =>\n <td key={key}>\n <div\n dangerouslySetInnerHTML={{\n __html:\n (panel.formattedValues && (key in panel.formattedValues)) ?\n evalExpression(panel.formattedValues[key], result) :\n result[key]\n }}\n />\n </td>\n )}\n {panel.canDelete ? (\n <td class='deleteIconCell'>\n <div\n class='deleteIcon'\n onClick={(e) => {deleteRow(result); e.stopPropagation()}}\n >\n <i class='fa fa-minus'></i>\n </div>\n </td>\n ) : null}\n </tr>\n ))}\n </tbody>\n </table>\n ) : results?.length === 0 ? (\n <div class={`noData panelTable ${panel.folded ? \"folded\" : \"\"}`}>Aucune donnée</div>\n ) : null}\n </div>\n )\n}\n","import { useState, useEffect } from \"react\"\nimport {\n useHistory,\n useParams\n} from \"react-router-dom\";\nimport axios from \"axios\";\n\nexport default ({ panel, record, view }) => {\n const [results, setResults] = useState(null);\n const history = useHistory();\n const { viewIndex } = useParams();\n\n useEffect(() => {\n refreshData()\n }, [panel.query, record])\n\n const refreshData = () => {\n axios.get(\"/customQuery\", {\n params: {\n query: panel.query,\n primaryValue: record[view.primaryId]\n }\n }).then((response) => {\n setResults(response.data)\n })\n }\n const deleteRow = async (row) => {\n const willDelete = await window.swal({\n title: \"Êtes-vous sûr ?\",\n text: \"Une fois la suppression confirmée, il ne sera pas possible de revenir en arrière.\",\n buttons: [\"Annuler\", \"Oui\"],\n dangerMode: true\n })\n if (willDelete) {\n try {\n await axios.post(\"/deleteRecordFromPanel\", {\n viewIndex,\n panelId: panel.__id__,\n primaryValue: row[panel.primaryId]\n })\n refreshData();\n } catch (e) {\n window.swal({\n title: \"Erreur\",\n text: \"Suppression impossible\",\n dangerMode: true\n })\n }\n }\n }\n\n const pathField = panel.pathField || \"Path\"\n\n return (\n <div>\n {results?.length > 0 ? (\n <div class=\"gallery\">\n {results.map((result) => (\n <div class='galleryPicture' key={result[pathField]}>\n {panel.canDelete ? <div class='deleteIcon' onClick={(e) => {deleteRow(result); e.stopPropagation()}}><i class='fa fa-minus'></i></div> : null}\n <a href={panel.baseUrl + result[pathField]} target='_blank'>\n <img\n src={panel.baseUrl + result[pathField]}\n style={{ width: \"100%\", height: 150, objectFit: panel.objectFit || \"cover\" }}\n onerror='this.style.height = 0'\n />\n </a>\n </div>\n ))}\n </div>\n ) : results?.length === 0 ? (\n <div class={`noData panelTable ${panel.folded ? \"folded\" : \"\"}`}>Aucune donnée</div>\n ) : null}\n </div>\n )\n}\n","import { useEffect, useRef } from \"react\"\nimport axios from \"axios\";\n\nexport default ({ panel, record, view }) => {\n const mapRef = useRef();\n\n useEffect(() => {\n if (window.google && record) {\n if (panel.query) {\n axios.get(\"/customQuery\", {\n query: panel.query,\n primaryValue: record[view.primaryId]\n }).then((response) => {\n const result = response?.data?.[0]\n if (result) {\n initMap(result.Lat, result.Lng, panel.zoom || 12)\n }\n })\n } else {\n initMap(record[panel.latitudeField], record[panel.longitudeField], panel.zoom || 12)\n }\n }\n }, [record, window.google])\n\n const initMap = (lat, lng, zoom) => {\n const map = new window.google.maps.Map(mapRef.current, {\n zoom,\n center: {\n lat,\n lng\n }\n });\n new window.google.maps.Marker({\n position: { lat, lng },\n map\n });\n }\n\n return (\n <div class='map' ref={mapRef}></div>\n )\n}","import { useState, useEffect, useContext } from \"react\"\nimport axios from \"axios\";\nimport {\n useParams,\n Link,\n} from \"react-router-dom\";\nimport getFormattedValue from \"../utils/getFormattedValue\"\nimport ActionsButton from \"../components/ActionsButton\"\nimport BackButton from \"../components/BackButton\"\nimport DownloadTablePanelButton from \"../components/DownloadTablePanelButton\"\nimport TablePanel from \"../components/panels/TablePanel\"\nimport GalleryPanel from \"../components/panels/GalleryPanel\"\nimport MapPanel from \"../components/panels/MapPanel\"\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex, recordId } = useParams();\n const [record, setRecord] = useState(null);\n\n const view = config.views[viewIndex]\n const filteredColumns = view.columns?.filter(x => !x.hidden)\n\n useEffect(() => {\n refreshData()\n }, [viewIndex, recordId]);\n\n const refreshData = () => {\n axios.get(\"/record\", {\n params: {\n viewIndex,\n recordId\n }\n }).then((response) => {\n setRecord(response.data);\n });\n }\n\n return (\n <div class=\"view backgroundBlue\">\n <div class=\"viewHeader\">\n <div class=\"viewTitle\">{view.label}</div>\n <div class=\"viewHeaderActions\">\n <BackButton />\n <ActionsButton viewIndex={viewIndex} record={record} refreshData={refreshData} />\n {view.canEdit !== false ? (\n <Link to={`/editRecord/${viewIndex}/${recordId}`}>\n <div class=\"button greenButton recordAction\">Modifier</div>\n </Link>\n ) : null}\n </div>\n </div>\n <div class=\"paddedView\">\n <div class=\"showContainer\">\n <div class='panel detailsPanel'>\n <div class='panelTitle'>Détails</div>\n {record ?\n filteredColumns.map((column, index) => (\n <div class='showRecordField' key={index}>\n <div class='formLabel'>{column.label}</div>\n <div class='formValue'>{getFormattedValue(column, record, false) || \"-\"}</div>\n </div>\n ))\n : null}\n </div>\n {view.recordViewPanels && record ? (\n <div class='recordViewPanels'>\n {view.recordViewPanels.map((panel, index) => (\n <div class='panel' key={index}>\n <div class='panelHeader'>\n <div class='viewTitle'>{panel.label}</div>\n <div class='viewHeaderActions'>\n {panel.folded ? <div class='button smallButton unfoldPanel'>Afficher</div> : null}\n {panel.canCreate ? <Link to={`/createRecord/${viewIndex}/${index}/${recordId}`}><div class='plusButton'><i class='fa fa-plus'></i></div></Link> : null}\n {panel.canDownload && panel.type === \"table\" ? <DownloadTablePanelButton record={record} panel={panel} /> : null}\n </div>\n </div>\n {panel.type === \"table\" ? <TablePanel record={record} panel={panel} view={view} index={index} /> : null}\n {panel.type === \"gallery\" ? <GalleryPanel record={record} panel={panel} view={view} index={index} /> : null}\n {panel.type === \"map\" ? <MapPanel record={record} panel={panel} view={view} index={index} /> : null}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n )\n}\n","export default __webpack_public_path__ + \"static/media/logo.e407b9ca.png\";","import axios from \"axios\";\nimport { useState } from \"react\";\nimport logo from \"../images/logo.png\"\n\nexport default ({ setIsAuthenticated }) => {\n const [username, setUsername] = useState(\"\")\n const [password, setPassword] = useState(\"\")\n\n const login = async () => {\n const response = await axios.post(\"/login\", {\n username,\n password\n });\n if (response.data.success) {\n setIsAuthenticated(true)\n }\n }\n\n return (\n <div class=\"loginPanelBackground\">\n <div class=\"loginPanel\">\n <div class=\"loginLogoContainer\">\n <img class=\"loginLogo\" src={logo} />\n </div>\n <label>Nom d'utilisateur</label>\n <input type=\"text\" name=\"username\" onChange={(e) => setUsername(e.target.value)} />\n <label>Mot de passe</label>\n <input type=\"password\" name=\"password\" onChange={(e) => setPassword(e.target.value)} />\n <button class=\"button greenButton fullWidth\" onClick={login}>Se connecter</button>\n </div>\n </div>\n )\n}","\n\nimport { useContext } from \"react\";\nimport {\n useParams\n} from \"react-router-dom\";\nimport { ConfigContext } from '../contexts/ConfigContext'\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex } = useParams();\n const view = config.views[viewIndex];\n\n return (\n <div class=\"view\">\n <iframe src={view.src}></iframe>\n </div>\n )\n}","import React, { useMemo, Suspense } from 'react';\nimport axios from \"axios\";\nimport styled from 'styled-components'\n\nconst packages = {\n \"react\": () => ({ exports: React }),\n \"axios\": () => ({ exports: axios }),\n \"styled-components\": () => ({ exports: styled }),\n}\n\nfunction getParsedModule(code, moduleName, packages) {\n const _this = Object.create(packages);\n function require(name) {\n if (!(name in _this) && moduleName === name) {\n let module = { exports: {} };\n _this[name] = () => module;\n let wrapper = Function(\"require, exports, module\", code);\n wrapper(require, module.exports, module);\n } else if (!(name in _this)) {\n throw `Module '${name}' not found`\n }\n return (_this[name]()).exports;\n }\n\n return require(moduleName);\n}\n\n\nasync function fetchComponent(componentPath) {\n try {\n const response = await axios.get(`/customComponent`, {\n params: {\n componentPath\n }\n })\n const text = response.data\n return { default: getParsedModule(text, \"__moduleName__\", packages) };\n } catch (error) {\n console.error(error)\n return { default() { return <div>Erreur de rendu</div> } }\n }\n\n}\n\nconst CustomComponent = ({ componentPath, children, ...props }) => {\n const Component = useMemo(() => {\n return React.lazy(async () => fetchComponent(componentPath))\n }, [componentPath]);\n\n return (\n <Suspense fallback={null}>\n <Component {...props}>{children}</Component>\n </Suspense>\n )\n};\n\nexport default React.memo(CustomComponent);\n","import { useContext } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport CustomComponent from \"../components/CustomComponent\";\nimport { ConfigContext } from \"../contexts/ConfigContext\";\n\nexport default () => {\n const config = useContext(ConfigContext)\n const { viewIndex } = useParams();\n\n const componentPath = config.views[viewIndex].componentPath\n\n return (\n <CustomComponent componentPath={componentPath} />\n )\n}","import {\n BrowserRouter as Router,\n Switch,\n Route\n} from \"react-router-dom\";\nimport { useEffect, useState } from \"react\";\nimport './App.css';\nimport Sidebar from './components/Sidebar'\nimport RedirectToFirstView from './components/RedirectToFirstView'\nimport CreateRecord from './pages/CreateRecord'\nimport EditRecord from './pages/EditRecord'\nimport Records from './pages/Records'\nimport Record from './pages/Record'\nimport Login from './pages/Login'\nimport Iframe from './pages/Iframe'\nimport CustomView from './pages/CustomView'\nimport { ConfigProvider } from './contexts/ConfigContext'\nimport axios from \"axios\";\n\naxios.defaults.withCredentials = true;\naxios.defaults.baseURL = process.env.NODE_ENV === \"development\" ? 'http://localhost/admin/api' : '/_HOMEPAGE_/api';\n\nfunction App() {\n const [isAuthenticated, setIsAuthenticated] = useState(null);\n\n useEffect(() => {\n axios.get(\"/isAuthenticated\").then((response) => {\n setIsAuthenticated(response.data.isAuthenticated)\n })\n }, []);\n\n return (\n <div id=\"body\">\n {isAuthenticated === true ? (\n <ConfigProvider>\n <Router basename={process.env.NODE_ENV === \"development\" ? '/admin' : \"/_HOMEPAGE_\"}>\n <Sidebar />\n <Switch>\n <Route path=\"/records/:viewIndex/:subviewIndex?\">\n <Records />\n </Route>\n <Route path=\"/record/:viewIndex/:recordId\">\n <Record />\n </Route>\n <Route path=\"/editRecord/:viewIndex/:recordId\">\n <EditRecord />\n </Route>\n <Route path=\"/createRecord/:viewIndex/:panelIndex?/:recordId?\">\n <CreateRecord />\n </Route>\n <Route path=\"/iframe/:viewIndex\">\n <Iframe />\n </Route>\n <Route path=\"/customView/:viewIndex\">\n <CustomView />\n </Route>\n <Route path=\"/\">\n <RedirectToFirstView />\n </Route>\n </Switch>\n </Router>\n </ConfigProvider>\n ) : isAuthenticated === false ? (\n <Login setIsAuthenticated={setIsAuthenticated} />\n ) : (\n <div class=\"appLoading\">\n <i class='fa fa-circle-notch fa-spin'></i>\n </div>\n )}\n </div>\n\n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById('root')\n);"],"sourceRoot":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"/home/runner/work/galadmin/galadmin/src/front/src/index.js":"1","/home/runner/work/galadmin/galadmin/src/front/src/App.js":"2","/home/runner/work/galadmin/galadmin/src/front/src/components/Sidebar.js":"3","/home/runner/work/galadmin/galadmin/src/front/src/components/RedirectToFirstView.js":"4","/home/runner/work/galadmin/galadmin/src/front/src/pages/CreateRecord.js":"5","/home/runner/work/galadmin/galadmin/src/front/src/pages/EditRecord.js":"6","/home/runner/work/galadmin/galadmin/src/front/src/pages/Records.js":"7","/home/runner/work/galadmin/galadmin/src/front/src/pages/Record.js":"8","/home/runner/work/galadmin/galadmin/src/front/src/pages/Login.js":"9","/home/runner/work/galadmin/galadmin/src/front/src/pages/Iframe.js":"10","/home/runner/work/galadmin/galadmin/src/front/src/pages/CustomView.js":"11","/home/runner/work/galadmin/galadmin/src/front/src/contexts/ConfigContext.js":"12","/home/runner/work/galadmin/galadmin/src/front/src/components/Input.js":"13","/home/runner/work/galadmin/galadmin/src/front/src/components/LabelTooltip.js":"14","/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadButton.js":"15","/home/runner/work/galadmin/galadmin/src/front/src/components/AddFilterButton.js":"16","/home/runner/work/galadmin/galadmin/src/front/src/components/BulkActionsButton.js":"17","/home/runner/work/galadmin/galadmin/src/front/src/components/ActionsButton.js":"18","/home/runner/work/galadmin/galadmin/src/front/src/components/BackButton.js":"19","/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadTablePanelButton.js":"20","/home/runner/work/galadmin/galadmin/src/front/src/components/CustomComponent.js":"21","/home/runner/work/galadmin/galadmin/src/front/src/utils/checkRequiredColumns.js":"22","/home/runner/work/galadmin/galadmin/src/front/src/utils/getFormattedValue.js":"23","/home/runner/work/galadmin/galadmin/src/front/src/components/panels/TablePanel.js":"24","/home/runner/work/galadmin/galadmin/src/front/src/components/panels/GalleryPanel.js":"25","/home/runner/work/galadmin/galadmin/src/front/src/components/panels/MapPanel.js":"26","/home/runner/work/galadmin/galadmin/src/front/src/components/OutsideClickHandler.js":"27","/home/runner/work/galadmin/galadmin/src/front/src/utils/evalExpression.js":"28","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ColorInput.js":"29","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/RichTextInput.js":"30","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/DatetimeInput.js":"31","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/AddressInput.js":"32","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/FileInput.js":"33","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignSelectInput.js":"34","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignDatalistInput.js":"35"},{"size":218,"mtime":1663166561944,"results":"36","hashOfConfig":"37"},{"size":2341,"mtime":1663166561940,"results":"38","hashOfConfig":"37"},{"size":4811,"mtime":1663166561944,"results":"39","hashOfConfig":"37"},{"size":524,"mtime":1663166561944,"results":"40","hashOfConfig":"37"},{"size":4177,"mtime":1663166561944,"results":"41","hashOfConfig":"37"},{"size":3733,"mtime":1663166561944,"results":"42","hashOfConfig":"37"},{"size":9957,"mtime":1663166561944,"results":"43","hashOfConfig":"37"},{"size":4217,"mtime":1663166561944,"results":"44","hashOfConfig":"37"},{"size":1135,"mtime":1663166561944,"results":"45","hashOfConfig":"37"},{"size":404,"mtime":1663166561944,"results":"46","hashOfConfig":"37"},{"size":454,"mtime":1663166561944,"results":"47","hashOfConfig":"37"},{"size":1022,"mtime":1663166561944,"results":"48","hashOfConfig":"37"},{"size":4456,"mtime":1663166561944,"results":"49","hashOfConfig":"37"},{"size":522,"mtime":1663166561944,"results":"50","hashOfConfig":"37"},{"size":895,"mtime":1663166561940,"results":"51","hashOfConfig":"37"},{"size":9257,"mtime":1663166561940,"results":"52","hashOfConfig":"37"},{"size":2656,"mtime":1663166561940,"results":"53","hashOfConfig":"37"},{"size":3169,"mtime":1663166561940,"results":"54","hashOfConfig":"37"},{"size":217,"mtime":1663166561940,"results":"55","hashOfConfig":"37"},{"size":1128,"mtime":1663166561944,"results":"56","hashOfConfig":"37"},{"size":1662,"mtime":1663166561940,"results":"57","hashOfConfig":"37"},{"size":778,"mtime":1663166561944,"results":"58","hashOfConfig":"37"},{"size":1886,"mtime":1663166561944,"results":"59","hashOfConfig":"37"},{"size":4606,"mtime":1663166561944,"results":"60","hashOfConfig":"37"},{"size":2656,"mtime":1663166561944,"results":"61","hashOfConfig":"37"},{"size":1192,"mtime":1663166561944,"results":"62","hashOfConfig":"37"},{"size":826,"mtime":1663166561944,"results":"63","hashOfConfig":"37"},{"size":530,"mtime":1663166561944,"results":"64","hashOfConfig":"37"},{"size":894,"mtime":1663166561944,"results":"65","hashOfConfig":"37"},{"size":1852,"mtime":1663166561944,"results":"66","hashOfConfig":"37"},{"size":869,"mtime":1663166561944,"results":"67","hashOfConfig":"37"},{"size":3092,"mtime":1663166561944,"results":"68","hashOfConfig":"37"},{"size":3296,"mtime":1663166561944,"results":"69","hashOfConfig":"37"},{"size":1461,"mtime":1663166561944,"results":"70","hashOfConfig":"37"},{"size":2088,"mtime":1663166561944,"results":"71","hashOfConfig":"37"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1cwict1",{"filePath":"74","messages":"75","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"76","messages":"77","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"78","messages":"79","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"80","messages":"81","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"82","messages":"83","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"84","messages":"85","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"86","messages":"87","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"88","messages":"89","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"90","messages":"91","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"92","messages":"93","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"94","messages":"95","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"96","messages":"97","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"98","messages":"99","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"100","messages":"101","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"102","messages":"103","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"104","messages":"105","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"106","messages":"107","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"108","messages":"109","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"110","messages":"111","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"112","messages":"113","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"114","messages":"115","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"116","messages":"117","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"118","messages":"119","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"120","messages":"121","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"122","messages":"123","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"124","messages":"125","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"126","messages":"127","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"128","messages":"129","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"130","messages":"131","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"132","messages":"133","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"134","messages":"135","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"136","messages":"137","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"138","messages":"139","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"140","messages":"141","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/home/runner/work/galadmin/galadmin/src/front/src/index.js",[],"/home/runner/work/galadmin/galadmin/src/front/src/App.js",[],"/home/runner/work/galadmin/galadmin/src/front/src/components/Sidebar.js",["142","143","144","145"],"/home/runner/work/galadmin/galadmin/src/front/src/components/RedirectToFirstView.js",["146"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/CreateRecord.js",["147"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/EditRecord.js",["148"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Records.js",["149","150","151","152"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Record.js",["153","154"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Login.js",["155","156"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Iframe.js",["157","158"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/CustomView.js",["159"],"/home/runner/work/galadmin/galadmin/src/front/src/contexts/ConfigContext.js",["160"],"/home/runner/work/galadmin/galadmin/src/front/src/components/Input.js",["161"],"/home/runner/work/galadmin/galadmin/src/front/src/components/LabelTooltip.js",["162"],"/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadButton.js",["163"],"/home/runner/work/galadmin/galadmin/src/front/src/components/AddFilterButton.js",["164","165"],"/home/runner/work/galadmin/galadmin/src/front/src/components/BulkActionsButton.js",["166"],"/home/runner/work/galadmin/galadmin/src/front/src/components/ActionsButton.js",["167"],"/home/runner/work/galadmin/galadmin/src/front/src/components/BackButton.js",["168"],"/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadTablePanelButton.js",["169"],"/home/runner/work/galadmin/galadmin/src/front/src/components/CustomComponent.js",["170","171"],"/home/runner/work/galadmin/galadmin/src/front/src/utils/checkRequiredColumns.js",["172","173"],"/home/runner/work/galadmin/galadmin/src/front/src/utils/getFormattedValue.js",["174","175","176","177"],"/home/runner/work/galadmin/galadmin/src/front/src/components/panels/TablePanel.js",["178","179"],"/home/runner/work/galadmin/galadmin/src/front/src/components/panels/GalleryPanel.js",["180","181","182","183","184"],"/home/runner/work/galadmin/galadmin/src/front/src/components/panels/MapPanel.js",["185","186"],"/home/runner/work/galadmin/galadmin/src/front/src/components/OutsideClickHandler.js",["187"],"/home/runner/work/galadmin/galadmin/src/front/src/utils/evalExpression.js",["188","189"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ColorInput.js",["190","191","192"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/RichTextInput.js",["193","194"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/DatetimeInput.js",["195","196"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/AddressInput.js",["197","198","199","200"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/FileInput.js",["201"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignSelectInput.js",["202","203","204"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignDatalistInput.js",["205","206","207","208"],{"ruleId":"209","severity":1,"message":"210","line":19,"column":1,"nodeType":"211","endLine":105,"endColumn":2},{"ruleId":"212","severity":1,"message":"213","line":26,"column":28,"nodeType":"214","endLine":26,"endColumn":66},{"ruleId":"215","severity":1,"message":"216","line":29,"column":70,"nodeType":"217","messageId":"218","endLine":29,"endColumn":72},{"ruleId":"219","severity":1,"message":"220","line":80,"column":80,"nodeType":"221","messageId":"222","endLine":80,"endColumn":82},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":24,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":12,"column":1,"nodeType":"211","endLine":102,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":12,"column":1,"nodeType":"211","endLine":97,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":21,"column":1,"nodeType":"211","endLine":216,"endColumn":2},{"ruleId":"223","severity":1,"message":"224","line":50,"column":8,"nodeType":"225","endLine":50,"endColumn":19,"suggestions":"226"},{"ruleId":"223","severity":1,"message":"227","line":61,"column":8,"nodeType":"225","endLine":61,"endColumn":79,"suggestions":"228"},{"ruleId":"219","severity":1,"message":"220","line":178,"column":66,"nodeType":"221","messageId":"222","endLine":178,"endColumn":68},{"ruleId":"209","severity":1,"message":"210","line":16,"column":1,"nodeType":"211","endLine":89,"endColumn":2},{"ruleId":"223","severity":1,"message":"227","line":26,"column":8,"nodeType":"225","endLine":26,"endColumn":29,"suggestions":"229"},{"ruleId":"209","severity":1,"message":"210","line":5,"column":1,"nodeType":"211","endLine":33,"endColumn":2},{"ruleId":"212","severity":1,"message":"213","line":23,"column":21,"nodeType":"214","endLine":23,"endColumn":57},{"ruleId":"209","severity":1,"message":"210","line":9,"column":1,"nodeType":"211","endLine":19,"endColumn":2},{"ruleId":"230","severity":1,"message":"231","line":16,"column":13,"nodeType":"214","endLine":16,"endColumn":36},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":15,"endColumn":2},{"ruleId":"232","severity":1,"message":"233","line":12,"column":29,"nodeType":"234","messageId":"222","endLine":12,"endColumn":33},{"ruleId":"209","severity":1,"message":"210","line":9,"column":1,"nodeType":"211","endLine":134,"endColumn":3},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":17,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":5,"column":1,"nodeType":"211","endLine":30,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":186,"endColumn":2},{"ruleId":"223","severity":1,"message":"235","line":20,"column":8,"nodeType":"225","endLine":20,"endColumn":15,"suggestions":"236"},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":68,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":10,"column":1,"nodeType":"211","endLine":85,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":12,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":4,"column":1,"nodeType":"211","endLine":28,"endColumn":2},{"ruleId":"237","severity":1,"message":"238","line":17,"column":27,"nodeType":"234","messageId":"239","endLine":17,"endColumn":69},{"ruleId":"240","severity":1,"message":"241","line":20,"column":13,"nodeType":"242","messageId":"243","endLine":20,"endColumn":47},{"ruleId":"209","severity":1,"message":"210","line":5,"column":1,"nodeType":"211","endLine":22,"endColumn":2},{"ruleId":"219","severity":1,"message":"220","line":9,"column":44,"nodeType":"221","messageId":"222","endLine":9,"endColumn":46},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":39,"endColumn":2},{"ruleId":"244","severity":1,"message":"245","line":7,"column":13,"nodeType":"214","endLine":7,"endColumn":48},{"ruleId":"212","severity":1,"message":"213","line":8,"column":17,"nodeType":"214","endLine":8,"endColumn":127},{"ruleId":"219","severity":1,"message":"220","line":34,"column":93,"nodeType":"221","messageId":"222","endLine":34,"endColumn":95},{"ruleId":"209","severity":1,"message":"210","line":10,"column":1,"nodeType":"211","endLine":112,"endColumn":2},{"ruleId":"223","severity":1,"message":"227","line":18,"column":8,"nodeType":"225","endLine":18,"endColumn":16,"suggestions":"246"},{"ruleId":"209","severity":1,"message":"210","line":8,"column":1,"nodeType":"211","endLine":76,"endColumn":2},{"ruleId":"247","severity":1,"message":"248","line":10,"column":11,"nodeType":"249","messageId":"250","endLine":10,"endColumn":18},{"ruleId":"223","severity":1,"message":"227","line":15,"column":8,"nodeType":"225","endLine":15,"endColumn":29,"suggestions":"251"},{"ruleId":"244","severity":1,"message":"245","line":61,"column":29,"nodeType":"214","endLine":61,"endColumn":89},{"ruleId":"212","severity":1,"message":"213","line":62,"column":33,"nodeType":"214","endLine":66,"endColumn":35},{"ruleId":"209","severity":1,"message":"210","line":4,"column":1,"nodeType":"211","endLine":42,"endColumn":2},{"ruleId":"223","severity":1,"message":"252","line":23,"column":8,"nodeType":"225","endLine":23,"endColumn":31,"suggestions":"253"},{"ruleId":"223","severity":1,"message":"254","line":19,"column":8,"nodeType":"225","endLine":19,"endColumn":13,"suggestions":"255"},{"ruleId":"209","severity":1,"message":"210","line":2,"column":1,"nodeType":"211","endLine":14,"endColumn":2},{"ruleId":"232","severity":1,"message":"233","line":8,"column":16,"nodeType":"234","messageId":"222","endLine":8,"endColumn":20},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":29,"endColumn":2},{"ruleId":"223","severity":1,"message":"256","line":19,"column":43,"nodeType":"249","endLine":19,"endColumn":50},{"ruleId":"223","severity":1,"message":"257","line":20,"column":8,"nodeType":"225","endLine":20,"endColumn":29,"suggestions":"258"},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":55,"endColumn":2},{"ruleId":"223","severity":1,"message":"259","line":47,"column":8,"nodeType":"225","endLine":47,"endColumn":32,"suggestions":"260"},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":26,"endColumn":2},{"ruleId":"223","severity":1,"message":"261","line":19,"column":8,"nodeType":"225","endLine":19,"endColumn":28,"suggestions":"262"},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":67,"endColumn":2},{"ruleId":"223","severity":1,"message":"263","line":45,"column":8,"nodeType":"225","endLine":45,"endColumn":33,"suggestions":"264"},{"ruleId":"223","severity":1,"message":"265","line":54,"column":39,"nodeType":"249","endLine":54,"endColumn":46},{"ruleId":"223","severity":1,"message":"266","line":55,"column":8,"nodeType":"225","endLine":55,"endColumn":33,"suggestions":"267"},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":84,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":46,"endColumn":2},{"ruleId":"223","severity":1,"message":"268","line":23,"column":8,"nodeType":"225","endLine":23,"endColumn":10,"suggestions":"269"},{"ruleId":"219","severity":1,"message":"220","line":32,"column":50,"nodeType":"221","messageId":"222","endLine":32,"endColumn":52},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":64,"endColumn":2},{"ruleId":"223","severity":1,"message":"270","line":22,"column":8,"nodeType":"225","endLine":22,"endColumn":15,"suggestions":"271"},{"ruleId":"223","severity":1,"message":"272","line":31,"column":29,"nodeType":"249","endLine":31,"endColumn":36},{"ruleId":"223","severity":1,"message":"273","line":32,"column":8,"nodeType":"225","endLine":32,"endColumn":23,"suggestions":"274"},"import/no-anonymous-default-export","Assign arrow function to a variable before exporting as module default","ExportDefaultDeclaration","jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","array-callback-return","Array.prototype.map() expects a value to be returned at the end of arrow function.","ArrowFunctionExpression","expectedAtEnd","eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'currentFilters.length' and 'selectedRecordIds.length'. Either include them or remove the dependency array.","ArrayExpression",["275"],"React Hook useEffect has a missing dependency: 'refreshData'. Either include it or remove the dependency array.",["276"],["277"],"jsx-a11y/iframe-has-title","<iframe> elements must have a unique title property.","no-eval","eval can be harmful.","CallExpression","React Hook useEffect has missing dependencies: 'column?.dataType' and 'column.options'. Either include them or remove the dependency array.",["278"],"no-new-func","The Function constructor is eval.","noFunctionConstructor","no-throw-literal","Expected an error object to be thrown.","ThrowStatement","object","react/jsx-no-target-blank","Using target=\"_blank\" without rel=\"noreferrer\" is a security risk: see https://html.spec.whatwg.org/multipage/links.html#link-type-noopener",["279"],"no-unused-vars","'history' is assigned a value but never used.","Identifier","unusedVar",["280"],"React Hook useEffect has missing dependencies: 'panel.latitudeField', 'panel.longitudeField', 'panel.query', 'panel.zoom', and 'view.primaryId'. Either include them or remove the dependency array. Outer scope values like 'window.google' aren't valid dependencies because mutating them doesn't re-render the component.",["281"],"React Hook useEffect has a missing dependency: 'handler'. Either include it or remove the dependency array. If 'handler' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["282"],"The ref value 'colorPicker.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'colorPicker.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook useEffect has missing dependencies: 'column.name', 'initialData', and 'onChange'. Either include them or remove the dependency array. Mutable values like 'colorPicker.current' aren't valid dependencies because mutating them doesn't re-render the component.",["283"],"React Hook useEffect has missing dependencies: 'column.contentField', 'column.htmlField', 'initialData', and 'onChange'. Either include them or remove the dependency array. Mutable values like 'quillContainer.current' aren't valid dependencies because mutating them doesn't re-render the component.",["284"],"React Hook useEffect has missing dependencies: 'column.name', 'initialData', 'onChange', and 'withTime'. Either include them or remove the dependency array. Mutable values like 'datepicker.current' aren't valid dependencies because mutating them doesn't re-render the component.",["285"],"React Hook useEffect has missing dependencies: 'column' and 'onChange'. Either include them or remove the dependency array. Mutable values like 'googleMapsInput.current' aren't valid dependencies because mutating them doesn't re-render the component.",["286"],"The ref value 'googleMapsInput.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'googleMapsInput.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook useEffect has an unnecessary dependency: 'googleMapsInput.current'. Either exclude it or remove the dependency array. Mutable values like 'googleMapsInput.current' aren't valid dependencies because mutating them doesn't re-render the component.",["287"],"React Hook useEffect has missing dependencies: 'column.__id__', 'column.name', 'column.optional', 'initialData', 'onChange', and 'viewIndex'. Either include them or remove the dependency array. If 'onChange' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["288"],"React Hook useEffect has missing dependencies: 'column.__id__' and 'viewIndex'. Either include them or remove the dependency array.",["289"],"The ref value 'input.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'input.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook useEffect has an unnecessary dependency: 'input.current'. Either exclude it or remove the dependency array. Mutable values like 'input.current' aren't valid dependencies because mutating them doesn't re-render the component.",["290"],{"desc":"291","fix":"292"},{"desc":"293","fix":"294"},{"desc":"295","fix":"296"},{"desc":"297","fix":"298"},{"desc":"299","fix":"300"},{"desc":"301","fix":"302"},{"desc":"303","fix":"304"},{"desc":"305","fix":"306"},{"desc":"307","fix":"308"},{"desc":"309","fix":"310"},{"desc":"311","fix":"312"},{"desc":"313","fix":"314"},{"desc":"315","fix":"316"},{"desc":"317","fix":"318"},{"desc":"319","fix":"320"},{"desc":"315","fix":"321"},"Update the dependencies array to be: [currentFilters.length, selectedRecordIds.length, viewIndex]",{"range":"322","text":"323"},"Update the dependencies array to be: [viewIndex, subviewIndex, page, query, currentFilters, orderBy, isDesc, refreshData]",{"range":"324","text":"325"},"Update the dependencies array to be: [viewIndex, recordId, refreshData]",{"range":"326","text":"327"},"Update the dependencies array to be: [column?.dataType, column.options, field]",{"range":"328","text":"329"},"Update the dependencies array to be: [record, refreshData]",{"range":"330","text":"331"},"Update the dependencies array to be: [panel.query, record, refreshData]",{"range":"332","text":"333"},"Update the dependencies array to be: [panel.latitudeField, panel.longitudeField, panel.query, panel.zoom, record, view.primaryId]",{"range":"334","text":"335"},"Update the dependencies array to be: [handler, ref]",{"range":"336","text":"337"},"Update the dependencies array to be: [column.name, initialData, onChange]",{"range":"338","text":"339"},"Update the dependencies array to be: [column.contentField, column.htmlField, initialData, onChange]",{"range":"340","text":"341"},"Update the dependencies array to be: [column.name, initialData, onChange, withTime]",{"range":"342","text":"343"},"Update the dependencies array to be: [column, onChange]",{"range":"344","text":"345"},"Update the dependencies array to be: []",{"range":"346","text":"347"},"Update the dependencies array to be: [column.__id__, column.name, column.optional, initialData, onChange, viewIndex]",{"range":"348","text":"349"},"Update the dependencies array to be: [column.__id__, query, viewIndex]",{"range":"350","text":"351"},{"range":"352","text":"347"},[1656,1667],"[currentFilters.length, selectedRecordIds.length, viewIndex]",[1896,1967],"[viewIndex, subviewIndex, page, query, currentFilters, orderBy, isDesc, refreshData]",[941,962],"[viewIndex, recordId, refreshData]",[808,815],"[column?.dataType, column.options, field]",[542,550],"[record, refreshData]",[359,380],"[panel.query, record, refreshData]",[776,799],"[panel.latitudeField, panel.longitudeField, panel.query, panel.zoom, record, view.primaryId]",[604,609],"[handler, ref]",[695,716],"[column.name, initialData, onChange]",[1639,1663],"[column.contentField, column.htmlField, initialData, onChange]",[700,720],"[column.name, initialData, onChange, withTime]",[2440,2465],"[column, onChange]",[2826,2851],"[]",[724,726],"[column.__id__, column.name, column.optional, initialData, onChange, viewIndex]",[620,627],"[column.__id__, query, viewIndex]",[972,987]]
|
|
1
|
+
[{"/home/runner/work/galadmin/galadmin/src/front/src/index.js":"1","/home/runner/work/galadmin/galadmin/src/front/src/App.js":"2","/home/runner/work/galadmin/galadmin/src/front/src/components/Sidebar.js":"3","/home/runner/work/galadmin/galadmin/src/front/src/components/RedirectToFirstView.js":"4","/home/runner/work/galadmin/galadmin/src/front/src/pages/CreateRecord.js":"5","/home/runner/work/galadmin/galadmin/src/front/src/pages/EditRecord.js":"6","/home/runner/work/galadmin/galadmin/src/front/src/pages/Records.js":"7","/home/runner/work/galadmin/galadmin/src/front/src/pages/Record.js":"8","/home/runner/work/galadmin/galadmin/src/front/src/pages/Login.js":"9","/home/runner/work/galadmin/galadmin/src/front/src/pages/Iframe.js":"10","/home/runner/work/galadmin/galadmin/src/front/src/pages/CustomView.js":"11","/home/runner/work/galadmin/galadmin/src/front/src/contexts/ConfigContext.js":"12","/home/runner/work/galadmin/galadmin/src/front/src/components/Input.js":"13","/home/runner/work/galadmin/galadmin/src/front/src/components/LabelTooltip.js":"14","/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadButton.js":"15","/home/runner/work/galadmin/galadmin/src/front/src/components/AddFilterButton.js":"16","/home/runner/work/galadmin/galadmin/src/front/src/components/BulkActionsButton.js":"17","/home/runner/work/galadmin/galadmin/src/front/src/components/ActionsButton.js":"18","/home/runner/work/galadmin/galadmin/src/front/src/components/BackButton.js":"19","/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadTablePanelButton.js":"20","/home/runner/work/galadmin/galadmin/src/front/src/components/CustomComponent.js":"21","/home/runner/work/galadmin/galadmin/src/front/src/utils/checkRequiredColumns.js":"22","/home/runner/work/galadmin/galadmin/src/front/src/utils/getFormattedValue.js":"23","/home/runner/work/galadmin/galadmin/src/front/src/components/panels/TablePanel.js":"24","/home/runner/work/galadmin/galadmin/src/front/src/components/panels/GalleryPanel.js":"25","/home/runner/work/galadmin/galadmin/src/front/src/components/panels/MapPanel.js":"26","/home/runner/work/galadmin/galadmin/src/front/src/components/OutsideClickHandler.js":"27","/home/runner/work/galadmin/galadmin/src/front/src/utils/evalExpression.js":"28","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ColorInput.js":"29","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/RichTextInput.js":"30","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/DatetimeInput.js":"31","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/AddressInput.js":"32","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/FileInput.js":"33","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignSelectInput.js":"34","/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignDatalistInput.js":"35"},{"size":218,"mtime":1673456968089,"results":"36","hashOfConfig":"37"},{"size":2341,"mtime":1673456968081,"results":"38","hashOfConfig":"37"},{"size":4811,"mtime":1673456968081,"results":"39","hashOfConfig":"37"},{"size":524,"mtime":1673456968081,"results":"40","hashOfConfig":"37"},{"size":4177,"mtime":1673456968089,"results":"41","hashOfConfig":"37"},{"size":3733,"mtime":1673456968089,"results":"42","hashOfConfig":"37"},{"size":9957,"mtime":1673456968089,"results":"43","hashOfConfig":"37"},{"size":4217,"mtime":1673456968089,"results":"44","hashOfConfig":"37"},{"size":1135,"mtime":1673456968089,"results":"45","hashOfConfig":"37"},{"size":404,"mtime":1673456968089,"results":"46","hashOfConfig":"37"},{"size":454,"mtime":1673456968089,"results":"47","hashOfConfig":"37"},{"size":1022,"mtime":1673456968089,"results":"48","hashOfConfig":"37"},{"size":4479,"mtime":1673456968081,"results":"49","hashOfConfig":"37"},{"size":522,"mtime":1673456968081,"results":"50","hashOfConfig":"37"},{"size":895,"mtime":1673456968081,"results":"51","hashOfConfig":"37"},{"size":9257,"mtime":1673456968081,"results":"52","hashOfConfig":"37"},{"size":2656,"mtime":1673456968081,"results":"53","hashOfConfig":"37"},{"size":3169,"mtime":1673456968081,"results":"54","hashOfConfig":"37"},{"size":217,"mtime":1673456968081,"results":"55","hashOfConfig":"37"},{"size":1128,"mtime":1673456968081,"results":"56","hashOfConfig":"37"},{"size":1662,"mtime":1673456968081,"results":"57","hashOfConfig":"37"},{"size":778,"mtime":1673456968089,"results":"58","hashOfConfig":"37"},{"size":1886,"mtime":1673456968089,"results":"59","hashOfConfig":"37"},{"size":4606,"mtime":1673456968085,"results":"60","hashOfConfig":"37"},{"size":2656,"mtime":1673456968085,"results":"61","hashOfConfig":"37"},{"size":1192,"mtime":1673456968085,"results":"62","hashOfConfig":"37"},{"size":826,"mtime":1673456968081,"results":"63","hashOfConfig":"37"},{"size":530,"mtime":1673456968089,"results":"64","hashOfConfig":"37"},{"size":894,"mtime":1673456968081,"results":"65","hashOfConfig":"37"},{"size":1852,"mtime":1673456968085,"results":"66","hashOfConfig":"37"},{"size":869,"mtime":1673456968085,"results":"67","hashOfConfig":"37"},{"size":3092,"mtime":1673456968081,"results":"68","hashOfConfig":"37"},{"size":3296,"mtime":1673456968085,"results":"69","hashOfConfig":"37"},{"size":1461,"mtime":1673456968085,"results":"70","hashOfConfig":"37"},{"size":2088,"mtime":1673456968085,"results":"71","hashOfConfig":"37"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"9j1sl",{"filePath":"74","messages":"75","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"76","messages":"77","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"78","messages":"79","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"80","messages":"81","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"82","messages":"83","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"84","messages":"85","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"86","messages":"87","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"88","messages":"89","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"90","messages":"91","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"92","messages":"93","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"94","messages":"95","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"96","messages":"97","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"98","messages":"99","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"100","messages":"101","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"102","messages":"103","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"104","messages":"105","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"106","messages":"107","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"108","messages":"109","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"110","messages":"111","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"112","messages":"113","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"114","messages":"115","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"116","messages":"117","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"118","messages":"119","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"120","messages":"121","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"122","messages":"123","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"124","messages":"125","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"126","messages":"127","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"128","messages":"129","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"130","messages":"131","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"132","messages":"133","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"134","messages":"135","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"136","messages":"137","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"138","messages":"139","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"140","messages":"141","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/home/runner/work/galadmin/galadmin/src/front/src/index.js",[],"/home/runner/work/galadmin/galadmin/src/front/src/App.js",[],"/home/runner/work/galadmin/galadmin/src/front/src/components/Sidebar.js",["142","143","144","145"],"/home/runner/work/galadmin/galadmin/src/front/src/components/RedirectToFirstView.js",["146"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/CreateRecord.js",["147"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/EditRecord.js",["148"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Records.js",["149","150","151","152"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Record.js",["153","154"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Login.js",["155","156"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/Iframe.js",["157","158"],"/home/runner/work/galadmin/galadmin/src/front/src/pages/CustomView.js",["159"],"/home/runner/work/galadmin/galadmin/src/front/src/contexts/ConfigContext.js",["160"],"/home/runner/work/galadmin/galadmin/src/front/src/components/Input.js",["161"],"/home/runner/work/galadmin/galadmin/src/front/src/components/LabelTooltip.js",["162"],"/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadButton.js",["163"],"/home/runner/work/galadmin/galadmin/src/front/src/components/AddFilterButton.js",["164","165"],"/home/runner/work/galadmin/galadmin/src/front/src/components/BulkActionsButton.js",["166"],"/home/runner/work/galadmin/galadmin/src/front/src/components/ActionsButton.js",["167"],"/home/runner/work/galadmin/galadmin/src/front/src/components/BackButton.js",["168"],"/home/runner/work/galadmin/galadmin/src/front/src/components/DownloadTablePanelButton.js",["169"],"/home/runner/work/galadmin/galadmin/src/front/src/components/CustomComponent.js",["170","171"],"/home/runner/work/galadmin/galadmin/src/front/src/utils/checkRequiredColumns.js",["172","173"],"/home/runner/work/galadmin/galadmin/src/front/src/utils/getFormattedValue.js",["174","175","176","177"],"/home/runner/work/galadmin/galadmin/src/front/src/components/panels/TablePanel.js",["178","179"],"/home/runner/work/galadmin/galadmin/src/front/src/components/panels/GalleryPanel.js",["180","181","182","183","184"],"/home/runner/work/galadmin/galadmin/src/front/src/components/panels/MapPanel.js",["185","186"],"/home/runner/work/galadmin/galadmin/src/front/src/components/OutsideClickHandler.js",["187"],"/home/runner/work/galadmin/galadmin/src/front/src/utils/evalExpression.js",["188","189"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ColorInput.js",["190","191","192"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/RichTextInput.js",["193","194"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/DatetimeInput.js",["195","196"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/AddressInput.js",["197","198","199","200"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/FileInput.js",["201"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignSelectInput.js",["202","203","204"],"/home/runner/work/galadmin/galadmin/src/front/src/components/inputs/ForeignDatalistInput.js",["205","206","207","208"],{"ruleId":"209","severity":1,"message":"210","line":19,"column":1,"nodeType":"211","endLine":105,"endColumn":2},{"ruleId":"212","severity":1,"message":"213","line":26,"column":28,"nodeType":"214","endLine":26,"endColumn":66},{"ruleId":"215","severity":1,"message":"216","line":29,"column":70,"nodeType":"217","messageId":"218","endLine":29,"endColumn":72},{"ruleId":"219","severity":1,"message":"220","line":80,"column":80,"nodeType":"221","messageId":"222","endLine":80,"endColumn":82},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":24,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":12,"column":1,"nodeType":"211","endLine":102,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":12,"column":1,"nodeType":"211","endLine":97,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":21,"column":1,"nodeType":"211","endLine":216,"endColumn":2},{"ruleId":"223","severity":1,"message":"224","line":50,"column":8,"nodeType":"225","endLine":50,"endColumn":19,"suggestions":"226"},{"ruleId":"223","severity":1,"message":"227","line":61,"column":8,"nodeType":"225","endLine":61,"endColumn":79,"suggestions":"228"},{"ruleId":"219","severity":1,"message":"220","line":178,"column":66,"nodeType":"221","messageId":"222","endLine":178,"endColumn":68},{"ruleId":"209","severity":1,"message":"210","line":16,"column":1,"nodeType":"211","endLine":89,"endColumn":2},{"ruleId":"223","severity":1,"message":"227","line":26,"column":8,"nodeType":"225","endLine":26,"endColumn":29,"suggestions":"229"},{"ruleId":"209","severity":1,"message":"210","line":5,"column":1,"nodeType":"211","endLine":33,"endColumn":2},{"ruleId":"212","severity":1,"message":"213","line":23,"column":21,"nodeType":"214","endLine":23,"endColumn":57},{"ruleId":"209","severity":1,"message":"210","line":9,"column":1,"nodeType":"211","endLine":19,"endColumn":2},{"ruleId":"230","severity":1,"message":"231","line":16,"column":13,"nodeType":"214","endLine":16,"endColumn":36},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":15,"endColumn":2},{"ruleId":"232","severity":1,"message":"233","line":12,"column":29,"nodeType":"234","messageId":"222","endLine":12,"endColumn":33},{"ruleId":"209","severity":1,"message":"210","line":9,"column":1,"nodeType":"211","endLine":134,"endColumn":3},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":17,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":5,"column":1,"nodeType":"211","endLine":30,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":186,"endColumn":2},{"ruleId":"223","severity":1,"message":"235","line":20,"column":8,"nodeType":"225","endLine":20,"endColumn":15,"suggestions":"236"},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":68,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":10,"column":1,"nodeType":"211","endLine":85,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":6,"column":1,"nodeType":"211","endLine":12,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":4,"column":1,"nodeType":"211","endLine":28,"endColumn":2},{"ruleId":"237","severity":1,"message":"238","line":17,"column":27,"nodeType":"234","messageId":"239","endLine":17,"endColumn":69},{"ruleId":"240","severity":1,"message":"241","line":20,"column":13,"nodeType":"242","messageId":"243","endLine":20,"endColumn":47},{"ruleId":"209","severity":1,"message":"210","line":5,"column":1,"nodeType":"211","endLine":22,"endColumn":2},{"ruleId":"219","severity":1,"message":"220","line":9,"column":44,"nodeType":"221","messageId":"222","endLine":9,"endColumn":46},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":39,"endColumn":2},{"ruleId":"244","severity":1,"message":"245","line":7,"column":13,"nodeType":"214","endLine":7,"endColumn":48},{"ruleId":"212","severity":1,"message":"213","line":8,"column":17,"nodeType":"214","endLine":8,"endColumn":127},{"ruleId":"219","severity":1,"message":"220","line":34,"column":93,"nodeType":"221","messageId":"222","endLine":34,"endColumn":95},{"ruleId":"209","severity":1,"message":"210","line":10,"column":1,"nodeType":"211","endLine":112,"endColumn":2},{"ruleId":"223","severity":1,"message":"227","line":18,"column":8,"nodeType":"225","endLine":18,"endColumn":16,"suggestions":"246"},{"ruleId":"209","severity":1,"message":"210","line":8,"column":1,"nodeType":"211","endLine":76,"endColumn":2},{"ruleId":"247","severity":1,"message":"248","line":10,"column":11,"nodeType":"249","messageId":"250","endLine":10,"endColumn":18},{"ruleId":"223","severity":1,"message":"227","line":15,"column":8,"nodeType":"225","endLine":15,"endColumn":29,"suggestions":"251"},{"ruleId":"244","severity":1,"message":"245","line":61,"column":29,"nodeType":"214","endLine":61,"endColumn":89},{"ruleId":"212","severity":1,"message":"213","line":62,"column":33,"nodeType":"214","endLine":66,"endColumn":35},{"ruleId":"209","severity":1,"message":"210","line":4,"column":1,"nodeType":"211","endLine":42,"endColumn":2},{"ruleId":"223","severity":1,"message":"252","line":23,"column":8,"nodeType":"225","endLine":23,"endColumn":31,"suggestions":"253"},{"ruleId":"223","severity":1,"message":"254","line":19,"column":8,"nodeType":"225","endLine":19,"endColumn":13,"suggestions":"255"},{"ruleId":"209","severity":1,"message":"210","line":2,"column":1,"nodeType":"211","endLine":14,"endColumn":2},{"ruleId":"232","severity":1,"message":"233","line":8,"column":16,"nodeType":"234","messageId":"222","endLine":8,"endColumn":20},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":29,"endColumn":2},{"ruleId":"223","severity":1,"message":"256","line":19,"column":43,"nodeType":"249","endLine":19,"endColumn":50},{"ruleId":"223","severity":1,"message":"257","line":20,"column":8,"nodeType":"225","endLine":20,"endColumn":29,"suggestions":"258"},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":55,"endColumn":2},{"ruleId":"223","severity":1,"message":"259","line":47,"column":8,"nodeType":"225","endLine":47,"endColumn":32,"suggestions":"260"},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":26,"endColumn":2},{"ruleId":"223","severity":1,"message":"261","line":19,"column":8,"nodeType":"225","endLine":19,"endColumn":28,"suggestions":"262"},{"ruleId":"209","severity":1,"message":"210","line":3,"column":1,"nodeType":"211","endLine":67,"endColumn":2},{"ruleId":"223","severity":1,"message":"263","line":45,"column":8,"nodeType":"225","endLine":45,"endColumn":33,"suggestions":"264"},{"ruleId":"223","severity":1,"message":"265","line":54,"column":39,"nodeType":"249","endLine":54,"endColumn":46},{"ruleId":"223","severity":1,"message":"266","line":55,"column":8,"nodeType":"225","endLine":55,"endColumn":33,"suggestions":"267"},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":84,"endColumn":2},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":46,"endColumn":2},{"ruleId":"223","severity":1,"message":"268","line":23,"column":8,"nodeType":"225","endLine":23,"endColumn":10,"suggestions":"269"},{"ruleId":"219","severity":1,"message":"220","line":32,"column":50,"nodeType":"221","messageId":"222","endLine":32,"endColumn":52},{"ruleId":"209","severity":1,"message":"210","line":7,"column":1,"nodeType":"211","endLine":64,"endColumn":2},{"ruleId":"223","severity":1,"message":"270","line":22,"column":8,"nodeType":"225","endLine":22,"endColumn":15,"suggestions":"271"},{"ruleId":"223","severity":1,"message":"272","line":31,"column":29,"nodeType":"249","endLine":31,"endColumn":36},{"ruleId":"223","severity":1,"message":"273","line":32,"column":8,"nodeType":"225","endLine":32,"endColumn":23,"suggestions":"274"},"import/no-anonymous-default-export","Assign arrow function to a variable before exporting as module default","ExportDefaultDeclaration","jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","array-callback-return","Array.prototype.map() expects a value to be returned at the end of arrow function.","ArrowFunctionExpression","expectedAtEnd","eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'currentFilters.length' and 'selectedRecordIds.length'. Either include them or remove the dependency array.","ArrayExpression",["275"],"React Hook useEffect has a missing dependency: 'refreshData'. Either include it or remove the dependency array.",["276"],["277"],"jsx-a11y/iframe-has-title","<iframe> elements must have a unique title property.","no-eval","eval can be harmful.","CallExpression","React Hook useEffect has missing dependencies: 'column?.dataType' and 'column.options'. Either include them or remove the dependency array.",["278"],"no-new-func","The Function constructor is eval.","noFunctionConstructor","no-throw-literal","Expected an error object to be thrown.","ThrowStatement","object","react/jsx-no-target-blank","Using target=\"_blank\" without rel=\"noreferrer\" is a security risk: see https://html.spec.whatwg.org/multipage/links.html#link-type-noopener",["279"],"no-unused-vars","'history' is assigned a value but never used.","Identifier","unusedVar",["280"],"React Hook useEffect has missing dependencies: 'panel.latitudeField', 'panel.longitudeField', 'panel.query', 'panel.zoom', and 'view.primaryId'. Either include them or remove the dependency array. Outer scope values like 'window.google' aren't valid dependencies because mutating them doesn't re-render the component.",["281"],"React Hook useEffect has a missing dependency: 'handler'. Either include it or remove the dependency array. If 'handler' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["282"],"The ref value 'colorPicker.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'colorPicker.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook useEffect has missing dependencies: 'column.name', 'initialData', and 'onChange'. Either include them or remove the dependency array. Mutable values like 'colorPicker.current' aren't valid dependencies because mutating them doesn't re-render the component.",["283"],"React Hook useEffect has missing dependencies: 'column.contentField', 'column.htmlField', 'initialData', and 'onChange'. Either include them or remove the dependency array. Mutable values like 'quillContainer.current' aren't valid dependencies because mutating them doesn't re-render the component.",["284"],"React Hook useEffect has missing dependencies: 'column.name', 'initialData', 'onChange', and 'withTime'. Either include them or remove the dependency array. Mutable values like 'datepicker.current' aren't valid dependencies because mutating them doesn't re-render the component.",["285"],"React Hook useEffect has missing dependencies: 'column' and 'onChange'. Either include them or remove the dependency array. Mutable values like 'googleMapsInput.current' aren't valid dependencies because mutating them doesn't re-render the component.",["286"],"The ref value 'googleMapsInput.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'googleMapsInput.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook useEffect has an unnecessary dependency: 'googleMapsInput.current'. Either exclude it or remove the dependency array. Mutable values like 'googleMapsInput.current' aren't valid dependencies because mutating them doesn't re-render the component.",["287"],"React Hook useEffect has missing dependencies: 'column.__id__', 'column.name', 'column.optional', 'initialData', 'onChange', and 'viewIndex'. Either include them or remove the dependency array. If 'onChange' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["288"],"React Hook useEffect has missing dependencies: 'column.__id__' and 'viewIndex'. Either include them or remove the dependency array.",["289"],"The ref value 'input.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'input.current' to a variable inside the effect, and use that variable in the cleanup function.","React Hook useEffect has an unnecessary dependency: 'input.current'. Either exclude it or remove the dependency array. Mutable values like 'input.current' aren't valid dependencies because mutating them doesn't re-render the component.",["290"],{"desc":"291","fix":"292"},{"desc":"293","fix":"294"},{"desc":"295","fix":"296"},{"desc":"297","fix":"298"},{"desc":"299","fix":"300"},{"desc":"301","fix":"302"},{"desc":"303","fix":"304"},{"desc":"305","fix":"306"},{"desc":"307","fix":"308"},{"desc":"309","fix":"310"},{"desc":"311","fix":"312"},{"desc":"313","fix":"314"},{"desc":"315","fix":"316"},{"desc":"317","fix":"318"},{"desc":"319","fix":"320"},{"desc":"315","fix":"321"},"Update the dependencies array to be: [currentFilters.length, selectedRecordIds.length, viewIndex]",{"range":"322","text":"323"},"Update the dependencies array to be: [viewIndex, subviewIndex, page, query, currentFilters, orderBy, isDesc, refreshData]",{"range":"324","text":"325"},"Update the dependencies array to be: [viewIndex, recordId, refreshData]",{"range":"326","text":"327"},"Update the dependencies array to be: [column?.dataType, column.options, field]",{"range":"328","text":"329"},"Update the dependencies array to be: [record, refreshData]",{"range":"330","text":"331"},"Update the dependencies array to be: [panel.query, record, refreshData]",{"range":"332","text":"333"},"Update the dependencies array to be: [panel.latitudeField, panel.longitudeField, panel.query, panel.zoom, record, view.primaryId]",{"range":"334","text":"335"},"Update the dependencies array to be: [handler, ref]",{"range":"336","text":"337"},"Update the dependencies array to be: [column.name, initialData, onChange]",{"range":"338","text":"339"},"Update the dependencies array to be: [column.contentField, column.htmlField, initialData, onChange]",{"range":"340","text":"341"},"Update the dependencies array to be: [column.name, initialData, onChange, withTime]",{"range":"342","text":"343"},"Update the dependencies array to be: [column, onChange]",{"range":"344","text":"345"},"Update the dependencies array to be: []",{"range":"346","text":"347"},"Update the dependencies array to be: [column.__id__, column.name, column.optional, initialData, onChange, viewIndex]",{"range":"348","text":"349"},"Update the dependencies array to be: [column.__id__, query, viewIndex]",{"range":"350","text":"351"},{"range":"352","text":"347"},[1656,1667],"[currentFilters.length, selectedRecordIds.length, viewIndex]",[1896,1967],"[viewIndex, subviewIndex, page, query, currentFilters, orderBy, isDesc, refreshData]",[941,962],"[viewIndex, recordId, refreshData]",[808,815],"[column?.dataType, column.options, field]",[542,550],"[record, refreshData]",[359,380],"[panel.query, record, refreshData]",[776,799],"[panel.latitudeField, panel.longitudeField, panel.query, panel.zoom, record, view.primaryId]",[604,609],"[handler, ref]",[695,716],"[column.name, initialData, onChange]",[1639,1663],"[column.contentField, column.htmlField, initialData, onChange]",[700,720],"[column.name, initialData, onChange, withTime]",[2440,2465],"[column, onChange]",[2826,2851],"[]",[724,726],"[column.__id__, column.name, column.optional, initialData, onChange, viewIndex]",[620,627],"[column.__id__, query, viewIndex]",[972,987]]
|