resets dirty state for successfully saved variants when validation fails for other ones, updates the dialogs to show the notifications when filtered.

This commit is contained in:
Shannon
2018-09-06 22:22:08 +10:00
parent 729177ffef
commit ad85f1b3dd
3 changed files with 38 additions and 14 deletions

View File

@@ -79,18 +79,7 @@
$scope.content.variants[0].publish = false;
}
}
function countDirtyVariants() {
var count = 0;
for (var i = 0; i < $scope.content.variants.length; i++) {
var v = $scope.content.variants[i];
if (v.isDirty) {
count++;
}
}
return count;
}
/** Returns true if the save/publish dialog should be shown when pressing the button */
function showSaveOrPublishDialog() {
return $scope.content.variants.length > 1;
@@ -274,6 +263,24 @@
}
}
/**
* Used to clear the dirty state for successfully saved variants when not all variant saving was successful
* @param {any} variants
*/
function clearDirtyState(variants) {
for (var i = 0; i < variants.length; i++) {
var v = variants[i];
if (v.notifications) {
var isSuccess = _.find(v.notifications, function (n) {
return n.type === 3; //this is a success notification
});
if (isSuccess) {
v.isDirty = false;
}
}
}
}
if ($scope.page.isNew) {
$scope.page.loading = true;
@@ -382,6 +389,7 @@
return $q.when(data);
},
function (err) {
clearDirtyState($scope.content.variants);
model.submitButtonState = "error";
//re-map the dialog model since we've re-bound the properties
dialog.variants = $scope.content.variants;
@@ -433,6 +441,7 @@
return $q.when(data);
},
function (err) {
clearDirtyState($scope.content.variants);
model.submitButtonState = "error";
//re-map the dialog model since we've re-bound the properties
dialog.variants = $scope.content.variants;

View File

@@ -58,7 +58,15 @@
<span>{{ variant.language.name }}</span>
<strong ng-if="variant.language.isMandatory" class="umb-control-required">*</strong>
</div>
<umb-variant-state class="umb-permission__description" variant="variant"></umb-variant-state>
<div ng-if="!(variant.notifications && variant.notifications.length > 0)">
<umb-variant-state class="umb-permission__description" variant="variant"></umb-variant-state>
</div>
<div ng-repeat="notification in variant.notifications">
<div class="umb-permission__description" style="color: #1FB572;">{{notification.message}}</div>
</div>
</div>
</div>
</div>

View File

@@ -58,7 +58,14 @@
<span>{{ variant.language.name }}</span>
<strong ng-if="variant.language.isMandatory" class="umb-control-required">*</strong>
</div>
<umb-variant-state class="umb-permission__description" variant="variant"></umb-variant-state>
<div ng-if="!(variant.notifications && variant.notifications.length > 0)">
<umb-variant-state class="umb-permission__description" variant="variant"></umb-variant-state>
</div>
<div ng-repeat="notification in variant.notifications">
<div class="umb-permission__description" style="color: #1FB572;">{{notification.message}}</div>
</div>
</div>
</div>
</div>