mirror of
https://github.com/hargata/lubelog.git
synced 2025-12-10 18:36:38 -06:00
add case insensitive search to garage
This commit is contained in:
parent
31690bc8df
commit
9f556f9c95
@ -10,7 +10,7 @@
|
|||||||
@if (recordTags.Any())
|
@if (recordTags.Any())
|
||||||
{
|
{
|
||||||
<div class='row'>
|
<div class='row'>
|
||||||
<div class="col-12 d-flex align-items-center flex-wrap mb-2">
|
<div class="col-xl-10 col-lg-9 col-md-8 col-sm-8 col-12 d-flex align-items-center flex-wrap mb-2">
|
||||||
@foreach (string recordTag in recordTags)
|
@foreach (string recordTag in recordTags)
|
||||||
{
|
{
|
||||||
<span onclick="filterGarage(this)" class="user-select-none ms-1 me-1 mt-1 mb-1 rounded-pill badge bg-secondary tagfilter" style="cursor:pointer;">@recordTag</span>
|
<span onclick="filterGarage(this)" class="user-select-none ms-1 me-1 mt-1 mb-1 rounded-pill badge bg-secondary tagfilter" style="cursor:pointer;">@recordTag</span>
|
||||||
@ -22,6 +22,11 @@
|
|||||||
}
|
}
|
||||||
</datalist>
|
</datalist>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xl-2 col-lg-3 col-md-4 col-sm-4 col-12 pt-2 pb-2">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" id="garageSearchInput" class="form-control" onkeyup="handleGarageSearchKeyPress(event)" placeholder="@translator.Translate(userLanguage, "Search by Keyword")" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<div class="row gy-3 align-items-stretch vehiclesContainer pb-2 @(recordTags.Any() ? "" : "mt-2")">
|
<div class="row gy-3 align-items-stretch vehiclesContainer pb-2 @(recordTags.Any() ? "" : "mt-2")">
|
||||||
@ -72,10 +77,10 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title text-truncate garage-item-year" data-unit="@vehicle.Year">@($"{vehicle.Year}")</h5>
|
<h5 class="garage-item-attribute card-title text-truncate garage-item-year" data-unit="@vehicle.Year">@($"{vehicle.Year}")</h5>
|
||||||
<h5 class="card-title text-truncate">@($"{vehicle.Make}")</h5>
|
<h5 class="garage-item-attribute card-title text-truncate">@($"{vehicle.Make}")</h5>
|
||||||
<h5 class="card-title text-truncate">@($"{vehicle.Model}")</h5>
|
<h5 class="garage-item-attribute card-title text-truncate">@($"{vehicle.Model}")</h5>
|
||||||
<p class="card-text text-truncate">@StaticHelper.GetVehicleIdentifier(vehicle)</p>
|
<p class="garage-item-attribute card-text text-truncate">@StaticHelper.GetVehicleIdentifier(vehicle)</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -188,20 +188,18 @@ function hidePinnedNotes(vehicleId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function filterGarage(sender) {
|
function filterGarage(sender) {
|
||||||
var rowData = $(".garage-item");
|
let searchQuery = $('#garageSearchInput').val();
|
||||||
if (sender == undefined) {
|
if (sender == undefined) {
|
||||||
rowData.removeClass('override-hide');
|
searchAndFilterGarage(undefined, searchQuery);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var tagName = sender.textContent;
|
var tagName = sender.textContent;
|
||||||
if ($(sender).hasClass("bg-primary")) {
|
if ($(sender).hasClass("bg-primary")) {
|
||||||
rowData.removeClass('override-hide');
|
searchAndFilterGarage(undefined, searchQuery);
|
||||||
$(sender).removeClass('bg-primary');
|
$(sender).removeClass('bg-primary');
|
||||||
$(sender).addClass('bg-secondary');
|
$(sender).addClass('bg-secondary');
|
||||||
} else {
|
} else {
|
||||||
//hide table rows.
|
searchAndFilterGarage(tagName, searchQuery);
|
||||||
rowData.addClass('override-hide');
|
|
||||||
$(`[data-tags~='${tagName}']`).removeClass('override-hide');
|
|
||||||
if ($(".tagfilter.bg-primary").length > 0) {
|
if ($(".tagfilter.bg-primary").length > 0) {
|
||||||
//disabling other filters
|
//disabling other filters
|
||||||
$(".tagfilter.bg-primary").addClass('bg-secondary');
|
$(".tagfilter.bg-primary").addClass('bg-secondary');
|
||||||
@ -211,6 +209,42 @@ function filterGarage(sender) {
|
|||||||
$(sender).removeClass('bg-secondary');
|
$(sender).removeClass('bg-secondary');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function handleGarageSearchKeyPress(event) {
|
||||||
|
if (event.keyCode == 13) {
|
||||||
|
searchGarage();
|
||||||
|
} else {
|
||||||
|
setDebounce(searchGarage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function searchGarage() {
|
||||||
|
let searchTerm = $('#garageSearchInput').val();
|
||||||
|
let activeTag = $(".tagfilter.bg-primary").length > 0 ? $(".tagfilter.bg-primary")[0].textContent : undefined;
|
||||||
|
searchAndFilterGarage(activeTag, searchTerm);
|
||||||
|
}
|
||||||
|
function searchAndFilterGarage(searchTag, searchTerm) {
|
||||||
|
let rowData = $(".garage-item");
|
||||||
|
let searchTagEmpty = searchTag == undefined || searchTag.trim() == '';
|
||||||
|
let searchQueryEmpty = searchTerm == undefined || searchTerm.trim() == '';
|
||||||
|
if (searchTagEmpty && searchQueryEmpty) {
|
||||||
|
//show all garage items
|
||||||
|
rowData.removeClass('override-hide');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//hide all garage items
|
||||||
|
rowData.addClass('override-hide');
|
||||||
|
if (!searchQueryEmpty && !searchTagEmpty) {
|
||||||
|
$(`.garage-item .card-body .garage-item-attribute:containsNC('${searchTerm}')`).closest(`.garage-item[data-tags~='${searchTag}']`).removeClass('override-hide');
|
||||||
|
} else {
|
||||||
|
if (!searchTagEmpty) {
|
||||||
|
//show all garage items with matching tags
|
||||||
|
$(`[data-tags~='${searchTag}']`).removeClass('override-hide');
|
||||||
|
}
|
||||||
|
if (!searchQueryEmpty) {
|
||||||
|
//show all garage items with matching search terms
|
||||||
|
$(`.garage-item .card-body .garage-item-attribute:containsNC('${searchTerm}')`).closest('.garage-item').removeClass('override-hide');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
function sortVehicles(desc) {
|
function sortVehicles(desc) {
|
||||||
//get row data
|
//get row data
|
||||||
var rowData = $('.garage-item');
|
var rowData = $('.garage-item');
|
||||||
|
|||||||
@ -392,7 +392,7 @@ function searchGasTableRows() {
|
|||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: 'Search Records',
|
title: 'Search Records',
|
||||||
html: `
|
html: `
|
||||||
<input type="text" id="inputSearch" class="swal2-input" placeholder="Keyword(case sensitive)" onkeydown="handleSwalEnter(event)">
|
<input type="text" id="inputSearch" class="swal2-input" placeholder="Keyword" onkeydown="handleSwalEnter(event)">
|
||||||
`,
|
`,
|
||||||
confirmButtonText: 'Search',
|
confirmButtonText: 'Search',
|
||||||
focusConfirm: false,
|
focusConfirm: false,
|
||||||
@ -403,7 +403,7 @@ function searchGasTableRows() {
|
|||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
var rowData = $(`#${tabName} table tbody tr`);
|
var rowData = $(`#${tabName} table tbody tr`);
|
||||||
var filteredRows = $(`#${tabName} table tbody tr td:contains('${result.value.searchString}')`).parent();
|
var filteredRows = $(`#${tabName} table tbody tr td:containsNC('${result.value.searchString}')`).parent();
|
||||||
var splitSearchString = result.value.searchString.split('=');
|
var splitSearchString = result.value.searchString.split('=');
|
||||||
if (result.value.searchString.includes('=') && splitSearchString.length == 2) {
|
if (result.value.searchString.includes('=') && splitSearchString.length == 2) {
|
||||||
//column specific search.
|
//column specific search.
|
||||||
@ -412,7 +412,7 @@ function searchGasTableRows() {
|
|||||||
var columnName = splitSearchString[0];
|
var columnName = splitSearchString[0];
|
||||||
var colSearchString = splitSearchString[1];
|
var colSearchString = splitSearchString[1];
|
||||||
var colIndex = columns.findIndex(x => x == columnName) + 1;
|
var colIndex = columns.findIndex(x => x == columnName) + 1;
|
||||||
filteredRows = $(`#${tabName} table tbody tr td:nth-child(${colIndex}):contains('${colSearchString}')`).parent();
|
filteredRows = $(`#${tabName} table tbody tr td:nth-child(${colIndex}):containsNC('${colSearchString}')`).parent();
|
||||||
}
|
}
|
||||||
if (result.value.searchString.trim() == '') {
|
if (result.value.searchString.trim() == '') {
|
||||||
rowData.removeClass('override-hide');
|
rowData.removeClass('override-hide');
|
||||||
|
|||||||
@ -1,4 +1,9 @@
|
|||||||
function returnToGarage() {
|
$.expr[":"].containsNC = $.expr.createPseudo(function (arg) {
|
||||||
|
return function (elem) {
|
||||||
|
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
function returnToGarage() {
|
||||||
window.location.href = '/Home';
|
window.location.href = '/Home';
|
||||||
}
|
}
|
||||||
function successToast(message) {
|
function successToast(message) {
|
||||||
@ -1419,7 +1424,7 @@ function searchTableRows(tabName) {
|
|||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: 'Search Records',
|
title: 'Search Records',
|
||||||
html: `
|
html: `
|
||||||
<input type="text" id="inputSearch" class="swal2-input" placeholder="Keyword(case sensitive)" onkeydown="handleSwalEnter(event)">
|
<input type="text" id="inputSearch" class="swal2-input" placeholder="Keyword" onkeydown="handleSwalEnter(event)">
|
||||||
`,
|
`,
|
||||||
confirmButtonText: 'Search',
|
confirmButtonText: 'Search',
|
||||||
focusConfirm: false,
|
focusConfirm: false,
|
||||||
@ -1430,7 +1435,7 @@ function searchTableRows(tabName) {
|
|||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
var rowData = $(`#${tabName} table tbody tr`);
|
var rowData = $(`#${tabName} table tbody tr`);
|
||||||
var filteredRows = $(`#${tabName} table tbody tr td:contains('${result.value.searchString}')`).parent();
|
var filteredRows = $(`#${tabName} table tbody tr td:containsNC('${result.value.searchString}')`).parent();
|
||||||
var splitSearchString = result.value.searchString.split('=');
|
var splitSearchString = result.value.searchString.split('=');
|
||||||
if (result.value.searchString.includes('=') && splitSearchString.length == 2) {
|
if (result.value.searchString.includes('=') && splitSearchString.length == 2) {
|
||||||
//column specific search.
|
//column specific search.
|
||||||
@ -1439,7 +1444,7 @@ function searchTableRows(tabName) {
|
|||||||
var columnName = splitSearchString[0];
|
var columnName = splitSearchString[0];
|
||||||
var colSearchString = splitSearchString[1];
|
var colSearchString = splitSearchString[1];
|
||||||
var colIndex = columns.findIndex(x => x == columnName) + 1;
|
var colIndex = columns.findIndex(x => x == columnName) + 1;
|
||||||
filteredRows = $(`#${tabName} table tbody tr td:nth-child(${colIndex}):contains('${colSearchString}')`).parent();
|
filteredRows = $(`#${tabName} table tbody tr td:nth-child(${colIndex}):containsNC('${colSearchString}')`).parent();
|
||||||
}
|
}
|
||||||
if (result.value.searchString.trim() == '') {
|
if (result.value.searchString.trim() == '') {
|
||||||
rowData.removeClass('override-hide');
|
rowData.removeClass('override-hide');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user