diff --git a/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/datatypes/json/JSONDocument.java b/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/datatypes/json/JSONDocument.java index 04acf6178..b4f7e024d 100644 --- a/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/datatypes/json/JSONDocument.java +++ b/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/datatypes/json/JSONDocument.java @@ -97,7 +97,7 @@ public static final JSONDocument ofDocument(final Document document, final JSONO final DocumentSaveStatus documentSaveStatus = document.getSaveStatus(); if (documentSaveStatus != null) { - jsonDocument.setSaveStatus(documentSaveStatus.toJson()); + jsonDocument.setSaveStatus(documentSaveStatus); } // @@ -186,7 +186,7 @@ private static JSONDocument ofEvent(final DocumentChanges documentChangedEvents, final DocumentSaveStatus documentSaveStatus = documentChangedEvents.getDocumentSaveStatus(); if (documentSaveStatus != null) { - jsonDocument.setSaveStatus(documentSaveStatus.toJson()); + jsonDocument.setSaveStatus(documentSaveStatus); } // @@ -278,6 +278,9 @@ public static JSONDocument ofDocumentView(final IDocumentView documentView) @JsonInclude(JsonInclude.Include.NON_EMPTY) private String validStatus; + @JsonProperty("saved") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private Boolean saved; @JsonProperty("save-status") @JsonInclude(JsonInclude.Include.NON_EMPTY) private String saveStatus; @@ -369,11 +372,12 @@ public String getValidStatus() return validStatus; } - private void setSaveStatus(final String saveStatus) + private void setSaveStatus(final DocumentSaveStatus documentSaveStatus) { - this.saveStatus = saveStatus; + this.saveStatus = documentSaveStatus.toJson(); + this.saved = documentSaveStatus.isSaved(); } - + public String getSaveStatus() { return saveStatus; diff --git a/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/Document.java b/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/Document.java index 5f466dd9e..01d01e919 100644 --- a/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/Document.java +++ b/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/Document.java @@ -70,11 +70,11 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public - * License along with this program. If not, see + * License along with this program. If not, see * . * #L% */ @@ -557,7 +557,7 @@ public String getVersion() { return parentSupplier.getVersion(); } - + private final IDocumentEvaluatee getEvaluatee(final DocumentFieldDescriptor fieldInScope) { if (fieldInScope == null) @@ -936,11 +936,13 @@ private final DocumentValidStatus setValidStatusAndReturn(final DocumentValidSta private final DocumentSaveStatus setSaveStatusAndReturn(final DocumentSaveStatus saveStatus) { Preconditions.checkNotNull(saveStatus, "saveStatus"); - final DocumentSaveStatus saveStatusOld = _saveStatus; - if (Objects.equals(saveStatusOld, saveStatus)) - { - return saveStatusOld; // no change - } + + // Don't check if changed because we want ALWAYS to collect the save status + // final DocumentSaveStatus saveStatusOld = _saveStatus; + // if (Objects.equals(saveStatusOld, saveStatus)) + // { + // return saveStatusOld; // no change + // } _saveStatus = saveStatus; Execution.getCurrentDocumentChangesCollector().collectDocumentSaveStatusChanged(getDocumentPath(), saveStatus); @@ -955,7 +957,7 @@ public IDocumentEvaluatee asEvaluatee() } return _evaluatee; } - + /** * Similar with {@link #setValue(String, Object, ReasonSupplier)} but this method is also checking if we are allowed to change that field * @@ -1591,7 +1593,7 @@ private DocumentStaleState getStale() { return _staleStatus; } - + /* package */boolean isStaled() { return _staleStatus.isStaled(); @@ -1623,7 +1625,7 @@ public String toString() .add("document", Document.this) .toString(); } - + public boolean isStaled() { return staled; @@ -1745,14 +1747,13 @@ public Builder initializeAsNewDocument(final Supplier newDocumentIdS initializeAsNewDocument(new SimpleDocumentValuesSupplier(newDocumentIdSupplier, version)); return this; } - + public Builder initializeAsNewDocument(final IntSupplier newDocumentIdSupplier, final String version) { initializeAsNewDocument(new SimpleDocumentValuesSupplier(DocumentId.supplier(newDocumentIdSupplier), version)); return this; } - private boolean isNewDocument() { return fieldInitializerMode == FieldInitializationMode.NewDocument; @@ -1763,7 +1764,7 @@ public Document initializeAsExistingRecord(final DocumentValuesSupplier document Preconditions.checkNotNull(documentValuesSupplier, "documentValuesSupplier"); fieldInitializerMode = FieldInitializationMode.Load; this.documentValuesSupplier = documentValuesSupplier; - + return build(); } diff --git a/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/DocumentSaveStatus.java b/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/DocumentSaveStatus.java index 2b3fc8bb6..53010c917 100644 --- a/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/DocumentSaveStatus.java +++ b/metasfresh-webui-api/src/main/java/de/metas/ui/web/window/model/DocumentSaveStatus.java @@ -115,6 +115,11 @@ public boolean equals(final Object obj) && error == other.error && Objects.equals(reason, other.reason); } + + public boolean isSaved() + { + return !hasChangesToBeSaved && !error; + } public boolean hasChangesToBeSaved() {