Skip to content

Commit e62eaed

Browse files
authored
Merge pull request #141 from Leogendra/develop
Feat: average score when search in PNG (closes #140)
2 parents fc2172f + 2efd1bd commit e62eaed

2 files changed

Lines changed: 23 additions & 10 deletions

File tree

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ <h3>Map Custom Moods to Scores</h3>
540540
<img src="assets/logos/kofi.png" alt="Ko-fi">
541541
</a>
542542
</div>
543-
<div class="version">Version: v1.8.2</div>
543+
<div class="version">Version: v1.8.3</div>
544544
</footer>
545545

546546
<!-- Charts.js for graphs -->

scripts/png.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ function calculate_keyword_stats(keyword, isTag = false, excludeKeyword = null,
257257
}
258258
}
259259

260-
const stats = { matchCount: filteredData.length, bestStreak: 0 };
260+
const stats = { matchCount: filteredData.length, bestStreak: 0, averageScore: 0 };
261261
if (filteredData.length > 0) {
262262
const uniqueDates = Array.from(new Set(filteredData.map(entry => normalize_date(entry.date)))).sort();
263263
let bestStreak = 1;
@@ -275,6 +275,12 @@ function calculate_keyword_stats(keyword, isTag = false, excludeKeyword = null,
275275
}
276276
}
277277
stats.bestStreak = bestStreak;
278+
279+
// Calculate average score
280+
const allScores = filteredData.flatMap(pixel => pixel.scores || []);
281+
if (allScores.length > 0) {
282+
stats.averageScore = average(allScores);
283+
}
278284
}
279285
return stats;
280286
};
@@ -883,21 +889,28 @@ async function generate_pixels_PNG() {
883889
// display filter stats above the image if filters are applied
884890
if (value1 || value2) {
885891

886-
const generate_stats_div_results = (value, nbMatches, bestStreak) => {
887-
return `<div class="stat-item">
888-
<strong>${value}</strong>: ${nbMatches} matches, best streak: ${bestStreak} days
889-
</div>`;
892+
const generate_stats_div_results = (value, nbMatches, bestStreak, averageScore) => {
893+
if (nbMatches === 0) {
894+
return `<div class="stat-item">
895+
<strong>${value}</strong>- no matches found.
896+
</div>`;
897+
}
898+
else {
899+
return `<div class="stat-item">
900+
<strong>${value}</strong>- ${(nbMatches > 1) ? "matches" : "match"}: ${nbMatches} (${((nbMatches / nbTotalDays) * 100).toFixed(2)}%), avg score: ${averageScore.toFixed(2)}, best streak: ${bestStreak}d
901+
</div>`;
902+
}
890903
};
891904
let statsHTML = "";
892905

893906
if (isCompareMode) {
894-
statsHTML = generate_stats_div_results(value1, stats_filter_1.matchCount, stats_filter_1.bestStreak) + generate_stats_div_results(value2, stats_filter_2.matchCount, stats_filter_2.bestStreak);
907+
statsHTML = generate_stats_div_results(value1, stats_filter_1.matchCount, stats_filter_1.bestStreak, stats_filter_1.averageScore) + generate_stats_div_results(value2, stats_filter_2.matchCount, stats_filter_2.bestStreak, stats_filter_2.averageScore);
895908
}
896909
else {
897910
let keyword = value1 ? value1 : value2;
898911
let stats = value1 ? stats_filter_1 : stats_filter_2;
899912

900-
statsHTML = generate_stats_div_results(keyword, stats.matchCount, stats.bestStreak);
913+
statsHTML = generate_stats_div_results(keyword, stats.matchCount, stats.bestStreak, stats.averageScore);
901914
}
902915

903916
filter_stats_display.innerHTML = statsHTML;
@@ -924,7 +937,7 @@ async function download_pixels_PNG() {
924937

925938

926939
function filter_pixels_by_keyword(keyword, isTag = false) {
927-
if (!keyword || (keyword.trim() === "") || (current_data.length === 0)) { return []; }
940+
if (!keyword || (keyword.trim() === "") || (nbTotalDays === 0)) { return []; }
928941
const result = [];
929942
const firstDate = normalize_date(current_data[0].date);
930943
const lastDate = normalize_date(current_data[current_data.length - 1].date);
@@ -966,7 +979,7 @@ function filter_pixels_by_two_keywords(keyword1, keyword2, isTag1 = false, isTag
966979
if (
967980
!keyword1 || keyword1.trim() === "" ||
968981
!keyword2 || keyword2.trim() === "" ||
969-
current_data.length === 0
982+
nbTotalDays === 0
970983
) { return []; }
971984
const result = [];
972985
const firstDate = normalize_date(current_data[0].date);

0 commit comments

Comments
 (0)