Working with modal tabs, I have a notification pop-up window that is always displayed to the user upon logging into my application. This pop-up contains all events that occurred while the user was offline. The issue arises when clicking on any object from the list, as it closes the pop-up window and opens a new modal tab.
My goal is to achieve a functionality where, upon user login, the notification pop-up window appears and if the user clicks on any object, it opens another window without closing the notification pop-up (showing new events). The desired feature is illustrated in the picture I have attached below.
https://i.sstatic.net/vX44N.jpg
I have consulted the Angular Material documentation, but it lacks a demo and clear explanation of how to work with the multiple: true
option to achieve the desired outcome. I am unsure of how to implement it as I want.
https://material.angularjs.org/latest/api/service/$mdDialog
Below is the code for displaying the notification pop-up window:
//show new notifications when user logs in
NotificationService.getUnreadedNotifications(function (data) {
//initialization
$scope.notification = [];
$scope.OverAllCount = 0;
$scope.messageNotification = [];
$scope.OverAllMessageCount = 0;
if (data.ProjectNotifications != null) {
angular.forEach(data.ProjectNotifications, function (key, value) {
$scope.notification.push(key);
$scope.OverAllCount = $scope.OverAllCount + 1;
});
}
if (data.TasksNotifications != null) {
angular.forEach(data.TasksNotifications, function (key, value) {
$scope.notification.push(key);
$scope.OverAllCount = $scope.OverAllCount + 1;
});
}
if (data.MessageNotifications != null) {
angular.forEach(data.MessageNotifications, function (key, value) {
$scope.OverAllMessageCount = $scope.OverAllMessageCount + 1;
$scope.messageNotification.push(key);
});
}
popUpNotification();
$scope.hide = function () {
$mdDialog.hide();
};
$scope.cancel = function () {
$mdDialog.cancel();
};
$scope.answer = function (answer) {
$mdDialog.hide(answer);
};
//mark notifications as read when user clicks on them
function popUpNotification() {
$mdDialog.show({
controller: NotificationController,
templateUrl: 'app/components/templates/PopUpNotification.html',
parent: angular.element(document.body),
clickOutsideToClose: true,
fullscreen: false,
scope: $scope,
multiple:true,
preserveScope: true,
onComplete: function () {
$scope.notificationPopUp = $scope.notification;
}
})
.then(function () {
}, function () {
//fail
});
}
});
And here is the code for displaying details of the object on which the user clicked in a new overlaying modal tab:
//mark notifications as read when user clicks on them
$scope.popUpDetail = function (notification, index, ev) {
$mdDialog.show({
controller: NotificationController,
templateUrl: 'app/components/templates/TaskDetailsDialog.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose: true,
fullscreen: false,
scope: $scope,
multiple: true,
preserveScope: true,
onComplete: function () {
//update database once notification is read
NotificationResourceService.update({ id: notification.Id }, notification);
$scope.OverAllCount -= 1;
$scope.notification.splice(index, 1);
TaskService.get({ id: notification.EntityId })
.$promise.then(function (task) {
$scope.task = task;
});
}
})
.then(function () {
}, function () {
//fail
});
}