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 preFillDeleteModal ( 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 _categoryName = document . getElementById ( 'deleteNamePlaceholder' ) ;
const modal _deleteButton = document . getElementById ( 'deleteActionBtn' ) ;
//const modal_categoryDescription = document.getElementById('editCategoryModalDescription');
//const modal_categoryid = document.getElementById('editCategoryModalId');
modal _categoryName . innerText = result . name ;
modal _deleteButton . setAttribute ( 'onclick' , ` deleteEntry( ${ result . id } ) ` ) ;
//modal_categoryDescription.value = result.description;
//modal_categoryid.value = result.id;
} ,
error : function ( data ) {
console . log ( '!!!! ERROR !!!!' , data ) ;
document . getElementById ( 'deleteNamePlaceholder' ) . innerText = 'Deleted' ;
$ ( '#staticBackdrop' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-exclamation-triangle-fill"></i> Something went wrong. The storageUnit does no longer exist.' , "text-bg-danger" )
2023-05-16 22:58:08 +02:00
}
} ) ;
}
function preFillDeleteModalLoc ( 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 _categoryName = document . getElementById ( 'deleteNamePlaceholder' ) ;
const modal _deleteButton = document . getElementById ( 'deleteActionBtn' ) ;
//const modal_categoryDescription = document.getElementById('editCategoryModalDescription');
//const modal_categoryid = document.getElementById('editCategoryModalId');
modal _categoryName . innerText = result . name ;
modal _deleteButton . setAttribute ( 'onclick' , ` deleteEntryLoc( ${ result . id } ) ` ) ;
//modal_categoryDescription.value = result.description;
//modal_categoryid.value = result.id;
} ,
error : function ( data ) {
console . log ( '!!!! ERROR !!!!' , data ) ;
document . getElementById ( 'deleteNamePlaceholder' ) . innerText = 'Deleted' ;
$ ( '#staticBackdrop' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-exclamation-triangle-fill"></i> Something went wrong. The storage location does no longer exist.' , "text-bg-danger" )
2023-05-16 22:58:08 +02:00
}
} ) ;
}
function deleteEntry ( id ) {
$ . ajax ( {
type : 'delete' ,
url : ` /api/v1/storageUnits ` ,
data : { id : id } ,
success : function ( data ) {
$ ( '#staticBackdrop' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-check2"></i> Storage Unit deleted successfully.' , "text-bg-success" )
2023-05-16 22:58:08 +02:00
confetti ( {
spread : 360 ,
ticks : 100 ,
gravity : 0.1 ,
decay : 0.94 ,
startVelocity : 30 ,
particleCount : 20 ,
scalar : 2 ,
shapes : [ 'text' ] ,
shapeOptions : {
text : {
value : [ '❌' , '🗑️' , '🚫' ]
}
}
} ) ;
} ,
error : function ( data ) {
// hide the staticBackdrop modal
$ ( '#staticBackdrop' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-exclamation-triangle-fill"></i> Something went wrong. Please try again later.' , "text-bg-danger" , 3000 , false )
2023-05-16 22:58:08 +02:00
}
} ) ;
}
function deleteEntryLoc ( id ) {
$ . ajax ( {
type : 'delete' ,
url : ` /api/v1/storageLocations ` ,
data : { id : id } ,
success : function ( data ) {
$ ( '#staticBackdrop' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-check2"></i> Storage Unit deleted successfully.' , "text-bg-success" )
2023-05-16 22:58:08 +02:00
confetti ( {
spread : 360 ,
ticks : 100 ,
gravity : 0.1 ,
decay : 0.94 ,
startVelocity : 30 ,
particleCount : 20 ,
scalar : 2 ,
shapes : [ 'text' ] ,
shapeOptions : {
text : {
value : [ '❌' , '🗑️' , '🚫' ]
}
}
} ) ;
} ,
error : function ( data ) {
// hide the staticBackdrop modal
$ ( '#staticBackdrop' ) . modal ( 'hide' ) ;
2023-05-17 17:46:51 +02:00
createNewToast ( '<i class="bi bi-exclamation-triangle-fill"></i> Something went wrong. Please try again later.' , "text-bg-danger" , 3000 , 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 ( )