From 248e2cac6bdaa809524fc3c096575962b4f57913 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Tue, 19 Dec 2023 15:05:27 +0100 Subject: [PATCH] EDocument handling improved --- .../lis/ui/data/EntityDocumentDataModel.java | 48 +++++++++++++------ .../ui/editor/ServiceRecordEditorModel.java | 2 +- .../common/EntityAttachmentEditorModel.java | 12 ----- .../resources/web/form/attachment-form.zul | 17 +++---- 4 files changed, 43 insertions(+), 36 deletions(-) diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/EntityDocumentDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/EntityDocumentDataModel.java index 8d8443c..dbf8f12 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/EntityDocumentDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/EntityDocumentDataModel.java @@ -7,11 +7,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; +import org.zkoss.bind.BindUtils; +import org.zkoss.bind.annotation.Command; import org.zkoss.zul.ListModelList; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.util.*; @Log4j2 @Component @@ -23,32 +23,45 @@ public class EntityDocumentDataModel extends ListModelList { private EDocumentRepository eDocumentRepository; - public EDocument refresh(Long referenceId, String documentType) { + public EDocument getSelectedDocument() { EDocument result = null; + Set documents = getSelection(); + Optional document = documents.stream().findFirst(); + if (document.isPresent()) { + result = document.get(); + } + return result; + } + + + public void setSelectedDocument(EDocument document) { + clearSelection(); + if (Objects.nonNull(document)) { + addToSelection(document); + } + BindUtils.postNotifyChange(this, "selectedDocument"); + } + + public void refresh(Long referenceId, String documentType) { clear(); List documents = eDocumentRepository.findByReferenceIdAndDocumentType(referenceId, documentType); addAll(documents); if (!documents.isEmpty()) { - result = documents.stream().findFirst().get(); + setSelectedDocument(documents.stream().findFirst().get()); } - return result; } public void addNew(EDocument document) { added.add(document); -// selectedDocument = document; add(document); + setSelectedDocument(document); } public void remove() { - Set documents = getSelection(); - if (documents.isEmpty()) { - return; - } - removed.addAll(documents); -// clearSelection(); -// selectedDocument = null; - removeAll(documents); + EDocument selectedDocument = getSelectedDocument(); + removed.add(selectedDocument); + setSelectedDocument(null); + remove(selectedDocument); } public void save(Long entityId) { @@ -60,4 +73,9 @@ public class EntityDocumentDataModel extends ListModelList { public boolean isChanged() { return !added.isEmpty() || !removed.isEmpty(); } + + @Command + public void onSelectionChanged() { + BindUtils.postNotifyChange(this, "selectedDocument"); + } } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java index 944844f..f3a598f 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ServiceRecordEditorModel.java @@ -53,7 +53,7 @@ public class ServiceRecordEditorModel extends EntityAttachmentEditorModel extends EntityE @WireVariable private EntityDocumentDataModel entityDocumentDataModel; - @Getter - @Setter - private EDocument selectedDocument; - protected boolean canSave(T entity) { return true; } @@ -64,13 +59,6 @@ public class EntityAttachmentEditorModel extends EntityE validate(); } -// @Command -// public void onSelectFile(@BindingParam("selectedDocument") EDocument selectedDocument) { -// entityDocumentDataModel.clearSelection(); -// entityDocumentDataModel.addToSelection(selectedDocument); -// entityDocumentDataModel.setSelectedDocument(selectedDocument); -// } - @Override protected boolean areDifferent(T entity) { return super.areDifferent(entity) || entityDocumentDataModel.isChanged(); diff --git a/lis-ui/src/main/resources/web/form/attachment-form.zul b/lis-ui/src/main/resources/web/form/attachment-form.zul index e99d831..7b50fcf 100644 --- a/lis-ui/src/main/resources/web/form/attachment-form.zul +++ b/lis-ui/src/main/resources/web/form/attachment-form.zul @@ -6,20 +6,21 @@ onUpload="@command('onUploadFile')"/> + disabled="@load(empty vm.entityDocumentDataModel.selectedDocument)"/> - + + sizedByContent="true" onSelect="@command(vm.entityDocumentDataModel.onSelectionChanged())"> - + @@ -27,7 +28,7 @@