+
diff --git a/Views/Home/_Settings.cshtml b/Views/Home/_Settings.cshtml
index 21c768e..f195c74 100644
--- a/Views/Home/_Settings.cshtml
+++ b/Views/Home/_Settings.cshtml
@@ -160,14 +160,14 @@
- Version 1.1.0
+ Version 1.1.1
Proudly developed in the rural town of Price, Utah by Hargata Softworks.
If you enjoyed using this app, please consider spreading the good word.
- If you are a commercial user, or if you just want to support the development of this project, consider subscribing to our Patreon
+ If you are a commercial user, or if you just want to support the development of this project, consider subscribing to our Patreon or make a donation
Hometown Shoutout
diff --git a/wwwroot/js/garage.js b/wwwroot/js/garage.js
index c49533d..81912d5 100644
--- a/wwwroot/js/garage.js
+++ b/wwwroot/js/garage.js
@@ -61,13 +61,22 @@ function hidePinnedNotes(vehicleId) {
}
}
-function filterGarage(sender) {
- var tagName = sender.textContent;
+function filterGarage(sender, isSort) {
var rowData = $(".garage-item");
+ if (sender == undefined) {
+ rowData.removeClass('override-hide');
+ return;
+ }
+ var tagName = sender.textContent;
if ($(sender).hasClass("bg-primary")) {
+ if (!isSort) {
rowData.removeClass('override-hide');
$(sender).removeClass('bg-primary');
$(sender).addClass('bg-secondary');
+ } else {
+ rowData.addClass('override-hide');
+ $(`[data-tags~='${tagName}']`).removeClass('override-hide');
+ }
} else {
//hide table rows.
rowData.addClass('override-hide');
@@ -80,4 +89,63 @@ function filterGarage(sender) {
$(sender).addClass('bg-primary');
$(sender).removeClass('bg-secondary');
}
+}
+function sortVehicles(desc) {
+ //get row data
+ var rowData = $('.garage-item');
+ var sortedRow = rowData.toArray().sort((a, b) => {
+ var currentVal = globalParseFloat($(a).find(".garage-item-year").attr('data-unit'));
+ var nextVal = globalParseFloat($(b).find(".garage-item-year").attr('data-unit'));
+ if (desc) {
+ return nextVal - currentVal;
+ } else {
+ return currentVal - nextVal;
+ }
+ });
+ sortedRow.push($('.garage-item-add'))
+ $('.vehiclesContainer').html(sortedRow);
+}
+function sortGarage(sender) {
+ event.preventDefault();
+ sender = $(sender);
+ if (sender.hasClass("active")) {
+ //do sorting only if garage is the active tab.
+ var sortColumn = sender.text();
+ var garageIcon = '';
+ var sortAscIcon = '';
+ var sortDescIcon = '';
+ if (sender.hasClass('sort-asc')) {
+ sender.removeClass('sort-asc');
+ sender.addClass('sort-desc');
+ sender.html(`${garageIcon}${sortColumn}${sortDescIcon}`);
+ sortVehicles(true);
+ } else if (sender.hasClass('sort-desc')) {
+ //restore table
+ sender.removeClass('sort-desc');
+ sender.html(`${garageIcon}${sortColumn}`);
+ $('.vehiclesContainer').html(storedTableRowState);
+ filterGarage($(".tagfilter.bg-primary").get(0), true);
+ } else {
+ //first time sorting.
+ //check if table was sorted before by a different column(only relevant to fuel tab)
+ if (storedTableRowState != null && ($(".sort-asc").length > 0 || $(".sort-desc").length > 0)) {
+ //restore table state.
+ $('.vehiclesContainer').html(storedTableRowState);
+ //reset other sorted columns
+ if ($(".sort-asc").length > 0) {
+ $(".sort-asc").html($(".sort-asc").html().replace(sortAscIcon, ""));
+ $(".sort-asc").removeClass("sort-asc");
+ }
+ if ($(".sort-desc").length > 0) {
+ $(".sort-desc").html($(".sort-desc").html().replace(sortDescIcon, ""));
+ $(".sort-desc").removeClass("sort-desc");
+ }
+ }
+ sender.addClass('sort-asc');
+ sender.html(`${garageIcon}${sortColumn}${sortAscIcon}`);
+ storedTableRowState = null;
+ storedTableRowState = $('.vehiclesContainer').html();
+ sortVehicles(false);
+ }
+ }
}
\ No newline at end of file