Index: chrome/browser/resources/engagement/site_engagement.js |
diff --git a/chrome/browser/resources/engagement/site_engagement.js b/chrome/browser/resources/engagement/site_engagement.js |
index 0aaaf603a35151c077fc1f662bd4d6e7c4f66627..2578317f217b1f2ff350c573e1abf804523efc91 100644 |
--- a/chrome/browser/resources/engagement/site_engagement.js |
+++ b/chrome/browser/resources/engagement/site_engagement.js |
@@ -62,15 +62,22 @@ define('main', [ |
var originCell = createElementWithClassName('td', 'origin-cell'); |
originCell.textContent = info.origin.url; |
- var scoreInput = createElementWithClassName('input', 'score-input'); |
- scoreInput.addEventListener( |
- 'change', handleScoreChange.bind(undefined, info.origin)); |
- scoreInput.addEventListener('focus', disableAutoupdate); |
- scoreInput.addEventListener('blur', enableAutoupdate); |
- scoreInput.value = info.total_score; |
+ var baseScoreInput = createElementWithClassName('input', |
+ 'base-score-input'); |
+ baseScoreInput.addEventListener( |
+ 'change', handleBaseScoreChange.bind(undefined, info.origin)); |
+ baseScoreInput.addEventListener('focus', disableAutoupdate); |
+ baseScoreInput.addEventListener('blur', enableAutoupdate); |
+ baseScoreInput.value = info.base_score; |
- var scoreCell = createElementWithClassName('td', 'score-cell'); |
- scoreCell.appendChild(scoreInput); |
+ var baseScoreCell = createElementWithClassName('td', 'base-score-cell'); |
+ baseScoreCell.appendChild(baseScoreInput); |
+ |
+ var bonusScoreCell = createElementWithClassName('td', 'bonus-score-cell'); |
+ bonusScoreCell.textContent = info.bonus_score; |
+ |
+ var totalScoreCell = createElementWithClassName('td', 'total-score-cell'); |
+ totalScoreCell.textContent = info.total_score; |
var engagementBar = createElementWithClassName('div', 'engagement-bar'); |
engagementBar.style.width = (info.total_score * 4) + 'px'; |
@@ -81,12 +88,14 @@ define('main', [ |
var row = document.createElement('tr'); |
row.appendChild(originCell); |
- row.appendChild(scoreCell); |
+ row.appendChild(baseScoreCell); |
+ row.appendChild(bonusScoreCell); |
+ row.appendChild(totalScoreCell); |
row.appendChild(engagementBarCell); |
// Stores correspondent engagementBarCell to change it's length on |
// scoreChange event. |
- scoreInput.barCellRef = engagementBar; |
+ baseScoreInput.barCellRef = engagementBar; |
return row; |
} |
@@ -103,17 +112,17 @@ define('main', [ |
} |
/** |
- * Sets the engagement score when a score input is changed. |
+ * Sets the base engagement score when a score input is changed. |
* Resets the length of engagement-bar-cell to match the new score. |
* Also resets the update interval. |
* @param {string} origin The origin of the engagement score to set. |
* @param {Event} e |
*/ |
- function handleScoreChange(origin, e) { |
- var scoreInput = e.target; |
- uiHandler.setSiteEngagementScoreForUrl(origin, scoreInput.value); |
- scoreInput.barCellRef.style.width = (scoreInput.value * 4) + 'px'; |
- scoreInput.blur(); |
+ function handleBaseScoreChange(origin, e) { |
+ var baseScoreInput = e.target; |
+ uiHandler.setSiteEngagementScoreForUrl(origin, baseScoreInput.value); |
+ baseScoreInput.barCellRef.style.width = (baseScoreInput.value * 4) + 'px'; |
+ baseScoreInput.blur(); |
enableAutoupdate(); |
} |
@@ -148,22 +157,42 @@ define('main', [ |
if (sortKey == 'origin') |
return new URL(val1.url).host > new URL(val2.url).host ? 1 : -1; |
- if (sortKey == 'total_score') |
+ if (sortKey == 'base_score' || |
+ sortKey == 'bonus_score' || |
+ sortKey == 'total_score') { |
return val1 - val2; |
+ } |
assertNotReached('Unsupported sort key: ' + sortKey); |
return 0; |
} |
/** |
+ * Rounds the supplied value to two decimal places of accuracy. |
+ * @param {number} score |
+ * @return {number} |
+ */ |
+ function roundScore(score) { |
+ return Number(Math.round(score * 100) / 100); |
+ } |
+ |
+ /** |
* Regenerates the engagement table from |info|. |
*/ |
function renderTable() { |
clearTable(); |
sortInfo(); |
- // Round each score to 2 decimal places. |
+ |
info.forEach((info) => { |
- info.total_score = Number(Math.round(info.total_score * 100) / 100); |
+ // Round all scores to 2 decimal places. |
+ info.base_score = roundScore(info.base_score); |
+ info.installed_bonus = roundScore(info.installed_bonus); |
+ info.notifications_bonus = roundScore(info.notifications_bonus); |
+ info.total_score = roundScore(info.total_score); |
+ |
+ // Collate the bonuses into a value for the bonus_score column. |
+ info.bonus_score = info.installed_bonus + info.notifications_bonus; |
+ |
engagementTableBody.appendChild(createRow(info)); |
}); |