comparison of usage stats of a selected word among all poets #471

This commit is contained in:
Hamid Reza Mohammadi 2025-03-09 14:28:47 +03:30
parent b122dcc336
commit d9fb060fb9
6 changed files with 33 additions and 13 deletions

View File

@ -195,12 +195,11 @@
else
{
@if (Model.QueryIsSingleWord)
@if (Model.StatsAtTop && Model.QueryIsSingleWord)
{
<div class="sitem">
<a href="javascript:loadWordCountsByPoet('@Model.Query', @Model.PoetId, @Model.CatId)" id="load-word-counts" class="pagebutton comments-link">
<a href="javascript:loadWordCountsByCat('@Model.Query', @Model.PoetId, @Model.CatId, false)" id="load-word-counts" class="pagebutton comments-link">
مشاهدهٔ بسامد واژگان «@Model.Query» به تفکیک بخش
<svg class="noindent-info-button" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#5f6368"><g><rect fill="none" height="24" width="24" /></g><g><g><g><path d="M7.5,4C5.57,4,4,5.57,4,7.5S5.57,11,7.5,11S11,9.43,11,7.5S9.43,4,7.5,4z M7.5,9C6.67,9,6,8.33,6,7.5S6.67,6,7.5,6 S9,6.67,9,7.5S8.33,9,7.5,9z M16.5,13c-1.93,0-3.5,1.57-3.5,3.5s1.57,3.5,3.5,3.5s3.5-1.57,3.5-3.5S18.43,13,16.5,13z M16.5,18 c-0.83,0-1.5-0.67-1.5-1.5s0.67-1.5,1.5-1.5s1.5,0.67,1.5,1.5S17.33,18,16.5,18z M5.41,20L4,18.59L18.59,4L20,5.41L5.41,20z" /></g></g></g></svg>
</a>
<div id="wordcounts-placeholder">
@ -252,9 +251,22 @@
<small>در هر قطعه ممکن است عبارت چند بار تکرار شده باشد. برای دستیابی به آمار با احتساب تکرارها <a href="https://blog.ganjoor.net/1403/04/06/words-frequency/">بسامد واژگان</a> را ببینید.</small>
</div>
</div>
}
@if (!Model.StatsAtTop && Model.QueryIsSingleWord)
{
<div class="sitem">
<a href="javascript:loadWordCountsByCat('@Model.Query', @Model.PoetId, @Model.CatId, false)" id="load-word-counts" class="pagebutton comments-link">
مشاهدهٔ بسامد واژگان «@Model.Query» به تفکیک بخش
</a>
<div id="wordcounts-placeholder">
</div>
</div>
}
</div>
@ -279,10 +291,10 @@
}
}
@if (Model.QueryIsSingleWord)
@if (Model.StatsAtTop && Model.QueryIsSingleWord)
{
<script>
loadWordCountsByPoet('@Model.QueryDin', @Model.PoetId, @Model.CatId);
loadWordCountsByCat('@Model.QueryDin', @Model.PoetId, @Model.CatId, true);
</script>
}

View File

@ -13,7 +13,6 @@ using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Org.BouncyCastle.Asn1.Cmp;
using RMuseum.Models.Ganjoor.ViewModels;
using RMuseum.Services.Implementation;
using RSecurityBackend.Models.Generic;
@ -169,6 +168,8 @@ namespace GanjooRazor.Pages
}
}
public bool StatsAtTop { get; set; }
public async Task<IActionResult> OnGetAsync()
{
if (bool.Parse(Configuration["MaintenanceMode"]))
@ -241,6 +242,8 @@ namespace GanjooRazor.Pages
CatFullTitle = "";
}
StatsAtTop = !string.IsNullOrEmpty(Request.Query["stats"]);
ViewData["GoogleAnalyticsCode"] = Configuration["GoogleAnalyticsCode"];
//todo: use html master layout or make it partial
@ -457,7 +460,7 @@ namespace GanjooRazor.Pages
return htmlText;
}
public async Task<ActionResult> OnGetWordCountsByPoetAsync(string term, int poetId, int catId)
public async Task<ActionResult> OnGetWordCountsByPoetAsync(string term, int poetId, int catId, bool blur)
{
if (term == null) return new BadRequestObjectResult("term is null");
term = term.Replace("\"", "");
@ -498,7 +501,8 @@ namespace GanjooRazor.Pages
Term = term,
WordStats = wordCounts,
Whole = catId == 0 && poetId == 0,
TotalCount = string.IsNullOrEmpty(countStr) ? 0 : int.Parse(countStr)
TotalCount = string.IsNullOrEmpty(countStr) ? 0 : int.Parse(countStr),
Blur = blur,
}
}
};

View File

@ -1,6 +1,6 @@
@model GanjooRazor.Pages._CategoryWordsCountByCatPartialModel
@if (Model.WordStats.Length == 0)
@if (!Model.Blur || Model.WordStats.Length == 0)
{
<text>
<partial name="_CategoryWordsCountByCatTablePartial" model="Model.Model">

View File

@ -9,6 +9,7 @@ namespace GanjooRazor.Pages
public PoetOrCatWordStat[] WordStats { get; set; }
public bool Whole { get; set; }
public int TotalCount { get; set; }
public bool Blur { get; set; }
public _CategoryWordsCountByCatTablePartialModel Model
{
@ -19,7 +20,8 @@ namespace GanjooRazor.Pages
Term = Term,
WordStats = WordStats,
Whole = Whole,
TotalCount = TotalCount
TotalCount = TotalCount,
Blur = Blur
};
}
}

View File

@ -9,6 +9,8 @@ namespace GanjooRazor.Pages
public PoetOrCatWordStat[] WordStats { get; set; }
public bool Whole { get; set; }
public int TotalCount { get; set; }
public bool Blur { get; set; }
public string SectionName
{
get

View File

@ -1695,13 +1695,13 @@ function onSearchWordCounts(catId, poetId, totalWordCount) {
}, 500);
}
function loadWordCountsByPoet(term, poetId, catId) {
function loadWordCountsByCat(term, poetId, catId, blur) {
var divParent = document.getElementById('wordcounts-placeholder');
var imgElementId = 'loadingwordcountsimg';
divParent.innerHTML = divParent.innerHTML + '<div class="bnumdiv" id="remove-this-wordcounts"><img id="' + imgElementId + '" src="/image/loading.gif" alt="بارگذاری"/></div>';
$.ajax({
type: "GET",
url: '?Handler=WordCountsByPoet&term=' + term + '&poetId=' + poetId.toString() + '&catId=' + catId.toString(),
url: '?Handler=WordCountsByPoet&term=' + term + '&poetId=' + poetId.toString() + '&catId=' + catId.toString() + '&blur=' + blur.toString(),
error: function () {
if (document.getElementById("remove-this-wordcounts") != null) {
document.getElementById("remove-this-wordcounts").remove();