{"version":3,"sources":["actions/library.js","config/backend.js","actions/index.js","components/Forms/Upload.js","serviceWorker.js","reducers/libraryReducer.js","reducers/index.js","reducers/loginReducer.js","store/configureStore.js","store/index.js","config/language.config.js","containers/Login.js","actions/authenticationActions.js","components/shared/Header.js","components/shared/Footer.js","components/CheckStatus/Ping.js","constants/generic.js","Utils/removeDiacritics.js","constants/request.js","constants/library.js","Utils/sort.js","components/DataGrid.js","components/Groups.js","Utils/FormValidator.js","components/Library/CheckLibraryCode.js","components/Forms/AlertForm.js","components/Library/UploadLogo.js","components/Library.js","constants/holdings.js","components/Requests/FormRequest.js","components/Holdings.js","components/Logs.js","components/Holdings/HoldingsButtons.js","components/Holdings/HoldingsTemplate.js","components/Holdings/HoldingsTemplateParent.js","components/Holdings/BlackListTemplate.js","components/Holdings/IssnTemplate.js","components/Admin/LoadItems.js","components/Navigation/Components/Home.js","components/Navigation/Components/DataDashboard.js","components/Navigation/Components/MenuLink.js","components/Navigation/Components/Menu.js","components/Navigation/ControlledTabs.js","containers/Main.js","containers/Logout.js","containers/shared/Header.js","containers/PublicAddLibraryFrom.js","containers/PublicViewLibrary.js","containers/PublicSearchLibrary.js","containers/LibraryAdded.js","containers/PublicRequestHoldingsForm.js","Routes.js","index.js","constants/language.config.js","Utils/ajaxApiFetch.js"],"names":["getLibrary","branchcode","async","options","method","url","CONFIG","protocol","host","credentials","headers","Accept","Authorization","Buffer","toString","success","dispatch","type","types","payload","onSuccess","axios","error","onError","deleteLibrary","group","server","process","LOGIN_USER_SUCCESS","LOGIN_USER_ERROR","GET_LIBRARY","ADD_LIBRARY","UploadFileErrors","_ref","groups","issn","React","createElement","Fragment","values","length","className","message","replace","map","value","line","issnRowTemplate","index","Upload","Component","constructor","props","super","this","state","imageURL","progress","header","loading","duplicates","handleUploadFile","bind","ev","preventDefault","code","libraries","user","isBlacklist","consorcium","tipo_fondo_consorcio","date","Date","data","FormData","file","uploadInput","files","setState","printMessage","locale","append","name","output","document","getElementById","endpoint","config","onUploadProgress","progressEvent","percentCompleted","Math","round","loaded","total","post","then","res","progressbar","querySelector","form","logoButton","innerHTML","port","path","filter","i","errors","fileErrors","remove","catch","err","severity","status","detail","messages","show","summary","closable","render","id","onSubmit","ProgressBar","showValue","style","margin","JSON","stringify","split","pop","float","onChange","target","ref","htmlFor","Button","icon","label","onClick","display","InputSwitch","checked","e","ProgressSpinner","Messages","el","Boolean","window","location","hostname","match","defaultState","rootReducer","combineReducers","login","arguments","undefined","action","library","middleware","thunk","store","configureStore","createStore","applyMiddleware","labels","branchname","branchaddress1","branchaddress2","branchaddress3","branchzip","branchcity","branchstate","branchcountry","branchphone","branchfax","branchemail","branchreplyto","branchreturnpath","branchurl","issuing","branchip","branchnotes","branchvalid","opac_info","branchobs","username","password","headline","user_management","Group","Login","handleSubmit","signIn","messageLog","createRef","validateForm","history","loginUserAction","central","prevlocation","pathname","search","borrowernumber","userid","localStorage","setItem","push","event","current","fetch","body","response","json","Alert","variant","width","Container","Row","Col","xs","src","alt","FormGroup","controlId","bsSize","FormLabel","FormControl","autoFocus","passord","disabled","href","connect","Header","parse","getItem","getValues","setLogoutPath","componentDidMount","setVufindPath","open","command","isParent","is_parent","marginRight","Octicon","Person","categorycode","branch","Menu","model","popup","menu","toggle","Redirect","to","Footer","span","offset","Ping","redirect","handleStatus","_this","life","setTimeout","AjaxApiFetch","ADMIN","COUNTRY","defaultDiacriticsRemovalMap","base","letters","diacriticsMap","j","removeDiacritics","str","a","REQUEST_VALUES","FORM","visible","REQUEST_COMBO","LIBRARY","USER","YES_NO","SOFTWARE","LIBRARY_SELECT","select","FIELDS","required","double","field","approvedTimeStamp","createdTimeStamp","size","edit","alt_label","validator","isEmpty","valid","validWhen","isEmail","ignore_whitespace","branches_alt_id","branch_alt_code","branch_alt_type","branch_alt_softloan","branch_alt_srvloan","branch_alt_resp","branch_alt_resp_tel","branch_alt_resp_mail","branch_alt_resp_loan_tel","branch_alt_resp_loan_mail","branch_alt_srvlimit","branch_alt_close_alert","branch_alt_alter_fecha","branch_alt_url_cat","branch_alt_tarifa","branch_alt_tipo_resp","branch_alt_spec","description","branch_alt_dep","centro","branch_alt_loan_central","branch_alt_url_form_loan","isURL","sortAlpha","arr","sort","b","country","GENERIC","branch_type","getHoldingsType","DataGrid","rows","columns","globalFilter","holdings","publish","holding","library_type","filters","buildTable","popUpTemplate","getLibraryEdit","linkTemplate","buildTemplates","backToTable","getHoldingsEdit","holdingsTemplate","holdingsEditLog","holdingsEditTemplate","deleteTemplate","deleteBlackListItem","loadHoldingsTemplate","loadHoldingsDeleteTemplate","deleteHoldings","export","update","selectRequestTemplate","checkboxTemplate","setCoutryChange","setTypeChange","setLibraryList","parent","group_id","nombre_padre","_data","fetchData","libraryList","componentDidUpdate","next","prev","refresh","result","fields","headings","pending","Object","keys","moment","approved","created","format","buildLibraryEdit","parentElement","self","id_grupo_padre","is_admin","route","rowData","column","rel","defaultemplate","attributes","getNamedItem","attribute","operation","table","title","Delete","onclick","deleted","parseInt","data-title","titulo","data-operation","nodeName","live","barcode","query","biblionumber","id_inc","data-type","requestISSNTemplate","deleteHoldingsAction","includes","Valor","isNaN","publishHoldings","collection","ids","tipo_fondo","itype","Libraries","setRequestState","estado","selectAllHoldingsRows","selected","selectHoldingRow","Dropdown","REQUEST","placeholder","Checkbox","countryTemplate","softwareTemplate","software_types","defaultTemplate","valueTemplate","textAlign","dt","exportCSV","countrySelectFilter","headerTranslations","enumchron","itemnotes","Paquete_e","year","fasciculo","dynamicColumns","col","Column","key","sortable","filterMatchMode","filterFunction","filterElement","InputText","onInput","iconPos","validHeader","simpleHeader","v","toLowerCase","f","Switch","Route","DataTable","responsive","paginator","emptyMessage","rowsPerPageOptions","resizableColumns","exportFilename","exact","Dialog","modal","onHide","DataGridGroups","buildSelectTemplate","radioTemplate","buildInputTemplate","children","row","find","p","nombre_hijo","child","id_grupo_hijo","parentName","Actualizar","labelNames","selectedValue","RadioButton","radioInputChange","selectValue","newRow","k","dirty","inputValue","concat","applySelectedValue","optionLabel","saveData","FormValidator","validations","validate","validation","forEach","rule","isInvalid","field_value","args","validation_method","isValid","CheckLibraryCode","libraryInput","timestamp","createdTImeStamp","isUpper","isUppercase","hasHifen","matches","temp","onfocusOut","color","es","firstDayOfWeek","dayNames","dayNamesShort","dayNamesMin","monthNames","monthNamesShort","today","clear","dateFormat","weekHeader","AlertForm","processing","previousProps","updateAlertContent","saveAlertContent","isAdmin","isSelf","isPublic","isAdd","borderColor","fontSize","textTransform","Calendar","monthNavigator","yearNavigator","yearRange","UploadLogo","logo","active","admin","padding","upload","defaultForm","branch_alt_nombre_soft_loan","users","ID","tipo_resp","resp","resp_tel","resp_mail","disableBlurOnType","stopImmediatePropagation","parseLocalStorage","item","Library","shouldSave","branchcode_valid","users_valid","redirectBack","software","valuesForSelect","deleteLogo","revealUploadLogo","saveForm","validBranchCode","showResponse","handleUserDeletion","savePublicForm","rejectLibrary","changeLibraryCode","entity","pull","results","_results$data","_state$library","_state$library2","_state$library3","reduce","softUrl","hasSoftware","newFields","scrollTo","addEventListener","setUserInputValue","getAttribute","setInputValue","_this$validateForm","console","log","componentWillUnmount","removeEventListener","newform","approveLibrary","Approved","redirectPath","branches_alt_keys","branches_keys","ceil","random","saveFormUsers","validUsers","branchCodeInput","focus","addFormUsers","rules","updatedState","branchcode_message","button","isPublicEdit","isPublicView","addLibrary","add","isPrivateView","group_children","fichero","isCodeValid","Tabs","defaultActiveKey","Tab","eventKey","items","onBlur","click","border","userId","expression","data-row","fontWeight","pattern","backgroundColor","overflow","grecaptcha","Captcha","language","siteKey","onResponse","zIndex","HOLDINGS_VALUES","case_sensitive","require_hyphen","isISSN","fondo","embargo","id_inc_padre","tipo_de_carga","TEMPLATE","TEMPLATE_CONSORCIUM","SendButton","vistLink","setReplyEmail","sendMail","RenderReplyEmailField","marginBottom","alignItems","justifyContent","FormRequest","HOLDINGS","replyEmail","email","emailInfo","textYearInput","focusTextYearInput","onCityChange","onDateSearch","buildTemplateRadioButton","yearFilter","handleFormValues","searchForm","buildRequest","grupo","URLSearchParams","get","rawRequest","request","isIssn","params","isGrupo","groupLib","empty","x","y","homebranch","formValues","avalilableCentres","centre","lib","is_center","avalilable","splice","has_software","biblio","selectedData","handleRadioButton","element","validSoftware","_ref2","validUserEmail","validUserLibrary","formEmail","data-email","buildTemplateLink","buildItype","buildCountry","buildEnumchron","issnInput","searchClearForm","searchDOI","doi_search","doiSearchInput","trim","entry","lastIndexOf","string","substr","article","indexOf","journal","publisher","author","getPMID","doiInput","pmid","final","XML","parseFromString","mapped","Name","dates","comma","years","parentisis","y1","y2","interval","renderMessage","_ref3","renderResults","countryFilter","onFocus","toUpperCase","onKeyPress","charCode","_ref4","defaultValues","solicit","order","Holdings","_user$group_children","template","list","holdingType","onLibraryChange","_user$group_children2","_user$group_children3","insert","valuesForForm","hold","ordered","prevProps","updateState","validationRulesRemaped","isISBN","m","hasIssn","filteredKeys","renderInputForm","isChild","inputForm","hasBiblionumber","InputMask","mask","firstname","openMessage","prevState","_this$props$match","selectedLibraries","pushBack","back","goBack","Logs","loadFileTemplate","loadFileTemplateAction","consorcio","HoldingsButtons","handleUpdate","HoldingsTemplate","_props$user","_props$user2","activeIndex","handleOnTabChange","handleOnLibraryChange","tab","TabView","onTabChange","TabPanel","leftIcon","routeProps","assign","HoldingsTemplateParent","BlackListTemplate","saveBlacklistForm","d","IssnTemplate","setSearchValue","getData","loadSearchTemplate","sw","removeStopwords","pt","filterStrings","LoadItems","insertAdminHoldings","dataMap","contador","RefreshHoldings","refreshHoldings","Home","activeInde","DataDashboard","combined","MenuLink","activeOnlyWhenExact","tooltip","external","useRouteMatch","data-tip","Link","ReactTooltip","mapStyles","styles","opacity","transform","scale","bounce","val","spring","stiffness","damping","bounceTransition","atEnter","atLeave","atActive","ControlledTabs","isLive","libraryBranchcode","AnimatedSwitch","withRouter","parsedUser","buildSelect","shift","othernames","buildLibrary","marginTop","Logout","md","Navbar","bg","expand","Brand","Toggle","aria-controls","Collapse","Nav","PublicAddLibraryFrom","PublicViewLibrary","shouldComponentUpdate","newProps","PublicSearchLibrary","LibraryAdded","PublicRequestHoldingsForm","createBrowserHistory","ROUTES","component","RouteWithSubRoutes","RenderRoutes","routes","routing","Provider","Router","ReactDOM","navigator","serviceWorker","ready","registration","unregister","yes","no"],"mappings":"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","file":"static/js/main.1134ef22.chunk.js","sourcesContent":["import axios from \"axios\"\nimport * as types from \"./index\"\nimport * as CONFIG from \"../config/backend\"\n\nexport const addLibrary = (params) => async (dispatch) => {\n function onSuccess(success) {\n dispatch({ type: types.ADD_LIBRARY, payload: success })\n return success\n }\n function onError(error) {\n dispatch({ type: \"ERROR_GENERATED\", error })\n return error\n }\n try {\n const success = await axios.post(\"http://www...\", params)\n return onSuccess(success)\n } catch (error) {\n return onError(error)\n }\n}\nexport const getLibrary = (branchcode) => async (dispatch) => {\n function onSuccess(success) {\n dispatch({ type: types.GET_LIBRARY, payload: success })\n return success\n }\n function onError(error) {\n dispatch({ type: \"ERROR_GENERATED\", error })\n return error\n }\n try {\n const options = {\n method: \"GET\",\n url: `${CONFIG.server.protocol}://${CONFIG.server.host}/library-data/?library=${branchcode}`,\n credentials: \"include\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${new Buffer(\n `${process.env.REACT_APP_BASIC_AUTH_USER}:${process.env.REACT_APP_BASIC_AUTH_PASS}`\n ).toString(\"base64\")}`,\n },\n }\n const success = await axios(options)\n return onSuccess(success)\n } catch (error) {\n return onError(error)\n }\n}\nexport const deleteLibrary = (group) => async (dispatch) => {\n function onSuccess(success) {\n dispatch({ type: types.GET_LIBRARY, payload: success })\n return success\n }\n function onError(error) {\n dispatch({ type: \"ERROR_GENERATED\", error })\n return error\n }\n try {\n const options = {\n method: \"GET\",\n url: `${CONFIG.server.protocol}://${CONFIG.server.host}/delete-library/?group=${group}`,\n credentials: \"include\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${new Buffer(\n `${process.env.REACT_APP_BASIC_AUTH_USER}:${process.env.REACT_APP_BASIC_AUTH_PASS}`\n ).toString(\"base64\")}`,\n },\n }\n const success = await axios(options)\n return onSuccess(success)\n } catch (error) {\n return onError(error)\n }\n}\n\nexport const approveLibrary = () => { }\nexport const saveLibraryForm = () => { }\nexport const deleteLibraryUsers = () => { }\nexport const addLibraryUsers = () => { }\n","export const server = {\n host: process.env.REACT_APP_API_HOSTNAME,\n protocol: process.env.REACT_APP_API_PROTOCOL,\n}","export const LOGIN_USER = \"LOGIN_USER\"\nexport const LOGIN_USER_SUCCESS = \"LOGIN_USER_SUCCESS\"\nexport const LOGIN_USER_ERROR = \"LOGIN_USER_ERROR\"\nexport const LIBRARY_USER_DATA = \"LIBRARY_USER_DATA\"\n\n// Library\nexport const GET_LIBRARY = \"GET_LIBRARY\"\nexport const ADD_LIBRARY = \"ADD_LIBRARY\"\nexport const DELETE_LIBRARY = \"DELETE_LIBRARY\"\nexport const UPDATE_LIBRARY = \"UPDATE_LIBRARY\"\n","import React, { Component } from \"react\"\nimport { Button } from \"primereact/button\"\nimport { ProgressBar } from \"primereact/progressbar\"\nimport axios from \"axios\"\nimport { Messages } from \"primereact/messages\"\nimport { ProgressSpinner } from \"primereact/progressspinner\"\nimport { InputSwitch } from \"primereact/inputswitch\"\n\nimport { server } from \"../../config/backend\"\nimport { locale } from \"../../constants/language.config\"\n\nconst UploadFileErrors = ({ groups, issn }) => {\n const issnRowTemplate = (issn, index) =>\n `Error en fila ${index}: El código del issn ${issn} es erroneo, debe de ser xxxx-xxxx (cuatro valores alfanuméricos, guion, cuatro valores alfanuméricos)`\n return (\n <>\n

Errors

\n {issn.values.length > 0 && (\n
\n
\n {\" \"}\n {issn.message.replace(\n \"{{lines}}\",\n issn.values.map((value) => `${value.line}`)\n )}\n
\n {issn.values.length > 0 &&\n issn.values.map((value) => (\n

{issnRowTemplate(value.issn, value.line)}

\n ))}\n
\n
\n )}\n\n {groups.group.length > 0 && (\n
\n
\n {\" \"}\n {groups.message.replace(\n \"{{lines}}\",\n groups.group.map((value) => `${value.line}`)\n )}\n
\n
\n {groups.group.map((value) => (\n \n Grupo - {value.group} Linea - {value.line},{\" \"}\n \n ))}\n
\n
\n
\n )}\n \n )\n}\n\nexport class Upload extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n imageURL: \"\",\n type: null,\n progress: 0,\n message: { header: \"\", message: \"\" },\n loading: false,\n duplicates: true,\n }\n\n this.handleUploadFile = this.handleUploadFile.bind(this)\n }\n\n handleUploadFile(ev) {\n ev.preventDefault()\n const { code, type, libraries, user } = this.props\n const { duplicates } = this.state\n\n const isBlacklist = code === \"blacklist\"\n const consorcium =\n !isBlacklist &&\n user &&\n user.tipo_fondo_consorcio &&\n (user.tipo_fondo_consorcio.tipo_fondo_consorcio || \"\")\n const date = new Date()\n const data = new FormData()\n const file = this.uploadInput.files[0]\n\n if (!code) {\n this.setState({\n loading: false,\n })\n this.printMessage(\"error\", `${locale[\"Failed to upload Logo Code\"]}`)\n\n return false\n }\n\n if (!file) {\n this.printMessage(\"error\", `${locale[\"Select file\"]}`)\n return\n }\n this.setState({\n loading: true,\n })\n if (!isBlacklist) {\n data.append(\"file\", file)\n data.append(\"filename\", file.name)\n data.append(\"library\", code)\n data.append(\"date\", date)\n data.append(\"libraries\", libraries)\n data.append(\"duplicates\", duplicates)\n } else {\n data.append(\"file\", file)\n data.append(\"filename\", file.name)\n data.append(\"date\", date)\n }\n const output = document.getElementById(\"output\")\n const endpoint = isBlacklist\n ? `${server.protocol}://${server.host}/upload-blacklist`\n : `${server.protocol}://${server.host}/upload?library=${code}&consorcium=${consorcium}`\n\n const config = {\n headers: {\n Authorization: `Basic ${new Buffer(\n `${process.env.REACT_APP_BASIC_AUTH_USER}:${process.env.REACT_APP_BASIC_AUTH_PASS}`\n ).toString(\"base64\")}`,\n \"Content-Type\": \"multipart/form-data\",\n },\n onUploadProgress: (progressEvent) => {\n const percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total\n )\n this.setState({\n progress: percentCompleted,\n })\n },\n }\n\n axios\n .post(endpoint, data, config)\n .then((res) => {\n const progressbar = document.querySelector('[role=\"progressbar\"]')\n const form = document.getElementById(\"upload-form\")\n const logoButton = document.getElementById(\"add_logo\")\n\n output.className = \"container\"\n\n output.innerHTML =\n type === \"image\"\n ? ``\n : \"\"\n\n if (res.data && res.data.error) {\n this.printMessage(\"error\", res.data.error)\n } else if (\n typeof res.data.map === \"function\" &&\n res.data.filter((i) => i.value === \"failed\").length > 0\n ) {\n this.printMessage(\"error\", `${locale[\"issn already exists\"]}`)\n } else if (res.data && res.data.errors) {\n this.setState({\n fileErrors: { ...res.data.errors },\n })\n } else {\n logoButton && logoButton.remove()\n progressbar && progressbar.remove()\n form.remove()\n this.printMessage(\n \"success\",\n type === \"image\"\n ? `${locale[\"Upload Logo successful\"]}`\n : `${locale[\"Upload successful\"]}`\n )\n }\n this.setState({\n loading: false,\n })\n })\n .catch((err) => {\n output.className = \"container text-danger\"\n this.printMessage(\n \"error\",\n type === \"image\"\n ? `${locale[\"Failed to upload Logo\"]}`\n : `${locale[\"Failed to upload\"]}`\n )\n this.setState({\n loading: false,\n })\n })\n }\n\n printMessage(severity, status, detail) {\n this.messages.show({\n severity,\n summary: status,\n closable: false,\n detail,\n })\n }\n\n render() {\n const { progress, file, fileErrors } = this.state\n const { type } = this.props\n return (\n
\n {fileErrors && }\n\n \n\n
\n {progress > 0 && progress < 100 && (\n \n )}\n \n Fichero:{\" \"}\n {file &&\n JSON.stringify(file.value).split(/[\\\\$]/).pop().replace(/\"/g, \"\")}\n \n
\n this.setState({ file: ev.target })}\n ref={(ref) => {\n this.uploadInput = ref\n }}\n type=\"file\"\n id=\"file\"\n />\n \n
\n\n this.setState({ fileErrors: null })}\n />\n {type !== \"image\" && (\n
\n \n \n this.setState({ duplicates: !this.state.duplicates })\n }\n />\n \n Permitir duplicados\n
\n )}\n {this.state.loading && (\n <>\n {\" \"}\n {`${progress > 0 && progress < 100\n ? locale[\"Uploading files\"]\n : locale[\"Processing files\"]\n }`}\n
\n
\n \n )}\n \n (this.messages = el)} />\n
\n )\n }\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\")\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\")\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\")\n })\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister()\n })\n }\n}\n","import * as types from \"../actions\"\n\nconst defaultState = {}\n\nexport default (state = defaultState, action) => {\n const { payload, type } = action\n\n switch (type) {\n case types.GET_LIBRARY: {\n return payload.data\n }\n case \"ADD_LIBRARY\": {\n return { ...state, ...action.payload }\n }\n default:\n return state\n }\n}\n","import { combineReducers } from \"redux\"\nimport login from \"./loginReducer\"\nimport library from \"./libraryReducer\"\n\nconst rootReducer = combineReducers({\n login,\n library,\n})\n\nexport default rootReducer\n","import * as types from \"../actions\"\n\nexport default (state = [], action) => {\n const { user } = action\n switch (action.type) {\n case types.LOGIN_USER_SUCCESS:\n return { ...state, user }\n case types.LOGIN_USER_ERROR:\n return { ...state, user }\n default:\n return state\n }\n}\n","import { createStore, applyMiddleware } from \"redux\"\nimport thunk from \"redux-thunk\"\n\nimport rootReducer from \"../reducers\"\n\nconst middleware = [thunk]\nconst configureStore = () => ({\n ...createStore(rootReducer, {}, applyMiddleware(...middleware)),\n})\n\nexport default configureStore\n","import configureStore from \"./configureStore\"\n\nconst store = configureStore()\nexport default store\n","export const labels = {\n library: {\n branchcode: \"Código de la biblioteca\",\n branchname: \"Nombre de la biblioteca\",\n branchaddress1: \"\",\n branchaddress2: \"\",\n branchaddress3: \"\",\n branchzip: \"Código postal\",\n branchcity: \"Ciudad\",\n branchstate: \"\",\n branchcountry: \"\",\n branchphone: \"Teléfono\",\n branchfax: \"\",\n branchemail: \"\",\n branchreplyto: \"\",\n branchreturnpath: \"\",\n branchurl: \"\",\n issuing: \"\",\n branchip: \"\",\n branchnotes: \"\",\n branchvalid: \"\",\n opac_info: \"\",\n branchobs: \"\",\n },\n login: {\n username: \"Usuario\",\n password: \"Contraseña\",\n headline: \"Acceso restringido a los centros participantes del CNCS. \",\n message: \"Módulo de Administración y solicitud de documentos.\",\n },\n user_management: {\n Group: \"Código centro\",\n \"Nombre del centro de compra\": \"Miembro de la red\",\n \"Fondo Consorciado\": \"Código fondo red\",\n \"Centro consorciado\": \"Miembro de red\",\n \"Centro de compra\": \"Responsable de red\",\n },\n}\n\nexport default labels\n","import React, { Component } from \"react\"\nimport {\n Alert,\n Container,\n FormGroup,\n Row,\n Col,\n FormControl,\n FormLabel,\n} from \"react-bootstrap\"\nimport { Button } from \"primereact/button\"\nimport { connect } from \"react-redux\"\nimport { loginUserAction } from \"../actions/authenticationActions\"\nimport { server } from \"../config/backend\"\nimport labels from \"../config/language.config\"\n\nclass Login extends Component {\n constructor(props) {\n super(props)\n\n this.handleSubmit = this.handleSubmit.bind(this)\n this.signIn = this.signIn.bind(this)\n this.messageLog = this.messageLog.bind(this)\n\n this.username = React.createRef()\n this.password = React.createRef()\n this.state = {\n user: {},\n }\n }\n\n validateForm() {\n return true\n }\n\n signIn(data) {\n const { history, loginUserAction, location } = this.props\n const { user, central } = data\n const { state } = location || {}\n\n let path = \"\"\n if (state && state.prevlocation) {\n path = state.prevlocation.pathname + (state.prevlocation.search || \"\")\n } else path = \"/home\"\n\n if (user) {\n const { borrowernumber, userid, branchcode, error } = user\n\n this.setState({\n borrowernumber,\n userid,\n error,\n branchcode,\n password: \"\",\n central,\n })\n\n localStorage.setItem(\"user\", JSON.stringify(user))\n localStorage.setItem(\"central\", JSON.stringify(central))\n } else {\n this.setState({\n user: { error: data.code },\n })\n return\n }\n loginUserAction(user)\n\n if (!data.error) history.push(path, { ...user })\n }\n\n handleSubmit(event) {\n event.preventDefault()\n const login = {\n username: this.username.current.value,\n password: this.password.current.value,\n }\n fetch(`${server.protocol}://${server.host}/login`, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(login),\n })\n .then((response) => response.json())\n .then((data) => {\n if (data && data.error) {\n this.setState({\n user: data,\n })\n } else this.signIn(data)\n })\n }\n\n messageLog() {\n const { user } = this.state\n if (!user.error) return
\n if (user.error) {\n return {user.error}\n }\n return Cool\n }\n\n render() {\n return (\n
\n \n \n \n \"logo\"\n \n \n \n \n \n

{labels.login.headline}

\n \n
\n \n \n
\n \n {labels.login.username}\n \n \n \n {labels.login.password}\n this.setState({ passord: e.target.value })}\n type=\"password\"\n />\n \n\n {this.messageLog()}\n \n \n
\n \n
\n {labels.login.message}\n \n
\n
\n
\n )\n }\n}\nconst mapStateToProps = (state) => ({ login: state.login })\nexport default connect(mapStateToProps, { loginUserAction })(Login)\n","import * as types from \"./index\"\n\nexport const loginUserAction = (user) => {\n return {\n type: types.LOGIN_USER_SUCCESS,\n user,\n }\n}\n","import React, { Component } from \"react\"\nimport Octicon, { Person } from \"@primer/octicons-react\"\nimport { Row, Col } from \"react-bootstrap\"\nimport { Menu } from \"primereact/menu\"\nimport { Button } from \"primereact/button\"\nimport { Redirect } from \"react-router-dom\"\n\nclass Header extends Component {\n constructor(props) {\n super(props)\n this.state = {\n login: false,\n user: JSON.parse(localStorage.getItem(\"user\") || '{\"error\":\"true\"}'),\n }\n this.getValues = this.getValues.bind(this)\n this.setLogoutPath = this.setLogoutPath.bind(this)\n }\n\n componentDidMount() {\n const user = JSON.parse(localStorage.getItem(\"user\"))\n if (user) {\n this.setState({\n login: true,\n user,\n })\n }\n }\n\n setVufindPath() {\n window.open(\n `https://${process.env.REACT_APP_VUFIND_URL}`\n )\n }\n\n setLogoutPath() {\n localStorage.setItem(\"user\", null)\n this.setState({\n login: false,\n user: null,\n })\n }\n\n getValues() {\n const items = [\n {\n label: \"Catálogo Online\",\n icon: \"pi pi-external-link\",\n command: () => {\n this.setVufindPath()\n },\n },\n {\n label: \"Cerrar sesion\",\n icon: \"pi pi-fw pi-sign-out\",\n command: () => {\n this.setLogoutPath()\n },\n },\n ]\n return items\n }\n\n render() {\n const { user } = this.state\n const isParent = user && user.is_parent\n return (\n
\n {user ? (\n \n \n \n

\n Catálogo Colectivo Nacional de Publicaciones de Ciencias de la Salud\n

\n \n\n \n \n \n
\n \n
\n {user.userid}\n
\n {user.categorycode === \"S\" ? (\n Admin\n ) : (\n \n Usuario\n \n )}\n {isParent ? (\n \n Grupo\n \n ) : (\n \"\"\n )}\n
\n \n
\n \n {user.branch && user.branch.branchname}\n\n \n (this.menu = el)} />\n this.menu.toggle(event)}\n />\n \n \n ) : (\n \n )}\n
\n )\n }\n}\nexport default Header\n//\n","import React from \"react\"\nimport { Col } from \"react-bootstrap\"\n\nexport const Footer = () => (\n \n \n \n)\n","import React, { Component } from \"react\"\nimport { Messages } from \"primereact/messages\"\nimport { Redirect } from \"react-router-dom\"\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\n\nexport class Ping extends Component {\n constructor(props) {\n super(props)\n this.state = {\n redirect: false,\n }\n }\n\n handleStatus(value) {\n const _this = this\n if (value.message === \"Failed to fetch\") {\n this.messages.show({\n severity: \"error\",\n closable: false,\n summary: \"Error\",\n detail: \"No connection to backend\",\n life: 25000,\n })\n }\n\n if (value.code) {\n this.messages.show({\n severity: \"error\",\n closable: false,\n summary: \"Error\",\n detail: \"No connection to Database\",\n life: 25000,\n })\n setTimeout(() => {\n _this.setState({\n redirect: true,\n })\n }, 250)\n }\n }\n\n componentDidMount() {\n AjaxApiFetch({\n path: \"alive\",\n })\n .then((data) => {\n this.handleStatus(data)\n })\n .catch((err) => {\n this.handleStatus(err)\n })\n }\n\n render() {\n const { redirect } = this.state\n return (\n
\n {redirect ? (\n \n ) : (\n (this.messages = el)} />\n )}\n
\n )\n }\n}\n","export const WELCOME = {\n MESSAGE: \"Sistema listo para cargar fondos\",\n WORD: \"Bienvenido\",\n SENTENCE: \"Tu código de biblioteca es\",\n}\nexport const ADMIN = {\n USER: \"isciii_admin\",\n TYPE: \"S\",\n}\nexport const COUNTRY = [\n { label: \"Aragón\", value: \"ARAG\" },\n { label: \"Andalucía\", value: \"ANDA\" },\n { label: \"Canarias\", value: \"CANA\" },\n { label: \"Cantabria\", value: \"CANT\" },\n { label: \"Castilla La Mancha\", value: \"MANC\" },\n { label: \"Castilla y León\", value: \"LEON\" },\n { label: \"Catalunya\", value: \"CATA\" },\n { label: \"Comunidad de Madrid\", value: \"MADR\" },\n { label: \"Comunidad Foral de Navarra\", value: \"NAVA\" },\n { label: \"Comunitat Valenciana\", value: \"VALE\" },\n { label: \"Extremadura\", value: \"EXTR\" },\n { label: \"Galicia\", value: \"GALI\" },\n { label: \"Illes Balears\", value: \"BALE\" },\n { label: \"La Rioja\", value: \"RIOJ\" },\n { label: \"País Vasco\", value: \"VASC\" },\n { label: \"Principado de Asturias\", value: \"ASTU\" },\n { label: \"Región de Murcia\", value: \"MURC\" },\n /*\n { label: \"Ciudad Autónoma de Ceuta\", value: \"CEUT\" },\n { label: \"Ciudad Autónoma de Melilla\", value: \"MELI\" },\n */\n]\n\nexport const MAIN_MENU = {}\n\nexport const LABELS = {}\n","/*\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nconst defaultDiacriticsRemovalMap = [\n {\n base: \"A\",\n letters:\n \"\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n },\n { base: \"AA\", letters: \"\\uA732\" },\n { base: \"AE\", letters: \"\\u00C6\\u01FC\\u01E2\" },\n { base: \"AO\", letters: \"\\uA734\" },\n { base: \"AU\", letters: \"\\uA736\" },\n { base: \"AV\", letters: \"\\uA738\\uA73A\" },\n { base: \"AY\", letters: \"\\uA73C\" },\n {\n base: \"B\",\n letters: \"\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\",\n },\n {\n base: \"C\",\n letters:\n \"\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E\",\n },\n {\n base: \"D\",\n letters:\n \"\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0\",\n },\n { base: \"DZ\", letters: \"\\u01F1\\u01C4\" },\n { base: \"Dz\", letters: \"\\u01F2\\u01C5\" },\n {\n base: \"E\",\n letters:\n \"\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\",\n },\n { base: \"F\", letters: \"\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\" },\n {\n base: \"G\",\n letters:\n \"\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\",\n },\n {\n base: \"H\",\n letters:\n \"\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n },\n {\n base: \"I\",\n letters:\n \"\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n },\n { base: \"J\", letters: \"\\u004A\\u24BF\\uFF2A\\u0134\\u0248\" },\n {\n base: \"K\",\n letters:\n \"\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n },\n {\n base: \"L\",\n letters:\n \"\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n },\n { base: \"LJ\", letters: \"\\u01C7\" },\n { base: \"Lj\", letters: \"\\u01C8\" },\n { base: \"M\", letters: \"\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\" },\n {\n base: \"N\",\n letters:\n \"\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\",\n },\n { base: \"NJ\", letters: \"\\u01CA\" },\n { base: \"Nj\", letters: \"\\u01CB\" },\n {\n base: \"O\",\n letters:\n \"\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n },\n { base: \"OI\", letters: \"\\u01A2\" },\n { base: \"OO\", letters: \"\\uA74E\" },\n { base: \"OU\", letters: \"\\u0222\" },\n { base: \"OE\", letters: \"\\u008C\\u0152\" },\n { base: \"oe\", letters: \"\\u009C\\u0153\" },\n {\n base: \"P\",\n letters: \"\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n },\n { base: \"Q\", letters: \"\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A\" },\n {\n base: \"R\",\n letters:\n \"\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n },\n {\n base: \"S\",\n letters:\n \"\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n },\n {\n base: \"T\",\n letters:\n \"\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n },\n { base: \"TZ\", letters: \"\\uA728\" },\n {\n base: \"U\",\n letters:\n \"\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n },\n { base: \"V\", letters: \"\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\" },\n { base: \"VY\", letters: \"\\uA760\" },\n {\n base: \"W\",\n letters: \"\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n },\n { base: \"X\", letters: \"\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C\" },\n {\n base: \"Y\",\n letters:\n \"\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n },\n {\n base: \"Z\",\n letters:\n \"\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n },\n {\n base: \"a\",\n letters:\n \"\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\",\n },\n { base: \"aa\", letters: \"\\uA733\" },\n { base: \"ae\", letters: \"\\u00E6\\u01FD\\u01E3\" },\n { base: \"ao\", letters: \"\\uA735\" },\n { base: \"au\", letters: \"\\uA737\" },\n { base: \"av\", letters: \"\\uA739\\uA73B\" },\n { base: \"ay\", letters: \"\\uA73D\" },\n {\n base: \"b\",\n letters: \"\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\",\n },\n {\n base: \"c\",\n letters:\n \"\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n },\n {\n base: \"d\",\n letters:\n \"\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\",\n },\n { base: \"dz\", letters: \"\\u01F3\\u01C6\" },\n {\n base: \"e\",\n letters:\n \"\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\",\n },\n { base: \"f\", letters: \"\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\" },\n {\n base: \"g\",\n letters:\n \"\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\",\n },\n {\n base: \"h\",\n letters:\n \"\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n },\n { base: \"hv\", letters: \"\\u0195\" },\n {\n base: \"i\",\n letters:\n \"\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n },\n { base: \"j\", letters: \"\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\" },\n {\n base: \"k\",\n letters:\n \"\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n },\n {\n base: \"l\",\n letters:\n \"\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\",\n },\n { base: \"lj\", letters: \"\\u01C9\" },\n { base: \"m\", letters: \"\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\" },\n {\n base: \"n\",\n letters:\n \"\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\",\n },\n { base: \"nj\", letters: \"\\u01CC\" },\n {\n base: \"o\",\n letters:\n \"\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\",\n },\n { base: \"oi\", letters: \"\\u01A3\" },\n { base: \"ou\", letters: \"\\u0223\" },\n { base: \"oo\", letters: \"\\uA74F\" },\n {\n base: \"p\",\n letters: \"\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\",\n },\n { base: \"q\", letters: \"\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759\" },\n {\n base: \"r\",\n letters:\n \"\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n },\n {\n base: \"s\",\n letters:\n \"\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\",\n },\n {\n base: \"t\",\n letters:\n \"\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n },\n { base: \"tz\", letters: \"\\uA729\" },\n {\n base: \"u\",\n letters:\n \"\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n },\n { base: \"v\", letters: \"\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\" },\n { base: \"vy\", letters: \"\\uA761\" },\n {\n base: \"w\",\n letters: \"\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n },\n { base: \"x\", letters: \"\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D\" },\n {\n base: \"y\",\n letters:\n \"\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n },\n {\n base: \"z\",\n letters:\n \"\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n },\n]\n\nconst diacriticsMap = {}\nfor (let i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n const { letters } = defaultDiacriticsRemovalMap[i]\n for (let j = 0; j < letters.length; j++) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap[i].base\n }\n}\nexport const removeDiacritics = (str) =>\n str.replace(/[^\\u0000-\\u007E]/g, (a) => diacriticsMap[a] || a)\n","// import validator from 'validator'\n\n// Libraries\nexport const REQUEST_VALUES = {\n FORM: [\n {\n id: \"issn\",\n value: \"\",\n label: \"Issn-Isbn\",\n visible: true,\n },\n {\n id: \"tipo_fondo\",\n value: \"\",\n label: \"Tipo de fondo\",\n visible: true,\n },\n {\n id: \"titulo\",\n value: \"\",\n label: \"Título de la publicación\",\n visible: true,\n },\n {\n id: \"fondo\",\n value: \"\",\n label: \"Fondo\",\n visible: true,\n },\n {\n id: \"embargo\",\n value: \"\",\n label: \"Embargo\",\n visible: true,\n },\n {\n id: \"Paquete_e\",\n value: \"\",\n label: \"Paquete electrónico\",\n visible: true,\n },\n {\n id: \"solicit\",\n value: \"\",\n label: \"Solitud\",\n visible: true,\n },\n // { id : \"id_inc\", value: '', label: 'Email'},\n { id: \"id_inc_padre\", value: \"\", label: \"id_inc_padre\" },\n {\n id: \"tipo_de_carga\",\n value: \"\",\n label: \"Tipo de carga\",\n visible: true,\n },\n ],\n REQUEST_COMBO: [\n { label: \"Pendiente\", value: 0 },\n { label: \"Enviada\", value: 1 },\n { label: \"Recibida\", value: 2 },\n ],\n}\nexport default REQUEST_VALUES\n","import validator from \"validator\"\n\n// Libraries\nconst LIBRARY = {\n USER: [\n { id: \"ID\", value: \"\", label: \"\" },\n { id: \"branch_alt_code\", value: \"\", label: \"\" },\n { id: \"tipo_resp\", value: \"\", label: \"Tipo\" },\n { id: \"resp\", value: \"\", label: \"Resp\" },\n { id: \"resp_tel\", value: \"\", label: \"Telefone\" },\n { id: \"resp_mail\", value: \"\", label: \"Email\" },\n ],\n YES_NO: [\n { label: \"Si\", value: \"SI\" },\n { label: \"No\", value: \"NO\" },\n ],\n SOFTWARE: [\n { label: \"ILL17\", value: \"206\" },\n { label: \"GTBIB\", value: \"205\" },\n ],\n LIBRARY_SELECT: [\n { label: \"Biblioteca\", value: \"biblioteca\" },\n { label: \"Prestamo\", value: \"prestamo\" },\n ],\n select: [\n \"Solo al centro de compra\",\n \"Al centro de compra y a todos los centros consorciados\",\n \"Al centro de compra y selección de centros consorciados\",\n ],\n FIELDS: {\n library: {\n branchvalid: {\n type: \"switch\",\n required: false,\n double: true,\n label: \"Biblioteca Válida\",\n field: \"branchvalid\",\n visible: true,\n },\n approvedTimeStamp: {\n type: \"input\",\n required: false,\n double: true,\n label: \"Fecha de alta\",\n field: \"createdTimeStamp\",\n visible: false,\n },\n createdTimeStamp: {\n type: \"input\",\n required: false,\n double: true,\n label: \"Fecha de solicitud\",\n field: \"createdTimeStamp\",\n visible: false,\n },\n branchcode: {\n type: \"input\",\n size: 0,\n required: true,\n edit: \"isciii_admin\",\n double: false,\n label: \"Código de la biblioteca\",\n alt_label: \"Propuesta de codigo de la biblioteca\",\n field: \"branchcode\",\n method: validator.isEmpty,\n visible: true,\n valid: \"branchcode\",\n validWhen: false,\n },\n branchname: {\n type: \"input\",\n size: 255,\n required: true,\n edit: \"isciii_admin\",\n double: true,\n label: \"Nombre de la biblioteca\",\n field: \"branchname\",\n method: validator.isEmpty,\n validWhen: false,\n message: \"Nombre de la biblioteca\",\n visible: true,\n },\n branchaddress1: {\n type: \"input\",\n size: 255,\n required: false,\n double: true,\n label: \"Dirección postal\",\n field: \"branchaddress1\",\n message: \"Dirección postal\",\n visible: true,\n },\n branchzip: {\n type: \"input\",\n size: 255,\n required: false,\n label: \"Código postal\",\n field: \"branchzip\",\n visible: true,\n options: \"ES\",\n },\n branchcity: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"Ciudad\",\n field: \"branchcity\",\n method: validator.isEmpty,\n validWhen: false,\n visible: true,\n },\n branchstate: {\n type: \"input\",\n size: 255,\n required: false,\n double: true,\n label: \"Provincia \",\n field: \"branchstate\",\n visible: true,\n },\n branchcountry: {\n type: \"select\",\n size: 255,\n required: true,\n double: true,\n label: \"Comunidad Autónoma\",\n field: \"branchcountry\",\n validWhen: false,\n method: validator.isEmpty,\n visible: true,\n },\n branchphone: {\n type: \"input\",\n size: 0,\n required: true,\n double: true,\n label: \"Teléfono\",\n field: \"branchphone\",\n validWhen: false,\n method: validator.isEmpty,\n visible: true,\n },\n branchfax: {\n type: \"input\",\n size: 0,\n required: false,\n double: true,\n label: \"Fax\",\n field: \"branchfax\",\n validWhen: false,\n message: \"Numeric\",\n visible: true,\n },\n branchemail: {\n type: \"input\",\n size: 0,\n required: true,\n double: true,\n label: \"Correo electrónico\",\n field: \"branchemail\",\n validWhen: true,\n method: validator.isEmail.bind({ ignore_whitespace: false }),\n visible: true,\n message: \"Nombre de la biblioteca\",\n },\n branchreplyto: {\n type: \"input\",\n size: 0,\n required: true,\n double: true,\n label: \"branchreplyto\",\n field: \"branchreplyto\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branchreturnpath: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branchreturnpath\",\n field: \"branchreturnpath\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branchurl: {\n type: \"input\",\n size: 255,\n required: false,\n double: false,\n label: \"URL página web de la biblioteca\",\n field: \"branchurl\",\n visible: true,\n },\n issuing: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"issuing\",\n field: \"issuing\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branchip: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branchip\",\n field: \"branchip\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n\n branchnotes: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branchnotes\",\n field: \"branchnotes\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n\n opac_info: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"opac_info\",\n field: \"opac_info\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branchobs: {\n type: \"input\",\n size: 255,\n required: false,\n double: true,\n label: \"Observaciones\",\n field: \"branchobs\",\n visible: true,\n },\n branches_alt_id: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branches_alt_id\",\n field: \"branches_alt_id\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_code: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_code\",\n field: \"branch_alt_code\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_type: {\n type: \"select\",\n size: 255,\n required: true,\n double: true,\n label: \"Tipo de biblioteca\",\n field: \"branch_alt_type\",\n method: validator.isEmpty,\n validWhen: false,\n visible: true,\n },\n branch_alt_softloan: {\n type: \"select\",\n size: 255,\n required: false,\n double: true,\n label: \"Sóftware del préstamo\",\n field: \"branch_alt_softloan\",\n visible: true,\n },\n branch_alt_srvloan: {\n type: \"select\",\n size: 255,\n required: false,\n double: true,\n label: \"branch_alt_srvloan\",\n field: \"branch_alt_srvloan\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_resp: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_resp\",\n field: \"branch_alt_resp\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_resp_tel: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_resp_tel\",\n field: \"branch_alt_resp_tel\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_resp_mail: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_resp_mail\",\n field: \"branch_alt_resp_mail\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_resp_loan_tel: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_resp_loan_tel\",\n field: \"branch_alt_resp_loan_tel\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_resp_loan_mail: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_resp_loan_mail\",\n field: \"branch_alt_resp_loan_mail\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_srvlimit: {\n type: \"input\",\n size: 255,\n required: false,\n double: true,\n label: \"Limitación servicio\",\n field: \"branch_alt_srvlimit\",\n visible: true,\n },\n branch_alt_close_alert: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_close_alert\",\n field: \"branch_alt_close_alert\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_alter_fecha: {\n type: \"input\",\n size: 255,\n required: false,\n double: true,\n label: \"Limitación servicio\",\n field: \"branch_alt_alter_fecha\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_url_cat: {\n type: \"input\",\n size: 255,\n required: false,\n double: true,\n label: \"URL página web del catálogo de la biblioteca\",\n field: \"branch_alt_url_cat\",\n visible: true,\n },\n branch_alt_tarifa: {\n type: \"input\",\n size: 255,\n required: false,\n double: true,\n label: \"Tarifa préstamo\",\n field: \"branch_alt_tarifa\",\n visible: true,\n },\n\n branch_alt_tipo_resp: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"branch_alt_tipo_resp\",\n field: \"branch_alt_tipo_resp\",\n method: validator.isEmpty,\n validWhen: false,\n visible: false,\n },\n branch_alt_spec: {\n type: \"input\",\n size: 255,\n required: false,\n double: false,\n label: \"Especialidad\",\n field: \"branch_alt_spec\",\n description: \"Si desea añadir más de una especialidad, separela con una ','\",\n visible: true,\n },\n branch_alt_dep: {\n type: \"input\",\n size: 255,\n required: false,\n double: false,\n label: \"Institución de la que depende\",\n field: \"branch_alt_dep\",\n visible: true,\n },\n\n centro: {\n type: \"select\",\n size: 255,\n required: false,\n double: true,\n label: \"Centro de préstamo\",\n field: \"centro\",\n visible: true,\n },\n branch_alt_loan_central: {\n type: \"select\",\n size: 255,\n required: false,\n double: false,\n label: \"Servicio de préstamo centralizado\",\n field: \"branch_alt_loan_central\",\n visible: true,\n },\n branch_alt_url_form_loan: {\n type: \"input\",\n size: 255,\n required: true,\n double: true,\n label: \"URL del formulario del préstamo\",\n field: \"branch_alt_url_form_loan\",\n method: validator.isURL,\n validWhen: true,\n visible: false,\n },\n },\n },\n}\n\nconst DEFAULT_FORM = {\n library: {\n branchvalid: \"N\",\n branchname: \"\",\n branchcode: \"\",\n branch_alt_type: \"\",\n branch_alt_dep: \"\",\n branch_alt_spec: \"\",\n branchobs: \"\",\n\n branchphone: \"\",\n branchfax: \"\",\n branchemail: \"\",\n branchaddress1: \"\",\n branchaddress2: \"\",\n branchaddress3: \"\",\n branchzip: \"\",\n branchcity: \"\",\n branchstate: \"\",\n branchcountry: \"\",\n branchreplyto: \"\",\n branchreturnpath: \"\",\n branchurl: \"\",\n branch_alt_url_cat: \"\",\n\n branch_alt_nombre_soft_loan: \"\",\n\n issuing: \"\",\n branchip: \"\",\n branchnotes: \"\",\n opac_info: \"\",\n branches_alt_id: \"\",\n branch_alt_code: \"\",\n branch_alt_resp: \"\",\n branch_alt_resp_tel: \"\",\n branch_alt_resp_mail: \"\",\n branch_alt_resp_loan_tel: \"\",\n branch_alt_resp_loan_mail: \"\",\n centro: \"\",\n branch_alt_softloan: \"\",\n branch_alt_url_form_loan: \"\",\n branch_alt_srvloan: \"\",\n branch_alt_close_alert: \"\",\n\n branch_alt_loan_central: \"\",\n\n branch_alt_tarifa: \"\",\n branch_alt_alter_fecha: \"\",\n branch_alt_tipo_resp: \"\",\n branch_alt_srvlimit: \"\",\n },\n group: \"\",\n users: [\n {\n ID: 0,\n branch_alt_code: \"\",\n tipo_resp: \"\",\n resp: \"\",\n resp_tel: \"\",\n resp_mail: \"\",\n },\n ],\n branch_type: [\n {\n value: \"Organismo Público de Investigación\",\n label: \"Organismo Público de Investigación\",\n },\n { value: \"Universidad Pública\", label: \"Universidad Pública\" },\n {\n value: \"Hospital del Sistema Público\",\n label: \"Hospital del Sistema Público\",\n },\n {\n value: \"Biblioteca Virtual de Salud\",\n label: \"Biblioteca Virtual de Salud\",\n },\n { value: \"Consejería de Salud\", label: \"Consejería de Salud\" },\n { value: \"Hospital Privado\", label: \"Hospital Privado\" },\n {\n value: \"Colegios, Asociación profesional y Academia\",\n label: \"Colegios, Asociación profesional y Academia\",\n },\n { value: \"Otra\", label: \"Otra\" },\n { value: \"Otros Ministerios\", label: \"Otros Ministerios\" },\n { value: \"Fundación\", label: \"Fundación\" },\n { value: \"Otras Consejerías\", label: \"Otras Consejerías\" },\n {\n value: \"Colegios, Asociaciones profesionales y Academias\",\n label: \"Colegios, Asociaciones profesionales y Academias\",\n },\n { value: \"Universidad Privada\", label: \"Universidad Privada\" },\n {\n value: \"Mº de Sanidad u organismo dependiente\",\n label: \"Mº de Sanidad u organismo dependiente\",\n },\n ],\n user: {},\n}\n\nexport { LIBRARY, DEFAULT_FORM }\n","import { removeDiacritics } from \"./removeDiacritics\"\n\nexport const sortAlpha = (arr) =>\n arr.sort((a, b) => {\n if (removeDiacritics(a.label) > removeDiacritics(b.label)) return 1\n if (removeDiacritics(a.label) < removeDiacritics(b.label)) return -1\n return 0\n })\n","/* eslint-disable camelcase */\nimport React, { Component } from \"react\"\nimport { DataTable } from \"primereact/datatable\"\nimport { Column } from \"primereact/column\"\nimport { InputText } from \"primereact/inputtext\"\nimport { Button } from \"primereact/button\"\nimport { Dialog } from \"primereact/dialog\"\nimport { Dropdown } from \"primereact/dropdown\"\nimport { Messages } from \"primereact/messages\"\nimport { Checkbox } from \"primereact/checkbox\"\nimport { ProgressSpinner } from \"primereact/progressspinner\"\n\nimport { Switch, Route } from \"react-router-dom\"\nimport moment from \"moment\"\nimport { removeDiacritics } from \"../Utils/removeDiacritics\"\nimport * as REQUEST from \"../constants/request\"\nimport { LIBRARY } from \"../constants/library\"\nimport * as GENERIC from \"../constants/generic\"\n\nimport { AjaxApiFetch } from \"../Utils/ajaxApiFetch\"\n\nimport { sortAlpha } from \"../Utils/sort\"\n\nimport { locale } from \"../constants/language.config\"\n\nconst country = sortAlpha(GENERIC.COUNTRY)\n\nconst branch_type = [\n {\n value: \"ALL\",\n label: \"Todas\",\n },\n {\n value: \"Organismo Público de Investigación\",\n label: \"Organismo Público de Investigación\",\n },\n { value: \"Universidad Pública\", label: \"Universidad Pública\" },\n {\n value: \"Hospital del Sistema Público\",\n label: \"Hospital del Sistema Público\",\n },\n {\n value: \"Biblioteca Virtual de Salud\",\n label: \"Biblioteca Virtual de Salud\",\n },\n { value: \"Consejería de Salud\", label: \"Consejería de Salud\" },\n { value: \"Hospital Privado\", label: \"Hospital Privado\" },\n {\n value: \"Colegios, Asociación profesional y Academia\",\n label: \"Colegios, Asociación profesional y Academia\",\n },\n { value: \"Otra\", label: \"Otra\" },\n { value: \"Otros Ministerios\", label: \"Otros Ministerios\" },\n { value: \"Fundación\", label: \"Fundación\" },\n { value: \"Otras Consejerías\", label: \"Otras Consejerías\" },\n {\n value: \"Colegios, Asociaciones profesionales y Academias\",\n label: \"Colegios, Asociaciones profesionales y Academias\",\n },\n { value: \"Universidad Privada\", label: \"Universidad Privada\" },\n {\n value: \"Mº de Sanidad u organismo dependiente\",\n label: \"Mº de Sanidad u organismo dependiente\",\n },\n]\n\nconst getHoldingsType = (id) => locale[id] || id\n\nexport class DataGrid extends Component {\n constructor(props) {\n super(props)\n this.state = {\n path: props.path,\n type: props.type,\n group: \"\",\n rows: [],\n columns: [],\n globalFilter: \"\",\n edit: false,\n holdings: false,\n publish: false,\n holding: {},\n data: {},\n visible: false,\n message: { header: \"\", message: \"\" },\n valid: false,\n library_type: \"\",\n filters: { branchstate: \"\", branchcountry: \"\" },\n loading: false,\n }\n\n this.buildTable = this.buildTable.bind(this)\n this.popUpTemplate = this.popUpTemplate.bind(this)\n this.getLibraryEdit = this.getLibraryEdit.bind(this)\n this.linkTemplate = this.linkTemplate.bind(this)\n this.buildTemplates = this.buildTemplates.bind(this)\n this.backToTable = this.backToTable.bind(this)\n this.getHoldingsEdit = this.getHoldingsEdit.bind(this)\n this.holdingsTemplate = this.holdingsTemplate.bind(this)\n this.holdingsEditLog = this.holdingsEditLog.bind(this)\n this.holdingsEditTemplate = this.holdingsEditTemplate.bind(this)\n this.deleteTemplate = this.deleteTemplate.bind(this)\n this.deleteBlackListItem = this.deleteBlackListItem.bind(this)\n this.loadHoldingsTemplate = this.loadHoldingsTemplate.bind(this)\n this.loadHoldingsDeleteTemplate = this.loadHoldingsDeleteTemplate.bind(this)\n this.deleteHoldings = this.deleteHoldings.bind(this)\n this.export = this.export.bind(this)\n this.update = this.update.bind(this)\n this.selectRequestTemplate = this.selectRequestTemplate.bind(this)\n this.checkboxTemplate = this.checkboxTemplate.bind(this)\n this.setCoutryChange = this.setCoutryChange.bind(this)\n this.setTypeChange = this.setTypeChange.bind(this)\n this.setLibraryList = this.setLibraryList.bind(this)\n }\n\n update() {\n let { path, group, data } = this.props\n path = path === \"library-viewer\" ? \"library\" : path\n group = group ? `?group=${group}` : \"\"\n const user = JSON.parse(localStorage.getItem(\"user\"))\n const edit = this.props.path !== \"library-viewer\"\n\n const config = {\n path,\n group,\n }\n this.setState({\n edit,\n path,\n group,\n loading: true,\n parent:\n user && user.group_id && user.group_id.length > 0\n ? user.group_id[0].nombre_padre\n : \"\",\n })\n\n AjaxApiFetch(config).then((_data) => {\n this.setState({\n loading: false,\n })\n\n if (_data.error) return\n let fetchData\n if (path === \"library\") {\n fetchData = _data.libraryList || []\n if (_data.user && !data) {\n localStorage.setItem(\"user\", JSON.stringify(_data.user))\n }\n } else {\n fetchData = _data\n }\n if (config.path === \"request-data\") {\n fetchData = _data.map((i) => {\n return i\n })\n }\n this.buildTable(fetchData)\n })\n }\n\n componentDidMount() {\n this.update()\n }\n\n componentDidUpdate(next, prev) {\n if (next.update || next.refresh) {\n this.update()\n }\n }\n\n buildTable(data) {\n if (!data || data.error) return\n const { type, path } = this.state\n let header = []\n let result = []\n const fields = LIBRARY.FIELDS.library\n\n if (path === \"holdings\") {\n if (type === \"holdings-loaded\") {\n header = data.loaded.headings\n result = [...data.loaded.rows]\n } else if (type === \"holdings-pending\") {\n header = data.pending.headings\n result = [...data.pending.rows]\n }\n } else if (path === \"library-relationships\") {\n result =\n data.length &&\n data.map((i) => {\n i[\"holdings-edit\"] = \"holdings-edit\"\n return i\n })\n header = Object.keys(result[0]).map((i) => ({ field: i, header: i }))\n } else if (path === \"temporary-records\") {\n header =\n data.length > 0\n ? Object.keys(data[0]).map((i) => ({\n field: i,\n header: fields[i] ? fields[i].label : i,\n }))\n : []\n result = data.map((i) => {\n moment.locale(\"es\")\n const approved = i.approvedTimeStamp\n const created = i.createdTimeStamp\n i.createdTimeStamp = created && moment(created).format(\"lll\")\n i.approvedTimeStamp = approved && moment(approved).format(\"lll\")\n return i\n })\n } else {\n header =\n data.length > 0\n ? Object.keys(data[0]).map((i) => ({\n field: i,\n header: fields[i] ? fields[i].label : i,\n }))\n : []\n result = data\n }\n\n this.setState({\n rows: result,\n columns: header,\n })\n }\n\n backToTable(data) {\n const { holdings } = this.state\n this.setState({\n edit: false,\n holdings: false,\n publish: false,\n })\n\n !holdings && this.update()\n }\n\n buildLibraryEdit(data) {\n const user = this.props.data && this.props.data.user\n const { path } = this.props\n data.user = user\n this.setState({\n data,\n edit: true,\n user,\n path,\n })\n }\n\n getLibraryEdit(event) {\n const id = event.target.parentElement.id || event.target.id\n const { data, group, path } = this.props\n const self = id === data && data.branchcode\n const parent = data && data.parent ? data.parent.id_grupo_padre : false\n /*\n CAN EDIT\n */\n const is_admin = data && data.user.categorycode === GENERIC.ADMIN.TYPE\n const edit = Boolean(is_admin || parent || self || group)\n\n let route\n\n switch (path) {\n case \"temporary-records\":\n route = \"valid\"\n break\n case \"library-relationships\":\n route = \"groups\"\n break\n case \"library-viewer\":\n route = \"library-viewer\"\n break\n default:\n route = \"libraries\"\n }\n\n const value = `${(route !== \"library-viewer\" ? \"/home/\" : \"/\") + route}/${id}${\n edit ? \"&edit=true\" : \"\"\n }${parent ? `&parent=${parent}` : \"\"}${group ? `&group=${group}` : \"\"}${\n path ? `&path=${path}` : \"\"\n }`\n\n this.props.history.push(value)\n }\n\n linkTemplate(rowData, column) {\n if (rowData.branchcode) {\n return (\n \n {rowData.branchname}\n \n )\n } else {\n return rowData.branchname\n }\n }\n\n defaultemplate(rowData, column) {\n return rowData\n }\n\n getHoldingsEdit(event) {\n const target = event ? event.target : {}\n const id = event ? target.id || target.parentElement.id : {}\n const { type } =\n this.props || event.target.attributes.getNamedItem(\"data-operation\")\n const attribute = event\n ? target.attributes.getNamedItem(\"data-operation\") ||\n target.parentElement.attributes.getNamedItem(\"data-operation\") ||\n target.attributes.getNamedItem(\"data-operation\")\n : {}\n const operation = event && attribute ? attribute.value : \"\"\n const { group } = this.props\n\n this.setState({\n publish: true,\n operation,\n })\n if (operation === \"holdings-parent\") {\n AjaxApiFetch({\n path: \"holdings\",\n group: `/?library=${id}&${operation}`,\n }).then((data) => {\n this.setState({\n path: \"holdings-parent\",\n holding: data,\n group: id,\n })\n })\n this.props.history.push(`/home/groups/parent/0/${id}`)\n } else {\n AjaxApiFetch({\n path: \"holdings-stage\",\n group: `/?library=${group}&${operation}`,\n }).then((data) => {\n if (data.error) return\n const table = data.map((i) => {\n i[\"delete-holdings\"] = \"delete-holdings-row\"\n if (type === \"holdings-pending\" && operation === \"yes\") {\n i[\"select-holdings\"] = false\n }\n return i\n })\n this.buildTable(table)\n })\n this.setState({\n path: \"holdings-stage\",\n })\n }\n }\n\n deleteBlackListItem(event) {\n const id = event.target.parentElement.id || event.target.id\n const title =\n event.target.parentElement.attributes.getNamedItem(\"data-title\") ||\n event.target.attributes.getNamedItem(\"data-title\")\n\n const { rows } = this.state\n this.setState({\n visible: true,\n message: {\n header: `${locale[\"Delete from blacklist\"]}`,\n message: `${locale.Delete} \"${title.value}\" ${locale[\"Delete step\"]}`,\n onclick: () => {\n AjaxApiFetch({\n path: \"blacklist-delete\",\n group: `/?id=${id}`,\n }).then((data) => {\n const deleted = rows.filter((i) => i.id !== parseInt(id))\n this.setState({\n rows: deleted,\n visible: false,\n })\n })\n },\n },\n })\n }\n\n deleteTemplate(rowData, column) {\n return (\n \n )\n }\n\n holdingsTemplate(rowData, column) {\n return (\n \n {rowData[\"Tipo de Fondo\"]}\n
\n )\n }\n\n holdingsEditLog(event) {\n const { group, type, parent } = this.props\n const target = event.target.nodeName === \"SPAN\"\n const id = event.target.parentElement.id || event.target.id\n const live = type === \"holdings-loaded\"\n const self = group === parent\n\n const barcode = target\n ? event.target.parentElement.attributes.getNamedItem(\"data-operation\") &&\n event.target.parentElement.attributes.getNamedItem(\"data-operation\").value\n : event.target.attributes.getNamedItem(\"data-operation\") &&\n event.target.attributes.getNamedItem(\"data-operation\").value\n const sort = target\n ? event.target.parentElement.attributes.getNamedItem(\"data-type\") &&\n event.target.parentElement.attributes.getNamedItem(\"data-type\").value\n : event.target.attributes.getNamedItem(\"data-type\") &&\n event.target.attributes.getNamedItem(\"data-type\").value\n\n const query = id || barcode\n this.props.history.push(\n `/home/${!self ? \"groups/parent\" : \"holdings/self\"}/${\n type === \"holdings-loaded\" ? (self ? 3 : 2) : self ? 2 : 1\n }/${group}/${query}/${sort}/${live}`\n )\n }\n\n holdingsEditTemplate(rowData, column) {\n const type = !rowData.barcode ? \"issn\" : \"barcode\"\n const field = column.field\n\n return (\n \n )\n }\n\n requestISSNTemplate(rowData, column) {\n const type = !rowData.barcode ? \"issn\" : \"barcode\"\n return (\n \n )\n }\n\n deleteHoldingsAction(table, id, type) {\n const { rows } = this.state\n const { group, isParent } = this.props\n AjaxApiFetch({\n path: table,\n method: \"POST\",\n group: `?group=${group}&id=${id}&type=${type}&parent=${isParent}`,\n }).then((data) => {\n let deleted\n if (type === \"holdings-loaded\") {\n if (id.includes(group)) deleted = rows.filter((i) => i.barcode !== id)\n else {\n deleted = rows.map((i) => {\n if (i.operation === id) i.Valor = 0\n return i\n })\n }\n } else {\n const action = parseInt(id)\n if (!isNaN(action)) deleted = rows.filter((i) => i.id_inc !== parseInt(id))\n else {\n deleted = rows.map((i) => {\n if (i.operation === id) i.Valor = 0\n return i\n })\n }\n }\n\n this.setState({\n rows: deleted,\n visible: false,\n loading: false,\n })\n })\n }\n\n deleteHoldings(event) {\n const id = event.target.id || event.target.parentElement.id\n const { type } = this.state\n this.setState({\n visible: true,\n message: {\n header: `${locale.Delete}`,\n message: `${locale[\"Delete-Holdings-Pop-Up\"]} \"${getHoldingsType(id)}\"?`,\n onclick: () => {\n if (type === \"holdings-pending\") {\n this.setState({\n loading: true,\n visible: true,\n message: null,\n })\n this.deleteHoldingsAction(\"stage-holdings-delete\", id, type)\n } else this.deleteHoldingsAction(\"stage-holdings-delete\", id, type)\n },\n },\n })\n }\n\n publishHoldings(event) {\n const id = event.target.id || event.target.parentElement.id\n const { rows, group, parent } = this.state\n const values = rows\n .filter((i) => i[\"select-holdings\"])\n .map((i) => i.id_inc)\n .toString()\n if (values === \"\") return\n\n this.setState({\n visible: true,\n message: {\n header: `${locale[\"Publish holdings\"]}`,\n message: `${locale[\"Publish holding\"]} \"${id}\"?`,\n onclick: () => {\n this.setState({\n visible: false,\n loading: true,\n })\n\n AjaxApiFetch({\n path: \"holdings-publish\",\n method: \"POST\",\n group: `${group}&parent=${parent}`,\n data: {\n collection: values,\n },\n }).then((data) => {\n if (data.error) return\n const ids = values.split(\",\")\n this.setState({\n rows: rows.filter((i) => !ids.includes(i.id_inc.toString())),\n loading: false,\n })\n })\n },\n },\n })\n }\n\n loadHoldingsDeleteTemplate(rowData, column) {\n const { parent } = this.state\n\n if (\n (rowData.tipo_fondo || (rowData.itype && !rowData.itype.includes(\"EJNL-\"))) &&\n parent !== this.props.group\n ) {\n return (\n \n )\n }\n\n if (\n (!rowData.operation || rowData.operation === \"EJNL-\") &&\n parent !== this.props.group\n ) {\n return (\n \n )\n }\n return (\n \n )\n }\n\n loadHoldingsTemplate(rowData, column) {\n const { edit } = this.state\n return (\n \n )\n }\n\n popUpTemplate(rowData, column) {\n const { edit } = this.state\n\n return (\n \n )\n }\n\n setRequestState(event) {\n const { rows } = this.state\n const { value } = event\n const { id } = event.target\n AjaxApiFetch({\n path: \"request-update\",\n group: `?id=${id}&state=${value}`,\n }).then((data) => {\n if (data) {\n this.setState({\n rows: rows.map((i) => {\n if (i.id === id) i.estado = value\n return i\n }),\n })\n this.messages.show({\n severity: \"success\",\n summary: \"Peticiones\",\n closable: false,\n detail: \"Petición actualizada\",\n })\n } else {\n this.messages.show({\n severity: \"error\",\n summary: \"Peticiones\",\n closable: false,\n detail: \"Error al actualizar petición\",\n })\n }\n })\n }\n\n selectAllHoldingsRows(e) {\n const { rows, selected } = this.state\n this.setState({\n selected: !selected,\n rows: rows.map((i) => {\n i[\"select-holdings\"] = !i[\"select-holdings\"]\n return i\n }),\n })\n }\n\n selectHoldingRow(e) {\n const { rows } = this.state\n const { id } = e.target\n const value = e.target.checked\n this.setState({\n rows: rows.map((i) => {\n if (i.id_inc === id) i[\"select-holdings\"] = value\n return i\n }),\n })\n }\n\n selectRequestTemplate(rowData, column) {\n return (\n this.setRequestState(e)}\n placeholder=\"Elegir una opcion\"\n />\n )\n }\n\n checkboxTemplate(rowData, column) {\n return (\n this.selectHoldingRow(e)}\n checked={rowData[\"select-holdings\"]}\n />\n )\n }\n\n countryTemplate(rowData, column) {\n const name = country.filter((i) => i.value === rowData.branchcountry)\n return
{name[0] && name[0].label}
\n }\n\n softwareTemplate(rowData, column) {\n const softwareTypes = JSON.parse(localStorage.getItem(\"user\")).software_types\n const value = softwareTypes.filter(\n (i) => +rowData.branch_alt_softloan === +i.value\n )\n return value[0] ? value[0].label : \"No\"\n }\n\n buildTemplates(field) {\n const { path } = this.state\n\n switch (field.field) {\n case \"branchname\":\n return this.linkTemplate\n case \"Libraries\":\n return this.popUpTemplate\n case \"branchcode\":\n return this.popUpTemplate\n case \"Tipo de Fondo\":\n return this.holdingsTemplate\n case \"issn\":\n if (path !== \"request-data\") {\n return this.holdingsEditTemplate\n } else {\n return this.requestISSNTemplate\n }\n case \"id\":\n if (path !== \"request-data\") return this.deleteTemplate\n else return this.defaultTemplate\n\n case \"holdings-edit\":\n return this.loadHoldingsTemplate\n case \"delete-holdings\":\n return this.loadHoldingsDeleteTemplate\n case \"holdings-count\":\n return this.valueTemplate\n case \"branchvalid\":\n return this.valueTemplate\n case \"biblionumber\":\n return this.holdingsEditTemplate\n case \"estado\":\n return this.selectRequestTemplate\n case \"select-holdings\":\n return this.checkboxTemplate\n case \"branchcountry\":\n return this.countryTemplate\n case \"branch_alt_softloan\":\n return this.softwareTemplate\n default:\n }\n }\n\n valueTemplate(rowData, column) {\n return (\n
\n \n {rowData.Valor || rowData.branchvalid || \"N\"}\n \n
\n )\n }\n\n defaultTemplate(rowData, column) {\n return
{rowData.id}
\n }\n\n export() {\n this.dt.exportCSV()\n }\n\n setCoutryChange(ev) {\n this.setState({ branchcountry: ev.value })\n if (ev.value === \"ALL\") this.dt.filter(null, \"branchcountry\", \"equals\")\n else this.dt.filter(ev.value, \"branchcountry\", \"equals\")\n }\n\n setLibraryList(ev) {\n this.setState({ library_type: ev.value })\n this.dt.filter(ev.value, \"branchvalid\", \"equals\")\n }\n\n setTypeChange(ev) {\n this.setState({ branch_type: ev.value })\n if (ev.value === \"ALL\") this.dt.filter(null, \"branch_alt_type\", \"equals\")\n else this.dt.filter(ev.value, \"branch_alt_type\", \"equals\")\n }\n\n render() {\n const { edit, publish } = this.state\n const countrySelectFilter = (\n \n )\n\n const { holdings, message, columns, operation, selected } = this.state\n const headerTranslations = {\n biblionumber: \"Biblio\",\n title: \"Titulo\",\n issn: \"ISSN\",\n barcode: \"Barcode\",\n enumchron: \"Fondo\",\n itype: \"Tipo de Fondo\",\n itemnotes: \"Editorial\",\n \"delete-holdings\": \"Eliminar\",\n Paquete_e: \"Paquete electrónico\",\n year: \"Año\",\n fasciculo: \"FASCÍCULO\",\n }\n\n const dynamicColumns = columns\n .filter(\n (col) =>\n col.field !== \"barcode\" &&\n col.field !== \"branchurl\" &&\n col.field !== \"pageInicio\" &&\n col.field !== \"pageFin\" &&\n col.field !== \"id_inc_padre\" &&\n col.field !== \"id_inc\" &&\n col.field !== \"solicit\" &&\n col.field !== \"enuchron\" &&\n col.field !== \"solicit\" &&\n col.field !== \"uuidv4\" &&\n col.field !== \"location\" &&\n col.field !== \"publishercode\" &&\n col.field !== \"booksellerid\"\n )\n .map((col, i) => {\n if (col.field !== \"branchstate\") {\n if (col.field !== \"id\") {\n return (\n \n )\n }\n return false\n }\n return (\n \n )\n })\n\n const header = (\n
\n
\n
\n \n\n \n \n
\n\n
\n \n {\n this.dt.filter(e.target.value, \"branchname\", \"custom\")\n }}\n placeholder=\"Búsqueda\"\n size=\"50\"\n />\n
\n\n
\n \n {\n this.dt.filter(e.target.value, \"branchcode\", \"custom\")\n }}\n placeholder=\"Búsqueda\"\n size=\"50\"\n />\n
\n\n
\n \n \n
\n
\n
\n \n
\n
\n )\n\n const validHeader = (\n
\n
\n
\n )\n const simpleHeader = (\n
\n
\n \n {\n this.setState({ globalFilter: e.target.value })\n }}\n placeholder=\"Búsqueda\"\n size=\"50\"\n />\n
\n\n {edit && publish && (\n \n )}\n\n
\n \n
\n
\n )\n\n function filterFunction(value, filter) {\n const v = removeDiacritics(value.toLowerCase())\n const f = removeDiacritics(filter.toLowerCase())\n if (v.includes(f)) return true\n return false\n }\n\n return (\n
\n {operation === \"yes\" && (\n
\n this.selectAllHoldingsRows(e)}\n />\n \n this.publishHoldings(e)}\n />\n\n
\n
\n )}\n {holdings && (\n \n )}\n {this.state.loading && }\n \n \n \n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={validHeader}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n \n \n\n \n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={header}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n \n \n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={simpleHeader}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n \n\n \n \n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={header}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n \n \n\n \n \n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={simpleHeader}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n \n \n\n \n \n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={simpleHeader}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n \n \n\n \n \n {!holdings && (\n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={simpleHeader}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n )}\n \n \n \n \n {!holdings && (\n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={simpleHeader}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n )}\n \n \n \n \n {!holdings && (\n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={simpleHeader}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n )}\n \n \n \n\n {message && (\n this.setState({ visible: false })}\n >\n

{message.message}

\n\n this.setState({ visible: false })}\n />\n\n \n \n )}\n\n (this.messages = el)} />\n
\n )\n }\n}\n","import React, { Component } from \"react\"\nimport { DataTable } from \"primereact/datatable\"\nimport { Column } from \"primereact/column\"\nimport { InputText } from \"primereact/inputtext\"\nimport { Button } from \"primereact/button\"\nimport { Dropdown } from \"primereact/dropdown\"\nimport { RadioButton } from \"primereact/radiobutton\"\nimport { AjaxApiFetch } from \"../Utils/ajaxApiFetch\"\nimport labels from \"../config/language.config\"\n\nexport class DataGridGroups extends Component {\n constructor(props) {\n super(props)\n this.state = {\n data: {},\n rows: [],\n columns: [],\n globalFilter: \"\",\n }\n\n this.buildTable = this.buildTable.bind(this)\n this.buildSelectTemplate = this.buildSelectTemplate.bind(this)\n this.popUpTemplate = this.popUpTemplate.bind(this)\n this.radioTemplate = this.radioTemplate.bind(this)\n this.buildInputTemplate = this.buildInputTemplate.bind(this)\n }\n\n buildTable(data) {\n const result = data.children.map((i) => {\n const row = {}\n\n const parent = data.groups.find((p) => p.id_grupo_padre === i.id_grupo_padre)\n row.Group = i.nombre_hijo\n row.child = i.id_grupo_hijo\n row.parent = i.id_grupo_padre\n\n const parentNode = parent\n const parentName = parentNode ? parentNode.nombre_padre : \"\"\n\n row[\"Nombre del centro de compra\"] = parentName\n row[\"Fondo Consorciado\"] = (parent && parent.tipo_fondo_consorcio) || \"\"\n\n if (i.id_grupo_padre !== 0) {\n row[\"Centro consorciado\"] = \"SI\"\n row[\"Centro de compra\"] = \"NO\"\n } else {\n row[\"Centro consorciado\"] = \"NO\"\n row[\"Centro de compra\"] = \"SI\"\n }\n row.Actualizar = \"\"\n if (!parent) {\n row[\"Centro consorciado\"] = \"SI\"\n }\n return row\n })\n\n // RENAME COLUMN HEADER\n // Group --> Código centro\n // Nombre del centro de compra --> Miembro de la red\n // Fondo consorciado --> Código fondo red\n // Centro consorciado -- Miembro de red\n // Centro de compra --> Responsable de red\n const labelNames = labels.user_management\n const column = Object.keys(result[0])\n .map((i) => {\n return { field: i, header: labelNames[i] }\n })\n .filter((col) => col.field !== \"parent\" && col.field !== \"child\")\n\n const select = data.groups.map((i) => i.nombre_padre)\n this.setState({\n rows: result,\n columns: column,\n select,\n data,\n })\n }\n\n componentDidMount() {\n const { path } = this.props\n const group = this.props.group ? `?group=${this.props.group}` : \"\"\n\n const config = {\n path,\n group,\n }\n AjaxApiFetch(config).then((data) => {\n this.buildTable(data)\n })\n }\n\n buildLibraryEdit(data) {\n this.setState({\n edit: data,\n })\n }\n\n getLibraryEdit(event) {\n AjaxApiFetch({\n path: \"library-data\",\n group: `/?library=${event.target.id}`,\n }).then((data) => {\n this.buildLibraryEdit(data)\n })\n }\n\n linkTemplate(rowData, column) {\n const selectedValue = rowData[\"Centro consorciado\"]\n\n return (\n this.setState({ value: e.value })}\n checked={selectedValue === \"SI\"}\n />\n )\n }\n\n radioInputChange() {\n return false\n }\n\n radioTemplate(rowData, column) {\n const selectedValue = rowData[column.field]\n return (\n this.radioInputChange(rowData, e.target)}\n checked={selectedValue === \"SI\"}\n />\n )\n }\n\n selectValue(rowData, value) {\n const { rows } = this.state\n let index = 0\n\n const newRow = rows\n .filter((i, k) => {\n if (rowData.Group === i.Group) index = k\n return rowData.Group === i.Group\n })\n .map((i) => {\n i[\"Centro de compra\"] = value.code !== 0 ? \"NO\" : \"SI\"\n i[\"Centro consorciado\"] = value.code !== 0 ? \"SI\" : \"NO\"\n i[\"Fondo Consorciado\"] = value.code !== 0 ? \"\" : rowData[\"Fondo Consorciado\"]\n\n i[\"Nombre del centro de compra\"] = value.code\n i.dirty = true\n return i\n })\n rows[index] = newRow.pop()\n\n this.setState({\n rows: [...rows],\n })\n }\n\n inputValue(rowData, value) {\n const { rows } = this.state\n let index = 0\n const newRow = rows\n .filter((i, k) => {\n if (rowData.Group === i.Group) index = k\n return rowData.Group === i.Group\n })\n .map((i) => {\n i[\"Centro de compra\"] = value !== \"\" ? \"SI\" : \"NO\"\n i[\"Centro consorciado\"] = value !== \"\" ? \"NO\" : \"SI\"\n i[\"Nombre del centro de compra\"] =\n value !== \"\" ? 0 : rowData[\"Nombre del centro de compra\"]\n\n i[\"Fondo Consorciado\"] = value\n i.dirty = true\n return i\n })\n // const split = rows.filter(i => rowData.Group !== i.Group)\n rows[index] = newRow.pop()\n\n this.setState({\n rows: [...rows],\n })\n }\n\n buildSelectTemplate(rowData, column) {\n const { select } = this.state\n const values = select\n .map((i) => ({ name: i, code: i }))\n .concat([{ name: \"Ninguno\", code: 0 }])\n const selectedValue = values.filter(\n (i) => i.code === rowData[\"Nombre del centro de compra\"]\n )\n const applySelectedValue =\n selectedValue.length > 0 ? selectedValue[0] : { name: \"Ninguno\", code: 0 }\n return (\n this.selectValue(rowData, e.value)}\n placeholder=\"Seleccionar\"\n />\n )\n }\n\n saveData(rowData) {\n const { data } = this.state\n const parent = data.groups\n .filter((i) => i.nombre_padre === rowData[\"Nombre del centro de compra\"])\n .pop()\n AjaxApiFetch({\n path: \"update-groups-data\",\n method: \"POST\",\n data: rowData,\n group: `?parent=${parent ? parent.id_grupo_padre : 0}&child=${rowData.child}`,\n }).then((data) => {\n // console.log(data)\n })\n }\n\n buildInputTemplate(rowData, column) {\n const disabled = false // rowData['Centro de compra'] === 'NO'\n return disabled ? (\n \"\"\n ) : (\n {\n this.inputValue(rowData, e.target.value)\n }}\n />\n )\n }\n\n popUpTemplate(rowData, column) {\n return (\n this.saveData(rowData, e)}\n />\n )\n }\n\n buildTemplates(field) {\n switch (field.field) {\n case \"Centro consorciado\":\n return this.radioTemplate\n case \"Centro de compra\":\n return this.radioTemplate\n case \"Actualizar\":\n return this.popUpTemplate\n case \"Nombre del centro de compra\":\n return this.buildSelectTemplate\n case \"Fondo Consorciado\":\n return this.buildInputTemplate\n default:\n }\n }\n\n render() {\n const dynamicColumns = this.state.columns\n .filter((col) => col.field !== \"branchname\")\n .map((col, i) => (\n \n ))\n\n const header = (\n
\n \n this.setState({ globalFilter: e.target.value })}\n placeholder=\"Global Search\"\n size=\"50\"\n />\n
\n )\n\n return (\n
\n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={header}\n globalFilter={this.state.globalFilter}\n emptyMessage=\"Sin Resultados\"\n rows={50}\n rowsPerPageOptions={[50, 100]}\n >\n {dynamicColumns}\n \n
\n )\n }\n}\n","import validator from \"validator\"\n\nclass FormValidator {\n constructor(validations) {\n // validations is an array of rules specific to a form\n this.validations = validations\n }\n\n validate(state) {\n // start out assuming valid\n const validation = this.valid()\n // for each validation rule\n this.validations.forEach((rule) => {\n const field = rule.field || rule.id\n // if the field isn't already marked invalid by an earlier rule\n if (!validation[field].isInvalid) {\n // determine the field value, the method to invoke and\n // optional args from the rule definition\n\n const field_value = state[field] ? state[field].toString() : \"\"\n const args = rule.options || { ignore_whitespace: true }\n const validation_method =\n typeof rule.method === \"string\" ? validator[rule.method] : rule.method\n // call the validation_method with the current field value\n // as the first argument, any additional arguments, and the\n // whole state as a final argument. If the result doesn't\n // match the rule.validWhen property, then modify the\n // validation object for the field and set the isValid\n // field to false\n if (validation_method) {\n if (validation_method(field_value, args, state) !== rule.validWhen) {\n validation[field] = {\n isInvalid: true,\n message: rule.message,\n }\n validation.isValid = false\n }\n }\n }\n })\n return validation\n }\n\n // create a validation object for a valid form\n valid() {\n const validation = {}\n\n this.validations.map(\n (rule) =>\n (validation[rule.field || rule.id] = { isInvalid: false, message: \"\" })\n )\n return { isValid: true, ...validation }\n }\n}\nexport default FormValidator\n","import React, { Component } from \"react\"\nimport { Button } from \"primereact/button\"\nimport validator from \"validator\"\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\n\nclass CheckLibraryCode extends Component {\n constructor(props) {\n super(props)\n\n const { show, path, validate } = this.props\n this.state = {\n show,\n validate,\n path,\n }\n }\n\n valid() {\n const libraryInput = document.getElementById(\"branchcode\")\n const { value } = libraryInput\n const { validate } = this.state\n const { library } = this.props\n const timestamp = library && library.createdTImeStamp\n\n if (!value) return false\n\n AjaxApiFetch({\n path: \"check-library-code\",\n edit: `?library=${value}`,\n }).then((data) => {\n const isUpper = validator.isUppercase(value)\n const hasHifen = validator.matches(value, /\\w+(-\\w+)+/)\n\n if (data.error) {\n validate(false)\n return\n }\n\n if (\n data.live.length <= 0 &&\n (data.temp.length <= 0 ||\n (data.temp.length <= 1 &&\n data.temp[0] &&\n data.temp[0].createdTimeStamp === timestamp))\n ) {\n validate(hasHifen && isUpper)\n } else {\n validate(false)\n }\n })\n }\n\n render() {\n const { show } = this.state\n const { path, message, valid } = this.props\n return show && path ? (\n
\n this.valid(e)}\n onfocusOut={(e) => this.valid(e)}\n />\n \n {message}\n \n
\n ) : (\n \"\"\n )\n }\n}\nexport default CheckLibraryCode\n","import React, { Component } from \"react\"\nimport { InputText } from \"primereact/inputtext\"\nimport { Button } from \"primereact/button\"\nimport { Calendar } from \"primereact/calendar\"\nimport moment from \"moment\"\n\nconst es = {\n firstDayOfWeek: 1,\n dayNames: [\n \"domingo\",\n \"lunes\",\n \"martes\",\n \"miércoles\",\n \"jueves\",\n \"viernes\",\n \"sábado\",\n ],\n dayNamesShort: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"],\n dayNamesMin: [\"D\", \"L\", \"M\", \"X\", \"J\", \"V\", \"S\"],\n monthNames: [\n \"enero\",\n \"febrero\",\n \"marzo\",\n \"abril\",\n \"mayo\",\n \"junio\",\n \"julio\",\n \"agosto\",\n \"septiembre\",\n \"octubre\",\n \"noviembre\",\n \"diciembre\",\n ],\n monthNamesShort: [\n \"ene\",\n \"feb\",\n \"mar\",\n \"abr\",\n \"may\",\n \"jun\",\n \"jul\",\n \"ago\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dic\",\n ],\n today: \"Hoy\",\n clear: \"Limpiar\",\n dateFormat: \"dd/mm/yy\",\n weekHeader: \"Sm\",\n}\nexport class AlertForm extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n ...this.props,\n processing: false,\n }\n }\n\n componentDidUpdate(previousProps) {\n if (\n previousProps.library.branch_alt_alter_fecha !==\n this.props.library.branch_alt_alter_fecha\n ) {\n this.setState({\n ...this.props,\n })\n }\n }\n\n updateAlertContent(e) {\n const { library } = this.state\n const { value } = e.target\n library[e.target.id] = value\n this.setState({\n ...library,\n })\n }\n\n render() {\n const { library } = this.state\n const { saveAlertContent, isAdmin, isParent, isSelf, isPublic, isAdd } =\n this.props\n const { branch_alt_close_alert, branch_alt_alter_fecha } = library\n const date =\n branch_alt_alter_fecha && branch_alt_alter_fecha.length\n ? new Date(moment(branch_alt_alter_fecha, \"DD/MM/YYYY\"))\n : branch_alt_alter_fecha\n\n const today = new Date()\n return (\n
\n
\n \n
\n {(isAdmin || isSelf || isParent || isAdd) && !isPublic ? (\n this.updateAlertContent(e)}\n disabled={isPublic}\n style={{\n borderColor: !isPublic ? \"inherit\" : \"transparent\",\n color: isPublic ? \"#333\" : \"gray\",\n }}\n />\n ) : (\n \n {date > today ? branch_alt_close_alert : \"\"}\n \n )}\n
\n
\n
\n \n\n
\n {(isAdmin || isSelf || isParent || isAdd) && !isPublic ? (\n this.updateAlertContent(e)}\n monthNavigator={true}\n yearNavigator={true}\n yearRange=\"2010:2030\"\n disabled={isPublic}\n style={{\n borderColor: !isPublic ? \"inherit\" : \"transparent\",\n color: isPublic ? \"#333\" : \"gray\",\n }}\n />\n ) : (\n \n {date > today ? moment(date).format(\"DD/MM/YYYY\") : \"\"}\n \n )}\n
\n
\n
\n {(isAdmin || isParent || isSelf) && (\n saveAlertContent(library)}\n />\n )}\n
\n )\n }\n}\n","import React from \"react\"\nimport { Button } from \"primereact/button\"\nimport { server } from \"../../config/backend\"\nimport { Upload } from \"../Forms/Upload\"\n\nexport const UploadLogo = (props) => {\n const { code, user, logo, action, active, admin, self, isParent } = props\n return (\n
\n {!active && logo && (admin || self || isParent) ? (\n \n ) : (\n \"\"\n )}\n\n \n\n {!logo && (admin || self || isParent) ? (\n \n ) : (\n \"\"\n )}\n {!active && !logo ? (\n
\n \n \n El logo debe tener formato jpg o png\n \n
\n ) : (\n \"\"\n )}\n
\n )\n}\n","import React, { Component } from \"react\"\nimport { connect } from \"react-redux\"\nimport moment from \"moment\"\n\nimport { Button } from \"primereact/button\"\nimport { InputText } from \"primereact/inputtext\"\nimport { InputSwitch } from \"primereact/inputswitch\"\nimport { Captcha } from \"primereact/captcha\"\nimport { ProgressSpinner } from \"primereact/progressspinner\"\nimport { Dialog } from \"primereact/dialog\"\nimport { Row, Col, Tabs, Tab } from \"react-bootstrap\"\nimport { Redirect } from \"react-router-dom\"\n\nimport Octicon from \"react-octicon\"\nimport { Dropdown } from \"primereact/dropdown\"\nimport { Messages } from \"primereact/messages\"\n\nimport { LIBRARY, DEFAULT_FORM } from \"../constants/library\"\nimport * as GENERIC from \"../constants/generic\"\nimport { server } from \"../config/backend\"\n\nimport { AjaxApiFetch } from \"../Utils/ajaxApiFetch\"\nimport FormValidator from \"../Utils/FormValidator\"\nimport CheckLibraryCode from \"./Library/CheckLibraryCode\"\n\nimport { Upload } from \"./Forms/Upload\"\nimport { AlertForm } from \"./Forms/AlertForm\"\nimport { UploadLogo } from \"./Library/UploadLogo\"\nimport { sortAlpha } from \"../Utils/sort\"\nimport { locale } from \"../constants/language.config\"\n\nimport { getLibrary, deleteLibrary } from \"../actions/library\"\n\nconst country = sortAlpha(GENERIC.COUNTRY)\nconst defaultForm = { ...DEFAULT_FORM }\n\nfunction disableBlurOnType(event) {\n event.stopImmediatePropagation()\n}\n\nfunction parseLocalStorage(item) {\n try {\n return JSON.parse(localStorage.getItem(item))\n } catch (error) {\n return []\n }\n}\n\nclass Library extends Component {\n constructor(props) {\n super(props)\n let { form, path, edit, live } = this.props\n\n if (!form) form = defaultForm\n const { library } = form\n const branchcode = library ? library.branchcode : \"\"\n\n this.state = {\n code: \"\",\n form,\n shouldSave: false,\n users: form ? form.users : LIBRARY.USER,\n branch_type: form ? form.branch_type : {},\n message: \"\",\n fields: LIBRARY.FIELDS.library || {},\n user: form.user,\n path,\n logo: \"\",\n active: false,\n branchcode,\n branchcode_valid: null,\n users_valid: false,\n edit,\n live,\n redirect: false,\n redirectBack: false,\n processing: false,\n software: [\n { label: \"Sin Software\", value: 0 },\n ...parseLocalStorage(\"user\").software_types,\n ],\n\n loading: false,\n }\n\n this.valuesForSelect = this.valuesForSelect.bind(this)\n this.deleteLogo = this.deleteLogo.bind(this)\n this.revealUploadLogo = this.revealUploadLogo.bind(this)\n this.printMessage = this.printMessage.bind(this)\n this.saveForm = this.saveForm.bind(this)\n this.validBranchCode = this.validBranchCode.bind(this)\n this.showResponse = this.showResponse.bind(this)\n this.saveAlertContent = this.saveAlertContent.bind(this)\n this.handleUserDeletion = this.handleUserDeletion.bind(this)\n this.savePublicForm = this.savePublicForm.bind(this)\n this.rejectLibrary = this.rejectLibrary.bind(this)\n this.changeLibraryCode = this.changeLibraryCode.bind(this)\n }\n\n componentDidMount() {\n const { entity, pull, history, getLibrary } = this.props\n const library = history && history.location.pathname.split(\"/\").pop()\n\n const { fields } = this.state\n\n if (entity || pull) {\n const data = getLibrary(library).then((results) => {\n if (results && results.data?.error) return\n\n const state = (results.data && results.data.pop()) || {\n users: null,\n country: null,\n branch_type: null,\n }\n\n const { users, country, branch_type } = state\n\n const isValid = !Object.keys(fields)\n .reduce((a, i) => {\n if (fields[i].required && fields[i].visible) a.push(!fields[i].isInvalid)\n return a\n }, [])\n .includes(false)\n\n const softUrl = fields.branch_alt_url_form_loan\n const hasSoftware =\n state.library?.branch_alt_url_form_loan &&\n state.library?.branch_alt_url_form_loan !== \"\"\n softUrl.visible = hasSoftware\n\n const newFields = {\n ...fields,\n softUrl,\n }\n\n this.setState({\n form: state,\n code: state.library?.branchcode,\n users,\n country,\n branch_type,\n isValid,\n loading: false,\n fields: hasSoftware ? newFields : fields,\n })\n window.scrollTo(0, 0)\n\n return data\n })\n\n this.setState({\n loading: true,\n })\n }\n\n window.addEventListener(\"input\", disableBlurOnType, true)\n }\n\n setUserInputValue(event) {\n this.setState({\n shouldSave: true,\n })\n const id = !event.target.id.includes(\"-\")\n ? event.target.id\n : event.target.id.split(\"-\")[0]\n const { value } = event.target\n const { users } = this.state\n const row = event.target.parentElement\n ? event.target.parentElement.getAttribute(\"data-row\")\n : event.target.id.split(\"-\")[1]\n users[row][id] = value\n this.setState({\n users,\n })\n }\n\n setInputValue(event) {\n const { id } = event.target\n const { value } = event.target\n const { form, fields } = this.state\n\n form.library[id] = value\n\n console.log(event)\n const hasSoftware = id === \"branch_alt_softloan\"\n const softUrl = fields.branch_alt_url_form_loan\n let newFields = {}\n\n if (hasSoftware) {\n if (value && value !== 0) {\n softUrl.visible = true\n } else {\n softUrl.visible = false\n form.library.branch_alt_url_form_loan = \"\"\n }\n newFields = {\n ...fields,\n softUrl,\n }\n }\n\n this.validateForm() ??\n this.setState({\n form,\n fields: hasSoftware ? newFields : fields,\n })\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"input\", disableBlurOnType, true)\n }\n\n revealUploadLogo() {\n const { active } = this.state\n this.setState({\n active: !active,\n })\n }\n\n deleteLogo() {\n const { form } = this.state\n const { library } = form\n const group = library.branchcode\n const newform = { ...form }\n newform.logo = null\n\n AjaxApiFetch({\n path: \"delete-logo\",\n edit: `?library=${group}`,\n }).then((data) => {\n this.printMessage({\n severity: \"success\",\n detail: `${locale[\"Logo deleted\"]}}`,\n })\n this.setState({\n form: newform,\n })\n })\n }\n\n rejectLibrary() {\n const { form } = this.state\n const { library } = form\n const group = library.branchcode\n\n AjaxApiFetch({\n path: \"temporary-library-refused\",\n edit: `?library=${group}`,\n }).then((data) => {\n this.printMessage({\n severity: \"success\",\n detail: `${locale[\"Library removed\"]}}`,\n })\n this.setState({\n redirectBack: \"/valid\",\n })\n })\n }\n\n deleteLibrary() {\n const { form } = this.state\n const { library } = form\n const group = library.branchcode\n\n this.props.deleteLibrary(group).then((results) => {\n if (results.error) return\n this.printMessage({\n severity: \"success\",\n detail: `${locale[\"Library removed\"]}}`,\n })\n this.setState({\n processing: false,\n })\n this.props.history.push(\"/home/libraries\")\n })\n this.setState({\n processing: true,\n })\n }\n\n approveLibrary(e) {\n const { form, fields } = this.state\n const { branchcode } = form.library\n const { library } = form\n\n const isValid = Object.keys(fields).reduce((a, i) => {\n if (fields[i].required && fields[i].visible) {\n if (!fields[i].isInvalid) a.push(!fields[i].isInvalid)\n }\n return a\n }, [])\n\n const valid = isValid.length > 0 && !isValid.includes(false)\n\n if (valid) {\n AjaxApiFetch({\n path: \"aprove-library-data\",\n edit: `?library=${branchcode}`,\n }).then((data) => {\n this.setState({\n processing: false,\n })\n if (data.error) {\n const message = locale[\"Already approved\"]\n this.printMessage({\n severity: \"error\",\n detail: `${message}`,\n })\n } else {\n const message = locale.Approved\n this.printMessage({\n severity: \"success\",\n detail: `${message}`,\n })\n library.branchvalid = \"Y\"\n }\n })\n this.setState({\n processing: true,\n })\n }\n }\n\n changeLibraryCode(e) {\n const { code, form } = this.state\n const value = form.library.branchcode\n\n AjaxApiFetch({\n path: \"update-library-code\",\n edit: `?library=${code}&code=${value}`,\n }).then((data) => {\n this.printMessage({\n severity: \"success\",\n detail: `${locale[\"Code Changed\"]}}`,\n })\n this.setState({\n processing: false,\n })\n this.props.history.push(\"/home/valid\")\n })\n this.setState({\n processing: true,\n })\n }\n\n saveForm() {\n const { form, fields } = this.state\n const { edit, path, parent, user } = this.props\n const admin = user && user.categorycode === GENERIC.ADMIN.TYPE\n const { library } = form\n const isPublic = path === \"public\"\n const redirectPath = path === \"temporary-records\" || path === \"library\"\n const self = user && user.userid === library.branchcode\n\n this.validateForm()\n\n if (!admin && !self && !parent) {\n const validate = this.validBranchCode\n new CheckLibraryCode({ show: true, validate }).valid()\n } else {\n this.setState({ branchcode_valid: true })\n }\n\n const isValid = !Object.keys(fields)\n .reduce((a, i) => {\n if (fields[i].required && fields[i].visible) a.push(!fields[i].isInvalid)\n if (fields[i].required && fields[i].visible && library[i] === \"\") {\n a.push(false)\n }\n return a\n }, [])\n .includes(false)\n\n if (isValid) {\n const branches_alt_keys = Object.keys(library)\n .filter((i) => i.includes(\"_alt\") || i.includes(\"centro\"))\n .reduce((a = {}, i) => {\n a[i] = library[i]\n a.branch_alt_code = library.branchcode\n a.branches_alt_id = null\n return a\n }, {})\n\n const branches_keys = Object.keys(library)\n .filter((i) => !i.includes(\"_alt\") && !i.includes(\"centro\"))\n .reduce((a = {}, i) => {\n a.issuing = Math.ceil(Math.random(1) * 100)\n a[i] = library[i]\n return a\n }, {})\n AjaxApiFetch({\n path: \"insert-library-data\",\n method: \"POST\",\n edit: `?edit=${edit}${path ? `&path=${path}` : \"\"}`,\n data: { branches_keys, branches_alt_keys },\n }).then((data) => {\n this.saveFormUsers()\n\n this.setState({\n processing: false,\n })\n this.printMessage({\n severity: \"success\",\n detail: `${locale[\"Libray Data Inserted\"]}`,\n })\n\n this.setState({\n redirect: isPublic,\n redirectBack: redirectPath,\n })\n })\n this.setState({\n processing: true,\n })\n } else {\n this.printMessage({\n severity: \"error\",\n status: `${locale[\"Fill all fields\"]}`,\n detail: `${locale[\"Fill all fields\"]}`,\n })\n }\n }\n\n // Public Form save\n savePublicForm() {\n const { branchcode_valid, fields, users } = this.state\n const validUsers = users.filter((i) => i.resp !== \"\").length > 0\n const branchCodeInput = document.getElementById(\"branchcode\")\n\n if (branchCodeInput.value === \"\") branchCodeInput.focus()\n\n const isValid = !Object.keys(fields)\n .reduce((a, i) => {\n if (fields[i].required && fields[i].visible) a.push(!fields[i].isInvalid)\n return a\n }, [])\n .includes(false)\n\n if (!validUsers || !isValid || !branchcode_valid) {\n if (!isValid) {\n this.printMessage({\n severity: \"error\",\n detail: `${locale[\"Fill all fields2\"]}`,\n })\n this.setState({\n popup: true,\n })\n } else if (!validUsers) {\n this.printMessage({\n severity: \"error\",\n detail: `${locale[\"Insert Users\"]}`,\n })\n }\n }\n if (isValid && branchcode_valid && validUsers) {\n this.saveForm()\n }\n }\n\n printMessage({ severity, status, detail }) {\n this.messages &&\n this.messages.show &&\n this.messages.show({\n life: 1000,\n severity,\n summary: status,\n closable: false,\n detail,\n })\n }\n\n valuesForSelect(key) {\n const { software } = this.state\n switch (key) {\n case \"branchcountry\":\n return country\n case \"branchvalid\":\n return LIBRARY.YES_NO\n case \"centro\":\n return LIBRARY.YES_NO\n case \"tipo_resp\":\n return LIBRARY.LIBRARY_SELECT\n case \"branch_alt_type\":\n return this.state.branch_type.sort((a, b) => {\n if (a.label.split(\" \")[0] > b.label.split(\" \")[0]) return 1\n if (a.label.split(\" \")[0] < b.label.split(\" \")[0]) return -1\n return 0\n })\n case \"branch_alt_loan_central\":\n return LIBRARY.YES_NO\n case \"branch_alt_dep\":\n return LIBRARY.YES_NO\n case \"branch_alt_softloan\": {\n return software\n }\n default:\n return []\n }\n }\n\n handleUserDeletion(id) {\n const { users, form, branchcode } = this.state\n const live = form.library.branchvalid === \"Y\"\n const library = branchcode === \"\" ? form.library.branchcode : branchcode\n\n AjaxApiFetch({\n path: \"delete-users\",\n method: \"GET\",\n edit: `?library=${library}&live=${live}&id=${id}`,\n }).then((data) => {\n this.setState({\n users: [...users.filter((i) => i.ID !== +id)],\n })\n this.printMessage({\n severity: \"success\",\n status: `${locale[\"User Deleted\"]}`,\n })\n })\n }\n\n saveFormUsers() {\n const { users, form, branchcode } = this.state\n const live = form.library.branchvalid === \"Y\"\n const library = branchcode === \"\" ? form.library.branchcode : branchcode\n\n const valid = users.filter((i) => i.resp !== \"\")\n if (valid.length >= 1 && library !== \"\") {\n this.setState({\n users_valid: true,\n })\n AjaxApiFetch({\n path: \"insert-users-data\",\n method: \"POST\",\n edit: `?library=${library}&live=${live}`,\n data: users,\n }).then((data) => {\n this.setState({\n processing: false,\n shouldSave: false,\n })\n if (data.error) {\n this.printMessage({\n severity: \"error\",\n status: `${locale[\"Fill users form\"]}`,\n })\n } else {\n this.printMessage({\n severity: \"success\",\n status: `${locale[\"Users Updated / Inserted\"]}`,\n })\n }\n })\n } else {\n this.printMessage({\n severity: \"error\",\n status: `${locale[\"Fill users form\"]}`,\n })\n\n this.setState({\n processing: false,\n users_valid: false,\n shouldSave: false,\n })\n }\n\n this.setState({\n processing: true,\n })\n }\n\n addFormUsers() {\n const user = LIBRARY.USER\n const { users } = this.state\n this.setState({\n shouldSave: true,\n ...users.push(\n user.reduce((a, i) => {\n a[i.id] = \"\"\n return a\n }, {})\n ),\n })\n }\n\n validateForm() {\n const { form, fields } = this.state\n const state = form.library\n const rules = Object.values(fields)\n const validator = new FormValidator(rules)\n const validation = validator.validate(state)\n const updatedState = { ...fields }\n for (const k in validation) {\n for (const i in validation[k]) {\n updatedState[k][i] = validation[k][i]\n }\n }\n this.setState({\n fields: updatedState,\n })\n }\n\n validBranchCode(value) {\n const branchCodeInput = document.getElementById(\"branchcode\")\n if (branchCodeInput) branchCodeInput.borderColor = value ? \"gray\" : \"red\"\n this.setState({\n branchcode: \"\",\n branchcode_valid: value,\n branchcode_message: value\n ? `${locale[\"Valid library code\"]}`\n : `${locale[\"Existing library code\"]}`,\n })\n }\n\n saveAlertContent(data) {\n const date = moment(data.branch_alt_alter_fecha).format(\"DD/MM/YYYY\")\n const { form, branchcode } = this.state\n const live = form.library.branchvalid === \"Y\"\n const library = branchcode === \"\" ? form.library.branchcode : branchcode\n AjaxApiFetch({\n path: \"insert-alert-data\",\n method: \"POST\",\n edit: `?library=${library}&live=${live}`,\n data: { ...data, branch_alt_alter_fecha: date },\n }).then((data) => {\n this.setState({\n processing: false,\n })\n this.printMessage({\n severity: \"success\",\n status: `${locale[\"Users Updated / Inserted\"]}`,\n })\n })\n this.setState({\n processing: true,\n })\n }\n\n showResponse() {\n this.setState({ valid: true })\n this.printMessage({\n severity: \"success\",\n status: `${locale[\"Valid library\"]}`,\n })\n }\n\n render() {\n const {\n form,\n users,\n fields,\n active,\n redirect,\n redirectBack,\n branchcode_valid,\n shouldSave,\n } = this.state\n const { path, entity, user, button } = this.props\n const { library } = form\n const isPublicEdit = path === \"public\"\n const isPublicView = path === \"public-viewer\"\n\n const addLibrary = path === \"add\"\n const add = path === \"add\"\n const isAdd = path === \"add\"\n\n const isPrivateView = path === \"live-library\"\n\n const isParent =\n !isPublicEdit &&\n user &&\n user.group_children &&\n user.group_children.filter((i) => i.Libraries === form.library.branchcode)\n .length > 0\n\n const admin = !isPublicEdit && user && user.categorycode === GENERIC.ADMIN.TYPE\n const branchvalid = form.library && form.library.branchvalid\n const code = form.library && form.library.branchcode\n const self = !isPublicEdit && user && user.userid === form.library.branchcode\n const valid = branchvalid === \"Y\" || false\n const logo = form.logo && form.logo.fichero\n const isCodeValid = branchcode_valid\n\n return (\n
\n {this.state.loading && }\n {redirect && }\n {redirectBack && }\n\n {!this.state.loading && (\n \n \n
\n

Datos de biblioteca

\n\n {logo && isPublicView && (\n \n )}\n\n {!entity && (\n \n )}\n\n {form && form !== undefined ? (\n Object.keys({ ...defaultForm.library, ...form.library })\n .filter((items) => items !== \"users\")\n .map((i, k) => {\n const value = form.library[i]\n\n return (\n \n \n\n {fields[i] && fields[i].type === \"input\" && (\n
\n {fields[i].field === \"branchcode\" && !valid && (\n <>\n
\n \n document.getElementById(\"checkCode\") &&\n document.getElementById(\"checkCode\").click()\n }\n onChange={(e) => this.setInputValue(e)}\n value={form.library[i]}\n style={{\n border: \"1px solid\",\n borderColor: !entity\n ? this.state.user ||\n this.state.form.add ||\n this.state.form.edit\n ? fields[i] && !fields[i].isInvalid\n ? \"gray\"\n : \"red\"\n : \"green\"\n : \"transparent\",\n color:\n this.state.user ||\n this.state.form.add ||\n this.state.form.edit\n ? \"#333\"\n : \"gray\",\n }}\n />\n
\n {admin && path === \"temporary-records\" && (\n this.changeLibraryCode()}\n />\n )}\n \n )}\n\n {fields[i].field === \"branchname\" && (\n
\n = 0\n ? \"100%\"\n : \"50%\"\n }`,\n border: \"1px solid\",\n borderColor:\n (admin || !isPrivateView) && !entity\n ? this.state.user ||\n this.state.form.add ||\n this.state.form.edit\n ? fields[i] && !fields[i].isInvalid\n ? \"gray\"\n : \"red\"\n : \"green\"\n : \"transparent\",\n color:\n (!isPrivateView && this.state.user) ||\n this.state.form.add ||\n this.state.form.edit\n ? \"#333\"\n : \"gray\",\n }}\n value={form.library[i]}\n onBlur={(e) =>\n document.getElementById(\"checkCode\") &&\n document.getElementById(\"checkCode\").click()\n }\n onChange={(e) => this.setInputValue(e)}\n />\n
\n )}\n\n {fields[i].field === \"branchcode\" && valid && (\n
\n = 0\n ? \"100%\"\n : \"50%\"\n }`,\n border: \"0px\",\n borderColor: !entity\n ? this.state.user ||\n this.state.form.add ||\n this.state.form.edit\n ? fields[i] && !fields[i].isInvalid\n ? \"gray\"\n : \"red\"\n : \"green\"\n : \"transparent\",\n color:\n this.state.user ||\n this.state.form.add ||\n this.state.form.edit\n ? \"#333\"\n : \"gray\",\n }}\n value={form.library[i]}\n onBlur={(e) =>\n document.getElementById(\"checkCode\") &&\n document.getElementById(\"checkCode\").click()\n }\n onChange={(e) => this.setInputValue(e)}\n />\n
\n )}\n\n {(admin || !isPrivateView) &&\n !entity &&\n this.state.user &&\n fields[i].field !== \"branchcode\" &&\n fields[i].field !== \"branchname\" ? (\n <>\n = 0\n ? \"100%\"\n : \"50%\"\n }`,\n border: \"1px solid\",\n borderColor:\n (admin || !isPrivateView) && !entity\n ? this.state.user ||\n this.state.form.add ||\n this.state.form.edit\n ? form.library[i] !== \"\" ||\n (fields[i] && !fields[i].isInvalid)\n ? \"gray\"\n : \"red\"\n : \"green\"\n : \"transparent\",\n color:\n (!isPrivateView && this.state.user) ||\n this.state.form.add ||\n this.state.form.edit\n ? \"#333\"\n : \"gray\",\n }}\n value={form.library[i]}\n onChange={(e) => {\n e.preventDefault()\n this.setInputValue(e)\n }}\n />\n \n ) : (\n fields[i].field !== \"branchcode\" &&\n fields[i].field !== \"branchname\" &&\n form.library[i]\n )}\n\n {!valid && (\n \n )}\n
\n )}\n\n {fields[i] && fields[i].type === \"select\" && (\n
\n {(admin || !isPrivateView) && !isPublicView ? (\n this.setInputValue(e)}\n placeholder=\"Elegir una opcion\"\n />\n ) : (\n \n {!isNaN(value)\n ? i !== \"branch_alt_softloan\"\n ? +value\n : this.state.software.find((item) => {\n return item.value === +value\n }) &&\n this.state.software.find((item) => {\n return item.value === +value\n }).label\n : i === \"branchcountry\"\n ? country.filter((i) => {\n return i.value === value\n })[0].label\n : value}\n \n )}\n

\n {i === \"branch_alt_softloan\"\n ? \"NOTA: Si dispone de un sistema de gestión de préstamo interbibliotecario (GTBIB, ILL) debe introducir la siguiente información para poder realizar la petición de documentos\"\n : \"\"}\n

\n
\n )}\n {fields[i] &&\n fields[i].type === \"switch\" &&\n !isPublicView && (\n \n )}\n \n {fields[i] && fields[i].isInvalid && fields[i].label}\n \n \n {!isPublicView && fields[i] && fields[i].description}\n \n
\n )\n })\n ) : (\n <>\n )}\n
\n
\n
\n {addLibrary || admin || self || isParent ? (\n \n \n this.saveForm(e)}\n />\n \n \n ) : (\n \"\"\n )}\n \n {admin && path === \"temporary-records\" && !valid ? (\n this.approveLibrary(e)}\n />\n ) : (\n \"\"\n )}\n \n {admin && valid ? (\n this.deleteLibrary(e)}\n />\n ) : (\n \"\"\n )}\n {admin && path === \"temporary-records\" && !valid ? (\n this.rejectLibrary(e)}\n />\n ) : (\n \"\"\n )}\n {button && (\n \n )}\n {this.state.processing && }\n
\n \n\n \n
\n

Responsables

\n {form && form !== undefined ? (\n users.map((row, key) => {\n const userId = row.ID\n return Object.keys(row)\n .filter((i) => i !== \"ID\" && i !== \"branch_alt_code\")\n .map((i, k) => {\n let label = \"\"\n let expression = \"\"\n\n switch (i) {\n case \"tipo_resp\":\n label = \"Área\"\n break\n case \"resp\":\n label = \"Responsable\"\n break\n case \"resp_tel\":\n label = \"Teléfono\"\n break\n case \"resp_mail\":\n label = \"Correo-e\"\n expression =\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n break\n default:\n label = \"\"\n break\n }\n return (\n \n \n {i !== \"tipo_resp\" ? (\n this.setUserInputValue(e)}\n />\n ) : (\n
\n \n\n {(admin || !isPrivateView) && !isPublicView ? (\n this.setUserInputValue(e)}\n value={row[i].toLowerCase()}\n options={this.valuesForSelect(i)}\n required={true}\n disabled={\n !admin && isPublicView && isPrivateView\n }\n style={{\n borderColor:\n (admin || !isPrivateView) && !isPublicView\n ? \"inherit\"\n : \"transparent\",\n color:\n isPrivateView && isPublicView\n ? \"#333\"\n : \"gray\",\n }}\n placeholder=\"Elegir una opcion\"\n />\n ) : (\n \n {row[i]}\n \n )}\n
\n )}\n
\n )\n })\n .concat([\n (admin || self || isParent) && (\n
\n {\n this.handleUserDeletion(\n e.target.id !== \"\"\n ? e.target.id\n : e.target.parentElement.id\n )\n }}\n icon=\"pi pi-times\"\n />\n
\n ),\n ])\n .concat([
])\n })\n ) : (\n <>\n )}\n {admin || self || isParent || path === \"public\" || addLibrary ? (\n <>\n {path !== \"public\" && !isAdd && (\n this.saveFormUsers(e)}\n />\n )}\n \n this.addFormUsers(e)}\n />\n {this.state.processing && }\n \n ) : (\n <>\n )}\n
\n \n
\n\n {path !== \"public\" && (\n \n
\n

Alertas

\n \n
\n
\n )}\n\n {(admin || add || self || isParent || path === \"public\") && !logo && (\n \n
\n

Logo

\n \n
\n
\n )}\n
\n \n )}\n \n {/* Public Form Edit */}\n {isPublicEdit && (\n
\n \n {!this.state.valid && !user\n ? \"Resuelve captcha antes de guardar\"\n : \"\"}\n \n {window.grecaptcha &&\n window.grecaptcha.render &&\n !this.state.valid &&\n isPublicEdit ? (\n \n ) : (\n \"\"\n )}\n
\n \n
\n )}\n \n\n this.setState({ popup: false })}\n >\n
{locale[\"library Save Error\"]}
\n \n\n
\n (this.messages = el)} />\n
\n \n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n user: state.login.user || JSON.parse(localStorage.getItem(\"user\")),\n})\n\nexport default connect(mapStateToProps, { getLibrary, deleteLibrary })(Library)\n","import validator from \"validator\"\n\nexport const HOLDINGS_VALUES = {\n FORM: {\n issn: {\n id: \"issn\",\n value: \"\",\n label: \"Issn-Isbn\",\n visible: true,\n validWhen: true,\n options: {\n case_sensitive: false,\n require_hyphen: true,\n ignore_whitespace: true,\n },\n method: validator.isISSN,\n required: true,\n },\n tipo_fondo: {\n id: \"tipo_fondo\",\n value: \"\",\n label: \"Tipo de fondo\",\n visible: true,\n validWhen: false,\n method: validator.isEmpty,\n required: true,\n },\n titulo: {\n id: \"titulo\",\n value: \"\",\n label: \"Título de la publicación\",\n visible: true,\n },\n fondo: {\n id: \"fondo\",\n value: \"\",\n label: \"Fondo\",\n visible: true,\n validWhen: false,\n method: validator.isEmpty,\n required: true,\n },\n embargo: {\n id: \"embargo\",\n value: \"\",\n label: \"Embargo\",\n visible: true,\n },\n \"Paquete-e\": {\n id: \"Paquete-e\",\n value: \"\",\n label: \"Paquete electrónico\",\n visible: true,\n },\n barcode: {\n id: \"barcode\",\n value: \"\",\n label: \"Barcode\",\n visible: true,\n },\n biblionumber: {\n id: \"biblionumber\",\n value: \"\",\n label: \"Bibnumber\",\n visible: true,\n },\n\n id_inc: {\n id: \"id_inc\",\n value: \"\",\n label: \"Id\",\n visible: false,\n },\n id_inc_padre: {\n id: \"id_inc_padre\",\n value: \"1\",\n label: \"id_inc_padre\",\n visible: false,\n },\n\n tipo_de_carga: {\n id: \"tipo_de_carga\",\n value: \"\",\n label: \"Tipo de carga\",\n visible: true,\n },\n },\n REQUEST: [\n {\n id: \"article\",\n map: \"Title\",\n value: \"\",\n label: \"Título del artículo\",\n disabled: true,\n },\n {\n id: \"title\",\n map: \"FullJournalName\",\n value: \"\",\n label: \"Título de la publicación\",\n },\n {\n id: \"autor_lastname\",\n map: \"LastAuthor\",\n value: \"\",\n label: \"Apellido autor\",\n disabled: true,\n },\n {\n id: \"author\",\n map: \"AuthorList\",\n value: \"\",\n label: \"Nombre autor\",\n disabled: true,\n },\n {\n id: \"year\",\n map: \"PubDate\",\n value: \"\",\n label: \"Año\",\n disabled: true,\n },\n {\n id: \"solicit\",\n map: \"Volume\",\n value: \"\",\n label: \"Fascículo de la revista\",\n disabled: true,\n },\n {\n id: \"pages_start\",\n map: \"Pages\",\n value: \"\",\n label: \"Página de inicio\",\n disabled: true,\n },\n {\n id: \"pages_end\",\n map: \"Pages\",\n value: \"\",\n label: \"Página final\",\n disabled: true,\n },\n {\n id: \"place\",\n map: \"ELocationID\",\n value: \"\",\n label: \"Ciudad de publicación\",\n disabled: true,\n },\n {\n id: \"editor\",\n map: \"Source\",\n value: \"\",\n label: \"Editor\",\n disabled: true,\n },\n {\n id: \"edition\",\n map: \"RecordStatus\",\n value: \"\",\n label: \"Edición\",\n disabled: true,\n },\n {\n id: \"issn\",\n map: \"ISSN\",\n value: \"\",\n label: \"Issn-Isbn\",\n },\n ],\n TEMPLATE: [\"JNL\", \"EJNL\"],\n TEMPLATE_CONSORCIUM: [\n \"Solo al centro de compra\",\n \"Al centro de compra y a todos los centros consorciados\",\n \"Al centro de compra y selección de centros consorciados\",\n ],\n}\nexport default HOLDINGS_VALUES\n","import React, { Component } from \"react\"\nimport { DataTable } from \"primereact/datatable\"\nimport { Column } from \"primereact/column\"\nimport { ProgressSpinner } from \"primereact/progressspinner\"\nimport { Dropdown } from \"primereact/dropdown\"\nimport { RadioButton } from \"primereact/radiobutton\"\nimport { InputText } from \"primereact/inputtext\"\nimport { Dialog } from \"primereact/dialog\"\n\nimport isEmpty from \"lodash/isEmpty\"\nimport trim from \"lodash/trim\"\n\nimport { Button } from \"primereact/button\"\nimport axios from \"axios\"\nimport XML from \"react-xml-parser\"\nimport { Messages } from \"primereact/messages\"\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\nimport { removeDiacritics } from \"../../Utils/removeDiacritics\"\n\nimport * as HOLDINGS from \"../../constants/holdings\"\nimport * as GENERIC from \"../../constants/generic\"\nimport { sortAlpha } from \"../../Utils/sort\"\nimport { locale } from \"../../constants/language.config.js\"\nimport { useLocation } from \"react-router-dom\"\n\nconst country = sortAlpha(GENERIC.COUNTRY).concat([{ label: \"Todas\", value: \"ALL\" }])\n\nconst SendButton = ({\n software,\n selected,\n active,\n vistLink,\n setReplyEmail,\n sendMail,\n}) => {\n return software ? (\n vistLink(e)}\n />\n ) : (\n <>\n \n sendMail(e)}\n />\n
\n \n )\n}\n\nclass RenderReplyEmailField extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n visible: false,\n }\n }\n\n render() {\n const { visible } = this.state\n const { setReplyEmail, active, selected } = this.props\n\n return (\n \n <>\n {selected && (\n <>\n \n \n this.setState({\n visible: !visible,\n })\n }\n />\n \n )}\n {visible && selected && (\n
\n \n
\n )}\n \n
\n \n )\n }\n}\n\nexport class FormRequest extends Component {\n constructor(props) {\n super(props)\n this.state = {\n data: null,\n branchcity: \"\",\n value: [],\n fields: HOLDINGS.HOLDINGS_VALUES.REQUEST,\n message: null,\n selected: \"\",\n active: false,\n loading: false,\n visible: false,\n replyEmail: null,\n email: \"\",\n emailInfo: {},\n }\n\n this.textYearInput = React.createRef()\n this.focusTextYearInput = this.focusTextYearInput.bind(this)\n\n this.onCityChange = this.onCityChange.bind(this)\n this.onDateSearch = this.onDateSearch.bind(this)\n this.setCoutryChange = this.setCoutryChange.bind(this)\n this.buildTemplateRadioButton = this.buildTemplateRadioButton.bind(this)\n this.yearFilter = this.yearFilter.bind(this)\n this.handleFormValues = this.handleFormValues.bind(this)\n this.searchForm = this.searchForm.bind(this)\n this.buildRequest = this.buildRequest.bind(this)\n this.setReplyEmail = this.setReplyEmail.bind(this)\n this.sendMail = this.sendMail.bind(this)\n this.vistLink = this.vistLink.bind(this)\n }\n\n componentDidMount() {\n const params = new URLSearchParams(window.location.search)\n const grupo = params.get(\"grupo\") || null\n const rawRequest = localStorage.getItem(\"request\")\n const fields = HOLDINGS.HOLDINGS_VALUES.REQUEST\n\n AjaxApiFetch({\n path: \"library-software\",\n }).then((data) => {\n this.setState({\n software_types: [{ label: \"Sin Software\", value: 0 }, ...(data || {})],\n })\n })\n\n let request = {}\n if (rawRequest) {\n try {\n request = JSON.parse(rawRequest)\n this.setState(\n () => {\n return { ...request }\n },\n () => localStorage.clear(\"request\")\n )\n } catch (error) {\n this.setState({\n fields: [...fields],\n })\n }\n } else {\n this.setState({\n fields: [...fields],\n })\n }\n if (grupo) this.buildRequest(false, null)\n }\n\n buildRequest(isIssn, value, grupo) {\n const { fields } = this.state\n const params = new URLSearchParams(window.location.search)\n const isGrupo = !!params.get(\"grupo\") && !grupo\n\n const groupLib = isGrupo ? params.get(\"grupo\") : grupo\n\n const biblionumber = value || params.get(\"biblionumber\")\n const title = value\n\n AjaxApiFetch({\n path: isGrupo ? \"request-make\" : \"request-pmid-make\",\n group: isGrupo\n ? `?biblionumber=${biblionumber}&grupo=${groupLib}`\n : `?&biblionumber=${isIssn}${title ? `&title=${title}` : \"\"}${\n grupo ? `&grupo=${grupo}` : \"\"\n }`,\n }).then((data) => {\n if (data.error) {\n this.setState({\n selected: null,\n empty: true,\n data: null,\n email: null,\n visible: true,\n active: true,\n message: {\n header: `${locale[\"No records found\"]}`,\n message: `${locale[\"Empty Request\"]}`,\n },\n })\n\n this.messages.show({\n severity: \"error\",\n summary: locale[\"Empty Request\"],\n closable: false,\n })\n\n return\n }\n\n const rows = Object.values(data.data).sort(function (x, y) {\n return x === y ? 0 : x ? 1 : -1\n })\n const homebranch = rows[0] ? rows[0].homebranch : \"\"\n\n const selected = groupLib || homebranch\n\n let title\n let issn\n\n const formValues =\n selected && data.holding\n ? fields.map((i) => {\n i.value = data.holding[i.id]\n if (i.id === \"title\") title = data.holding[i.id]\n if (i.id === \"issn\") issn = data.holding[i.id]\n return i\n })\n : null\n if (rows.length <= 0) {\n return\n }\n const central = (() => {\n try {\n return JSON.parse(localStorage.getItem(\"central\"))\n } catch (error) {\n return []\n }\n })()\n\n const avalilableCentres =\n rows.filter((centre) => {\n if (central) {\n return central.find((lib) => {\n return lib.branch_alt_code === centre.homebranch\n })\n }\n return rows\n }) || []\n\n if (data.is_center && data.is_center !== \"SI\") {\n let avalilable = avalilableCentres.filter((item) => !item.selected) || []\n\n if (avalilable.length && typeof avalilable[0] !== \"object\") {\n avalilable = avalilable.splice(1, avalilable.length)\n }\n\n if (avalilable.length && typeof avalilable[0] === \"object\") {\n avalilable[0].selected = true\n }\n this.setState({\n data: avalilable,\n empty: false,\n software: data.has_software === \"SI\",\n centre: data.is_center === \"SI\",\n url: `${data.url}?title=${title}&issn=${issn}`,\n biblio: biblionumber,\n group: groupLib,\n email: data.email,\n selectedData: avalilable.length ? avalilable[0] : null,\n selected: avalilable.length ? avalilable[0].homebranch : null,\n fields: formValues || [...fields],\n active: true,\n visible: true,\n message:\n window.location.search > 0\n ? {\n header: `${locale[\"No holdings found in centre\"]}`,\n message: `${locale[\"No holdings found in centre description\"]}`,\n }\n : null,\n })\n } else {\n this.setState({\n data: avalilableCentres,\n empty: false,\n software: data.has_software === \"SI\",\n centre: data.is_center === \"SI\",\n url: `${data.url}?title=${title}&issn=${issn}`,\n biblio: biblionumber,\n group: groupLib,\n email: data.email,\n selected,\n selectedData: avalilableCentres.length ? avalilableCentres[0] : null,\n\n fields: formValues || [...fields],\n active: true,\n visible: true,\n message: null,\n })\n }\n if (this.state.selectedData) this.handleRadioButton(homebranch || grupo, null)\n })\n }\n\n focusTextYearInput() {\n setTimeout(() => {\n if (this.textYearInput.current) this.textYearInput.current.element.focus()\n }, 500)\n }\n\n handleRadioButton(homebranch, branchemail) {\n const { software_types } = this.state\n\n AjaxApiFetch({\n path: \"library-data\",\n group: `/?library=${homebranch}`,\n }).then((data) => {\n if (data.error) {\n return\n }\n const [{ library, users }] = data || null\n /*\n Request - C17 send Email\n */\n const validSoftware =\n !isEmpty(library.branch_alt_url_form_loan) &&\n !library.branch_alt_url_form_loan.includes(\"c17\") &&\n +library.branch_alt_softloan !==\n software_types.find(({ label }) => label === \"ILL17\").value\n /*\n Request - C17 send Email\n */\n const validUserEmail = users.find((user) => user.tipo_resp === \"Prestamo\")\n const validUserLibrary = users.find((user) => user.tipo_resp === \"Biblioteca\")\n\n let formEmail = \"\"\n let emailInfo = {}\n // Rules, Valid Prestamo, Biblioteca or general emails\n if (validUserEmail) {\n formEmail = validUserEmail.resp_mail\n emailInfo = validUserEmail\n } else if (validUserLibrary) {\n formEmail = validUserLibrary.resp_mail\n emailInfo = validUserLibrary\n } else {\n formEmail = branchemail\n emailInfo = branchemail\n }\n\n this.setState({\n email: formEmail,\n emailInfo,\n software: validSoftware && library.branch_alt_softloan !== \"NO\",\n url: library.branch_alt_url_form_loan || null,\n selected: homebranch,\n active: true,\n })\n })\n }\n\n buildTemplateRadioButton(rowData, column) {\n return (\n \n this.handleRadioButton(rowData.homebranch, rowData.branchemail)\n }\n />\n )\n }\n\n buildTemplateLink(rowData, column) {\n return (\n \n {rowData.branchname}\n \n )\n }\n\n buildItype(rowData, column) {\n return (\n \n {rowData.itype && rowData.itype.toString().replace(/,/g, \" & \")}\n \n )\n }\n\n buildCountry(rowData, column) {\n return (\n \n {country.filter((i) => i.value === rowData.branchcountry)[0].label}\n \n )\n }\n\n buildEnumchron(rowData, column) {\n return rowData.itype.map((i, k) => {\n switch (i) {\n case \"JNL\":\n return (\n \n {i} :{rowData.enumchron[k]}{\" \"}\n {k < rowData.itype.length - 1 && \"&\"}{\" \"}\n \n )\n case \"EJNL\":\n return (\n \n {i} :{rowData.enumchron[k]}{\" \"}\n {k < rowData.itype.length - 1 && \"&\"}{\" \"}\n \n )\n default:\n return (\n \n {i} :{rowData.enumchron[k]}{\" \"}\n {k < rowData.itype.length - 1 && \"&\"}{\" \"}\n \n )\n }\n })\n }\n\n vistLink() {\n const { url } = this.state\n window.open(url)\n }\n\n sendMail() {\n const { fields, biblio, email, selected, software, replyEmail } = this.state\n const { library, user, history } = this.props\n\n if (!user) {\n const state = JSON.stringify(this.state)\n localStorage.setItem(\"request\", state)\n history.push({\n pathname: \"/login\",\n state: {\n prevlocation: {\n pathname: \"/home/request-holdings\",\n },\n },\n })\n\n return false\n }\n window.scrollTo(0, 0)\n\n if (selected && !software && user.categorycode !== \"S\") {\n AjaxApiFetch({\n path: \"request-mail\",\n method: \"POST\",\n group: `?biblionumber=${biblio}&grupo=${selected}&email=${email}&library=${library}&replyEmail=${\n replyEmail || null\n }`,\n data: fields,\n }).then((data) => {\n this.messages.show({\n severity: \"success\",\n summary: `Email enviado correctamente a ${selected}`,\n closable: false,\n detail: \"Email enviado\",\n })\n\n this.setState({\n visible: false,\n selected: false,\n })\n })\n } else {\n this.messages.show({\n severity: \"error\",\n summary: \"Error\",\n closable: false,\n detail: \"Elejir Biblioteca\",\n })\n }\n }\n\n searchForm() {\n const { fields } = this.state\n const params = new URLSearchParams(window.location.search)\n const grupo = params.get(\"grupo\") || null\n const value = fields\n .filter((i) => i.id === \"issn\" || i.id === \"title\")\n .map((i) => i.value)\n const issnInput = document.getElementById(\"issn\")\n if (!isEmpty(value[0]) || !isEmpty(value[1])) {\n this.buildRequest(value[1], value[0], grupo)\n } else {\n issnInput.focus()\n\n this.messages.show({\n severity: \"error\",\n summary: \"Error\",\n closable: false,\n detail: locale[\"Empty Request\"],\n })\n\n this.setState({\n visible: true,\n active: true,\n message: {\n header: `${locale[\"No records found\"]}`,\n message: `${locale[\"Empty Request\"]}`,\n },\n })\n return false\n }\n }\n\n searchClearForm() {\n window.location.search = \"\"\n const { fields } = this.state\n this.setState({\n fields: [\n ...fields.map((i) => {\n i.value = \"\"\n return i\n }),\n ],\n selected: \"\",\n emailInfo: {},\n data: null,\n })\n }\n\n handleFormValues(ev) {\n const { fields } = this.state\n const { id } = ev.target\n const { value } = ev.target\n\n this.setState({\n fields: fields.map((i) => {\n if (i.id === id) i.value = value\n return i\n }),\n })\n }\n\n searchDOI() {\n const params = new URLSearchParams(window.location.search)\n const grupo = params.get(\"grupo\") || null\n\n const { doi_search, fields } = this.state\n const doiSearchInput = document.getElementById(\"doi_value\")\n\n if (!doi_search || isEmpty(trim(doi_search))) {\n doiSearchInput.focus()\n return false\n }\n\n AjaxApiFetch({\n path: \"doi-search\",\n method: \"GET\",\n group: `?doi=${trim(doi_search)}`,\n })\n .then((data) => {\n if (data.error) {\n this.messages.show({\n severity: \"error\",\n summary: \"Error\",\n closable: false,\n detail: \"Error en el Pedido\",\n })\n\n this.setState({\n data: [],\n selected: null,\n active: false,\n email: null,\n })\n\n return\n }\n const string = data.response\n\n const values = string.split(\"},\")\n\n const entry = {}\n\n values.forEach((item) => {\n if (item.includes(\" @article\")) {\n const index = item.lastIndexOf(\"{\")\n const string = item.substr(index + 1)\n\n entry.article = string || \"\"\n }\n if (item.includes(\"ISSN\")) {\n const index = item.indexOf(\"{\")\n const string = item.substr(index + 1)\n\n entry.issn = string || \"\"\n }\n if (item.includes(\"year\")) {\n const index = item.indexOf(\"{\")\n const string = item.substr(index + 1)\n\n entry.year = string || \"\"\n }\n if (item.includes(\"journal\")) {\n const index = item.indexOf(\"{\")\n const string = item.substr(index + 1)\n\n entry.journal = string || \"\"\n }\n if (item.includes(\"publisher\")) {\n const index = item.indexOf(\"{\")\n const string = item.substr(index + 1)\n entry.publisher = string || \"\"\n }\n if (item.includes(\"author\")) {\n const index = item.indexOf(\"{\")\n const string = item.substr(index + 1)\n entry.author = string || \"\"\n }\n })\n\n this.setState({\n date: entry.year,\n fields: fields.map((field) => {\n if (field.id === \"issn\") field.value = entry.issn\n if (field.id === \"editor\") field.value = entry.publisher\n if (field.id === \"title\") field.value = entry.journal\n if (field.id === \"year\") field.value = entry.year\n if (field.id === \"article\") field.value = entry.article\n if (field.id === \"author\") field.value = entry.author\n if (field.id === \"edition\") field.value = entry.year\n return field\n }),\n loading: false,\n })\n\n this.buildRequest(entry.issn, \"\", grupo)\n })\n .catch((error) => {\n console.log(error)\n })\n .then(() => {\n this.focusTextYearInput()\n })\n\n this.setState({\n loading: true,\n })\n }\n\n getPMID(event) {\n const params = new URLSearchParams(window.location.search)\n const grupo = params.get(\"grupo\") || null\n const doiInput = document.getElementById(\"pmid_value\")\n const pmid = trim(doiInput.value)\n const { fields } = this.state\n\n if (isEmpty(trim(pmid))) {\n doiInput.focus()\n return false\n }\n\n this.setState({\n loading: true,\n })\n\n axios\n .get(\n `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=${pmid}`\n )\n .then((response) => {\n const result = new XML().parseFromString(response.data)\n const children = result.children.pop()\n const children_values = children.children.pop()\n const final = children_values.children\n\n if (final.length > 0) {\n const mapped = final.map((i) => {\n let values = []\n if (i.children.length > 0) values = i.children.map((i) => i.value)\n return {\n id: i.name,\n type: i.attributes.Name,\n value: i.value.length > 0 ? i.value : values.toString(),\n }\n })\n const results = fields.map((i) => {\n mapped.filter((item) => {\n if (item.type === i.map) {\n i.value = item.value\n return i\n }\n return false\n })\n return i\n })\n const dateString = results[4] && (results[4].value || \"\")\n\n const dates = dateString\n .split(\" \")\n .filter((year) => year.match(/^[12][0-9]{3}$/))\n\n this.setState({\n fields: results,\n date: dates.toString(),\n loading: false,\n })\n const issn = fields && fields.filter((i) => i.id === \"issn\").pop().value\n const title = fields && fields.filter((i) => i.id === \"title\").pop().value\n\n if (grupo) {\n this.buildRequest(issn, title, grupo)\n } else {\n this.buildRequest(issn, title, null)\n }\n } else {\n this.setState({\n fields: fields.map((i) => {\n i.value = \"\"\n return i\n }),\n data: [],\n selected: null,\n active: false,\n email: null,\n })\n }\n })\n .catch((error) => {\n console.log(error)\n })\n .then(() => {\n this.focusTextYearInput()\n })\n }\n\n onCityChange(event) {\n this.dt.filter(event.target.value, \"branchcity\", \"equals\")\n this.setState({ branchcity: event.target.value })\n }\n\n onDateSearch(ev) {\n this.setState({ date: ev.target.value })\n }\n\n setCoutryChange(ev) {\n const branchcountry = ev.value\n this.setState({ branchcountry })\n if (ev.value === \"ALL\") this.dt.filter(null, \"branchcountry\", \"equals\")\n else this.dt.filter(ev.value, \"branchcountry\", \"equals\")\n }\n\n yearFilter(value, year) {\n const comma = value.filter((i) => {\n const years = i.split(\",\")\n if (years.length > 0) return years.map((y) => y === year).includes(true)\n return false\n })\n // case Parentisis\n const parentisis = value.map((i) => {\n const item = i.match(/\\(([^)]+)\\)/g)\n if (!item) return false\n return item.map((e) => {\n if (e === year) return true\n\n const element = e.replace(\"(\", \"\").replace(\")\", \"\")\n\n if (element.includes(\"-\")) {\n let y1 = element.split(\"-\")[0]\n let y2 = element.split(\"-\")[1]\n\n if (y1 && y1.length <= 2) y1 = +y1 <= 99 ? `19${y1}` : `20${y1}`\n if (y2 && y2.length <= 2) {\n y2 = +y2 <= 99 ? `19${y2}` : `20${y2}`\n }\n\n if (y1 && y1.length <= 2) y1 = +y1 <= 99 ? `19${y1}` : `20${y1}`\n if (y2 && y2.length <= 2) {\n y2 = +y2 <= 99 ? `19${y2}` : `20${y2}`\n }\n return +y1 && +y1 <= +year && y2 && +y2 >= +year\n }\n return false\n })\n })\n\n // case hifen\n const hifen = value.map((i) => {\n let interval\n if (i.includes(\"-\")) {\n interval = i.split(\"-\")\n } else {\n return false\n }\n\n if (interval.length <= 1) {\n if (interval[0].includes(year)) {\n return true\n }\n return false\n }\n if (interval.length > 1) {\n let y1 = interval[0]\n let y2 = interval[1]\n\n y1 = y1.includes(\"(\") ? y1.split(\"(\")[1] : y1\n y2 = y2.includes(\")\") ? y2.split(\")\")[0] : y2\n\n if (y1 && y1.length <= 2) y1 = +y1 <= 99 ? `19${y1}` : `20${y1}`\n if ((y2 && y2.length <= 2) || (y2.length <= 3 && y2.includes(\".\"))) {\n y2 = `${y1[0]}${y1[1]}${y2}`\n }\n\n if (y2 === \"\") return +y1 && +y1 <= +year\n return +y1 && +y1 <= +year && y2 && +y2 >= +year\n }\n return false\n })\n\n const a = hifen.includes(true)\n const b = parentisis.includes(true)\n const c = comma.includes(true)\n const results = [a, b, c]\n return results.includes(true)\n }\n\n renderMessage() {\n const { message, visible } = this.state\n const params = new URLSearchParams(window.location.search)\n const isGrupo = !!params.get(\"grupo\")\n\n if (!message || isGrupo) return
\n return (\n this.setState({ visible: false })}\n >\n

{message.message}

\n \n )\n }\n\n setReplyEmail({ target }) {\n this.setState({\n replyEmail: target.value,\n })\n }\n\n renderResults() {\n const { empty, data, software, selected, email, emailInfo } = this.state\n\n function filterFunction(value, filter) {\n const v = removeDiacritics(value.toLowerCase())\n const f = removeDiacritics(filter.toLowerCase())\n\n if (v.includes(f)) return true\n return false\n }\n\n function filterCode(value, filter) {\n if (value.toUpperCase().includes(filter.toUpperCase())) return true\n return false\n }\n\n const countryFilter = (\n \n )\n\n const header = (\n
\n \n \n \n {\n this.setState({ date: e.target.value })\n return this.dt.filter(e.target.value, \"enumchron\", \"custom\")\n }}\n onFocus={(e) => this.dt.filter(e.target.value, \"enumchron\", \"custom\")}\n placeholder=\"Año\"\n value={this.state.date}\n size=\"50\"\n />\n
\n
\n \n this.dt.filter(e.target.value, \"itype\", \"startsWith\")}\n placeholder=\"Tipo de Fondo\"\n size=\"50\"\n />\n
\n
\n \n {\n this.dt.filter(e.target.value, \"homebranch\", \"custom\")\n }}\n placeholder=\"Code\"\n size=\"50\"\n />\n
\n
\n \n \n
\n
\n \n {\n this.dt.filter(e.target.value, \"branchcity\", \"custom\")\n }}\n placeholder=\"Ciudad\"\n size=\"50\"\n />\n
\n
\n )\n if (empty) {\n return (\n \n {this.renderMessage()}\n {locale[\"empty results\"]}\n \n )\n } else {\n return (\n
\n {selected && (\n
\n
\n Responsable: \n {emailInfo && emailInfo.resp}\n
\n

\n Email: \n {emailInfo && emailInfo.resp_mail}\n

\n

\n {\" \"}\n Teléfono: \n {emailInfo && emailInfo.resp_tel}\n

\n Envio de la solicitud a: {email}{\" \"}\n {`(${selected})`}\n
\n )}\n\n {software ? (\n

\n {selected} {locale[\"software message\"]}\n

\n ) : (\n \"\"\n )}\n\n \n
\n
\n\n
\n\n

{locale[\"filter results\"]}

\n\n (this.dt = el)}\n value={data}\n paginator\n rows={50}\n rowsPerPageOptions={[50, 100, 200]}\n header={header}\n >\n \n \n\n \n \n \n \n \n \n\n {selected && (\n
\n

\n Envio de la solicitud a: {email}{\" \"}\n {`(${selected})`}\n

\n
\n )}\n\n {software ? (\n

\n {selected} {locale[\"software message\"]}\n

\n ) : (\n \"\"\n )}\n\n \n {this.renderMessage()}\n
\n )\n }\n }\n\n render() {\n const { fields } = this.state\n\n return (\n
\n

Solicitar Artículo

\n\n (this.messages = el)} />\n\n

Puede buscar publicaciones por PMID / DOI

\n\n \n \n e.charCode === 13 && this.getPMID(e)}\n />\n this.getPMID(e)}\n />\n \n\n \n \n \n this.setState({\n doi_search: target.value,\n })\n }\n />\n this.searchDOI(e)}\n />\n \n\n {this.state.loading && (\n

\n
A cargar datos\n \n

\n )}\n\n
\n\n

Puede buscar publicaciones por Título de la publicación y Issn-Isbn

\n {fields &&\n fields.map((i) => (\n \n ))}\n\n
\n this.searchForm(e)}\n />{\" \"}\n this.searchClearForm(e)}\n />\n
\n
\n\n {this.renderResults()}\n
\n )\n }\n}\n","import React, { Component } from \"react\"\nimport { Messages } from \"primereact/messages\"\nimport { InputText } from \"primereact/inputtext\"\nimport { Button } from \"primereact/button\"\nimport { Dialog } from \"primereact/dialog\"\nimport { Checkbox } from \"primereact/checkbox\"\nimport { Dropdown } from \"primereact/dropdown\"\nimport { connect } from \"react-redux\"\nimport { InputMask } from \"primereact/inputmask\"\nimport { InputSwitch } from \"primereact/inputswitch\"\nimport validator from \"validator\"\n\nimport FormValidator from \"../Utils/FormValidator\"\nimport { AjaxApiFetch } from \"../Utils/ajaxApiFetch\"\nimport * as HOLDINGS from \"../constants/holdings\"\nimport { locale } from \"../constants/language.config\"\nimport { find, includes } from \"lodash\"\n\nconst mapStateToProps = (state) => ({\n state,\n})\n\n/*\n Review defaults\n*/\n\nconst defaultValues = {\n tipo_de_carga: 0,\n grupo: \"\",\n issn: \"\",\n tipo_fondo: \"\",\n titulo: \"\",\n fondo: \"\",\n embargo: \"\",\n \"Paquete-e\": \"\",\n id_inc: \"\",\n solicit: \"\",\n id_inc_padre: \"1\",\n}\n\nconst order = {\n issn: \"\",\n biblionumber: \"\",\n titulo: \"\",\n barcode: \"\",\n tipo_fondo: \"\",\n \"Paquete-e\": \"\",\n embargo: \"\",\n fondo: \"\",\n}\nconst user = JSON.parse(localStorage.getItem(\"user\"))\n\nexport class Holdings extends Component {\n constructor(props) {\n super(props)\n const form = null\n this.state = {\n user,\n form,\n checked: false,\n fields: HOLDINGS.HOLDINGS_VALUES.FORM,\n libraries:\n user && user?.group_children.length > 0\n ? user.group_children.map((i) => i.Libraries)\n : [],\n template: user?.is_parent ? user?.tipo_fondo_consorcio : null,\n list: user?.group_children,\n message: { header: \"\", message: \"\" },\n type: user && user.group_children?.length > 0 ? 1 : 0,\n valid: null,\n holdingType: user?.tipo_fondo_consorcio || null,\n }\n this.onLibraryChange = this.onLibraryChange.bind(this)\n }\n\n componentDidMount() {\n const { insert } = this.props\n const user = JSON.parse(localStorage.getItem(\"user\"))\n\n this.setState({\n user,\n edit: true,\n holdings: true,\n publish: false,\n insert,\n type: user && user.group_children?.length > 0 ? 1 : 0,\n list: user.is_parent ? user.group_children : [],\n libraries:\n user && user?.group_children.length > 0\n ? user.group_children.map((i) => i.Libraries)\n : [],\n holdingType: user.tipo_fondo_consorcio || null,\n form: this.valuesForForm(\n {\n ...defaultValues,\n tipo_de_carga: user && user.group_children?.length > 0 ? 1 : 0,\n tipo_fondo: user.tipo_fondo_consorcio || null,\n },\n HOLDINGS.HOLDINGS_VALUES.FORM\n ),\n template: user.is_parent ? user.tipo_fondo_consorcio : [],\n })\n if (!this.props.match) return\n\n const { id, hold, type } = this.props.match.params\n const query = hold\n const group = id\n\n AjaxApiFetch({\n path: \"holdings-edit\",\n group: `/?id=${query}&type=${type}&group=${group}&parent=${user.is_parent}`,\n }).then((data) => {\n const ordered = type === \"barcode\" ? { ...order, ...data.values } : data.values\n const formValues = this.valuesForForm(ordered, HOLDINGS.HOLDINGS_VALUES.FORM)\n const holdingType = this.getHoldingsType(formValues)\n this.setState({\n holdingType,\n form: formValues,\n })\n })\n }\n\n componentDidUpdate(prevProps) {\n const { form } = this.props\n if (prevProps.form && form && prevProps.form.issn !== form.issn) {\n this.updateState(\n Object.keys(form).map((i) => {\n return { id: i, value: form[i] ? form[i] : \"\", label: i }\n })\n )\n }\n }\n\n getHoldingsType(form) {\n const { template } = this.state\n const type = form.find(({ id }) => id === \"tipo_fondo\")\n return type.value || template\n }\n\n validateForm() {\n const { form, fields, checked } = this.state\n const rules = Object.values(fields)\n const validationRulesRemaped = rules.map((i) => {\n //\n // Could be placed as options @ holdings\n //\n if (i.id === \"issn\" && checked) {\n i.options = 13\n i.method = validator.isISBN\n }\n return i\n })\n const formValidator = new FormValidator(validationRulesRemaped)\n const validation = formValidator.validate(\n form.reduce((a, i) => {\n a[i.id] = i.value\n return a\n }, {})\n )\n const updatedState = { ...fields }\n for (const k in validation) {\n for (const m in validation[k]) {\n updatedState[k][m] = validation[k][m]\n }\n }\n const isValid =\n Object.values(updatedState).filter((i) => i.isInvalid).length <= 0\n this.setState({\n fields: updatedState,\n holdingType: this.getHoldingsType(form),\n form: form.map((item) => {\n const key = updatedState[item.id]\n if (key) {\n item.isInvalid = key.isInvalid\n }\n return item\n }),\n valid: isValid,\n })\n\n return isValid\n }\n\n setInputValue(event) {\n const { id } = event.target\n const value = event.value || event.target.value\n const { form, list, user, holdingType } = this.state\n const edit = form.map((i) => {\n const item = { ...i }\n if (item.id.toLowerCase() === id.toLowerCase()) {\n item.value = item.id === \"issn\" ? value.toUpperCase() : value\n }\n // if (item.id === \"tipo_fondo\") {\n // item.value = holdingType\n // }\n return item\n })\n\n if (id === \"tipo_de_carga\" && value === 1) {\n this.setState({\n libraries: list.map((i) => i.Libraries),\n type: value,\n holdingType: user.tipo_fondo_consorcio,\n })\n } else if (id === \"tipo_de_carga\" && (value === 0 || value !== 1)) {\n this.setState({\n libraries: [],\n type: value,\n holdingType: value > 1 ? user.tipo_fondo_consorcio : \"\",\n })\n }\n\n if (id === \"tipo_fondo\") {\n this.setState({\n holdingType: value,\n form: edit,\n })\n }\n this.setState({\n form: edit,\n })\n\n // this.validateForm(this.state.form)\n }\n\n updateState(data) {\n const issnRow = data.filter((i) => i.id === \"issn\").pop()\n const hasIssn = issnRow.value !== \"\"\n this.setState({\n form: data,\n hasIssn,\n })\n }\n\n valuesForForm(form, fields) {\n if (!form) return false\n\n if (Object.values(form) <= 0) return\n\n return Object.keys(form).reduce((total, i, k) => {\n const filteredKeys = Object.values(fields)\n .filter((item) => item.id === i)\n .pop()\n if (filteredKeys) {\n filteredKeys.value = form[i]\n total.push(filteredKeys)\n }\n return total\n }, [])\n }\n\n renderInputForm(form, fields) {\n const { insert, group } = this.props\n const { list, checked } = this.state\n\n const isChild = list && list.filter((i) => i.Libraries === group).length > 0\n if (!form) return false\n\n const inputForm = insert\n ? form.filter((i) => i.id !== \"barcode\" && i.id !== \"biblionumber\")\n : form\n const biblionumber = form.find(({ id }) => id === \"biblionumber\")\n const hasBiblionumber = !!biblionumber\n\n return inputForm && inputForm.length > 0\n ? inputForm.map((i, k) => {\n return i.id !== \"tipo_fondo\" && i.id !== \"tipo_de_carga\" ? (\n \n \n\n {i.id !== \"issn\" && (\n this.setInputValue(e)}\n onBlur={(e) => this.setInputValue(e)}\n />\n )}\n\n {i.id === \"issn\" && (\n <>\n \n this.setState({ checked: e.value })}\n />\n \n {!checked ? (\n this.setInputValue(e)}\n value={i.value}\n />\n ) : (\n \n this.setInputValue(e)}\n value={i.value}\n />\n \n )}\n \n )}\n \n ) : (\n
\n {i.id !== \"tipo_de_carga\" && (\n \n )}\n\n {!isChild && i.id === \"tipo_de_carga\" && (\n
\n \n\n this.setInputValue(e)}\n />\n
\n )}\n\n {i.id === \"tipo_fondo\" && (\n this.setInputValue(e)}\n style={{\n borderColor:\n fields[i.id] && fields[i.id].isInvalid ? \"red\" : \"gray\",\n }}\n />\n )}\n
\n )\n })\n : \"No Data\"\n }\n\n valuesForSelect(value) {\n const { template, user, type } = this.state\n\n let values =\n type === 0\n ? HOLDINGS.HOLDINGS_VALUES.TEMPLATE\n : [...HOLDINGS.HOLDINGS_VALUES.TEMPLATE, user.tipo_fondo_consorcio]\n if (template && template.length) {\n values =\n type === 0\n ? HOLDINGS.HOLDINGS_VALUES.TEMPLATE\n : [...HOLDINGS.HOLDINGS_VALUES.TEMPLATE, template]\n }\n if (value.id === \"tipo_fondo\")\n return values.map((i) => ({\n label: i,\n value: i,\n disabled: type === 1 || type === 2,\n }))\n return find(user.group_children, { Libraries: user.firstname }) ?\n [{\n label: HOLDINGS.HOLDINGS_VALUES.TEMPLATE_CONSORCIUM[0],\n value: 0,\n }]\n : HOLDINGS.HOLDINGS_VALUES.TEMPLATE_CONSORCIUM.map((i, k) => ({\n label: i,\n value: k,\n }))\n }\n\n printMessage(severity, status, detail) {\n this.messages.show({\n severity,\n summary: status,\n closable: false,\n detail,\n })\n }\n\n openMessage() {\n const { form, holdingType, template } = this.state\n const isValid = this.validateForm()\n\n if (!isValid) {\n this.printMessage(\"error\", `${locale[\"Fill all fields\"]}`)\n return\n }\n\n if (isValid && holdingType === template) {\n this.setState((prevState) => {\n return {\n ...prevState,\n visible: true,\n valid: true,\n message: {\n header: \"Tipo de fondo EJNL\",\n message:\n \"Tipo de fondo EJNL-%' es un fondo consorciado y se cargará en todas las bibliotecas de la red\",\n onclick: () => {\n this.saveForm()\n },\n },\n }\n })\n } else if (isValid && (holdingType === \"JNL\" || holdingType === \"EJNL\")) {\n this.saveForm()\n } else {\n this.setState({\n valid: false,\n })\n }\n }\n\n saveForm() {\n const { id } = this.props.match?.params || { id: null }\n\n const { form, libraries, hasIssn, user, valid } = this.state\n const { insert, edit, group } = this.props || false\n const isParent = id === user.userid\n const data = { form, libraries }\n const barcode = form.filter((i) => i.id === \"barcode\").pop()\n const issn = form.filter((i) => i.id === \"issn\").pop()\n const id_inc = form.filter((i) => i.id === \"id_inc\").pop()\n const biblionumber = form.filter((i) => i.id === \"biblionumber\").pop()\n\n const [parent] = user.group_id\n const type = user.tipo_fondo_consorcio\n const parentName = parent?.nombre_padre || null\n this.setState({\n visible: false,\n message: {},\n })\n AjaxApiFetch({\n path: insert ? \"insert-holdings-data\" : \"update-holdings-data\",\n group: `/?edit=${edit}&insert=${insert}${insert\n ? `&group=${group}&parent=${isParent}&parentName=${group}`\n : barcode\n ? `&barcode=${barcode.value}&biblionumber=${biblionumber.value}&parent=${isParent}&type=${type}&parentName=${parentName}`\n : hasIssn\n ? `&issn=${issn.value}`\n : `&id_inc=${id_inc.value}`\n }`,\n method: \"POST\",\n data,\n }).then((data) => {\n if (data.error || data.code) {\n this.printMessage(\"error\", `${locale[\"Failed for center\"]}`)\n } else {\n this.printMessage(\"success\", `${locale[\"Success holding loaded\"]}`)\n\n this.setState({\n valid: false,\n form: insert\n ? this.valuesForForm(defaultValues, HOLDINGS.HOLDINGS_VALUES.FORM)\n : form,\n })\n }\n })\n }\n\n onLibraryChange(e) {\n const selectedLibraries = [...this.state.libraries]\n if (e.checked) selectedLibraries.push(e.value)\n else selectedLibraries.splice(selectedLibraries.indexOf(e.value), 1)\n this.setState({ libraries: selectedLibraries })\n }\n\n pushBack(e) {\n const { back } = this.props\n this.setState({\n form: [],\n })\n back(e)\n }\n\n render() {\n const { form, fields, list, message, holdingType, template } = this.state\n const { insert, user, parent, history } = this.props\n\n return (\n <>\n history.goBack()}\n />\n {this.renderInputForm(form, fields)}\n\n {insert && parent && user\n ? list.map((i) => (\n
\n
\n \n \n
\n ))\n : \"\"}\n
\n this.openMessage(e)}\n />\n\n {message && holdingType === template && (\n this.setState({ visible: false })}\n >\n

{message.message}

\n\n this.setState({ visible: false })}\n />\n\n \n \n )}\n\n (this.messages = el)} />\n
\n \n )\n }\n}\n\nexport default connect(mapStateToProps)(Holdings)\n","import React, { Component } from \"react\"\nimport { DataTable } from \"primereact/datatable\"\nimport { Column } from \"primereact/column\"\nimport { InputText } from \"primereact/inputtext\"\nimport { Button } from \"primereact/button\"\nimport { Messages } from \"primereact/messages\"\nimport { ProgressSpinner } from \"primereact/progressspinner\"\nimport { AjaxApiFetch } from \"../Utils/ajaxApiFetch\"\nimport { locale } from \"../constants/language.config\"\n\nexport class Logs extends Component {\n constructor(props) {\n super(props)\n this.buildTable = this.buildTable.bind(this)\n this.loadFileTemplate = this.loadFileTemplate.bind(this)\n this.loadFileTemplateAction = this.loadFileTemplateAction.bind(this)\n this.state = {\n library: this.props.group,\n rows: [],\n columns: [],\n message: { header: \"\", message: \"\" },\n loading: false,\n }\n }\n\n buildTable(data) {\n const columns =\n data.length > 0\n ? Object.keys(data[0]).map((i) => ({ field: i, header: i }))\n : []\n this.setState({\n rows: data,\n columns,\n })\n }\n\n componentDidMount() {\n const { library } = this.state\n const config = {\n path: \"uploads-log\",\n group: `?library=${library}`,\n }\n AjaxApiFetch(config).then((data) => {\n if (data.error) return\n this.buildTable(data)\n })\n }\n\n loadFileTemplateAction(e) {\n const id = e\n const { library } = this.state\n const { consorcio } = this.props\n\n const config = {\n path: \"upload-file\",\n group: `?library=${library}&consorcio=${consorcio}&id=${id}`,\n }\n this.setState({\n loading: true,\n })\n\n AjaxApiFetch(config).then((data) => {\n if (data.error) {\n this.messages.show({\n severity: \"error\",\n summary: \"Fondos\",\n closable: false,\n detail: `${data.error}`,\n })\n } else {\n this.messages.show({\n severity: \"success\",\n summary: \"Fondos\",\n closable: false,\n detail: \"Petición actualizada\",\n })\n }\n this.setState({\n loading: false,\n })\n })\n }\n\n loadFileTemplate(rowData, column) {\n if (column.field === \"upload\") {\n return (\n this.loadFileTemplateAction(rowData.path)}\n id={rowData.path}\n icon=\"pi pi-upload\"\n label=\"Importar\"\n >\n {rowData[\"Tipo de Fondo\"]}\n \n )\n }\n return rowData[column.field]\n }\n\n render() {\n const { rows, columns } = this.state\n const dynamicColumns = columns\n .filter(\n (col) =>\n col.field !== \"branchname\" && col.field !== \"id\" && col.field !== \"path\"\n )\n .concat([{ field: \"upload\", header: \"upload\" }])\n .map((col, i) => (\n \n ))\n const header = (\n
\n
\n \n this.setState({})}\n size=\"50\"\n />\n
\n
\n \n
\n
\n )\n\n return (\n <>\n {this.state.loading && (\n <>\n \n
\n
\n \n )}\n (this.messages = el)} />\n (this.dt = el)}\n value={rows}\n paginator\n header={header}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n \n )\n }\n}\n//\n","import React, { Component } from \"react\"\nimport { Button } from \"primereact/button\"\nimport { Row, Col } from \"react-bootstrap\"\nimport { Messages } from \"primereact/messages\"\nimport { Dialog } from \"primereact/dialog\"\n\nimport { ProgressSpinner } from \"primereact/progressspinner\"\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\n\nexport class HoldingsButtons extends Component {\n constructor(props) {\n super(props)\n this.state = {\n loading: false,\n }\n this.deleteHoldings = this.deleteHoldings.bind(this)\n }\n\n deleteHoldings(type, label) {\n const { live, group, handleUpdate } = this.props\n\n this.setState({\n visible: true,\n message: {\n header: `${label}`,\n message: `${label} - ${type} de ${group}`,\n onclick: () => {\n this.setState({\n loading: true,\n message: null,\n })\n\n AjaxApiFetch({\n path: \"delete-holdings-batch\",\n edit: `?group=${group}&live=${live}&type=${type}`,\n }).then((data) => {\n if (data.error) {\n this.messages.show({\n severity: \"error\",\n summary: \"Fondos\",\n closable: false,\n detail: data.error,\n })\n } else {\n handleUpdate()\n this.messages.show({\n severity: \"success\",\n summary: \"Fondos\",\n closable: false,\n detail: data.success,\n })\n }\n this.setState({\n loading: false,\n })\n })\n },\n },\n })\n }\n\n render() {\n const { message } = this.state\n return (\n
\n {this.state.loading && (\n <>\n \n
\n
\n \n )}\n \n \n \n this.deleteHoldings(\"EJNL-\", \"Borrar fondos consorciados\")\n }\n label=\"Borrar fondos consorciados\"\n className=\"p-button-rounded remove\"\n />\n \n \n this.deleteHoldings(\"JNL\", \"Borrar fondos impresos\")}\n label=\"Borrar fondos impresos\"\n className=\"p-button-rounded remove\"\n />\n \n \n \n this.deleteHoldings(\"EJNL\", \"Borrar fondos electrónicos\")\n }\n label=\"Borrar fondos electrónicos\"\n className=\"p-button-rounded remove\"\n />\n \n \n\n {message && (\n this.setState({ visible: false })}\n >\n

{message.message}

\n\n this.setState({ visible: false })}\n />\n\n \n \n )}\n\n (this.messages = el)} />\n
\n )\n }\n}\n","import React, { Component } from \"react\"\nimport { TabView, TabPanel } from \"primereact/tabview\"\nimport { Switch, Route } from \"react-router-dom\"\nimport { Dropdown } from \"primereact/dropdown\"\nimport { Checkbox } from \"primereact/checkbox\"\nimport { DataGrid } from \"../DataGrid\"\nimport { Upload } from \"../Forms/Upload\"\nimport { Holdings } from \"../Holdings\"\nimport { Logs } from \"../Logs\"\nimport { HoldingsButtons } from \"./HoldingsButtons\"\nimport * as HOLDINGS from \"../../constants/holdings\"\n\nclass HoldingsTemplate extends Component {\n constructor(props) {\n super(props)\n this.state = {\n activeIndex: 0,\n update: false,\n list: JSON.parse(localStorage.getItem(\"user\")).group_children,\n libraries:\n props.user && props.user?.group_children.length > 0\n ? JSON.parse(localStorage.getItem(\"user\")).group_children.map(\n (i) => i.Libraries\n )\n : [],\n selected: props.user && props.user?.group_children.length > 0 ? 1 : 0,\n loading: false,\n }\n this.handleOnTabChange = this.handleOnTabChange.bind(this)\n this.handleUpdate = this.handleUpdate.bind(this)\n this.handleOnLibraryChange = this.handleOnLibraryChange.bind(this)\n }\n\n componentDidMount() {\n const { match } = this.props\n let url\n if (match.url.includes(\":tab\")) url = match.url.replace(\":tab\", \"0\")\n else url = match.url\n this.props.history.push(url)\n }\n\n handleOnLibraryChange(e) {\n const selectedLibraries = [...this.state.libraries]\n if (e.checked) selectedLibraries.push(e.value)\n else selectedLibraries.splice(selectedLibraries.indexOf(e.value), 1)\n this.setState({ libraries: selectedLibraries })\n }\n\n handleOnTabChange(event) {\n this.setState({ activeIndex: event.index })\n this.props.history.push(`/home/holdings/self/${event.index}`)\n }\n\n handleUpdate() {\n this.setState({\n update: true,\n })\n setTimeout(() => {\n this.setState({\n update: false,\n })\n }, 250)\n }\n\n setInputValue(event) {\n const { id } = event.target\n const value = event.value || event.target.value\n const { list } = this.state\n\n if (id === \"tipo_de_carga\" && value === 1) {\n this.setState({\n libraries: list.map((i) => i.Libraries),\n })\n } else if (id === \"tipo_de_carga\" && (value === 0 || value !== 1)) {\n this.setState({\n libraries: [],\n })\n }\n this.setState({\n selected: value,\n })\n }\n\n render() {\n const { match, history, group, user, parent } = this.props\n const { tipo_fondo_consorcio } = (user && user.tipo_fondo_consorcio) || \"\"\n const id = group || match.params.id\n const { tab } = match.params\n const { list, libraries } = this.state\n const isParent = user && user.is_parent\n return (\n
\n

Gestión de Fondos

\n this.handleOnTabChange(e)}>\n \n

Publicar desde fichero

\n \n\n {isParent && (\n ({\n label: i,\n value: k,\n })\n )}\n id=\"tipo_de_carga\"\n value={this.state.selected}\n placeholder=\"Select\"\n onChange={(e) => this.setInputValue(e)}\n />\n )}\n\n {(isParent && user)\n ? list.map((i, index) => (\n
\n
\n \n \n
\n ))\n : null}\n\n
\n \n
\n\n

\n


\n El sistema acepta ficheros CSV y XLSX, antes de cargar el fichero\n asegúrese de que tiene rellenado todos los campos. Si tiene cualquier\n problema o duda envíe el fichero en excel a cncs@orex.es lo\n verificaremos y nos pondremos en contacto con usted.\n

\n\n \n
\n {/* Can i dedup */}\n\n \n

Añadir fondo suelto

\n \n
\n\n \n

\n Fondos de revistas pendientes de revisión y de publicación en el OPAC\n

\n\n \n \n \n \n \n\n (\n \n )}\n />\n \n \n \n

Fondos de revistas publicadas en el OPAC

\n \n \n \n \n \n\n (\n \n )}\n />\n \n
\n
\n
\n )\n }\n}\nexport default HoldingsTemplate\n","import React, { Component } from \"react\"\nimport { TabView, TabPanel } from \"primereact/tabview\"\nimport { Switch, Route } from \"react-router-dom\"\nimport { DataGrid } from \"../DataGrid\"\nimport { Holdings } from \"../Holdings\"\nimport { HoldingsButtons } from \"./HoldingsButtons\"\n\nclass HoldingsTemplateParent extends Component {\n constructor(props) {\n super(props)\n this.state = {\n activeIndex: 0,\n }\n this.handleOnTabChange = this.handleOnTabChange.bind(this)\n this.handleUpdate = this.handleUpdate.bind(this)\n }\n\n handleOnTabChange(event) {\n const { match } = this.props\n const { id } = match.params\n this.setState({ activeIndex: event.index })\n this.props.history.push(`/home/groups/parent/${event.index}/${id}`)\n }\n\n handleUpdate() {\n this.setState({\n update: true,\n })\n setTimeout(() => {\n this.setState({\n update: false,\n })\n }, 250)\n }\n\n render() {\n const { match, history, parent } = this.props\n const { id, tab } = match.params\n return (\n <>\n

{`Gestión de Fondos - Biblioteca ${id}`}

\n this.handleOnTabChange(e)}>\n {/* Can i dedup */}\n\n \n

Añadir fondo suelto

\n \n
\n \n

\n Fondos de revistas pendientes de revisión y de publicación en el OPAC\n

\n \n \n \n \n \n\n (\n \n )}\n />\n \n \n \n

Fondos de revistas publicadas en el OPAC

\n \n \n \n \n \n\n (\n \n )}\n />\n \n
\n
\n \n )\n }\n}\nexport default HoldingsTemplateParent\n","import React, { Component } from \"react\"\nimport { Tabs, Tab } from \"react-bootstrap\"\nimport { Button } from \"primereact/button\"\nimport { InputMask } from \"primereact/inputmask\"\nimport { InputText } from \"primereact/inputtext\"\nimport { Messages } from \"primereact/messages\"\nimport { Upload } from \"../Forms/Upload\"\nimport { DataGrid } from \"../DataGrid\"\nimport { locale } from \"../../constants/language.config\"\n\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\n\nclass BlackListTemplate extends Component {\n constructor(props) {\n super(props)\n this.state = {\n title: \"\",\n issn: \"\",\n refresh: false,\n }\n\n this.saveBlacklistForm = this.saveBlacklistForm.bind(this)\n this.printMessage = this.printMessage.bind(this)\n }\n\n printMessage(severity, status, detail) {\n this.messages.show({\n severity,\n summary: status,\n closable: false,\n detail,\n })\n }\n\n saveBlacklistForm(ev) {\n const { issn, title } = this.state\n AjaxApiFetch({\n path: \"upload-blacklist-single\",\n method: \"POST\",\n data: { issn, title },\n })\n .then((data) => {\n this.printMessage(\"success\", `${locale[\"Blacklist data inserted\"]}`)\n\n this.setState({\n refresh: true,\n })\n })\n .then((d) => {\n this.setState({\n refresh: false,\n })\n })\n this.setState({\n refresh: false,\n })\n }\n\n render() {\n const { history, user, path } = this.props\n const { libraries } = this.state\n\n return (\n
\n \n \n

Lista de Blacklist

\n \n
\n \n {/* COmponent */}\n

Anadir a Blacklist

\n \n this.setState({ issn: e.target.value.toUpperCase() })}\n />\n\n \n this.setState({ title: e.target.value })}\n />\n
\n this.saveBlacklistForm(e)}\n />\n \n (this.messages = el)} />\n \n
\n\n \n

Subir Fichero

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

\n


\n El sistema acepta ficheros CSV y XLSX, antes de cargar el fichero\n asegúrese de que tiene rellenado todos los campos. Si tiene cualquier\n problema o duda envíe el fichero en excel a cncs@orex.es lo\n verificaremos y nos pondremos en contacto con usted.\n

\n
\n
\n
\n )\n }\n}\nexport default BlackListTemplate\n","import React, { Component } from \"react\"\nimport { Button } from \"primereact/button\"\nimport { InputText } from \"primereact/inputtext\"\nimport { DataTable } from \"primereact/datatable\"\nimport { Column } from \"primereact/column\"\nimport sw from \"stopword\"\n\nimport { LIBRARY } from \"../../constants/library\"\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\nimport { locale } from \"../../constants/language.config\"\n\nfunction filterStrings(string) {\n const es = sw.removeStopwords(string, sw.es)\n const pt = sw.removeStopwords(es, sw.pt)\n return sw.removeStopwords(pt)\n}\n\nclass IssnTemplate extends Component {\n constructor(props) {\n super(props)\n this.state = {\n group: null,\n data: null,\n columns: [],\n rows: [],\n }\n\n this.holdingsEditTemplate = this.holdingsEditTemplate.bind(this)\n this.holdingsEditLog = this.holdingsEditLog.bind(this)\n }\n\n setSearchValue(e) {\n this.setState({\n group: e.target.value,\n })\n }\n\n getData() {\n const { group } = this.state\n const fields = LIBRARY.FIELDS.library\n AjaxApiFetch({\n path: \"manage-issn-data\",\n group: `/?group=${group}`,\n }).then((data) => {\n this.setState({\n rows: data,\n columns:\n data.length > 0\n ? Object.keys(data[0])\n .map((i) => ({\n field: i,\n header: fields[i] ? fields[i].label : i,\n }))\n .concat([{ field: \"search\", header: \"Search\" }])\n : [],\n })\n })\n }\n\n buildTemplates(field) {\n switch (field.field) {\n case \"issn\":\n return this.holdingsEditTemplate\n case \"search\":\n return this.loadSearchTemplate\n default:\n }\n }\n\n holdingsEditLog(event) {\n const { group, type, parent } = this.props\n const target = event.target.nodeName === \"SPAN\"\n const id = event.target.parentElement.id || event.target.id\n const live = type === \"holdings-loaded\"\n const self = group === parent\n\n const barcode = target\n ? event.target.parentElement.attributes.getNamedItem(\"data-operation\") &&\n event.target.parentElement.attributes.getNamedItem(\"data-operation\").value\n : event.target.attributes.getNamedItem(\"data-operation\") &&\n event.target.attributes.getNamedItem(\"data-operation\").value\n const sort = target\n ? event.target.parentElement.attributes.getNamedItem(\"data-type\") &&\n event.target.parentElement.attributes.getNamedItem(\"data-type\").value\n : event.target.attributes.getNamedItem(\"data-type\") &&\n event.target.attributes.getNamedItem(\"data-type\").value\n\n const query = id || barcode\n\n this.props.history.push(\n `/home/${\n !self ? \"groups/parent\" : \"holdings/self\"\n }/${group}/${query}/${sort}/${live}`\n )\n }\n\n loadSearchTemplate(rowData, column) {\n const title = rowData.titulo\n const stripped = title.replace(/\\b(\\w{1,3}\\s|\\s\\w{1,3})\\b/, \" \")\n const themes = filterStrings(stripped.split(\" \"))\n const template = themes\n .filter((i) => i !== \"\")\n .map((i) => (\n \n {i}{\" \"}\n \n ))\n return (\n
\n {template}\n \n
\n )\n }\n\n holdingsEditTemplate(rowData, column) {\n const type = !rowData.barcode ? \"issn\" : \"barcode\"\n return (\n \n )\n }\n\n render() {\n const { group, columns } = this.state\n\n const header = (\n
\n
\n \n {\n // this.setState({ globalFilter: removeDiacritics(e.target.value) })}\n this.setState({ globalFilter: e.target.value })\n }}\n placeholder=\"Búsqueda\"\n size=\"50\"\n />\n
\n
\n \n
\n
\n )\n const dynamicColumns = columns\n .filter((col) => col.field !== \"grupo\")\n .filter((col) => col.field !== \"id_inc_padre\")\n .filter((col) => col.field !== \"id_inc\")\n .filter((col) => col.field !== \"embargo\")\n .filter((col) => col.field !== \"solicit\")\n\n .map((col, i) => (\n \n ))\n\n return (\n
\n

Lista de los issn que no tienen correspondencia

\n this.setSearchValue(e)}\n />\n this.getData(e)}\n />\n (this.dt = el)}\n value={this.state.rows}\n paginator\n header={header}\n globalFilter={this.state.globalFilter}\n emptyMessage={`${locale[\"No records found\"]}`}\n rows={50}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n resizableColumns\n exportFilename\n >\n {dynamicColumns}\n \n
\n )\n }\n}\nexport default IssnTemplate\n","import React, { Component } from \"react\"\nimport { Button } from \"primereact/button\"\nimport { Row, Col } from \"react-bootstrap\"\nimport { Messages } from \"primereact/messages\"\nimport { ProgressSpinner } from \"primereact/progressspinner\"\n\nimport * as GENERIC from \"../../constants/generic\"\n\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\n\nexport class LoadItems extends Component {\n constructor(props) {\n super(props)\n this.state = {\n user: JSON.parse(localStorage.getItem(\"user\") || '{\"error\":\"true\"}'),\n data: [],\n loading: false,\n }\n this.insertAdminHoldings = this.insertAdminHoldings.bind(this)\n }\n\n componentDidMount() {\n const user = JSON.parse(localStorage.getItem(\"user\"))\n if (user) {\n AjaxApiFetch({\n path: \"load-items-data\",\n }).then((data) => {\n this.setState({\n data,\n })\n })\n }\n this.setState({\n login: true,\n user,\n })\n }\n\n insertAdminHoldings() {\n AjaxApiFetch({\n path: \"admin-holdings-data\",\n method: \"POST\",\n }).then((data) => {\n if (data.error) {\n this.setState({\n loading: false,\n })\n this.messages.show({\n severity: \"error\",\n summary: \"Fondos\",\n closable: false,\n detail: \"Fondos pendientes no actualizados\",\n })\n }\n this.setState({\n data: [],\n loading: false,\n })\n this.messages.show({\n severity: \"success\",\n summary: \"Fondos\",\n closable: false,\n detail: \"Fondos pendientes actualizados\",\n })\n })\n this.setState({\n loading: true,\n })\n }\n\n render() {\n const { user, data } = this.state\n const dataMap = data.error ? [] : data\n const isAdmin = user && user.categorycode === GENERIC.ADMIN.TYPE\n if (isAdmin) {\n return (\n \n \n {dataMap.length > 0 &&

Listos a publicar

}\n\n {dataMap.length > 0 && (\n \n )}\n {this.state.loading && }\n\n {dataMap.map((i) => (\n \n {i.grupo}\n {i.contador}\n \n ))}\n \n \n (this.messages = el)} />\n \n
\n )\n }\n return \"\"\n }\n}\n","import React, { Component } from \"react\"\nimport { Row, Col } from \"react-bootstrap\"\nimport { DataGrid } from \"../../DataGrid\"\nimport { LoadItems } from \"../../Admin/LoadItems\"\nimport { Button } from \"primereact/button\"\nimport { TabView, TabPanel } from \"primereact/tabview\"\n\nimport { ProgressSpinner } from \"primereact/progressspinner\"\nimport { DataDashboard } from \"./\"\n\nimport { AjaxApiFetch } from \"Utils/ajaxApiFetch\"\n\nclass RefreshHoldings extends Component {\n constructor(props) {\n super(props)\n this.state = {\n message: \"\",\n }\n }\n\n refreshHoldings() {\n this.setState({ loading: true })\n\n AjaxApiFetch({\n path: \"holdings-refresh\",\n }).then((data) => {\n this.setState({\n message: data,\n loading: false,\n })\n })\n }\n\n render() {\n const { message } = this.state\n const { isAdmin } = this.props\n return (\n <>\n {isAdmin && (\n this.refreshHoldings()}\n />\n )}\n {this.state.loading && }\n

\n {message.response && \"Holdings actualizadas correctamente.\"}\n

\n

{message.error && \"Error - \" + message.error}

\n \n )\n }\n}\n\nclass Home extends Component {\n constructor(props) {\n super(props)\n this.state = {\n activeInde: 0,\n }\n }\n\n render() {\n const { user, group, history, holdings } = this.props\n const isAdmin = user && user.categorycode === \"S\"\n const isParent = user?.is_parent\n return (\n \n \n {isAdmin && }\n\n

Sistema listo para cargar fondos

\n

\n Bienvenido {user?.branch && user.branch.branchname} Tu código de\n biblioteca es: {user?.branch && user.branchcode}{\" \"}\n

\n\n {isAdmin && }\n\n {!isAdmin && (\n this.setState({ activeIndex: e.index })}\n >\n \n \n \n \n {isParent && !isAdmin && (\n <>\n

Grupos con permiso de lectura

\n \n \n )}\n
\n \n )}\n \n
\n )\n }\n}\nexport default Home\n","import React from \"react\"\nimport { Row, Col } from \"react-bootstrap\"\n\nconst DataDashboard = ({ combined, holdings }) => {\n const { user } = combined\n const isAdmin = user?.categorycode === \"S\"\n if (!isAdmin && holdings) {\n return (\n \n \n
\n

Fondos de revistas pendientes de revisión y de publicación

\n {holdings.loaded &&\n holdings.pending.rows.map((i, k) => (\n \n {i[\"Tipo de Fondo\"]}\n {i.Valor}\n \n ))}\n
\n \n\n \n
\n

Fondos de revistas publicadas

\n {holdings.loaded &&\n holdings.loaded.rows.map((i, k) => (\n \n {i[\"Tipo de Fondo\"]}\n {i.Valor}\n \n ))}\n
\n \n \n
\n )\n }\n return \"Cuidado que eres Admin!!! :)\"\n}\nexport default DataDashboard\n","import React from \"react\"\nimport Octicon from \"react-octicon\"\nimport { Link, useRouteMatch } from \"react-router-dom\"\n\nexport const MenuLink = ({\n label,\n to,\n activeOnlyWhenExact,\n icon,\n tooltip,\n external,\n}) => {\n const match = useRouteMatch({\n path: to,\n exact: activeOnlyWhenExact,\n })\n return !external ? (\n
  • \n \n \n {label}\n \n
  • \n ) : (\n
  • \n \n \n {label}\n \n
  • \n )\n}\n","import React from \"react\"\nimport { Col } from \"react-bootstrap\"\nimport ReactTooltip from \"react-tooltip\"\nimport { Link } from \"react-router-dom\"\nimport { MenuLink } from \"./MenuLink\"\n\nconst Menu = (combined) => {\n const { user, parent } = combined\n const isAdmin = user.categorycode === \"S\"\n const isParent = parent\n\n return (\n \n \n
    \n

    \n \n \"Logo\"\n \n

    \n
      \n \n \n \n {isAdmin && (\n \n )}\n {!isAdmin && (\n \n )}\n {!isAdmin && (\n \n )}\n \n {isParent ? (\n \n ) : (\n \"\"\n )}\n {isAdmin ? (\n \n ) : (\n \"\"\n )}\n {isAdmin ? (\n \n ) : (\n \"\"\n )}\n\n \n\n {isAdmin ? (\n \n ) : (\n \"\"\n )}\n {!isAdmin && (\n \n )}\n
    \n
    \n \n )\n}\nexport default Menu\n","import React, { Component } from \"react\"\nimport { Row, Col } from \"react-bootstrap\"\nimport { AnimatedSwitch, spring } from \"react-router-transition\"\nimport { Route, withRouter, Redirect } from \"react-router-dom\"\nimport * as GENERIC from \"../../constants/generic\"\nimport { DataGrid } from \"../DataGrid\"\nimport { DataGridGroups } from \"../Groups\"\nimport Library from \"../Library\"\nimport { FormRequest } from \"../Requests/FormRequest\"\nimport HoldingsTemplate from \"../Holdings/HoldingsTemplate\"\nimport HoldingsTemplateParent from \"../Holdings/HoldingsTemplateParent\"\nimport BlackListTemplate from \"../Holdings/BlackListTemplate\"\nimport IssnTemplate from \"../Holdings/IssnTemplate\"\nimport { AjaxApiFetch } from \"../../Utils/ajaxApiFetch\"\n\n// import Spain from \"../Map/Spain\";\nimport { Home, Menu } from \"./Components\"\n\nfunction mapStyles(styles) {\n return {\n opacity: styles.opacity,\n transform: `scale(${styles.scale})`,\n }\n}\n// wrap the `spring` helper to use a bouncy config\nfunction bounce(val) {\n return spring(val, {\n stiffness: 330,\n damping: 22,\n })\n}\nconst bounceTransition = {\n atEnter: {\n opacity: 0,\n },\n atLeave: {\n opacity: bounce(0),\n },\n atActive: {\n opacity: bounce(1),\n },\n}\n\nclass ControlledTabs extends Component {\n constructor(props) {\n super(props)\n const { data } = this.props\n const { user } = data\n this.state = {\n combined: data,\n user,\n }\n }\n\n componentDidMount() {\n const { data } = this.props\n this.setState({\n data,\n })\n\n AjaxApiFetch({\n path: \"holdings\",\n group: `?group=${data.group}`,\n }).then((holdings) => {\n if (holdings.error) return\n this.setState({\n holdings,\n })\n })\n }\n\n render() {\n const { history, data } = this.props\n const { combined, holdings } = this.state\n const { user, library } = combined\n const isLive = library.branchvalid === \"Y\"\n const libraryBranchcode = user.userid\n const isAdmin = user ? user.categorycode === GENERIC.ADMIN.TYPE : false\n const { group } = data\n return (\n \n \n\n \n \n \n \n \n\n \n

    Editar Biblioteca

    \n\n \n
    \n\n (\n \n )}\n />\n\n (\n \n )}\n />\n\n (\n \n )}\n />\n\n (\n \n )}\n />\n\n \n

    Solicitar Alta Bibliioteca

    \n \n
    \n\n \n

    Gestión de Red

    \n \n
    \n\n \n

    Gestión de Red Biblioteca

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

    Lista de Bibliotecas

    \n \n
    \n\n \n

    Editar Biblioteca

    \n \n
    \n\n \n

    Gestión de Solicitudes

    \n \n
    \n\n {isAdmin ? (\n \n

    Alta de Bibliotecas Pendientes

    \n \n
    \n ) : (\n \n )}\n\n \n

    Validar Biblioteca

    \n \n
    \n\n {isAdmin ? (\n \n \n \n ) : (\n \n )}\n\n {isAdmin ? (\n \n \n \n ) : (\n \n )}\n\n {isAdmin ? (\n \n \n \n ) : (\n \n )}\n\n \n \n \n \n \n \n )\n }\n}\nexport default withRouter(ControlledTabs)\n","import React, { Component } from \"react\"\nimport { withRouter, Redirect, Route } from \"react-router-dom\"\nimport { connect } from \"react-redux\"\nimport { Container, Row, Col } from \"react-bootstrap\"\n\nimport Header from \"../components/shared/Header\"\n\nimport { AjaxApiFetch } from \"../Utils/ajaxApiFetch.js\"\n\nimport \"bootstrap/dist/css/bootstrap.css\"\nimport \"primereact/resources/themes/nova-light/theme.css\"\nimport \"primereact/resources/primereact.min.css\"\nimport \"primeicons/primeicons.css\"\n\nimport { Footer } from \"../components/shared/Footer\"\nimport { Ping } from \"../components/CheckStatus/Ping\"\n\nimport ControlledTabs from \"../components/Navigation/ControlledTabs\"\n\nclass Home extends Component {\n constructor(props) {\n super(props)\n this.state = {\n library: {},\n country: [],\n group: null,\n redirect: false,\n }\n }\n\n componentDidMount() {\n let user = this.props.location.state\n\n if (!user) {\n try {\n user = JSON.parse(localStorage.getItem(\"user\"))\n } catch (error) {\n this.setState({ redirect: true })\n }\n }\n this.fetchData(user)\n }\n\n componentDidUpdate(prev, props) {\n const { library } = this.state\n if (!library.branchcode) {\n let parsedUser\n try {\n parsedUser = JSON.parse(localStorage.getItem(\"user\"))\n this.fetchData(parsedUser)\n } catch (error) {\n this.setState({ redirect: true })\n }\n }\n }\n\n buildSelect(data) {\n this.setState({ country: data })\n }\n\n fetchData(user) {\n if (!user || !(user.userid && user.branchcode)) {\n this.setState({ redirect: true })\n } else {\n const group = user && user.group_id && user.group_id.shift()\n const parent = group && group.nombre_padre === user.othernames\n\n AjaxApiFetch({\n path: \"library-data\",\n group: `/?library=${\n user.categorycode !== \"S\" ? user.userid : user.branchcode\n }`,\n }).then((data) => {\n if (data.error) return\n this.setState({ user })\n\n const table = { ...data[0], parent }\n this.buildLibrary(table)\n })\n AjaxApiFetch({ path: \"country-select-data\" }).then((data) => {\n this.buildSelect(data)\n })\n }\n }\n\n buildLibrary(data) {\n if (!data.library && data.error) return\n let { user } = this.state\n if (!user) user = JSON.parse(localStorage.getItem(\"user\"))\n\n const { library, users, branch_type, parent, logo } = data\n this.setState({\n library,\n users,\n branch_type,\n group: user.userid,\n parent,\n logo,\n user,\n })\n }\n\n render() {\n const { group, redirect } = this.state\n return (\n
    \n {group ? (\n
    \n \n \n \n
    \n
    \n
    \n \n
    \n }\n />\n
    \n \n
    \n \n
    \n
    \n
    \n ) : (\n
    \n \n \"logo\"\n \n Cargar Aplicacion\n
    \n )}\n {redirect && (\n \n )}\n
    \n )\n }\n}\nconst mapStateToProps = (state) => ({\n login: state.login,\n})\nexport default connect(mapStateToProps)(withRouter(Home))\n","import React from \"react\"\nimport { Redirect } from \"react-router-dom\"\n\nconst Logout = (combined) => \n\nexport default Logout\n","import React from \"react\"\nimport { Row, Col, Nav, Navbar } from \"react-bootstrap\"\n\nexport const Header = ({ branchname, branch_alt_type, branchcity }) => (\n <>\n \n \n \n \n \"Logo\"\n \n\n \n \n \n Iniciar sesión\n \n \n \n \n\n \n \n

    {branchname}

    \n

    {branch_alt_type}

    \n

    {branchcity}

    \n \n
    \n \n)\n","import React, { Component } from \"react\"\nimport { Container, Row, Col } from \"react-bootstrap\"\nimport Library from \"../components/Library\"\nimport { Header } from \"./shared/Header\"\n\nexport class PublicAddLibraryFrom extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const { history } = this.props\n return (\n
    \n
    \n \n \n \n \n \n \n \n \n
    \n Instituto de Salud Carlos III. Biblioteca Nacional de Ciencias de la\n Salud - Avda. Monforte de Lemos 5. 28029 Madrid.\n Contacto: cncs@isciii.es\n
    \n \n
    \n
    \n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport { Container, Row, Col } from \"react-bootstrap\"\nimport Library from \"../components/Library\"\nimport { AjaxApiFetch } from \"../Utils/ajaxApiFetch\"\nimport { Header } from \"./shared/Header\"\n\nexport class PublicViewLibrary extends Component {\n constructor(props) {\n super(props)\n this.state = {\n library: this.props.match.params.library,\n }\n this.buildLibrary = this.buildLibrary.bind(this)\n }\n\n buildLibrary(data) {\n this.setState({\n data,\n })\n }\n\n shouldComponentUpdate(prevProps, newProps) {\n return true\n }\n\n componentDidMount() {\n const { library } = this.state\n AjaxApiFetch({\n path: \"library-data\",\n group: `/?library=${library}`,\n }).then((data) => {\n if (data.error) return\n this.buildLibrary(data.pop())\n })\n }\n\n render() {\n const { library, data } = this.state\n\n const { history } = this.props\n\n return (\n
    \n {data &&
    }\n\n \n \n \n \n \n \n \n \n
    \n Instituto de Salud Carlos III. Biblioteca Nacional de Ciencias de la\n Salud - Avda. Monforte de Lemos 5. 28029 Madrid.\n Contacto: cncs@isciii.es\n
    \n \n
    \n
    \n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport { Container, Row, Col } from \"react-bootstrap\"\nimport { DataGrid } from \"../components/DataGrid\"\nimport { Header } from \"./shared/Header\"\n\nexport class PublicSearchLibrary extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const { history } = this.props\n return (\n
    \n
    \n \n \n \n
    \n \n
    \n \n
    \n \n \n
    \n Instituto de Salud Carlos III. Biblioteca Nacional de Ciencias de la\n Salud - Avda. Monforte de Lemos 5. 28029 Madrid.{\" \"}\n Contacto: cncs@isciii.es\n
    \n \n
    \n
    \n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport { Container, Row, Col } from \"react-bootstrap\"\nimport { Link } from \"react-router-dom\"\nimport { Header } from \"./shared/Header\"\n\nclass LibraryAdded extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n return (\n \n
    \n \n \n
    \n {/*

    */}\n

    \n Su solicitud ha sido registrada correctamente, en breve nos pondremos\n en contacto con usted\n

    \n Añadir Biblioteca\n
    \n \n
    \n \n )\n }\n}\nexport default LibraryAdded\n//\n","import React, { Component } from \"react\"\nimport { Container, Row, Col } from \"react-bootstrap\"\nimport { FormRequest } from \"../components/Requests/FormRequest\"\nimport { Header } from \"./shared/Header\"\n\nexport class PublicRequestHoldingsForm extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const { history } = this.props\n return (\n
    \n
    \n \n \n \n \n \n \n \n
    \n )\n }\n}\n","import React from \"react\"\nimport { createBrowserHistory } from \"history\"\n\nimport Login from \"./containers/Login\"\nimport Home from \"./containers/Main\"\nimport Logout from \"./containers/Logout\"\nimport { PublicAddLibraryFrom } from \"./containers/PublicAddLibraryFrom\"\nimport { PublicViewLibrary } from \"./containers/PublicViewLibrary\"\nimport { PublicSearchLibrary } from \"./containers/PublicSearchLibrary\"\nimport LibraryAdded from \"./containers/LibraryAdded\"\nimport { PublicRequestHoldingsForm } from \"./containers/PublicRequestHoldingsForm\"\n\nconst history = createBrowserHistory()\n\nconst ROUTES = [\n {\n path: \"/login\",\n exact: true,\n component: (props) => ,\n },\n {\n path: \"/logout\",\n exact: true,\n component: () => ,\n },\n {\n path: \"/inserted\",\n exact: true,\n component: () => ,\n },\n {\n path: \"/library-viewer/:library\",\n exact: true,\n component: (props) => ,\n },\n {\n path: \"/library\",\n exact: true,\n component: (props) => ,\n },\n {\n path: \"/library-viewer\",\n exact: true,\n component: (props) => ,\n },\n {\n path: \"/request-holdings\",\n exact: true,\n component: (props) => ,\n },\n {\n path: \"/home\",\n component: (props) => ,\n },\n]\nexport default ROUTES\n","import \"react-app-polyfill/ie11\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Route, BrowserRouter as Router, Switch, Redirect } from \"react-router-dom\"\nimport { Provider } from \"react-redux\"\nimport * as serviceWorker from \"./serviceWorker\"\nimport store from \"./store\"\nimport ROUTES from \"./Routes\"\nimport \"./components/index.scss\"\n\n/**\n * Render a route with potential sub routes\n * https://reacttraining.com/react-router/web/example/route-config\n */\nfunction RouteWithSubRoutes(route) {\n return (\n }\n />\n )\n}\n\n/**\n * Use this component for any new section of routes (any config object that has a \"routes\" property\n */\nfunction RenderRoutes({ routes }) {\n return (\n \n {routes.map((route, i) => (\n \n ))}\n } />\n \n )\n}\n\nconst routing = (\n \n \n \n \n \n \n \n)\n\nReactDOM.render(routing, document.getElementById(\"root\"))\n\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n","export const locale = {\n yes: \"Fondos de medicina listos para su publicación en el OPAC\",\n pending: \"Fondos de revistas pendientes de revisión y de publicación en el OPAC\",\n no: \"Fondos de revistas rechazadas por el administrador de CNCS\",\n \"Failed to upload\": \"No se pudieron cargar los fondos\",\n \"Failed to upload Logo\": \"No se puede cargar el Logo\",\n \"Failed to upload Logo Code\":\n \"No se puede cargar el Logo sin crear código de biblioteca\",\n \"library Save Error\":\n \"Complete todos los campos obligatorios antes de intentar enviar este formulario.\",\n \"Empty Request\":\n \"Pedido vacio, puede buscar por Título de la publicación y Issn-Isbn\",\n \"Upload successful\": \"Fondos cargados correctamente\",\n \"Upload Logo successful\": \"Logo cargado correctamente\",\n \"issn already exists\": \"El issn ya existe\",\n \"Select file\": \"Seleccionar Fichero\",\n \"Fill all fields\": \"Asegúrese de que ha rellenados todos los campos\",\n \"Blacklist data inserted\": \"Datos de la Blacklist insertados\",\n \"Failed for center\":\n \"No se ha podido cargar el fondo en el centro, compruebe que los datos son correctos.\",\n \"Success holding loaded\":\n \"El fondo se ha cargado con éxito. Podrá ver el resultado de la carga en su cuenta.\",\n \"Library removed\": \"Biblioteca eliminada\",\n \"Logo deleted\": \"Logotipo eliminado\",\n \"Already approved\": \"Ya existe biblioteca con el mismo código\",\n Approved: \"La biblioteca está aprobada y publicada\",\n \"Code Changed\": \"Código de biblioteca cambiado\",\n \"Libray Data Inserted\": \"Datos de biblioteca insertados\",\n \"Insert Users\":\n 'Por favor, Debe añadir personal de contacto en la pestaña \"Contactos\"',\n \"Fill all fields2\": \"Por favor, complete los datos de la biblioteca\",\n \"User Deleted\": \"Usuario eliminado\",\n \"Users Updated / Inserted\": \"Usuarios actualizados / insertados\",\n \"Fill users form\": \"Por favor complete el formulario de usuarios\",\n \"Valid library code\": \"Código de biblioteca válido\",\n \"Existing library code\": \"Código de biblioteca inválido / existente\",\n \"Valid library\": \"Biblioteca válida\",\n \"Delete from blacklist\": \"Eliminar de BlackList\",\n Delete: \"Eliminar\",\n \"Delete-Holdings-Pop-Up\": \"Confirma que desea borrar los fondos\",\n \"Delete step\": \"de la Blacklist\",\n \"Delete holdings\": \"Eliminar fondos\",\n \"Delete holding\": \"Eliminar Fondo\",\n \"Publish holdings\": \"Publicar fondos\",\n \"Publish holding\": \"Publicar Fondo\",\n \"Uploading files\": \"Subiendo ficheros\",\n \"Processing files\": \"Procesando fichero\",\n \"No records found\": \"No se encontraron registros\",\n \"No holdings found in centre\":\n \"No se ha podido seleccionar el fondo en el centro elegido.\",\n \"No holdings found in centre description\":\n \"El centro seleccionado no ofrece servicio de obtención de documentos, por favor escoja otro centro del listado\",\n \"filter results\": \"Filtrar Resultados\",\n \"software message\":\n \"dispone de un formulario de petición de documentos, es posible que necesite tener una cuenta de SOD activa con ellos\",\n}\n","import * as CONFIG from \"../config/backend\"\n\nexport const AjaxApiFetch = (config) =>\n fetch(\n `${CONFIG.server.protocol}://${CONFIG.server.host}/${config.path\n }${config.group || config.edit || \"\"}`,\n {\n method: config.method || \"GET\",\n credentials: \"include\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${new Buffer(\n `${process.env.REACT_APP_BASIC_AUTH_USER}:${process.env.REACT_APP_BASIC_AUTH_PASS}`\n ).toString(\"base64\")}`,\n },\n body: config.data ? JSON.stringify(config.data) : null,\n }\n )\n .then((response) => response.json())\n .catch((error) => {\n console.error(error)\n })\n"],"sourceRoot":""}