KONTOLODON
/
var
/
www
/
old-ojs-3.3.0-11
/
lib
/
pkp
/
js
/
pages
/
header
/
Nama File / Folder
Size
Action
HeaderHandler.js
1.062KB
Hapus
Edit
Rename
TasksHandler.js
3.558KB
Hapus
Edit
Rename
/** * @file js/pages/header/TasksHandler.js * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class TasksHandler * @ingroup js_pages_index * * @brief Handler for the site header. * */ (function($) { /** * @constructor * * @extends $.pkp.classes.Handler * * @param {jQueryObject} $tasksElement The HTML element encapsulating * the tasks. * @param {{requestedPage: string, * fetchUnreadNotificationsCountUrl: string}} options Handler options. */ $.pkp.pages.header.TasksHandler = function($tasksElement, options) { this.options_ = options; this.parent($tasksElement, options); $('#notificationsToggle').click(this.callbackWrapper( this.appendToggleIndicator_)); this.bind('updateUnreadNotificationsCount', this.fetchUnreadNotificationsCountHandler_); }; $.pkp.classes.Helper.inherits( $.pkp.pages.header.TasksHandler, $.pkp.classes.Handler); /** * Tasks handler options. * @private * @type {{requestedPage: string}?} */ $.pkp.pages.header.TasksHandler.prototype.options_ = null; // // Private helper methods // /** * Toggle the notifications grid visibility * * @param {jQueryObject} callingElement The calling element. * that triggered the event. * @param {Event} event The event. * @private */ $.pkp.pages.header.TasksHandler.prototype.appendToggleIndicator_ = function(callingElement, event) { var $header = this.getHtmlElement(), $popover = $header.find('#notificationsPopover'), $toggle = $header.find('#notificationsToggle'); $popover.toggle(); $toggle.toggleClass('expandedIndicator'); if ($toggle.hasClass('expandedIndicator')) { this.trigger('callWhenClickOutside', [{ container: $header, callback: this.callbackWrapper(this.appendToggleIndicator_) }]); setTimeout(this.callbackWrapper(this.setPopoverSize_), 500); } else { $popover.css('height', '').css('overflow-y', ''); if (event) { this.trigger('callWhenClickOutside', [{ container: $header, clear: true }]); } } }; /** * Resize the popover if it is too big for the screen when opened * @private */ $.pkp.pages.header.TasksHandler.prototype.setPopoverSize_ = function() { var $popover = this.getHtmlElement().find('#notificationsPopover'), maxHeight = $(window).height() - 60; if (maxHeight < $popover.height()) { $popover.height(maxHeight).css('overflow-y', 'scroll'); } }; /** * Handler to kick off a request to update the unread notifications * count. * @param {Object} ajaxContext The AJAX request context. * @param {Object} jsonData A parsed JSON response object. * @private */ $.pkp.pages.header.TasksHandler.prototype. fetchUnreadNotificationsCountHandler_ = function(ajaxContext, jsonData) { $.get(this.options_.fetchUnreadNotificationsCountUrl, this.callbackWrapper( this.updateUnreadNotificationsCountHandler_), 'json'); }; /** * Handler to update the unread notifications count upon receipt of * an updated number. * event. * @param {Object} ajaxContext The AJAX request context. * @param {Object} jsonData A parsed JSON response object. * @private */ $.pkp.pages.header.TasksHandler.prototype. updateUnreadNotificationsCountHandler_ = function(ajaxContext, jsonData) { var el = this.getHtmlElement().find('#unreadNotificationCount'); el.html(jsonData.content); if (jsonData.content == '0') { el.removeClass('hasTasks'); } else { el.addClass('hasTasks'); } }; }(jQuery));