kreta/KretaWeb/Areas/OsztalyCsoport/Views/OraSorszamozasHalmaz/Index.cshtml
2024-03-13 00:33:46 +01:00

389 lines
16 KiB
Text

@using Kreta.Enums.ManualEnums
@using Kreta.Resources
@using Kreta.Web.Areas.OsztalyCsoport.Models
@using Kreta.Web.Helpers.Grid
@model OraSorszamozasHalmazSearchModel
@{
const string OraSorszamozasHalmazController = Constants.Controllers.OraSorszamozasHalmaz;
const string OraSorszamozasHalmazApiController = Constants.ApiControllers.OraSorszamozasHalmazApi;
const string gridName = "OraSorszamozasHalmazGrid";
const string searchFormName = "OraSorszamozasHalmazSearchForm";
const string osszerendelesGridName = "OsszerendelesekGrid";
const string osszerendelesFormName = "OraSorszamozasHalmazForm";
const string osztalyCsoportValaszto = "OsztalyCsoportValaszto";
const string tantargyValaszto = "TantargyValaszto";
const string addOsszerendelesToList = "AddOsszerendelesToList";
const string osszerendelesValaszto = "OsszerendelesValaszto";
const string sorszamText = "SorszamText";
}
@section AddSearchPanel {
@using (Html.SearchPanelSideBar(searchFormName, gridName))
{
@Html.KretaTextBoxFor(x => x.SearchHalmazNeve).RenderSearchPanelSideBar()
@Html.KretaComboBoxFor(x => x.SearchOsztalyCsoportId, Url.HttpRouteUrl(Constants.RouteKey.ActionApi,
new { controller = Constants.ApiControllers.ComboBoxHelperApi, action = "GetOsztalyCsoportListByEvfolyam" }), useGroup: true).RenderSearchPanelSideBar()
@Html.KretaComboBoxFor(x => x.SearchTantargyId, Url.HttpRouteUrl(Constants.RouteKey.ActionApi,
new { controller = Constants.ApiControllers.ComboBoxHelperApi, action = "GetTantargy" })).RenderSearchPanelSideBar()
}
}
<div>
@(
Html.KretaGrid<OraSorszamozasHalmazGridModel>(
name: gridName,
getUrl: new GridApiUrl(OraSorszamozasHalmazApiController, "GetHalmazGrid"),
dataParameterFunction: searchFormName,
clientTemplate: "detailGrid-template",
clientTemplateUrl: @Url.Action("GetDetailGrid", OraSorszamozasHalmazController, new { area = Constants.Areas.OsztalyCsoport })
)
.Columns(columns =>
{
columns.Bound(c => c.HalmazNeve).Width("100%");
})
.AutoBind(true)
.Sortable(sortable => sortable.AllowUnsort(true).SortMode(GridSortMode.MultipleColumn))
.FunctionCommand(Html, new List<FunctionCommand>
{
new FunctionCommand
{
Name = OraSorszamozasHalmazResource.UjHalmazHozzaadasa,
ClientAction = "OraSorszamozasHalmazHelper.openEditPopUp",
},
})
.RowFunction(Html, new List<RowFunction>
{
new RowFunction
{
Name = CommonResource.Modositas,
ClientAction = "OraSorszamozasHalmazHelper.openEditPopUp",
IconEnum = GridRowFunctionIconEnum.Modositas ,
},
new RowFunction
{
Name = CommonResource.Torles,
ClientAction = "OraSorszamozasHalmazHelper.deleteHalmazConfirm",
IconEnum = GridRowFunctionIconEnum.Torles,
},
})
)
</div>
@Html.KretaGridTemplate("detailGrid-template")
<script>
var OraSorszamozasHalmazHelper = (function () {
var oraSorszamozasHalmazHelper = function () { };
var gridName = "@gridName";
var searchFormName = "@searchFormName";
var osszerendelesGridName = "@osszerendelesGridName";
var osszerendelesFormName = "@osszerendelesFormName";
var osztalyCsoportValaszto = "@osztalyCsoportValaszto";
var tantargyValaszto = "@tantargyValaszto";
var addOsszerendelesToList = "@addOsszerendelesToList";
var kezdoertekNumeric = "Kezdoertek";
var osszerendelesValasztoCB = "@osszerendelesValaszto";
var sorszamText = "@sorszamText";
var windowName = "OraSorszamozasHalmazEditWindow";
var windowTitle = "";
var deletedOsszerendeslIds = [];
var url = {
DeleteHalmaz: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = OraSorszamozasHalmazApiController, action = "DeleteHalmaz" })",
DeleteOsszerendeles: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = OraSorszamozasHalmazApiController, action = "DeleteOsszerendeles" })",
OpenEditPopUp: "@Url.Action("OpenEditPopUp", OraSorszamozasHalmazController, new { area = Constants.Areas.OsztalyCsoport })",
OsszerendelesExists: "@Url.Action("OsszerendelesExists", OraSorszamozasHalmazController, new { area = Constants.Areas.OsztalyCsoport })",
GetEvesOraszamForTantargyAndOsztaly: "@Url.Action("GetEvesOraszamForTantargyAndOsztaly", OraSorszamozasHalmazController, new { area = Constants.Areas.OsztalyCsoport })",
Save: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = OraSorszamozasHalmazApiController, action = "Save" })",
};
function success(message) {
KretaWindowHelper.successFeedBackWindow(KretaWindowHelper.destroyAllWindow, message);
KretaGridHelper.refreshGridSearchPanel(gridName, searchFormName);
}
function saveSuccess() {
success("@OraSorszamozasHalmazResource.AzOraSorszamozasHalmazMenteseSikerult");
}
function deleteOsszerendelesSuccess() {
success("@OraSorszamozasHalmazResource.AzOraSorszamozasHalmazOsszerendeleseTorleseSikerult");
}
function deleteHalmazSuccess() {
success("@OraSorszamozasHalmazResource.AzOraSorszamozasHalmazTorleseSikerult");
}
function deleteOsszerendeles(id) {
AjaxHelper.DoPostQuery(url.DeleteOsszerendeles, null, { id }, deleteOsszerendelesSuccess);
}
function deleteHalmaz(id) {
AjaxHelper.DoPostQuery(url.DeleteHalmaz, null, { id }, deleteHalmazSuccess);
}
oraSorszamozasHalmazHelper.deleteOsszerendelesConfirm = function (rowData) {
KretaWindowHelper.confirmWindow("@CommonResource.Kerdes", "@OraSorszamozasHalmazResource.BiztosanTorliAzOraSorszamozasHalmazOsszerendeleset", deleteOsszerendeles, rowData.ID);
};
oraSorszamozasHalmazHelper.deleteHalmazConfirm = function (rowData) {
KretaWindowHelper.confirmWindow("@CommonResource.Kerdes", "@OraSorszamozasHalmazResource.BiztosanTorliAzOraSorszamozasHalmazt", deleteHalmaz, rowData.ID);
};
function popUpWindow(data) {
var config = KretaWindowHelper.getWindowConfigContainer();
config.content = data;
config.title = windowTitle;
config.height = "400px";
deletedOsszerendeslIds = [];
var modal = KretaWindowHelper.createWindow(windowName, config);
KretaWindowHelper.openWindow(modal, true);
}
oraSorszamozasHalmazHelper.openEditPopUp = function (rowData) {
if (rowData.ID) {
windowTitle = "@OraSorszamozasHalmazResource.OraSorszamozasHalmazModositasa";
} else {
windowTitle = "@OraSorszamozasHalmazResource.OraSorszamozasHalmazHozzaadasa";
}
AjaxHelper.DoPost(url.OpenEditPopUp, { id: rowData.ID }, popUpWindow);
};
oraSorszamozasHalmazHelper.editCancel = function () {
KretaWindowHelper.destroyAllWindow();
};
oraSorszamozasHalmazHelper.validate = function () {
var form = $("#" + osszerendelesFormName);
if (form.valid()) {
var data = form.toObject();
data.Osszerendelesek = KretaGridHelper.getAllRows(osszerendelesGridName);
var osszerendelesValaszto = KretaComboBoxHelper.getKendoComboBoxData(osszerendelesValasztoCB);
var osszerendeles = osszerendelesValaszto.value();
if (osszerendeles) {
var osszerendelesValasztoData = osszerendelesValaszto.dataSource.data();
var osztalyCsoportId = null;
var tantargyId = null;
for (var i = 0; i < osszerendelesValasztoData.length; i++) {
var currentItem = osszerendelesValasztoData[i];
if (currentItem.Text == osszerendeles) {
osztalyCsoportId = currentItem.OsztalyCsoportId;
tantargyId = currentItem.TantargyId;
break;
}
}
data.Osszerendelesek = data.Osszerendelesek.map(val => {
if (val.OsztalyCsoportId == osztalyCsoportId && val.TantargyId == tantargyId) {
return {
...val,
Selected: true
};
}
return val;
});
}
AjaxHelper.DoValidationPost(url.Save, osszerendelesFormName, data, saveSuccess);
}
};
function addRowToGrid(data) {
if (data == "True") {
KretaWindowHelper.warningWindow(Globalization.Figyelem, "@OraSorszamozasHalmazResource.AzOsszerendelesMarRogzitesreKerult");
} else {
var osztalyCsoportElement = KretaComboBoxHelper.getKendoComboBoxData(osztalyCsoportValaszto);
var osztalyCsoportId = osztalyCsoportElement.value();
var osztalyCsoport = osztalyCsoportElement.text();
var tantargyElement = KretaComboBoxHelper.getKendoComboBoxData(tantargyValaszto);
var tantargyId = tantargyElement.value();
var tantargy = tantargyElement.text();
var newRow = {
ID: -1,
OsztalyCsoport: osztalyCsoport,
OsztalyCsoportId: osztalyCsoportId,
Tantargy: tantargy,
TantargyId: tantargyId,
};
var grid = KretaGridHelper.getKendoGridData(osszerendelesGridName);
grid.dataSource.add(newRow);
var text = `${osztalyCsoport} - ${tantargy}`;
var newItem = {
OsztalyCsoportId: osztalyCsoportId,
TantargyId: tantargyId,
Text: text,
};
var osszerendelesValaszto = KretaComboBoxHelper.getKendoComboBoxData(osszerendelesValasztoCB);
osszerendelesValaszto.dataSource.add(newItem);
}
}
oraSorszamozasHalmazHelper.addOsszerendelesToList = function () {
var osztalyCsoportId = KretaComboBoxHelper.getKendoValue(osztalyCsoportValaszto);
var tantargyId = KretaComboBoxHelper.getKendoValue(tantargyValaszto);
if (osztalyCsoportId && tantargyId) {
var gridData = KretaGridHelper.getAllRows(osszerendelesGridName);
if (!gridData.some(g => g.OsztalyCsoportId == osztalyCsoportId && g.TantargyId == tantargyId)) {
var halmazId = $("#ID", "#" + osszerendelesFormName).val();
AjaxHelper.DoPost(url.OsszerendelesExists, { osztalyCsoportId, tantargyId, halmazId, deletedOsszerendeslIds }, addRowToGrid);
}
}
};
oraSorszamozasHalmazHelper.deleteOsszerendeles = function (e) {
if (e.ID > 0) {
deletedOsszerendeslIds.push(e.ID);
}
var row = document.querySelector(`tr[data-uid="${e.uid}"]`);
KretaGridHelper.getKendoGridData(osszerendelesGridName).removeRow(row);
var osszerendelesValaszto = KretaComboBoxHelper.getKendoComboBoxData(osszerendelesValasztoCB);
var data = osszerendelesValaszto.dataSource.data();
for (var i = 0; i < data.length; i++) {
var currentItem = data[i];
if (currentItem.OsztalyCsoportId == e.OsztalyCsoportId && currentItem.TantargyId == e.TantargyId) {
osszerendelesValaszto.dataSource.remove(currentItem);
break;
}
}
};
oraSorszamozasHalmazHelper.changeOsztalyCsoport = function (e) {
var osztalyCsoportId = e.sender.value();
var tantargyId = KretaComboBoxHelper.getKendoValue(tantargyValaszto);
var btnElement = $("#" + addOsszerendelesToList).data("kendoButton");
var enableBtn = osztalyCsoportId && tantargyId;
btnElement.enable(enableBtn);
};
oraSorszamozasHalmazHelper.changeTantargy = function (e) {
var tantargyId = e.sender.value();
var osztalyCsoportId = KretaComboBoxHelper.getKendoValue(osztalyCsoportValaszto);
var btnElement = $("#" + addOsszerendelesToList).data("kendoButton");
var enableBtn = osztalyCsoportId && tantargyId;
btnElement.enable(enableBtn);
};
oraSorszamozasHalmazHelper.changeTipus = function () {
var tipusId = $("[name='Tipus']:checked", "#" + osszerendelesFormName).val();
var kezdoErtek = KretaNumericHelper.getKendoNumericTextBoxData(kezdoertekNumeric);
var osszerendelesValaszto = KretaComboBoxHelper.getKendoComboBoxData(osszerendelesValasztoCB);
if (tipusId == "@((int)SorszamozasKezdoErtekenekBeallitasa.NincsKivalasztva)") {
kezdoErtek.value(null);
osszerendelesValaszto.value(null);
kezdoErtek.enable(false);
osszerendelesValaszto.enable(false);
}
if (tipusId == "@((int)SorszamozasKezdoErtekenekBeallitasa.SorszamozasKezdoErtekeKezzelMegadva)") {
kezdoErtek.enable(true);
osszerendelesValaszto.enable(true);
}
};
oraSorszamozasHalmazHelper.getDataForValaszto = function () {
var gridData = KretaGridHelper.getAllRows(osszerendelesGridName);
return gridData.map(val => {
var text = `${val.OsztalyCsoport} - ${val.Tantargy}`;
return {
ID: val.ID,
OsztalyCsoportId: val.OsztalyCsoportId,
TantargyId: val.TantargyId,
Text: text,
};
});
};
function addSorszamToEdit(data) {
if (data) {
$("#" + sorszamText).html(`@OraSorszamozasHalmazResource.AKovetkezoOrasorszamokTartoznakAzOsszerendeleshez: ${data}.`);
} else {
$("#" + sorszamText).html('');
}
}
oraSorszamozasHalmazHelper.changeValaszto = function () {
var osszerendelesValaszto = KretaComboBoxHelper.getKendoComboBoxData(osszerendelesValasztoCB);
var osszerendeles = osszerendelesValaszto.value();
if (osszerendeles) {
var osszerendelesValasztoData = osszerendelesValaszto.dataSource.data();
for (var i = 0; i < osszerendelesValasztoData.length; i++) {
var currentItem = osszerendelesValasztoData[i];
if (currentItem.Text == osszerendeles) {
var osztalyCsoportId = currentItem.OsztalyCsoportId;
var tantargyId = currentItem.TantargyId;
AjaxHelper.DoPost(url.GetEvesOraszamForTantargyAndOsztaly, { osztalyCsoportId, tantargyId }, addSorszamToEdit);
break;
}
}
} else {
addSorszamToEdit(null);
}
};
return oraSorszamozasHalmazHelper;
})();
</script>