attribute dialog doesn't allow to (attempt to) save relation without target note

This commit is contained in:
azivner 2018-11-19 21:58:52 +01:00
parent 3608857f25
commit 5bf5d1cac4
3 changed files with 12 additions and 2 deletions

View File

@ -114,7 +114,7 @@ function AttributesModel() {
function isValid() { function isValid() {
for (let attributes = self.ownedAttributes(), i = 0; i < attributes.length; i++) { for (let attributes = self.ownedAttributes(), i = 0; i < attributes.length; i++) {
if (self.isEmptyName(i)) { if (self.isEmptyName(i) || self.isEmptyRelationTarget(i)) {
return false; return false;
} }
} }
@ -212,6 +212,12 @@ function AttributesModel() {
return cur.name.trim() === "" && !cur.isDeleted && (cur.attributeId !== "" || cur.labelValue !== "" || cur.relationValue); return cur.name.trim() === "" && !cur.isDeleted && (cur.attributeId !== "" || cur.labelValue !== "" || cur.relationValue);
}; };
this.isEmptyRelationTarget = function(index) {
const cur = self.ownedAttributes()[index]();
return cur.type === "relation" && !cur.isDeleted && cur.name && !cur.relationValue;
};
this.getTargetAttribute = function(target) { this.getTargetAttribute = function(target) {
const context = ko.contextFor(target); const context = ko.contextFor(target);
const index = context.$index(); const index = context.$index();

View File

@ -92,7 +92,7 @@ function initNoteAutocomplete($el, options) {
$el.on('autocomplete:selected', (event, suggestion) => $el.setSelectedPath(suggestion.path)); $el.on('autocomplete:selected', (event, suggestion) => $el.setSelectedPath(suggestion.path));
$el.on('autocomplete:closed', () => { $el.on('autocomplete:closed', () => {
if (!$el.val().trim()) { if (!$el.val().trim()) {
$el.setSelectedPath(""); clearText($el);
} }
}); });
} }

View File

@ -48,6 +48,10 @@
<input class="form-control relation-target-note-id" <input class="form-control relation-target-note-id"
placeholder="search for note by its name" placeholder="search for note by its name"
data-bind="noteAutocomplete, value: relationValue, valueUpdate: 'blur', event: { blur: $parent.attributeChanged }"> data-bind="noteAutocomplete, value: relationValue, valueUpdate: 'blur', event: { blur: $parent.attributeChanged }">
<div style="color: red" data-bind="if: $parent.isEmptyRelationTarget($index())">Relation target note
can't be empty.
</div>
</div> </div>
<div data-bind="visible: type == 'label-definition'"> <div data-bind="visible: type == 'label-definition'">