#478 contribs page

This commit is contained in:
Hamid Reza Mohammadi 2025-03-30 19:55:50 +03:30
parent 863b486e24
commit 22fb47c3a7
5 changed files with 68 additions and 2 deletions

View File

@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Mvc.ViewFeatures;
using RMuseum.Models.Generic.ViewModels; using RMuseum.Models.Generic.ViewModels;
using RSecurityBackend.Models.Generic; using RSecurityBackend.Models.Generic;
using System.Linq; using System.Linq;
using static Betalgo.Ranul.OpenAI.ObjectModels.RealtimeModels.RealtimeEventTypes;
namespace GanjooRazor.Pages namespace GanjooRazor.Pages
{ {
@ -187,6 +188,32 @@ namespace GanjooRazor.Pages
}; };
} }
public async Task<ActionResult> OnGetGroupedByDayAsync(string dataType, int pageNumber)
{
var responseDays = await _httpClient.GetAsync($"{APIRoot.Url}/api/contributions/{dataType}/daily?PageNumber={pageNumber}&PageSize=30");
if (!responseDays.IsSuccessStatusCode)
{
return new BadRequestObjectResult(JsonConvert.DeserializeObject<string>(await responseDays.Content.ReadAsStringAsync()));
}
var days = JArray.Parse(await responseDays.Content.ReadAsStringAsync()).ToObject<List<GroupedByDateViewModel>>();
return new PartialViewResult()
{
ViewName = "_GroupedByDateViewTablePartial",
ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
{
Model = new _GroupedByDateViewTablePartialModel()
{
DataType = dataType,
Days = days.ToArray(),
DaysPagination = JsonConvert.DeserializeObject<PaginationMetadata>(responseDays.Headers.GetValues("paging-headers").Single()),
}
}
};
}
/// <summary> /// <summary>
/// memory cache /// memory cache
/// </summary> /// </summary>

View File

@ -19,6 +19,7 @@ namespace GanjooRazor.Pages
{ {
return new _GroupedByDateViewTablePartialModel() return new _GroupedByDateViewTablePartialModel()
{ {
DataType = DataType,
Days = Days, Days = Days,
DaysPagination = DaysPagination, DaysPagination = DaysPagination,
Users = Users, Users = Users,

View File

@ -9,7 +9,7 @@
<div class="pagination-controls"> <div class="pagination-controls">
@if (Model.DaysPagination.hasPreviousPage) @if (Model.DaysPagination.hasPreviousPage)
{ {
<button id="dailyPrevPage" class="btn btn-primary" onclick="loadDailyPage('prev')">صفحهٔ قبل</button> <button id="dailyPrevPage" class="btn btn-primary" onclick="loadContributionsDays('@Model.DataType', @(Model.DaysPagination.currentPage - 1))">صفحهٔ قبل</button>
} }
else else
{ {
@ -18,7 +18,7 @@
<span id="dailyCurrentPage">صفحهٔ @Model.DaysPagination.currentPage.ToPersianNumbers() از @Model.DaysPagination.totalPages.ToPersianNumbers()</span> <span id="dailyCurrentPage">صفحهٔ @Model.DaysPagination.currentPage.ToPersianNumbers() از @Model.DaysPagination.totalPages.ToPersianNumbers()</span>
@if (Model.DaysPagination.hasNextPage) @if (Model.DaysPagination.hasNextPage)
{ {
<button id="dailyNextPage" class="btn btn-primary" onclick="loadDailyPage('next')">صفحهٔ بعد</button> <button id="dailyNextPage" class="btn btn-primary" onclick="loadContributionsDays('@Model.DataType', @(Model.DaysPagination.currentPage + 1))">صفحهٔ بعد</button>
} }
else else
{ {

View File

@ -1,14 +1,28 @@
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using RMuseum.Models.Generic.ViewModels; using RMuseum.Models.Generic.ViewModels;
using RSecurityBackend.Models.Generic; using RSecurityBackend.Models.Generic;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using System.Linq;
namespace GanjooRazor.Pages namespace GanjooRazor.Pages
{ {
public class _GroupedByDateViewTablePartialModel : PageModel public class _GroupedByDateViewTablePartialModel : PageModel
{ {
public string DataType { get; set; }
public GroupedByDateViewModel[] Days { get; set; } public GroupedByDateViewModel[] Days { get; set; }
public PaginationMetadata DaysPagination { get; set; } public PaginationMetadata DaysPagination { get; set; }
public GroupedByUserViewModel[] Users { get; set; } public GroupedByUserViewModel[] Users { get; set; }
public PaginationMetadata UsersPagination { get; set; } public PaginationMetadata UsersPagination { get; set; }
} }
} }

View File

@ -1906,4 +1906,28 @@ function loadContributions(dataType) {
} }
}, },
}); });
}
function loadContributionsDays(dataType, pageNumber) {
var divParent = document.getElementById('days');
divParent.innerHTML = '<div class="bnumdiv" id="remove-days-placeholder"><img src="/image/loading.gif" alt="بارگذاری"/></div>';
$.ajax({
type: "GET",
url: '?Handler=GroupedByDay&dataType=' + dataType + '&pageNumber=' + pageNumber.toString(),
error: function (e) {
if (document.getElementById("remove-days-placeholder") != null) {
document.getElementById("remove-days-placeholder").remove();
}
if (e.responseText == null)
alert(e);
else
alert(e.responseText);
},
success: function (data) {
if (document.getElementById("remove-days-placeholder") != null) {
document.getElementById("remove-days-placeholder").remove();
$(data).appendTo(divParent);
plotChart('grouped-by-date', 100);
}
},
});
} }