Fixed users and locations not filling in in Assets modals

This commit is contained in:
2025-10-26 11:45:01 +01:00
parent 2c0ae9f5e9
commit dc5e117c93
2 changed files with 50 additions and 25 deletions

View File

@@ -489,13 +489,16 @@ document.addEventListener('DOMContentLoaded', () => {
updateAttributesContainer.innerHTML = '';
updateForm.reset();
const locationSelect = updateForm.querySelector('#updateLocationSelect');
await loadLocationsIntoSelect(locationSelect);
try {
const response = await fetch(`/Assets/Get?cn=${assetId}`);
const responseJson = await response.json();
const asset = responseJson.assetsModel;
const locationSelect = updateForm.querySelector('#updateLocationSelect');
await loadLocationsIntoSelect(locationSelect, asset.Location);
const usersSelect = updateForm.querySelector('#updateUsersSelect');
await loadUsersIntoSelect(usersSelect, asset.Owner);
for (const [key, value] of Object.entries(asset)) {
const input = updateForm.querySelector(`[name="${key}"]`);
if (input) input.value = value;

View File

@@ -123,18 +123,35 @@ async function loadLocationsIntoSelect(selectElement, selectedValue = null) {
const response = await fetch('/Locations/Index');
const locations = await response.json();
selectElement.innerHTML = `<option value="">${appTranslations.selectLocation}</option>`;
const ts = selectElement.tomselect;
if (!ts) {
selectElement.innerHTML = `<option value="">${appTranslations.selectLocation}</option>`;
locations.forEach(loc => {
const option = document.createElement('option');
option.value = loc.location;
option.textContent = loc.location;
if (selectedValue && selectedValue === loc.location) {
option.selected = true;
}
selectElement.appendChild(option);
});
return;
}
ts.clearOptions();
ts.addOption(locations.map(loc => ({
value: loc.location,
text: loc.location
})));
ts.refreshOptions(false);
if (selectedValue) {
ts.setValue(selectedValue);
} else {
ts.clear(true);
}
locations.forEach(loc => {
const text = `${loc.location}`;
const option = document.createElement('option');
option.value = loc.location;
option.textContent = text;
if (selectedValue && selectedValue === loc.location) {
option.selected = true;
}
selectElement.appendChild(option);
});
} catch (err) {
console.error('Error loading locations:', err);
showToast(appTranslations.errorLoadingLocations, 'danger');
@@ -146,18 +163,23 @@ async function loadUsersIntoSelect(selectElement, selectedValue = null) {
const response = await fetch('/Users/Index?Cn=false&Sn=false&Title=false&Description=false&JpegPhoto=false&UserPassword=false');
const users = await response.json();
selectElement.innerHTML = `<option value="">${appTranslations.selectUser}</option>`;
const ts = selectElement.tomselect;
if (!ts) {
selectElement.innerHTML = `<option value="">${appTranslations.selectUser}</option>`;
users.forEach(u => {
const opt = document.createElement('option');
opt.value = u.uid;
opt.textContent = u.uid;
selectElement.appendChild(opt);
});
return;
}
users.forEach(usr => {
const text = usr.uid;
const option = document.createElement('option');
option.value = usr.uid;
option.textContent = text;
if (selectedValue && selectedValue === usr.uid) {
option.selected = true;
}
selectElement.appendChild(option);
});
ts.clearOptions();
ts.addOption(users.map(u => ({ value: u.uid, text: u.uid })));
ts.refreshOptions(false);
if (selectedValue) ts.setValue(selectedValue);
} catch (err) {
console.error('Error loading users:', err);
showToast(appTranslations.errorLoadingUsers, 'danger');