The website I am working on displays a grid of currently in production items which we wish to reload every 5m to find any deletions/additions. However we don’t want users to have to reapply filters/sorting every time that a new reload takes place. Is there a way to store these values in sessionStorage or the like and reapply them to the grid post reload?
Attached is the grid code:
<body onload="autoRefresh('First')"></body>
<div id="QueueTable">
@(Html
.Grid(Model.ProductionQueues)
.Named("Production")
.Build(columns =>
{
columns.Add().Encoded(false).RenderedAs(model => model.WOI_Visualisation == true ? Html.ActionLink("", "ViewPDF", new { fileName = model.pdfPath_WithRevision.Split(@"").Last() },
new { @class = "fa fa-file-pdf-o fa-2x", @style = model.styleClass != null ? "color:#73879C" : null }) : Html.Raw(""));
columns.Add(model => model.WO_ID_Prefix).Titled("Work Order");
columns.Add(model => model.WOI_ID).Titled("WO Item");
columns.Add(model => model.BOM_DwgNo).Titled("Part");
columns.Add(Model => Model.BOM_Description).Titled("Description");
columns.Add(model => model.WO_RequiredByDateAsDate).Titled("Required By").Formatted("{0:dd-MM-yyyy}");
columns.Add(model => model.companyName).Titled("Company Name");
columns.Add(model => model.jobNumber).Titled("Job Number");
columns.Add(model => model.JC_WBS).Titled("Jobcard");
columns.Add(model => model.WO_TypeText).Titled("WO Type");
columns.Add(model => model.sortPriorityInt).Titled("Priority");
})
.Empty("All submitted jobs complete").Filterable().Sortable().Pageable()
.RowAttributed(model => new { @class = model.styleClass != null ? model.styleClass : null })
).
</div>
and the relevant javascript code that I have been working on:
let intervalID;
function autoRefresh(refreshTimer) {
window.clearInterval(intervalID);
var dropdown = document.getElementById("refreshTimer");
if (refreshTimer != "Never" && refreshTimer != "First") {
intervalID = window.setInterval(function () {
getUpdates()
}, refreshTimer)
}
else if (refreshTimer == "First" && sessionStorage.getItem("RefreshTimer")) {
if (sessionStorage.getItem("RefreshTimer") != "Never" && sessionStorage.getItem("RefreshTimer") != "First") {
intervalID = window.setInterval(function () {
getUpdates();
}, sessionStorage.getItem("RefreshTimer"))
refreshTimer = sessionStorage.getItem("RefreshTimer");
dropdown.value = sessionStorage.getItem("RefreshTimer");
}
}
sessionStorage.removeItem("RefreshTimer");
sessionStorage.setItem("RefreshTimer", refreshTimer);
}
function getUpdates() {
$.ajax({
type: "GET",
url: '/Leaderboard/GetAll' + queue,
data: "",
success: function (msg) {
},
error: function (e) {
alert("failed");
}
})
}
WarblingWolf is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.