Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js
| /** | /** | ||||
| * @provides javelin-behavior-aphlict-dropdown | * @provides javelin-behavior-aphlict-dropdown | ||||
| * @requires javelin-behavior | * @requires javelin-behavior | ||||
| * javelin-request | * javelin-request | ||||
| * javelin-stratcom | * javelin-stratcom | ||||
| * javelin-vector | * javelin-vector | ||||
| * javelin-dom | * javelin-dom | ||||
| * javelin-uri | * javelin-uri | ||||
| * javelin-behavior-device | * javelin-behavior-device | ||||
| * phabricator-title | |||||
| */ | */ | ||||
| JX.behavior('aphlict-dropdown', function(config, statics) { | JX.behavior('aphlict-dropdown', function(config, statics) { | ||||
| // Track the current globally visible menu. | // Track the current globally visible menu. | ||||
| statics.visible = statics.visible || null; | statics.visible = statics.visible || null; | ||||
| var dropdown = JX.$(config.dropdownID); | var dropdown = JX.$(config.dropdownID); | ||||
| var bubble = JX.$(config.bubbleID); | var bubble = JX.$(config.bubbleID); | ||||
| var count; | var count; | ||||
| if (config.countID) { | if (config.countID) { | ||||
| count = JX.$(config.countID); | count = JX.$(config.countID); | ||||
| } | } | ||||
| var request = null; | var request = null; | ||||
| var dirty = config.local ? false : true; | var dirty = config.local ? false : true; | ||||
| JX.Title.setCount(config.countType, config.countNumber); | |||||
| function refresh() { | function refresh() { | ||||
| if (dirty) { | if (dirty) { | ||||
| JX.DOM.setContent(dropdown, config.loadingText); | JX.DOM.setContent(dropdown, config.loadingText); | ||||
| JX.DOM.alterClass( | JX.DOM.alterClass( | ||||
| dropdown, | dropdown, | ||||
| 'phabricator-notification-menu-loading', | 'phabricator-notification-menu-loading', | ||||
| true); | true); | ||||
| } | } | ||||
| if (request) { //already fetching | if (request) { //already fetching | ||||
| return; | return; | ||||
| } | } | ||||
| request = new JX.Request(config.uri, function(response) { | request = new JX.Request(config.uri, function(response) { | ||||
| JX.Title.setCount(config.countType, response.number); | |||||
| var display = (response.number > 999) ? '\u221E' : response.number; | var display = (response.number > 999) ? '\u221E' : response.number; | ||||
| JX.DOM.setContent(count, display); | JX.DOM.setContent(count, display); | ||||
| if (response.number === 0) { | if (response.number === 0) { | ||||
| JX.DOM.alterClass(bubble, 'alert-unread', false); | JX.DOM.alterClass(bubble, 'alert-unread', false); | ||||
| } else { | } else { | ||||
| JX.DOM.alterClass(bubble, 'alert-unread', true); | JX.DOM.alterClass(bubble, 'alert-unread', true); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 100 Lines • Show Last 20 Lines | |||||