docs: #365 language tagged page is working
This commit is contained in:
parent
533de962ec
commit
29cd321e5c
@ -135,33 +135,28 @@
|
||||
}
|
||||
</select>
|
||||
|
||||
<label for="v" class="width-100per">وزن:</label>
|
||||
<input class="width-100per" type="text" id="select-search" placeholder="جستجوی وزن" oninput="doSearchInRhythmsCombo('select-search', 'v')" list="inputRhythms" autocomplete="off" size="50" />
|
||||
<label for="v" class="width-100per">زبان غالب:</label>
|
||||
<datalist id="inputRhythms">
|
||||
@if (Model.RhythmsByVerseCount != null)
|
||||
@foreach (var rhythm in Model.RhythmsByVerseCount)
|
||||
@foreach (var language in RMuseum.Models.Ganjoor.ViewModels.GTaggedLanguage.Languages)
|
||||
{
|
||||
<option value="@rhythm.Rhythm">@rhythm.Rhythm</option>
|
||||
<option value="@language.Code">@language.Name</option>
|
||||
}
|
||||
</datalist>
|
||||
<select id="v" name="v" class="width-100per">
|
||||
@foreach (var rhythm in Model.RhythmsAlphabetically)
|
||||
<select id="l" name="l" class="width-100per">
|
||||
@foreach (var language in RMuseum.Models.Ganjoor.ViewModels.GTaggedLanguage.Languages)
|
||||
{
|
||||
if (Model.Metre == rhythm.Rhythm)
|
||||
if (Model.Language == language.Code)
|
||||
{
|
||||
<option value="@rhythm.Rhythm" selected>@(rhythm.Rhythm == "" ? "هیچکدام" : rhythm.Rhythm == "null" ? "وزنیابی نشده" : rhythm.Rhythm)</option>
|
||||
<option value="@language.Code" selected>@language.Name</option>
|
||||
}
|
||||
else
|
||||
{
|
||||
<option value="@rhythm.Rhythm">@(rhythm.Rhythm == "" ? "هیچکدام" : rhythm.Rhythm == "null" ? "وزنیابی نشده" : rhythm.Rhythm)</option>
|
||||
<option value="@language.Code">@language.Name</option>
|
||||
}
|
||||
|
||||
}
|
||||
</select>
|
||||
|
||||
<label for="g" class="width-100per">قافیه:</label>
|
||||
<input type="text" name="g" id="g" class="width-100per" value="@Model.Rhyme" placeholder="حروف قافیه" />
|
||||
|
||||
<input type="submit" class="width-100per margin-top-5px" value="اعمال ورودیها" />
|
||||
|
||||
|
||||
@ -171,7 +166,7 @@
|
||||
@if (Model.Poems == null)
|
||||
{
|
||||
<div class="sitem">
|
||||
<p>لطفاً وزن یا قافیهٔ ابیات مد نظر را وارد کنید.</p>
|
||||
<p>لطفاً زبان ابیات مد نظر را وارد کنید.</p>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
|
||||
@ -64,14 +64,11 @@ namespace GanjooRazor.Pages
|
||||
|
||||
public List<GanjoorPoetViewModel> Poets { get; set; }
|
||||
public int PoetId { get; set; }
|
||||
public string Metre { get; set; }
|
||||
public string Rhyme { get; set; }
|
||||
public GanjoorPoetCompleteViewModel Poet { get; set; }
|
||||
public List<GanjoorPoemCompleteViewModel> Poems { get; set; }
|
||||
public string PagingToolsHtml { get; set; }
|
||||
public string LastError { get; set; }
|
||||
|
||||
|
||||
public string Language { get; set; }
|
||||
|
||||
private async Task<bool> preparePoets()
|
||||
{
|
||||
@ -117,16 +114,6 @@ namespace GanjooRazor.Pages
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// rhythms alphabetically
|
||||
/// </summary>
|
||||
public GanjoorMetre[] RhythmsAlphabetically { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// rhythms by frequency
|
||||
/// </summary>
|
||||
public GanjoorMetre[] RhythmsByVerseCount { get; set; }
|
||||
|
||||
public async Task<IActionResult> OnGetPoetInformationAsync(int id)
|
||||
{
|
||||
if (id == 0)
|
||||
@ -184,22 +171,6 @@ namespace GanjooRazor.Pages
|
||||
return Page();
|
||||
}
|
||||
|
||||
RhythmsByVerseCount = JsonConvert.DeserializeObject<GanjoorMetre[]>(await rhythmResponse.Content.ReadAsStringAsync());
|
||||
|
||||
List<GanjoorMetre> rhythmsByVerseCount = new List<GanjoorMetre>(RhythmsByVerseCount);
|
||||
rhythmsByVerseCount.Sort((a, b) => a.Rhythm.CompareTo(b.Rhythm));
|
||||
rhythmsByVerseCount.Insert(0, new GanjoorMetre()
|
||||
{
|
||||
Rhythm = "null"
|
||||
}
|
||||
);
|
||||
rhythmsByVerseCount.Insert(0, new GanjoorMetre()
|
||||
{
|
||||
Rhythm = ""
|
||||
}
|
||||
);
|
||||
|
||||
RhythmsAlphabetically = rhythmsByVerseCount.ToArray();
|
||||
|
||||
int pageNumber = 1;
|
||||
if (!string.IsNullOrEmpty(Request.Query["page"]))
|
||||
@ -207,25 +178,11 @@ namespace GanjooRazor.Pages
|
||||
pageNumber = int.Parse(Request.Query["page"]);
|
||||
}
|
||||
|
||||
Metre = Request.Query["v"];
|
||||
Rhyme = Request.Query["g"];
|
||||
Language = Request.Query["l"];
|
||||
|
||||
Metre ??= "";
|
||||
Rhyme ??= "";
|
||||
Language ??= "fa-IR";
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty(Metre) && string.IsNullOrEmpty(Rhyme))
|
||||
{
|
||||
ViewData["Title"] = $"گنجور » شعرها یا ابیات مشابه";
|
||||
return Page();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(Rhyme))
|
||||
{
|
||||
Rhyme = Rhyme.Replace(" ", "");
|
||||
}
|
||||
|
||||
string title = "شعرها یا ابیات ";
|
||||
|
||||
@ -237,25 +194,15 @@ namespace GanjooRazor.Pages
|
||||
title += $"{poetInfo.Nickname} ";
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Metre))
|
||||
var langModel = GTaggedLanguage.Languages.Where(l => l.Code == Language).FirstOrDefault();
|
||||
if(langModel != null)
|
||||
{
|
||||
title += $"با وزن «{Metre}»";
|
||||
title += $"با زبان غالب «{langModel.Name}»";
|
||||
}
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(Rhyme))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Metre))
|
||||
{
|
||||
title += $" و";
|
||||
}
|
||||
else
|
||||
{
|
||||
title += $"با";
|
||||
}
|
||||
title += $" حروف قافیهٔ «{Rhyme}»";
|
||||
}
|
||||
|
||||
string url = $"{APIRoot.Url}/api/ganjoor/poems/similar?PageNumber={pageNumber}&PageSize=20&metre={Metre}&rhyme={Rhyme}&poetId={PoetId}";
|
||||
string url = $"{APIRoot.Url}/api/ganjoor/sections/tagged/language?PageNumber={pageNumber}&PageSize=20&language={Language}&poetId={PoetId}";
|
||||
var response = await _httpClient.GetAsync(url);
|
||||
|
||||
if (!response.IsSuccessStatusCode)
|
||||
@ -282,7 +229,7 @@ namespace GanjooRazor.Pages
|
||||
title += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
|
||||
if (paginationMetadata.currentPage > 3)
|
||||
{
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page=1{authorParam}\"><div class=\"circled-number\">۱</div></a> …";
|
||||
htmlText += $"<a href=\"/tagged/?l={Uri.EscapeDataString(Language)}&page=1{authorParam}\"><div class=\"circled-number\">۱</div></a> …";
|
||||
}
|
||||
for (int i = paginationMetadata.currentPage - 2; i <= (paginationMetadata.currentPage + 2); i++)
|
||||
{
|
||||
@ -294,13 +241,13 @@ namespace GanjooRazor.Pages
|
||||
}
|
||||
else
|
||||
{
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page={i}{authorParam}\"><div class=\"circled-number\">{i.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
htmlText += $"<a href=\"/tagged/?l={Uri.EscapeDataString(Language)}&page={i}{authorParam}\"><div class=\"circled-number\">{i.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
|
||||
{
|
||||
htmlText += $"… <a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page={paginationMetadata.totalPages}{authorParam}\"><div class=\"circled-number\">{paginationMetadata.totalPages.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
htmlText += $"… <a href=\"/tagged/?l={Uri.EscapeDataString(Language)}&page={paginationMetadata.totalPages}{authorParam}\"><div class=\"circled-number\">{paginationMetadata.totalPages.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
}
|
||||
htmlText += $"</div>{Environment.NewLine}";
|
||||
}
|
||||
|
||||
61
RMuseum/Models/Ganjoor/ViewModels/GTaggedLanguage.cs
Normal file
61
RMuseum/Models/Ganjoor/ViewModels/GTaggedLanguage.cs
Normal file
@ -0,0 +1,61 @@
|
||||
namespace RMuseum.Models.Ganjoor.ViewModels
|
||||
{
|
||||
public class GTaggedLanguage
|
||||
{
|
||||
/// <summary>
|
||||
/// code
|
||||
/// </summary>
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// name
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// description
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
|
||||
|
||||
public static GTaggedLanguage[] Languages
|
||||
{
|
||||
get
|
||||
{
|
||||
return new GTaggedLanguage[]
|
||||
{
|
||||
new GTaggedLanguage()
|
||||
{
|
||||
Code = "fa-IR",
|
||||
Name = "فارسی",
|
||||
Description = ""
|
||||
},
|
||||
new GTaggedLanguage()
|
||||
{
|
||||
Code = "ar",
|
||||
Name = "عربی",
|
||||
Description = "عربی (اشعار عربی سعدی، خاقانی و ...)"
|
||||
},
|
||||
new GTaggedLanguage()
|
||||
{
|
||||
Code = "azb",
|
||||
Name = "ترکی",
|
||||
Description = "ترکی (گزیدهای از اشعار استاد شهریار و ...)"
|
||||
},
|
||||
new GTaggedLanguage()
|
||||
{
|
||||
Code = "ckb",
|
||||
Name = "کردی",
|
||||
Description = "کردی (مولانا خالد نقشبندی)"
|
||||
},
|
||||
new GTaggedLanguage()
|
||||
{
|
||||
Code = "glk",
|
||||
Name = "گیلکی",
|
||||
Description = "گیلکی (قاسم انوار)"
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -10327,6 +10327,21 @@
|
||||
text
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GTaggedLanguage.Code">
|
||||
<summary>
|
||||
code
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GTaggedLanguage.Name">
|
||||
<summary>
|
||||
name
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GTaggedLanguage.Description">
|
||||
<summary>
|
||||
description
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel">
|
||||
<summary>
|
||||
Ganjoor Poem related music track model
|
||||
|
||||
Loading…
Reference in New Issue
Block a user