docs: #319 saving breakpoints for sections

This commit is contained in:
Hamid Reza Mohammadi 2022-05-14 20:14:15 +04:30
parent b939a8bfd6
commit 7c700fabf6
2 changed files with 99 additions and 6 deletions

View File

@ -15,9 +15,22 @@
else
{
<script>
function saveSectionCorrection(id) {
function saveSectionCorrection(id, verseCount) {
if ($('#rhythm-old').text() == $('#rhythm-new').val()) {
var breakFromVIndices = [];
for (var i = 0; i <= verseCount; i++) {
var checkVIndex = '#break-from-' + i.toString();
if ($(checkVIndex).is(":checked")) {
breakFromVIndices.push(i);
}
}
if(breakFromVIndices.length > 4){
alert('حداکثر از ۴ محل می‌توانید قطعه را بشکنید.');
return;
}
if (breakFromVIndices.length == 0 && $('#rhythm-old').text() == $('#rhythm-new').val()) {
alert('شما هیچ تغییری در متن نداده‌اید!');
return;
}
@ -39,6 +52,7 @@ else
data: {
sectionId: id,
rhythm: rhythm_new,
breakFromVIndices: breakFromVIndices,
note: $('#note').val()
},
@ -167,7 +181,26 @@ else
{
<tr>
<td>
<input type="checkbox" name="break-from-@Model.Verses[v].CoupletIndex" id="break-from-@Model.Verses[v].CoupletIndex" />
@if(Model.MyLastEdit != null
&&
(
Model.MyLastEdit.BreakFromVerse1VOrder == Model.Verses[v].VOrder
||
Model.MyLastEdit.BreakFromVerse2VOrder == Model.Verses[v].VOrder
||
Model.MyLastEdit.BreakFromVerse3VOrder == Model.Verses[v].VOrder
||
Model.MyLastEdit.BreakFromVerse4VOrder == Model.Verses[v].VOrder
)
)
{
<input type="checkbox" name="break-from-@v" id="break-from-@v" checked />
}
else
{
<input type="checkbox" name="break-from-@v" id="break-from-@v" />
}
@Model.Verses[v].Text
</td>
</tr>
@ -203,7 +236,7 @@ else
<tr>
<td>
<a role="button" id="savecorrections" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="saveSectionCorrection(@Model.PoemSection.Id)">ذخیره</a>
<a role="button" id="savecorrections" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="saveSectionCorrection(@Model.PoemSection.Id, @Model.Verses.Count)">ذخیره</a>
</td>
</tr>

View File

@ -10,7 +10,6 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RMuseum.Models.Ganjoor;
using RMuseum.Models.Ganjoor.ViewModels;
using RMuseum.Services.Implementation;
namespace GanjooRazor.Areas.User.Pages
{
@ -146,17 +145,78 @@ namespace GanjooRazor.Areas.User.Pages
return Page();
}
public async Task<IActionResult> OnPostSendSectionCorrectionsAsync(int sectionId, string rhythm, string note)
public async Task<IActionResult> OnPostSendSectionCorrectionsAsync(int sectionId, string rhythm, int[] breakFromVIndices, string note)
{
using (HttpClient secureClient = new HttpClient())
{
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
int? breakFromVerse1VOrder = null;
int? breakFromVerse2VOrder = null;
int? breakFromVerse3VOrder = null;
int? breakFromVerse4VOrder = null;
if(breakFromVIndices.Length > 0)
{
var sectionResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/section/{sectionId}");
if (!sectionResponse.IsSuccessStatusCode)
{
FatalError = JsonConvert.DeserializeObject<string>(await sectionResponse.Content.ReadAsStringAsync());
return Page();
}
PoemSection = JsonConvert.DeserializeObject<GanjoorPoemSection>(await sectionResponse.Content.ReadAsStringAsync());
var pageUrlResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/pageurl?id={PoemSection.PoemId}");
if (!pageUrlResponse.IsSuccessStatusCode)
{
FatalError = JsonConvert.DeserializeObject<string>(await pageUrlResponse.Content.ReadAsStringAsync());
return Page();
}
var pageUrl = JsonConvert.DeserializeObject<string>(await pageUrlResponse.Content.ReadAsStringAsync());
var pageQuery = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/page?url={pageUrl}");
if (!pageQuery.IsSuccessStatusCode)
{
FatalError = JsonConvert.DeserializeObject<string>(await pageQuery.Content.ReadAsStringAsync());
return Page();
}
PageInformation = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject<GanjoorPageCompleteViewModel>();
Verses = _FilterSectionVerses(PoemSection, PageInformation.Poem.Verses);
breakFromVerse1VOrder = Verses[breakFromVIndices[0]].VOrder;
if (breakFromVIndices.Length > 1)
{
breakFromVerse2VOrder = Verses[breakFromVIndices[1]].VOrder;
}
if (breakFromVIndices.Length > 2)
{
breakFromVerse3VOrder = Verses[breakFromVIndices[2]].VOrder;
}
if (breakFromVIndices.Length > 3)
{
breakFromVerse4VOrder = Verses[breakFromVIndices[3]].VOrder;
}
}
GanjoorPoemSectionCorrectionViewModel correction = new GanjoorPoemSectionCorrectionViewModel()
{
SectionId = sectionId,
Rhythm = rhythm,
BreakFromVerse1VOrder = breakFromVerse1VOrder,
BreakFromVerse2VOrder = breakFromVerse2VOrder,
BreakFromVerse3VOrder = breakFromVerse3VOrder,
BreakFromVerse4VOrder = breakFromVerse4VOrder,
Note = note
};