backend for saving tab order

This commit is contained in:
DESKTOP-T0O5CDB\DESK-555BD 2024-10-30 09:33:17 -06:00
parent 88ff2432f6
commit 0df6cea88c
5 changed files with 46 additions and 13 deletions

View File

@ -197,6 +197,7 @@ namespace CarCareTracker.Helper
EnableShopSupplies = bool.Parse(_config[nameof(UserConfig.EnableShopSupplies)]),
EnableExtraFieldColumns = bool.Parse(_config[nameof(UserConfig.EnableExtraFieldColumns)]),
VisibleTabs = _config.GetSection(nameof(UserConfig.VisibleTabs)).Get<List<ImportMode>>(),
TabOrder = _config.GetSection(nameof(UserConfig.TabOrder)).Get<List<ImportMode>>(),
UserColumnPreferences = _config.GetSection(nameof(UserConfig.UserColumnPreferences)).Get<List<UserColumnPreference>>() ?? new List<UserColumnPreference>(),
ReminderUrgencyConfig = _config.GetSection(nameof(UserConfig.ReminderUrgencyConfig)).Get<ReminderUrgencyConfig>() ?? new ReminderUrgencyConfig(),
DefaultTab = (ImportMode)int.Parse(_config[nameof(UserConfig.DefaultTab)]),

View File

@ -91,7 +91,14 @@
<div class="col-12 col-md-6">
<div class="row" id="visibleTabs">
<div class="col-12">
<span class="lead">@translator.Translate(userLanguage, "Visible Tabs")</span>
<div class="row">
<div class="col-11">
<span class="lead">@translator.Translate(userLanguage, "Visible Tabs")</span>
</div>
<div class="col-1">
<button onclick="showTabReorderModal()" class="btn text-secondary btn-sm"><i class="bi bi-arrow-down-up"></i></button>
</div>
</div>
</div>
<div class="col-12 col-md-6">
<ul class="list-group">
@ -196,11 +203,11 @@
<span class="lead">@translator.Translate(userLanguage, "Backups")</span>
<div class="row">
<div class="col-6 d-grid">
<button onclick="makeBackup()" class="btn btn-primary btn-md">@translator.Translate(userLanguage, "Create")</button>
<button onclick="makeBackup()" class="btn btn-primary btn-md text-truncate">@translator.Translate(userLanguage, "Create")</button>
</div>
<div class="col-6 d-grid">
<input onChange="restoreBackup(this)" type="file" accept=".zip" class="d-none" id="inputBackup">
<button onclick="openRestoreBackup()" class="btn btn-secondary btn-md">@translator.Translate(userLanguage, "Restore")</button>
<button onclick="openRestoreBackup()" class="btn btn-secondary btn-md text-truncate">@translator.Translate(userLanguage, "Restore")</button>
</div>
</div>
</div>
@ -210,7 +217,7 @@
<div class="col-6 d-grid">
<input onChange="uploadLanguage(this)" type="file" accept=".json" class="d-none" id="inputLanguage">
<div class="btn-group">
<button onclick="openUploadLanguage()" class="btn btn-primary btn-md">@translator.Translate(userLanguage, "Upload")</button>
<button onclick="openUploadLanguage()" class="btn btn-primary btn-md text-truncate"><i class="bi bi-upload"></i><span class="ms-2 d-sm-inline d-md-none d-xl-inline">@translator.Translate(userLanguage, "Upload")</span></button>
<button type="button" class="btn btn-md btn-primary btn-md dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
@ -221,25 +228,25 @@
</div>
<div class="col-6 d-grid">
<button onclick="deleteLanguage()" @(Model.UserConfig.UserLanguage == "en_US" ? "disabled" : "") class="btn btn-danger btn-md">@translator.Translate(userLanguage, "Delete")</button>
<button onclick="deleteLanguage()" @(Model.UserConfig.UserLanguage == "en_US" ? "disabled" : "") class="btn btn-danger btn-md text-truncate"><i class="bi bi-trash"></i><span class="ms-2 d-sm-inline d-md-none d-xl-inline">@translator.Translate(userLanguage, "Delete")</span></button>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-md-6">
<span class="lead">@translator.Translate(userLanguage, "Server-wide Settings")</span>
<span class="lead text-wrap">@translator.Translate(userLanguage, "Server-wide Settings")</span>
<div class="row">
<div class="col-6 d-grid">
<button onclick="showExtraFieldModal()" class="btn btn-primary btn-md">@translator.Translate(userLanguage, "Extra Fields")</button>
<button onclick="showExtraFieldModal()" class="btn btn-primary btn-md text-truncate">@translator.Translate(userLanguage, "Extra Fields")</button>
</div>
<div class="col-6 d-grid">
<button onclick="showReminderUrgencyThresholdModal()" class="btn btn-primary btn-md">@translator.Translate(userLanguage, "Reminders")</button>
<button onclick="showReminderUrgencyThresholdModal()" class="btn btn-primary btn-md text-truncate">@translator.Translate(userLanguage, "Reminders")</button>
</div>
</div>
</div>
<div class="col-12 col-md-6">
<span class="lead">@translator.Translate(userLanguage, "Default Reminder Email")</span>
<span class="lead text-wrap">@translator.Translate(userLanguage, "Default Reminder Email")</span>
<div class="row">
<div class="col-12 d-grid">
<div class="input-group">
@ -349,6 +356,11 @@
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger me-auto" onclick="resetTabOrder()">@translator.Translate(userLanguage, "Reset Tab Order")</button>
<button type="button" class="btn btn-secondary" onclick="hideTabReorderModal()">@translator.Translate(userLanguage, "Cancel")</button>
<button type="button" class="btn btn-primary" onclick="updateSettings()">@translator.Translate(userLanguage, "Save Tab Order")</button>
</div>
</div>
</div>
</div>

View File

@ -28,8 +28,9 @@
"PreferredGasUnit": "",
"UserLanguage": "en_US",
"VisibleTabs": [ 0, 1, 4, 2, 3, 6, 5, 8 ],
"TabOrder": [ 8, 9, 10, 0, 1, 4, 2, 7, 3, 6, 5 ],
"DefaultTab": 8,
"UserNameHash": "",
"UserPasswordHash": "",
"DefaultReminderEmail": ""
"DefaultReminderEmail": ""
}

File diff suppressed because one or more lines are too long

View File

@ -41,6 +41,7 @@ function updateSettings() {
if (!visibleTabs.includes(defaultTab)) {
defaultTab = "Dashboard"; //default to dashboard.
}
var tabOrder = getTabOrder();
//Root User Only Settings that aren't rendered:
var defaultReminderEmail = $("#inputDefaultEmail").length > 0 ? $("#inputDefaultEmail").val() : "";
var disableRegistration = $("#disableRegistration").length > 0 ? $("#disableRegistration").is(":checked") : false;
@ -66,6 +67,7 @@ function updateSettings() {
userLanguage: $("#defaultLanguage").val(),
visibleTabs: visibleTabs,
defaultTab: defaultTab,
tabOrder: tabOrder,
disableRegistration: disableRegistration,
defaultReminderEmail: defaultReminderEmail,
enableRootUserOIDC: enableRootUserOIDC
@ -324,11 +326,28 @@ function bindTabReorderEvents() {
})
});
}
function getTabsOrder() {
function getTabOrder() {
var tabOrderArray = [];
$(".lubelog-tab-groups > li").map((index, elem) => {
//check if any tabs have -1 order
var resetTabs = $(".lubelog-tab-groups > li").filter((index, elem) => $(elem).css('order') == -1).length > 0;
if (resetTabs) {
return tabOrderArray; //return empty array.
}
var sortedOrderedTabs = $(".lubelog-tab-groups > li").toArray().sort((a, b) => {
var currentVal = $(a).css("order");
var nextVal = $(b).css("order");
return currentVal - nextVal;
});
sortedOrderedTabs.map(elem => {
var elemName = $(elem).attr("data-tab");
tabOrderArray.push(elemName);
});
return tabOrderArray;
}
function resetTabOrder() {
//set all orders to -1
$(".lubelog-tab-groups > li").map((index, elem) => {
$(elem).css('order', -1);
})
updateSettings();
}