2023-05-12 23:57:21 +02:00
// Javascript to enable link to tab
// This magic js codes enables anchor links to work with bootstrap tabs
// Taken from https://stackoverflow.com/a/9393768/11317151 (and edited, like a lot)
// Also update on location change
2023-05-16 00:05:39 +02:00
window . addEventListener (
'hashchange' ,
function ( ) {
var hash = location . hash . replace ( /^#/ , '' ) ; // ^ means starting, meaning only match the first hash
if ( hash ) {
bootstrap . Tab . getOrCreateInstance ( document . querySelector ( '#' + hash ) ) . show ( ) ;
}
} ,
false
) ;
var hash = location . hash . replace ( /^#/ , '' ) ; // ^ means starting, meaning only match the first hash
2023-05-12 23:57:21 +02:00
if ( hash ) {
2023-05-16 00:05:39 +02:00
bootstrap . Tab . getOrCreateInstance ( document . querySelector ( '#' + hash ) ) . show ( ) ;
}
2023-05-12 23:57:21 +02:00
// Change hash for page-reload
$ ( '.nav-link' ) . on ( 'click' , function ( e ) {
window . location . hash = e . target . id ;
2023-05-16 00:05:39 +02:00
} ) ;
function primeCreateNew ( ) {
2023-05-16 22:58:08 +02:00
// Clear the form
$ ( '.form-control' ) . val ( '' ) ;
2023-05-16 00:05:39 +02:00
const form = document . getElementById ( 'storageUnitModalForm' ) ;
2023-05-16 22:58:08 +02:00
const form2 = document . getElementById ( 'storageLocationModalForm' ) ;
document . getElementById ( 'createNewLocationSelection' ) . disabled = false ;
document . getElementById ( 'storageUnitModalLocationSelectText' ) . innerText = "Select or create a new location." ;
document . getElementById ( 'storageUnitModalLabel' ) . innerText = "Create new storage unit" ;
document . getElementById ( 'storageLocationModalTitle' ) . innerText = "Create new storage location" ;
2023-05-16 00:05:39 +02:00
form . setAttribute ( 'method' , 'POST' ) ;
form2 . setAttribute ( 'method' , 'POST' ) ;
return true ;
}
function primeEdit ( ) {
const form = document . getElementById ( 'storageUnitModalForm' ) ;
2023-05-16 22:58:08 +02:00
const form2 = document . getElementById ( 'storageLocationModalForm' ) ;
// Disable create new location
document . getElementById ( 'createNewLocationSelection' ) . disabled = true ;
document . getElementById ( 'storageUnitModalLocationSelectText' ) . innerText = "While editing you can only select already existing locations. Use the settings to create new ones." ;
document . getElementById ( 'storageUnitModalLabel' ) . innerText = "Edit a storage unit" ;
document . getElementById ( 'storageLocationModalTitle' ) . innerText = "Edit a storage location"
document . getElementById ( 'storageUnitModalLocationSelect' ) . value = 1
handleSelector ( )
2023-05-16 00:05:39 +02:00
form . setAttribute ( 'method' , 'PATCH' ) ;
form2 . setAttribute ( 'method' , 'PATCH' ) ;
return true ;
}
function handleSelector ( ) {
const selector = document . getElementById ( 'storageUnitModalLocationSelect' )
const value = selector . options [ selector . selectedIndex ] . value ;
if ( value == "META_CREATENEW" ) {
$ ( '#storageUnitModalContactInfoCreator' ) . removeClass ( 'd-none' )
$ ( '.requireOnCreate' ) . attr ( 'required' , true )
} else {
$ ( '#storageUnitModalContactInfoCreator' ) . addClass ( 'd-none' )
$ ( '.requireOnCreate' ) . attr ( 'required' , false )
}
2023-05-16 22:58:08 +02:00
}
function getDataForEdit ( id ) {
$ . ajax ( {
type : 'get' ,
url : ` /api/v1/storageUnits?id= ${ id } ` ,
success : function ( data ) {
const result = JSON . parse ( data ) ;
// Get elements inside the editCategoryModal
const modal _unitName = document . getElementById ( 'storageUnitModalName' ) ;
const modal _unitLocation = document . getElementById ( 'storageUnitModalLocationSelect' ) ;
const modal _unitId = document . getElementById ( 'storageUnitModalLocationSelectHidden' ) ;
// const modal_categoryid = document.getElementById('editCategoryModalId');
modal _unitName . value = result . name ;
modal _unitId . value = result . id ;
// Select the correct location from the select based on the value of the option
for ( var i , j = 0 ; i = modal _unitLocation . options [ j ] ; j ++ ) {
if ( i . value == result . contactInfoId ) {
console . log ( "Found it" ) ;
modal _unitLocation . selectedIndex = j ;
break ;
}
}
} ,
error : function ( data ) {
console . log ( '!!!! ERROR !!!!' , data ) ;
// Hide overlay with spinner
$ ( '.loader-overlay' ) . removeClass ( 'active' ) ;
// Close the modal
$ ( '.modal' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-exclamation-triangle-fill"></i> Something went wrong. The storage unit does no longer exist.' , "text-bg-danger" )
2023-05-16 22:58:08 +02:00
}
} ) ;
}
function getDataForEditLoc ( id ) {
$ . ajax ( {
type : 'get' ,
url : ` /api/v1/storageLocations?id= ${ id } ` ,
success : function ( data ) {
const result = JSON . parse ( data ) ;
// Get elements inside the editCategoryModal
const modal _locationName = document . getElementById ( 'storageLocationModalName' ) ;
const modal _locationUnitSel = document . getElementById ( 'storageLocationModalUnit' ) ;
const modal _locationId = document . getElementById ( 'storageLocationModalIdHidden' ) ;
// const modal_categoryid = document.getElementById('editCategoryModalId');
modal _locationName . value = result . name ;
modal _locationId . value = result . id ;
// Select the correct location from the select based on the value of the option
for ( var i , j = 0 ; i = modal _locationUnitSel . options [ j ] ; j ++ ) {
if ( i . value == result . storageUnit ) {
console . log ( "Found it" ) ;
modal _locationUnitSel . selectedIndex = j ;
break ;
}
}
} ,
error : function ( data ) {
console . log ( '!!!! ERROR !!!!' , data ) ;
// Hide overlay with spinner
$ ( '.loader-overlay' ) . removeClass ( 'active' ) ;
// Close the modal
$ ( '.modal' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-exclamation-triangle-fill"></i> Something went wrong. The storage unit does no longer exist.' , "text-bg-danger" )
2023-05-16 22:58:08 +02:00
}
} ) ;
2023-05-16 00:05:39 +02:00
}
handleSelector ( )