diff --git a/controllers/EquipmentController.php b/controllers/EquipmentController.php index dd638bec..db74692a 100644 --- a/controllers/EquipmentController.php +++ b/controllers/EquipmentController.php @@ -11,29 +11,32 @@ class EquipmentController extends BaseController public function EditForm(Request $request, Response $response, array $args) { - if ($args['equipmentId'] == 'new') - { - return $this->renderPage($response, 'equipmentform', [ - 'mode' => 'create', - 'userfields' => $this->getUserfieldsService()->GetFields('equipment') - ]); - } - else - { - return $this->renderPage($response, 'equipmentform', [ - 'equipment' => $this->getDatabase()->equipment($args['equipmentId']), - 'mode' => 'edit', - 'userfields' => $this->getUserfieldsService()->GetFields('equipment') - ]); - } - } + if ($args['equipmentId'] == 'new') + { + return $this->renderPage($response, 'equipmentform', [ + 'mode' => 'create', + 'userfields' => $this->getUserfieldsService()->GetFields('equipment'), + 'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE') + ]); + } + else + { + return $this->renderPage($response, 'equipmentform', [ + 'equipment' => $this->getDatabase()->equipment($args['equipmentId']), + 'mode' => 'edit', + 'userfields' => $this->getUserfieldsService()->GetFields('equipment'), + 'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE') + ]); + } + } - public function Overview(Request $request, Response $response, array $args) - { - return $this->renderPage($response, 'equipment', [ - 'equipment' => $this->getDatabase()->equipment()->orderBy('name', 'COLLATE NOCASE'), - 'userfields' => $this->getUserfieldsService()->GetFields('equipment'), - 'userfieldValues' => $this->getUserfieldsService()->GetAllValues('equipment') - ]); - } + public function Overview(Request $request, Response $response, array $args) + { + return $this->renderPage($response, 'equipment', [ + 'equipment' => $this->getDatabase()->equipment()->orderBy('name', 'COLLATE NOCASE'), + 'userfields' => $this->getUserfieldsService()->GetFields('equipment'), + 'userfieldValues' => $this->getUserfieldsService()->GetAllValues('equipment'), + 'locations' => $this->getDatabase()->locations()->orderBy('name', 'COLLATE NOCASE') + ]); + } } diff --git a/migrations/0255.sql b/migrations/0255.sql new file mode 100644 index 00000000..d17c3731 --- /dev/null +++ b/migrations/0255.sql @@ -0,0 +1 @@ +ALTER TABLE equipment ADD location_id INTEGER; diff --git a/public/viewjs/equipment.js b/public/viewjs/equipment.js index 9fe3e66b..df63b57b 100644 --- a/public/viewjs/equipment.js +++ b/public/viewjs/equipment.js @@ -29,16 +29,28 @@ equipmentTable.on('select', function(e, dt, type, indexes) function DisplayEquipment(id) { Grocy.Api.Get('objects/equipment/' + id, - function(equipmentItem) - { - $(".selected-equipment-name").text(equipmentItem.name); - $("#description-tab-content").html(equipmentItem.description); - $(".equipment-edit-button").attr("href", U("/equipment/" + equipmentItem.id.toString())); + function(equipmentItem) + { + $(".selected-equipment-name").text(equipmentItem.name); + $("#description-tab-content").html(equipmentItem.description); + $(".equipment-edit-button").attr("href", U("/equipment/" + equipmentItem.id.toString())); - if (equipmentItem.instruction_manual_file_name) - { - var pdfUrl = U('/api/files/equipmentmanuals/' + btoa(equipmentItem.instruction_manual_file_name)); - $("#selected-equipment-instruction-manual").attr("src", pdfUrl); + var equipmentLocation = FindObjectInArrayByPropertyValue(Grocy.Locations, 'id', equipmentItem.location_id); + if (equipmentLocation) + { + $("#selected-equipment-location-name").text(equipmentLocation.name); + $("#selected-equipment-location").removeClass("d-none"); + } + else + { + $("#selected-equipment-location-name").text(""); + $("#selected-equipment-location").addClass("d-none"); + } + + if (equipmentItem.instruction_manual_file_name) + { + var pdfUrl = U('/api/files/equipmentmanuals/' + btoa(equipmentItem.instruction_manual_file_name)); + $("#selected-equipment-instruction-manual").attr("src", pdfUrl); $("#selectedEquipmentInstructionManualDownloadButton").attr("href", pdfUrl); $("#selected-equipment-instruction-manual").removeClass("d-none"); $("#selectedEquipmentInstructionManualDownloadButton").removeClass("d-none"); diff --git a/public/viewjs/equipmentform.js b/public/viewjs/equipmentform.js index 57810557..f910238e 100644 --- a/public/viewjs/equipmentform.js +++ b/public/viewjs/equipmentform.js @@ -12,7 +12,11 @@ return; } - var jsonData = $('#equipment-form').serializeJSON(); + var jsonData = $('#equipment-form').serializeJSON(); + if (jsonData.location_id == "") + { + jsonData.location_id = null; + } Grocy.FrontendHelpers.BeginUiBusy("equipment-form"); if ($("#instruction-manual")[0].files.length > 0) diff --git a/views/equipment.blade.php b/views/equipment.blade.php index c01d6d96..a510ecd5 100644 --- a/views/equipment.blade.php +++ b/views/equipment.blade.php @@ -5,10 +5,14 @@ @section('title', $__t('Equipment')) @section('content') + +
-
-