Skip to content

Commit

Permalink
fix(calendar): Impossible to create a new event after creating a new …
Browse files Browse the repository at this point in the history
…one. Closes #5718
  • Loading branch information
WoodySlum committed Mar 28, 2023
1 parent 5a82588 commit f813b78
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 28 deletions.
2 changes: 1 addition & 1 deletion UI/WebServerResources/js/Scheduler.services.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion UI/WebServerResources/js/Scheduler.services.js.map

Large diffs are not rendered by default.

72 changes: 46 additions & 26 deletions UI/WebServerResources/js/Scheduler/CalendarListController.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,36 +205,49 @@
component = Calendar.$get(component.pid).$getComponent(component.id, component.occurrenceId);
promise = component.$futureComponentData;
}
var originalDataHash = eventHash(component);

if (vm.isComponentOpened) { // Prevent opening a new modal if there is already one opened (multiple clicks)
return;
}
promise.then(function() {
// UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox or
// UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox
var templateUrl = 'UIx' + type.capitalize() + 'ViewTemplate';

if (vm.isComponentOpened) { // Prevent opening a new modal if there is already one opened (multiple clicks)
return;
}

if ('appointment' === type) {
// TODO: Improve Angular implementation
var originalCancel = $mdDialog.cancel;
var originalDataHash = eventHash(component);
vm.isComponentOpened = true;
var originalDestroy = $mdDialog.destroy;
var originalShow = $mdDialog.show;


$mdDialog.cancel = () => {
var newDataHash = eventHash(component);
$mdDialog.show = function(p) {
vm.isComponentOpened = true;

if (originalDataHash === newDataHash) {
originalCancel();
$mdDialog.cancel = originalCancel;
$mdDialog.cancel = function () {
var newDataHash = eventHash(component);
vm.isComponentOpened = false;
} else if (confirm(l('You have modified data unsaved. Do you want to close popup and loose data ?'))) {
originalCancel();
$mdDialog.cancel = originalCancel;

if (originalDataHash === newDataHash) {
$mdDialog.cancel = originalCancel;
return originalCancel();
} else if (confirm(l('You have modified data unsaved. Do you want to close popup and loose data ?'))) {
$mdDialog.cancel = originalCancel;
return originalCancel();
}
};

$mdDialog.destroy = function () {
vm.isComponentOpened = false;
}
};
}
$mdDialog.cancel = originalCancel;
$mdDialog.destroy = originalDestroy;
return originalDestroy();
};

promise.then(function() {
// UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox or
// UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox
var templateUrl = 'UIx' + type.capitalize() + 'ViewTemplate';
return originalShow(p);
};

$mdDialog.show({
parent: angular.element(document.body),
targetEvent: $event,
Expand Down Expand Up @@ -273,23 +286,30 @@

// TODO: Improve Angular implementation
var originalCancel = $mdDialog.cancel;
var originalDestroy = $mdDialog.destroy;
var originalDataHash = eventHash(component);
vm.isComponentOpened = true;

$mdDialog.cancel = () => {
$mdDialog.cancel = function() {
var newDataHash = eventHash(component);
vm.isComponentOpened = false;

if (originalDataHash === newDataHash) {
originalCancel();
$mdDialog.cancel = originalCancel;
vm.isComponentOpened = false;
return originalCancel();
} else if (confirm(l('You have modified data unsaved. Do you want to close popup and loose data ?'))) {
originalCancel();
$mdDialog.cancel = originalCancel;
vm.isComponentOpened = false;
return originalCancel();
}
};

$mdDialog.destroy = function () {
vm.isComponentOpened = false;
$mdDialog.cancel = originalCancel;
$mdDialog.destroy = originalDestroy;
return originalDestroy();
};

return $mdDialog.show({
parent: angular.element(document.body),
targetEvent: $event,
Expand Down

0 comments on commit f813b78

Please sign in to comment.