mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-10 21:24:20 +01:00
119 lines
3.8 KiB
JavaScript
119 lines
3.8 KiB
JavaScript
/* eslint-disable
|
|
no-return-assign,
|
|
no-undef,
|
|
no-unused-vars,
|
|
*/
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
// Fix any style issues and re-enable lint.
|
|
/*
|
|
* decaffeinate suggestions:
|
|
* DS102: Remove unnecessary code created because of implicit returns
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
*/
|
|
'use strict'
|
|
|
|
// #
|
|
// Controller used in notifications page
|
|
// inherits $scope.$parent.notifications (global notifications state) from ApplicationController
|
|
// #
|
|
Application.Controllers.controller('NotificationsController', ['$scope', 'Notification', function ($scope, Notification) {
|
|
/* PRIVATE STATIC CONSTANTS */
|
|
|
|
// Number of notifications added to the page when the user clicks on 'load next notifications'
|
|
const NOTIFICATIONS_PER_PAGE = 15
|
|
|
|
/* PUBLIC SCOPE */
|
|
|
|
// # Array containg the archived notifications (already read)
|
|
$scope.notificationsRead = []
|
|
|
|
// # Array containg the new notifications (not read)
|
|
$scope.notificationsUnread = []
|
|
|
|
// # Total number of notifications for the current user
|
|
$scope.total = 0
|
|
|
|
// # Total number of unread notifications for the current user
|
|
$scope.totalUnread = 0
|
|
|
|
// # By default, the pagination mode is activated to limit the page size
|
|
$scope.paginateActive = true
|
|
|
|
// # The currently displayed page number
|
|
$scope.page = 1
|
|
|
|
// #
|
|
// Mark the provided notification as read, updating its status on the server and moving it
|
|
// to the already read notifications list.
|
|
// @param notification {{id:number}} the notification to mark as read
|
|
// @param e {Object} see https://docs.angularjs.org/guide/expression#-event-
|
|
// #
|
|
$scope.markAsRead = function (notification, e) {
|
|
e.preventDefault()
|
|
return Notification.update({ id: notification.id }, {
|
|
id: notification.id,
|
|
is_read: true
|
|
}
|
|
, function (updatedNotif) {
|
|
// remove notif from unreads
|
|
const index = $scope.notificationsUnread.indexOf(notification)
|
|
$scope.notificationsUnread.splice(index, 1)
|
|
// add update notif to read
|
|
$scope.notificationsRead.push(updatedNotif)
|
|
// update counters
|
|
$scope.$parent.notifications.unread -= 1
|
|
return $scope.totalUnread -= 1
|
|
})
|
|
}
|
|
|
|
// #
|
|
// Mark every unread notifications as read and move them for the unread list to to read array.
|
|
// #
|
|
$scope.markAllAsRead = () =>
|
|
Notification.update({}
|
|
, function () { // success
|
|
// add notifs to read
|
|
angular.forEach($scope.notificationsUnread, function (n) {
|
|
n.is_read = true
|
|
return $scope.notificationsRead.push(n)
|
|
})
|
|
// clear unread
|
|
$scope.notificationsUnread = []
|
|
// update counters
|
|
$scope.$parent.notifications.unread = 0
|
|
return $scope.totalUnread = 0
|
|
})
|
|
|
|
// #
|
|
// Request the server to retrieve the next notifications and add them
|
|
// to their corresponding notifications list (read or unread).
|
|
// #
|
|
$scope.addMoreNotifications = function () {
|
|
Notification.query({ page: $scope.page }, function (notifications) {
|
|
$scope.total = notifications.totals.total
|
|
$scope.totalUnread = notifications.totals.unread
|
|
angular.forEach(notifications.notifications, function (notif) {
|
|
if (notif.is_read) {
|
|
return $scope.notificationsRead.push(notif)
|
|
} else {
|
|
return $scope.notificationsUnread.push(notif)
|
|
}
|
|
})
|
|
return $scope.paginateActive = (notifications.totals.total > ($scope.notificationsRead.length + $scope.notificationsUnread.length))
|
|
})
|
|
|
|
return $scope.page += 1
|
|
}
|
|
|
|
/* PRIVATE SCOPE */
|
|
|
|
// #
|
|
// Kind of constructor: these actions will be realized first when the controller is loaded
|
|
// #
|
|
const initialize = () => $scope.addMoreNotifications()
|
|
|
|
// # !!! MUST BE CALLED AT THE END of the controller
|
|
return initialize()
|
|
}
|
|
])
|