Changeset View
Changeset View
Standalone View
Standalone View
assets/src/bundles/webapp/webapp-utils.js
Show First 20 Lines • Show All 354 Lines • ▼ Show 20 Lines | |||||
export function setContainerFullWidth() { | export function setContainerFullWidth() { | ||||
let previousFullWidthState = JSON.parse(localStorage.getItem('swh-web-full-width')); | let previousFullWidthState = JSON.parse(localStorage.getItem('swh-web-full-width')); | ||||
if (previousFullWidthState !== null) { | if (previousFullWidthState !== null) { | ||||
setFullWidth(previousFullWidthState); | setFullWidth(previousFullWidthState); | ||||
} | } | ||||
} | } | ||||
function coreSWHIDIsLowerCase(swhid) { | |||||
const qualifiersPos = swhid.indexOf(';'); | |||||
let coreSWHID = swhid; | |||||
if (qualifiersPos !== -1) { | |||||
coreSWHID = swhid.slice(0, qualifiersPos); | |||||
} | |||||
return coreSWHID.toLowerCase() === coreSWHID; | |||||
} | |||||
export async function validateSWHIDInput(swhidInputElt) { | export async function validateSWHIDInput(swhidInputElt) { | ||||
const swhidInput = swhidInputElt.value.trim(); | const swhidInput = swhidInputElt.value.trim(); | ||||
let customValidity = ''; | let customValidity = ''; | ||||
if (swhidInput.startsWith('swh:')) { | if (swhidInput.toLowerCase().startsWith('swh:')) { | ||||
if (coreSWHIDIsLowerCase(swhidInput)) { | |||||
const resolveSWHIDUrl = Urls.api_1_resolve_swhid(swhidInput); | const resolveSWHIDUrl = Urls.api_1_resolve_swhid(swhidInput); | ||||
const response = await fetch(resolveSWHIDUrl); | const response = await fetch(resolveSWHIDUrl); | ||||
const responseData = await response.json(); | const responseData = await response.json(); | ||||
if (responseData.hasOwnProperty('exception')) { | if (responseData.hasOwnProperty('exception')) { | ||||
customValidity = responseData.reason; | customValidity = responseData.reason; | ||||
} | } | ||||
} else { | |||||
const qualifiersPos = swhidInput.indexOf(';'); | |||||
if (qualifiersPos === -1) { | |||||
customValidity = 'Invalid SWHID: all characters must be in lowercase. '; | |||||
customValidity += `Valid SWHID is ${swhidInput.toLowerCase()}`; | |||||
} else { | |||||
customValidity = 'Invalid SWHID: the core part must be in lowercase. '; | |||||
const coreSWHID = swhidInput.slice(0, qualifiersPos); | |||||
customValidity += `Valid SWHID is ${swhidInput.replace(coreSWHID, coreSWHID.toLowerCase())}`; | |||||
} | |||||
} | |||||
} | } | ||||
swhidInputElt.setCustomValidity(customValidity); | swhidInputElt.setCustomValidity(customValidity); | ||||
$(swhidInputElt).siblings('.invalid-feedback').text(customValidity); | $(swhidInputElt).siblings('.invalid-feedback').text(customValidity); | ||||
} | } |