Merge pull request #337 from helsinki-systems/prevent-double-event-creation

fix(calendar(js)): prevent duplicate event creation in case of an event conflict (@leonklingele)
This commit is contained in:
WoodySlum
2024-06-04 11:14:26 +02:00
committed by GitHub
2 changed files with 16 additions and 7 deletions

View File

@@ -7,7 +7,7 @@
<md-dialog
flex="{{ editor.isFullscreen? 100 : 60 }}"
flex-sm="{{ editor.isFullscreen? 100 : 80 }}">
<form name="eventForm" class="md-inline-form" ng-submit="editor.save(eventForm)">
<form name="eventForm" class="md-inline-form">
<md-toolbar>
<div class="md-toolbar-tools sg-no-transition">
<md-icon class="material-icons sg-icon-toolbar-bg">event</md-icon>
@@ -318,6 +318,7 @@
<var:string label:value="Reset"/>
</md-button>
<md-button class="md-primary" type="submit"
ng-click="editor.save(eventForm)"
ng-disabled="eventForm.$invalid || eventForm.$submitted">
<var:string label:value="Save"/>
</md-button>
@@ -359,9 +360,9 @@
ng-click="editor.edit(eventForm)">
<var:string label:value="Edit"/>
</md-button>
<md-button class="md-warn" type="button"
<md-button class="md-warn" type="submit"
ng-click="editor.save(eventForm, { ignoreConflicts: true })"
ng-disabled="editor.eventForm.$invalid">
ng-disabled="eventForm.$invalid || eventForm.$submitted">
<var:string label:value="Save"/>
</md-button>
</md-dialog-actions>
@@ -394,10 +395,10 @@
ng-click="editor.edit(eventForm)">
<var:string label:value="Edit"/>
</md-button>
<md-button class="md-warn" type="button"
<md-button class="md-warn" type="submit"
ng-show="editor.attendeeConflictError.unavailableAttendees"
ng-click="editor.save(eventForm, { removeAttendees: editor.attendeeConflictError.unavailableAttendees })"
ng-disabled="editor.eventForm.$invalid">
ng-disabled="eventForm.$invalid || eventForm.$submitted">
<var:string label:value="Save"/>
</md-button>
</md-dialog-actions>

View File

@@ -551,10 +551,13 @@
$mdDialog.cancel = vm.originalModalCancel;
$mdDialog.hide();
}, function(response) {
if (response.status == CalendarSettings.ConflictHTTPErrorCode)
vm.allowResubmit(form);
if (response.status == CalendarSettings.ConflictHTTPErrorCode) {
vm.attendeeConflictError = _.isObject(response.data.message) ? response.data.message : { reject: response.data.message };
else
} else {
vm.edit(form);
}
});
}
});
@@ -588,6 +591,11 @@
form.$setDirty();
};
this.allowResubmit = function (form) {
form.$setPristine();
form.$setDirty();
};
function getHours() {
var hours = [];
for (var i = 0; i <= 23; i++) {