summaryrefslogtreecommitdiff
path: root/p/scripts
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-01-27 22:09:57 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-01-27 22:09:57 +0100
commit6a43bd85df4aa47733fe57e1a859d74cd30cbe25 (patch)
tree668b86eb1f999e6cba95bf9432b6a7a7a2d36f00 /p/scripts
parent1f3fcf48aae8f2c93775fd87f90299cd0015c675 (diff)
parent6c147e749dc6f15dddaeff82ea437087d098ab95 (diff)
Merge branch 'Bubbendorf-dev' into dev
Diffstat (limited to 'p/scripts')
-rw-r--r--p/scripts/main.js77
1 files changed, 61 insertions, 16 deletions
diff --git a/p/scripts/main.js b/p/scripts/main.js
index d775b3a20..ddfa0aec8 100644
--- a/p/scripts/main.js
+++ b/p/scripts/main.js
@@ -20,33 +20,47 @@ function redirect(url, new_tab) {
}
}
+function numberFormat(nStr) {
+ // Thx to http://www.mredkj.com/javascript/numberFormat.html
+ nStr += '';
+ var x = nStr.split('.');
+ var x1 = x[0];
+ var x2 = x.length > 1 ? '.' + x[1] : '';
+ var rgx = /(\d+)(\d{3})/;
+ while (rgx.test(x1)) {
+ x1 = x1.replace(rgx, '$1' + " " + '$2');
+ }
+ return x1 + x2;
+}
+
function incLabel(p, inc) {
var i = (parseInt(p.replace(/\D/g, ''), 10) || 0) + inc;
- return i > 0 ? ' (' + i + ')' : '';
+ return i > 0 ? ' (' + numberFormat(i) + ')' : '';
}
function incUnreadsFeed(article, feed_id, nb) {
+
//Update unread: feed
var elem = $('#' + feed_id + '>.feed').get(0),
- feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread'), 10) || 0) : 0,
+ feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread').replace(' ', ''), 10) || 0) : 0,
feed_priority = elem ? (parseInt(elem.getAttribute('data-priority'), 10) || 0) : 0;
if (elem) {
- elem.setAttribute('data-unread', Math.max(0, feed_unreads + nb));
+ elem.setAttribute('data-unread', numberFormat(Math.max(0, feed_unreads + nb)));
}
//Update unread: category
elem = $('#' + feed_id).parent().prevAll('.category').children(':first').get(0);
- feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread'), 10) || 0) : 0;
+ feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread').replace(' ', ''), 10) || 0) : 0;
if (elem) {
- elem.setAttribute('data-unread', Math.max(0, feed_unreads + nb));
+ elem.setAttribute('data-unread', numberFormat(Math.max(0, feed_unreads + nb)));
}
//Update unread: all
if (feed_priority > 0) {
elem = $('#aside_flux .all').children(':first').get(0);
if (elem) {
- feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread'), 10) || 0) : 0;
- elem.setAttribute('data-unread', Math.max(0, feed_unreads + nb));
+ feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread').replace(' ', ''), 10) || 0) : 0;
+ elem.setAttribute('data-unread', numberFormat(Math.max(0, feed_unreads + nb)));
}
}
@@ -54,8 +68,8 @@ function incUnreadsFeed(article, feed_id, nb) {
if (article && article.closest('div').hasClass('favorite')) {
elem = $('#aside_flux .favorites').children(':first').get(0);
if (elem) {
- feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread'), 10) || 0) : 0;
- elem.setAttribute('data-unread', Math.max(0, feed_unreads + nb));
+ feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread').replace(' ', ''), 10) || 0) : 0;
+ elem.setAttribute('data-unread', numberFormat(Math.max(0, feed_unreads + nb)));
}
}
@@ -133,16 +147,19 @@ function mark_favorite(active) {
var favourites = $('.favorites>a').contents().last().get(0);
if (favourites && favourites.textContent) {
- favourites.textContent = favourites.textContent.replace(/((?: \(\d+\))?\s*)$/, function (m, p1) {
+ // Without javascript, the text displayed is « Favorites (1544) » where 1544 is the number unformatted.
+ // With Javascript, we replace this with « Favorites (1 544) ». To update this, the text is converted
+ // to the non-javascript format before.
+ favourites.textContent = favourites.textContent.replace(/ /g, '').replace('(', ' (').replace(/((?: \(\d+\))?\s*)$/, function (m, p1) {
return incLabel(p1, inc);
});
}
if (active.closest('div').hasClass('not_read')) {
var elem = $('#aside_flux .favorites').children(':first').get(0),
- feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread'), 10) || 0) : 0;
+ feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread').replace(' ', ''), 10) || 0) : 0;
if (elem) {
- elem.setAttribute('data-unread', Math.max(0, feed_unreads + inc));
+ elem.setAttribute('data-unread', numberFormat(Math.max(0, feed_unreads + inc)));
}
}
});
@@ -527,7 +544,7 @@ function refreshUnreads() {
$.each(data, function(feed_id, nbUnreads) {
feed_id = 'f_' + feed_id;
var elem = $('#' + feed_id + '>.feed').get(0),
- feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread'), 10) || 0) : 0;
+ feed_unreads = elem ? (parseInt(elem.getAttribute('data-unread').replace(' ', ''), 10) || 0) : 0;
if ((incUnreadsFeed(null, feed_id, nbUnreads - feed_unreads) || isAll) && //Update of current view?
(nbUnreads - feed_unreads > 0)) {
$('#new-article').show();
@@ -632,9 +649,9 @@ function init_loginForm() {
c = dcodeIO.bcrypt.hashSync(data.nonce + s, strong ? 4 : poormanSalt());
$('#challenge').val(c);
if (s == '' || c == '') {
- alert('Crypto error!');
+ alert('Crypto error!');
} else {
- success = true;
+ success = true;
}
} catch (e) {
alert('Crypto exception! ' + e);
@@ -738,6 +755,34 @@ function init_print_action() {
});
}
+function init_number_formats() {
+ // Init global counter
+ var elem = $('#aside_flux .categories li .all a');
+ elem.attr('data-unread', numberFormat(elem.attr('data-unread')));
+
+ // Init favorites counters
+ elem = $('#aside_flux .categories li .favorites a');
+ elem.attr('data-unread', numberFormat(elem.attr('data-unread')));
+
+ var numFavorites = elem.text().replace(/((?: \(\d+\))?\s*)$/, function (m, p1) {
+ return numberFormat(p1)
+ });
+ elem.text(numFavorites);
+
+ // Init feeds counters
+ $('#aside_flux .categories li .stick').each(function() {
+ // Category-level counter
+ elem = $(this).find('a');
+ elem.attr('data-unread', numberFormat(elem.attr('data-unread')));
+
+ // Feeds counters
+ $(this).parent().find('ul.feeds li.item').each(function() {
+ elem = $(this).find('a.feed'); // There are two links here. a.feed is the title.
+ elem.attr('data-unread', numberFormat(elem.attr('data-unread')));
+ });
+ });
+}
+
function init_all() {
if (!(window.$ && window.url_freshrss && ((!full_lazyload) || $.fn.lazyload))) {
if (window.console) {
@@ -768,7 +813,7 @@ function init_all() {
init_print_action();
window.setInterval(refreshUnreads, 120000);
}
-
+ init_number_formats();
if (window.console) {
console.log('FreshRSS init done.');
}