diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/PartnersGridComponent.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/PartnersGridComponent.cs new file mode 100644 index 0000000..7dc7060 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/PartnersGridComponent.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Mvc; +using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Components +{ + [ViewComponent(Name = "PartnersGridComponent")] + public class PartnersGridComponent : ViewComponent + { + public async Task InvokeAsync(TestGridModel model) + { + // Here you can fetch data for this grid if needed + // For demo, just pass the model + return View(model.ViewComponentName +".cshtml", model); + } + } +} diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/ShippingDocumentGridComponent.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/ShippingDocumentGridComponent.cs new file mode 100644 index 0000000..e1ee88a --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/ShippingDocumentGridComponent.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Mvc; +using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Components +{ + [ViewComponent(Name = "ShippingDocumentGridComponent")] + public class ShippingDocumentGridComponent : ViewComponent + { + public async Task InvokeAsync(TestGridModel model) + { + // Here you can fetch data for this grid if needed + // For demo, just pass the model + return View(model.ViewComponentName +".cshtml", model); + } + } +} diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/ShippingGridComponent.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/ShippingGridComponent.cs new file mode 100644 index 0000000..037f2ad --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Components/ShippingGridComponent.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Mvc; +using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Components +{ + [ViewComponent(Name = "ShippingGridComponent")] + public class ShippingGridComponent : ViewComponent + { + public async Task InvokeAsync(TestGridModel model) + { + // Here you can fetch data for this grid if needed + // For demo, just pass the model + return View(model.ViewComponentName +".cshtml", model); + } + } +} diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/ManagementPageController.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/ManagementPageController.cs new file mode 100644 index 0000000..077459e --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/ManagementPageController.cs @@ -0,0 +1,105 @@ +using FruitBank.Common.Entities; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Azure; +using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models; +using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; +using Nop.Services.Security; +using Nop.Web.Areas.Admin.Controllers; +using Nop.Web.Framework; +using Nop.Web.Framework.Mvc.Filters; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers +{ + [Area(AreaNames.ADMIN)] + [AuthorizeAdmin] + public class ManagementPageController : BaseAdminController + { + private readonly IPermissionService _permissionService; + protected readonly FruitBankDbContext _dbContext; + + public ManagementPageController(IPermissionService permissionService, FruitBankDbContext fruitBankDbContext) + { + _permissionService = permissionService; + _dbContext = fruitBankDbContext; + } + + public async Task Test() + { + if (!await _permissionService.AuthorizeAsync(StandardPermission.Security.ACCESS_ADMIN_PANEL)) + return AccessDeniedView(); + var testPageModel = new TestPageModel(); + testPageModel.Grids = new List(); + + var testGridModel2 = new TestGridModel(); + testGridModel2.GridName = "Orders"; + testGridModel2.ViewComponentName = "ShippingDocumentGridComponent"; + testPageModel.Grids.Add(testGridModel2); + + var testGridModel = new TestGridModel(); + testGridModel.GridName = "Shipping"; + testGridModel.ViewComponentName = "ShippingGridComponent"; + testPageModel.Grids.Add(testGridModel); + + var testGridModel3 = new TestGridModel(); + testGridModel3.GridName = "Partners"; + testGridModel3.ViewComponentName = "PartnersGridComponent"; + testPageModel.Grids.Add(testGridModel3); + + //testGridModel.ViewComponentLocation = "~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Components/Views/_ShippingGridComponent.cshtml"; + return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Order/Test.cshtml", testPageModel); + } + + [HttpGet] + public async Task GetShippings() + { + if (!await _permissionService.AuthorizeAsync(StandardPermission.Security.ACCESS_ADMIN_PANEL)) + return AccessDeniedView(); + + // Mock data for now + var model = _dbContext.Shippings.GetAll(true).OrderByDescending(s => s.Created).ToList(); + var valami = model; + //model. = await _dbContext.GetShippingDocumentsByShippingIdAsync(shippingId); + return Json(model); + } + + [HttpGet] + public async Task GetShippingDocuments() + { + if (!await _permissionService.AuthorizeAsync(StandardPermission.Security.ACCESS_ADMIN_PANEL)) + return AccessDeniedView(); + + // Mock data for now + var model = await _dbContext.ShippingDocuments.GetAll(true).OrderByDescending(sd => sd.Created).ToListAsync(); + var valami = model; + //model. = await _dbContext.GetShippingDocumentsByShippingIdAsync(shippingId); + return Json(model); + } + + [HttpPost] + public async Task ShippingDocumentList(int shippingId) + { + if (!await _permissionService.AuthorizeAsync(StandardPermission.Security.ACCESS_ADMIN_PANEL)) + return AccessDeniedView(); + + // Apply filters to mock data + var model = await _dbContext.GetShippingDocumentsByShippingIdAsync(shippingId); + + return Json(model); + } + + [HttpGet] + public async Task GetPartners() + { + if (!await _permissionService.AuthorizeAsync(StandardPermission.Security.ACCESS_ADMIN_PANEL)) + return AccessDeniedView(); + + // Mock data for now + var model = await _dbContext.Partners.GetAll().OrderByDescending(p => p.Created).ToListAsync(); + var valami = model; + //model. = await _dbContext.GetShippingDocumentsByShippingIdAsync(shippingId); + return Json(model); + } + + } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/ShippingController.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/ShippingController.cs index 6a367a5..4cbc8a6 100644 --- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/ShippingController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/ShippingController.cs @@ -1,4 +1,6 @@ -using FruitBank.Common.Entities; +using DevExtreme.AspNet.Data; +using DevExtreme.AspNet.Mvc; +using FruitBank.Common.Entities; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models; @@ -81,13 +83,13 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers return AccessDeniedView(); // Create model and load data - var model = _shippingDocumentDbTable.GetAll().ToList(); - + //var model = _shippingDocumentDbTable.GetAll().ToList(); + var model = _dbContext.ShippingDocuments.GetAll(true).ToList(); // TODO: Replace with your actual service call // model.ShippingList = await _shippingService.GetAllShippingsAsync(); // Mock data for now - + return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Shipping/List.cshtml", model); } @@ -104,6 +106,36 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Shipping/List.cshtml", model); } + + //TODO IMPLEMENT DEVEXTREME FILETRING AND LOADING + //[HttpGet] + //public async Task GetDocumentByShippingId(int shippingId, DataSourceLoadOptions loadOptions) + //{ + // // 1. Get the IQueryable from your service. + // // This is the key step. It's more efficient to work with IQueryable + // // so that filtering, sorting, and paging are done by the database. + // var documentQuery = await _dbContext.GetShippingDocumentsByShippingIdAsync(shippingId); + + // // 2. Process the data using DevExtreme.AspNet.Data. + // // This is where all the magic happens. The Load method takes care of + // // applying all the grid's client-side settings (sorting, filtering, + // // grouping, paging) to your data query. + // var loadResult = DataSourceLoader.Load(documentQuery, loadOptions); + + // // 3. Return the result in the format DevExtreme expects. + // return Json(loadResult); + //} + + [HttpGet] + public async Task GetShippingDocumentsByShippingId(int shippingId) + { + + var result = await _dbContext.GetShippingDocumentsByShippingIdAsync(shippingId); + + // 3. Return the result in the format DevExtreme expects. + return Json(result); + } + [HttpPost] public async Task Delete(int id) { diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/GridBaseViewModel.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/GridBaseViewModel.cs new file mode 100644 index 0000000..4d035e3 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/GridBaseViewModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models +{ + public class GridBaseViewModel + { + public int? ContextId { get; set; } + } +} diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/ShippingGridPartialViewModel.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/ShippingGridPartialViewModel.cs new file mode 100644 index 0000000..b3de40a --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/ShippingGridPartialViewModel.cs @@ -0,0 +1,11 @@ +//using Nop.Web.Framework.Models; +//using Nop.Web.Framework.Mvc.ModelBinding; +//using System.ComponentModel.DataAnnotations; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models +{ + public class ShippingGridPartialViewModel : GridBaseViewModel + { + + } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/TestGridModel.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/TestGridModel.cs new file mode 100644 index 0000000..29253f2 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/TestGridModel.cs @@ -0,0 +1,18 @@ +//using Nop.Web.Framework.Models; +//using Nop.Web.Framework.Mvc.ModelBinding; +//using System.ComponentModel.DataAnnotations; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models +{ + public class TestGridModel + { + public Guid Id = Guid.NewGuid(); + public string GridName { get; set; } + //public string GridControllerName { get; set; } + //public string GridEndpointName { get; set; } + public string ViewComponentName { get; set; } + public string ViewComponentLocation { get; set; } + + public int? ParentRowId { get; set; } + } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/TestPageModel.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/TestPageModel.cs new file mode 100644 index 0000000..a1a343b --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Models/TestPageModel.cs @@ -0,0 +1,11 @@ +//using Nop.Web.Framework.Models; +//using Nop.Web.Framework.Mvc.ModelBinding; +//using System.ComponentModel.DataAnnotations; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models +{ + public class TestPageModel + { + public List Grids { get; set; } + } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/PartnersGridComponent.cshtml b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/PartnersGridComponent.cshtml new file mode 100644 index 0000000..42472c3 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/PartnersGridComponent.cshtml @@ -0,0 +1,116 @@ +@model Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models.TestGridModel +@using DevExtreme.AspNet.Mvc + +@{ + var contextId = Model; + // var gridId = $"dataGrid_{Guid.NewGuid():N}"; +} + +
+ @(Html.DevExtreme().DataGrid() + .ID(Model.Id.ToString()) + .ShowBorders(true) + .DataSource(ds => ds.Mvc() + .Controller("ManagementPage") + .LoadAction("GetPartners")) + .KeyExpr("Id") + .SearchPanel(sp => sp.Visible(true)) + .HeaderFilter(hf => hf.Visible(true)) + .Paging(p => p.PageSize(15)) + .Pager(p => p.Visible(true)) + .OnRowExpanded("onRowExpanded") + .Editing(editing => { + editing.Mode(GridEditMode.Cell); + editing.AllowUpdating(true); + editing.AllowAdding(true); + editing.AllowDeleting(true); + }) + .Columns(c => { + c.Add().DataField("Id").AllowEditing(false); + c.Add().DataField("Name"); + c.Add().DataField("TaxId"); + c.Add().DataField("Country"); + }) + .Toolbar(toolbar => { + toolbar.Items(items => { + items.Add() + .Name("addRowButton") + .ShowText(ToolbarItemShowTextMode.Always); + + items.Add() + .Location(ToolbarItemLocation.After) + .Widget(w => + w.Button() + .Text("Delete Selected Records") + .Icon("trash") + .Disabled(true) + .OnClick("onDeleteBtnClick") + ); + }); + }) + .MasterDetail(md => { + md.Enabled(true); + md.Template(@ +
<%- data.ShippingDate %> <%- data.LicencePlate %>'s shippingdocuments:
+ +
+ @(Html.DevExtreme().DataGrid() + .ColumnAutoWidth(true) + .ShowBorders(true) + .ID(new JS("'shippingDocumentGridContainer-' + data.Id")) + .Columns(columns => { + columns.AddFor(m => m.Id).AllowEditing(false); + + columns.AddFor(m => m.Country); + + columns.AddFor(m => m.Created); + + columns.AddFor(m => m.PartnerId); + + columns.Add() + .Caption("Completed") + .DataType(GridColumnDataType.Boolean) + .CalculateCellValue("calculateCellValue"); + }) + .DataSource(ds => ds.Mvc() + .Controller("Shipping") + .LoadAction("GetShippingDocumentsByShippingId") + .LoadParams(new { shippingId = new JS("data.Id") }) + .Key("Id") + ) + ) +
); + }) +) +
+ + + + \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/ShippingDocumentGridComponent.cshtml b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/ShippingDocumentGridComponent.cshtml new file mode 100644 index 0000000..86c1076 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/ShippingDocumentGridComponent.cshtml @@ -0,0 +1,281 @@ +@model Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models.TestGridModel +@using DevExtreme.AspNet.Mvc + +@{ + var contextId = Model; + // var gridId = $"dataGrid_{Guid.NewGuid():N}"; +} + +
+ @(Html.DevExtreme().DataGrid() + .ID(Model.Id.ToString()) + .ShowBorders(true) + .DataSource(ds => ds.Mvc() + .Controller("ManagementPage") + .LoadAction("GetShippingDocuments")) + .KeyExpr("Id") + .SearchPanel(sp => sp.Visible(true)) + .HeaderFilter(hf => hf.Visible(true)) + .Paging(p => p.PageSize(15)) + .Pager(p => p.Visible(true)) + .OnRowExpanded("onRowExpanded") + .Editing(editing => { + editing.Mode(GridEditMode.Cell); + editing.AllowUpdating(true); + editing.AllowAdding(true); + editing.AllowDeleting(true); + }) + .Columns(c => { + + c.Add().DataField("Id").AllowEditing(false); + c.Add().DataField("PartnerId"); + c.Add().DataField("DocumentIdNumber"); + c.Add().DataField("IsAllMeasured"); + @* c.AddFor(m => m.Partner.Name); *@ + + c.Add() + .Caption("Completed") + .DataType(GridColumnDataType.Boolean) + .CalculateCellValue("calculateCellValue"); + }) + .Toolbar(toolbar => { + toolbar.Items(items => { + items.Add() + .Name("addRowButton") + .ShowText(ToolbarItemShowTextMode.Always); + + items.Add() + .Location(ToolbarItemLocation.After) + .Widget(w => + w.Button() + .Text("Delete Selected Records") + .Icon("trash") + .Disabled(true) + .OnClick("onDeleteBtnClick") + ); + }); + }) + .MasterDetail(md => { + md.Enabled(true); + md.Template(@ +
<%- data.ShippingDate %> <%- data.LicencePlate %>'s shippingdocuments:
+
+
+ +
+ +
+
+ + +
+
+ +
+
+
+ +
); + }) +) +
+ + + + + + + + \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/ShippingGridComponent.cshtml b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/ShippingGridComponent.cshtml new file mode 100644 index 0000000..11bfc16 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/ShippingGridComponent.cshtml @@ -0,0 +1,116 @@ +@model Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models.TestGridModel +@using DevExtreme.AspNet.Mvc + +@{ + var contextId = Model; + // var gridId = $"dataGrid_{Guid.NewGuid():N}"; +} + +
+ @(Html.DevExtreme().DataGrid() + .ID(Model.Id.ToString()) + .ShowBorders(true) + .DataSource(ds => ds.Mvc() + .Controller("ManagementPage") + .LoadAction("GetShippings")) + .KeyExpr("Id") + .SearchPanel(sp => sp.Visible(true)) + .HeaderFilter(hf => hf.Visible(true)) + .Paging(p => p.PageSize(15)) + .Pager(p => p.Visible(true)) + .OnRowExpanded("onRowExpanded") + .Editing(editing => { + editing.Mode(GridEditMode.Cell); + editing.AllowUpdating(true); + editing.AllowAdding(true); + editing.AllowDeleting(true); + }) + .Columns(c => { + c.Add().DataField("Id").AllowEditing(false); + c.Add().DataField("ShippingDate"); + c.Add().DataField("LicencePlate"); + c.Add().DataField("IsAllMeasured"); + }) + .Toolbar(toolbar => { + toolbar.Items(items => { + items.Add() + .Name("addRowButton") + .ShowText(ToolbarItemShowTextMode.Always); + + items.Add() + .Location(ToolbarItemLocation.After) + .Widget(w => + w.Button() + .Text("Delete Selected Records") + .Icon("trash") + .Disabled(true) + .OnClick("onDeleteBtnClick") + ); + }); + }) + .MasterDetail(md => { + md.Enabled(true); + md.Template(@ +
<%- data.ShippingDate %> <%- data.LicencePlate %>'s shippingdocuments:
+ +
+ @(Html.DevExtreme().DataGrid() + .ColumnAutoWidth(true) + .ShowBorders(true) + .ID(new JS("'shippingDocumentGridContainer-' + data.Id")) + .Columns(columns => { + columns.AddFor(m => m.Id).AllowEditing(false); + + columns.AddFor(m => m.Country); + + columns.AddFor(m => m.Created); + + columns.AddFor(m => m.PartnerId); + + columns.Add() + .Caption("Completed") + .DataType(GridColumnDataType.Boolean) + .CalculateCellValue("calculateCellValue"); + }) + .DataSource(ds => ds.Mvc() + .Controller("Shipping") + .LoadAction("GetShippingDocumentsByShippingId") + .LoadParams(new { shippingId = new JS("data.Id") }) + .Key("Id") + ) + ) +
); + }) +) +
+ + + + \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/Test.cshtml b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/Test.cshtml index 48930f0..62e2fa0 100644 --- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/Test.cshtml +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Order/Test.cshtml @@ -1,4 +1,43 @@ -@{ - Layout = "_AdminLayout"; +@model Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Models.TestPageModel + +@{ + ViewData["Title"] = "Simple Tabs Example"; } -

TEST VIEW FROM PLUGIN

\ No newline at end of file + +

@ViewData["Title"]

+
+
+ + +
+ @for (int i = 0; i < Model.Grids.Count; i++) + { + var grid = Model.Grids[i]; +
+ @await Component.InvokeAsync(grid.ViewComponentName, new { model = grid }) +
+ } +
+ +
+
+ + + + diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Shipping/List.cshtml b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Shipping/List.cshtml index 8fcaaa3..c58530a 100644 --- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Shipping/List.cshtml +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Views/Shipping/List.cshtml @@ -93,6 +93,7 @@ .HeaderFilter(hf => hf.Visible(true)) .Paging(p => p.PageSize(15)) .Pager(p => p.Visible(true)) + .OnRowExpanded("onRowExpanded") .Editing(editing => { editing.Mode(GridEditMode.Cell); editing.AllowUpdating(true); @@ -129,7 +130,7 @@ div id="fileuploader">
@(Html.DevExtreme().FileUploader() - .ID($"file-uploader-{new JS("data.Id")}") + .ID(new JS("'shippingDocumentUploader-' + data.Id")) .Name("myFile") .Multiple(true) .Accept("application/pdf") @@ -144,11 +145,11 @@
-
+
@(Html.DevExtreme().DataGrid() .ColumnAutoWidth(true) .ShowBorders(true) - .ID($"shippingDocumentGridContainer-{new JS("data.Id")}") + .ID(new JS("'shippingDocumentGridContainer-' + data.Id")) .Columns(columns => { columns.AddFor(m => m.Id).AllowEditing(false); @@ -163,7 +164,12 @@ .DataType(GridColumnDataType.Boolean) .CalculateCellValue("calculateCellValue"); }) - .DataSource(new JS("data.ShippingDocuments")) + .DataSource(ds => ds.Mvc() + .Controller("Shipping") + .LoadAction("GetShippingDocumentsByShippingId") + .LoadParams(new { shippingId = new JS("data.Id") }) + .Key("Id") + ) ) ); }) @@ -203,6 +209,10 @@ let dataGrid = $("#gridContainer").dxDataGrid("instance"); dataGrid.option("toolbar.items[1].options.disabled", !data.selectedRowsData.length); } + + function onRowExpanded(e) { + e.component.dxDataGrid("getDataSource").reload(); + } - +@* *@ @@ -116,7 +116,7 @@ else @NopHtml.GenerateScripts(ResourceLocation.Head) @NopHtml.GenerateInlineScripts(ResourceLocation.Head) - + \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs index 45e2ff0..b4a47d2 100644 --- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs +++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/RouteProvider.cs @@ -86,6 +86,31 @@ public class RouteProvider : IRouteProvider name: "Plugin.FruitBank.Admin.Shipping.ReloadPartialView", pattern: "Admin/Shipping/ReloadPartialView", defaults: new { controller = "Shipping", action = "ReloadPartialView", area = AreaNames.ADMIN }); + + endpointRouteBuilder.MapControllerRoute( + name: "Plugin.FruitBank.Admin.Shipping.GetShippingDocumentsByShippingId", + pattern: "Admin/Shipping/GetShippingDocumentsByShippingId", + defaults: new { controller = "Shipping", action = "GetShippingDocumentsByShippingId", area = AreaNames.ADMIN }); + + endpointRouteBuilder.MapControllerRoute( + name: "Plugin.FruitBank.Admin.ManagementPage.Test", + pattern: "Admin/ManagementPage/Test", + defaults: new { controller = "ManagementPage", action = "Test", area = AreaNames.ADMIN }); + + endpointRouteBuilder.MapControllerRoute( + name: "Plugin.FruitBank.Admin.ManagementPage.GetShippings", + pattern: "Admin/ManagementPage/GetShippings", + defaults: new { controller = "ManagementPage", action = "GetShippings", area = AreaNames.ADMIN }); + + endpointRouteBuilder.MapControllerRoute( + name: "Plugin.FruitBank.Admin.ManagementPage.LoadPartial", + pattern: "Admin/ManagementPage/LoadPartial", + defaults: new { controller = "ManagementPage", action = "LoadPartial", area = AreaNames.ADMIN }); + + endpointRouteBuilder.MapControllerRoute( + name: "Plugin.FruitBank.Admin.ManagementPage.GetPartners", + pattern: "Admin/ManagementPage/GetPartners", + defaults: new { controller = "ManagementPage", action = "GetPartners", area = AreaNames.ADMIN }); } /// diff --git a/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.FruitBankPlugin.csproj b/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.FruitBankPlugin.csproj index 6c035be..b157f5a 100644 --- a/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.FruitBankPlugin.csproj +++ b/Nop.Plugin.Misc.AIPlugin/Nop.Plugin.Misc.FruitBankPlugin.csproj @@ -149,6 +149,15 @@ Always + + Always + + + Always + + + Always + Always