#241 maing find similar poems from a poet inline

This commit is contained in:
Hamid Reza Mohammadi 2021-11-18 11:32:19 +03:30
parent 01b6349770
commit 6ab2fe19b8
7 changed files with 90 additions and 3 deletions

View File

@ -149,7 +149,7 @@
</p>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/js/bk.js?version=11"></script>
<script src="~/js/bk.js?version=12"></script>
<script src="~/js/vaabd.js"></script>
<script src="~/dist/jplayer/jquery.jplayer.min.js"></script>
<script src="~/dist/add-on/jplayer.playlist.min.js"></script>

View File

@ -25,7 +25,7 @@
<script>
var playerScrollLock = false;
</script>
<script src="/js/bk.js?version=11"></script>
<script src="/js/bk.js?version=12"></script>
@if (Model.IsHomePage)
{

View File

@ -187,7 +187,7 @@
</div>
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=11"></script>
<script src="/js/bk.js?version=12"></script>
<script src="/js/vaabd.js"></script>
@if (!string.IsNullOrEmpty(ViewData["GoogleAnalyticsCode"].ToString()))

View File

@ -152,5 +152,37 @@ namespace GanjooRazor.Pages
}
};
}
public async Task<ActionResult> OnGetSimilarPoemsFromPoetPartialAsync(int poetId, string prosodyMetre, string rhymeLetters, string skipPoemFullUrl1, string skipPoemFullUrl2)
{
string url = $"{APIRoot.Url}/api/ganjoor/poems/similar?metre={prosodyMetre}&rhyme={rhymeLetters}&poetId={poetId}";
var response = await _httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
return BadRequest(JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync()));
List<GanjoorPoemCompleteViewModel> selectedPoems = new List<GanjoorPoemCompleteViewModel>();
List<int> poetMorePoemsLikeThisCount = new List<int>();
var poems = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<GanjoorPoemCompleteViewModel>>();
if (poems.Any(p => p.FullUrl == skipPoemFullUrl1))
poems.Remove(poems.Single(p => p.FullUrl == skipPoemFullUrl1));
if (poems.Any(p => p.FullUrl == skipPoemFullUrl2))
poems.Remove(poems.Single(p => p.FullUrl == skipPoemFullUrl2));
foreach (var poem in poems)
{
poem.HtmlText = _GetPoemTextExcerpt(poem.HtmlText);
}
return new PartialViewResult()
{
ViewName = "_SimiPartialFromPoetView",
ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
{
Model = new _SimiPartialFromPoetViewModel()
{
Poems = poems
}
}
};
}
}
}

View File

@ -0,0 +1,20 @@
@model GanjooRazor.Pages._SimiPartialFromPoetViewModel
@{
Layout = null;
}
@foreach (var poem in Model.Poems)
{
<div class="inlinesimi">
<div class="poet-pic-wrap">
<a href="@Html.Raw(poem.FullUrl)"><img src="@(GanjooRazor.APIRoot.InternetUrl + poem.Category.Poet.ImageUrl)" alt="@poem.Category.Poet.Nickname" /></a>
</div>
<div class="inlinesimi-poem-title">
<a href="@Html.Raw(poem.FullUrl)">@poem.FullTitle</a><span></span>
</div>
<div class="simitext">
@Html.Raw(poem.HtmlText)
</div>
</div>
}

View File

@ -0,0 +1,11 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RMuseum.Models.Ganjoor.ViewModels;
namespace GanjooRazor.Pages
{
public class _SimiPartialFromPoetViewModel : PageModel
{
public List<GanjoorPoemCompleteViewModel> Poems { get; set; }
}
}

View File

@ -875,4 +875,28 @@ function loadMoreRelatedPoems(poemId, skip, rhythm, rhymeLetters, poemFullUrl) {
$(data).appendTo(document.getElementById('more-related-placeholder'));
},
});
}
function loadMoreRelatedFromPoet(poetId, rhythm, rhymeLetters, skipPoemFullUrl1, skipPoemFullUrl2) {
var buttonId = 'load-more-button-' + String(poetId);
var loadButton = document.getElementById(buttonId);
if (loadButton != null) {
loadButton.remove();
}
var divId = 'more-related-placeholder-' + String(poetId);
var divParent = document.getElementById(divId);
var imgeId = 'load-more-related-loadingimg' + String(poetId);
divParent.innerHTML = divParent.innerHTML + '<img id="' + imgeId + '" src="/image/loading.gif" alt="بارگذاری "/>';
$.ajax({
type: "GET",
url: '?Handler=SimilarPoemsFromPoetPartial&poetId=' + String(poetId) + '&prosodyMetre=' + rhythm + '&rhymeLetters=' + rhymeLetters + '&skipPoemFullUrl1=' + skipPoemFullUrl1 + '&skipPoemFullUrl2=' + skipPoemFullUrl2,
success: function (data) {
var imgElement = document.getElementById(imgeId);
imgElement.remove();
$(data).appendTo(document.getElementById(divId));
},
});
}