From 25ca144bb775f29dfc152a87c975f1fcdb367174 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 11 Dec 2018 10:00:54 +0300 Subject: score: get correct classes for rows/score icons on the client --- js/Article.js | 61 +++++++++++++++++++++++++++++++++++++-------------------- js/Headlines.js | 15 +++++++------- 2 files changed, 47 insertions(+), 29 deletions(-) (limited to 'js') diff --git a/js/Article.js b/js/Article.js index 3f595ff29..cfba3804b 100644 --- a/js/Article.js +++ b/js/Article.js @@ -2,6 +2,30 @@ /* global __, ngettext */ define(["dojo/_base/declare"], function (declare) { Article = { + getScoreClass: function (score) { + if (score > 500) { + return "score-high"; + } else if (score > 0) { + return "score-half-high"; + } else if (score < -100) { + return "score-low"; + } else if (score < 0) { + return "score-half-low"; + } else { + return "score-neutral"; + } + }, + getScorePic: function (score) { + if (score > 500) { + return "trending_up"; + } else if (score > 0) { + return "trending_up"; + } else if (score < 0) { + return "trending_down"; + } else { + return "trending_neutral"; + } + }, selectionSetScore: function () { const ids = Headlines.getSelected(); @@ -21,23 +45,20 @@ define(["dojo/_base/declare"], function (declare) { reply.id.each((id) => { const row = $("RROW-" + id); - row.removeClassName("score-low"); - row.removeClassName("score-high"); - row.removeClassName("score-half-low"); - row.removeClassName("score-half-high"); - row.removeClassName("score-neutral"); - - row.addClassName(reply["score_class"]); + ["score-low", "score-high", "score-half-low", "score-half-high", "score-neutral"] + .each(function(scl) { + row.removeClassName(scl); + }); + row.addClassName(Article.getScoreClass(reply['score'])); if (row) { + row.setAttribute("data-score", reply["score"]); + const pic = row.select(".icon-score")[0]; - if (pic) { - pic.innerHTML = reply["score_pic"]; - pic.setAttribute("data-score", reply["score"]); - pic.setAttribute("title", reply["score"]); - } + pic.innerHTML = reply["score_pic"]; + pic.setAttribute("title", reply["score"]); } }); } @@ -50,7 +71,7 @@ define(["dojo/_base/declare"], function (declare) { }, setScore: function (id, pic) { const row = pic.up("div[id*=RROW]"); - const score = pic.getAttribute("data-score"); + const score = row.getAttribute("data-score"); const new_score = prompt(__("Please enter new score for this article:"), score); @@ -60,16 +81,14 @@ define(["dojo/_base/declare"], function (declare) { xhrJson("backend.php", query, (reply) => { if (reply) { pic.innerHTML = reply["score_pic"]; - pic.setAttribute("data-score", new_score); - pic.setAttribute("title", new_score); + row.setAttribute("title", new_score); - row.removeClassName("score-low"); - row.removeClassName("score-high"); - row.removeClassName("score-half-low"); - row.removeClassName("score-half-high"); - row.removeClassName("score-neutral"); + ["score-low", "score-high", "score-half-low", "score-half-high", "score-neutral"] + .each(function(scl) { + row.removeClassName(scl); + }); - row.addClassName(reply["score_class"]); + row.addClassName(Article.getScoreClass(reply['score'])); } }); } diff --git a/js/Headlines.js b/js/Headlines.js index 1db858bb7..64b3bd69d 100755 --- a/js/Headlines.js +++ b/js/Headlines.js @@ -400,8 +400,9 @@ define(["dojo/_base/declare"], function (declare) { const comments = Article.formatComments(hl); const originally_from = Article.formatOriginallyFrom(hl); - row = `
+ row = `
@@ -426,8 +427,7 @@ define(["dojo/_base/declare"], function (declare) { ${hl.updated}
- ${hl.score_pic} + ${Article.getScorePic(hl.score)} ${hl.feed_icon} @@ -464,8 +464,8 @@ define(["dojo/_base/declare"], function (declare) { } else { - row = `
+ row = `
star @@ -485,8 +485,7 @@ define(["dojo/_base/declare"], function (declare) { ${hl.updated}
- ${hl.score_pic} + ${Article.getScorePic(hl.score)} ${hl.feed_icon}
-- cgit v1.2.3