lisgt matcher refactor

This commit is contained in:
SPRINX0\prochazka
2024-12-16 13:08:59 +01:00
parent a20b4b3339
commit c46c9a4e16
10 changed files with 24 additions and 36 deletions

View File

@@ -29,8 +29,8 @@
export const extractKey = data => data.fileName; export const extractKey = data => data.fileName;
export const createMatcher = export const createMatcher =
({ fileName }) =>
filter => filter =>
({ fileName }) =>
filterName(filter, fileName); filterName(filter, fileName);
const APP_ICONS = { const APP_ICONS = {
'config.json': 'img json', 'config.json': 'img json',

View File

@@ -1,6 +1,6 @@
<script lang="ts" context="module"> <script lang="ts" context="module">
export const extractKey = data => data.name; export const extractKey = data => data.name;
export const createMatcher = data => filter => filterName(filter, data.name); export const createMatcher = filter => data => filterName(filter, data.name);
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -29,21 +29,12 @@
export let collapsedGroupNames = writable([]); export let collapsedGroupNames = writable([]);
export let onChangeFilteredList; export let onChangeFilteredList;
$: filtered = !groupFunc $: matcher = module.createMatcher && module.createMatcher(filter, passProps?.searchSettings);
? list.filter(data => { $: childMatcher = module.createChildMatcher && module.createChildMatcher(filter, passProps?.searchSettings);
const matcher = module.createMatcher && module.createMatcher(data, passProps?.searchSettings);
if (matcher && !matcher(filter)) return false;
return true;
})
: null;
$: childrenMatched = !groupFunc $: filtered = !groupFunc ? list.filter(data => !matcher || matcher(data)) : null;
? list.filter(data => {
const matcher = module.createChildMatcher && module.createChildMatcher(data, passProps?.searchSettings); $: childrenMatched = !groupFunc ? list.filter(data => !childMatcher || childMatcher(data)) : null;
if (matcher && !matcher(filter)) return false;
return true;
})
: null;
// let filtered = []; // let filtered = [];
@@ -62,8 +53,7 @@
$: listGrouped = groupFunc $: listGrouped = groupFunc
? _.compact( ? _.compact(
(list || []).map(data => { (list || []).map(data => {
const matcher = module.createMatcher && module.createMatcher(data, passProps?.searchSettings); const isMatched = matcher && !matcher(data) ? false : true;
const isMatched = matcher && !matcher(filter) ? false : true;
const group = groupFunc(data); const group = groupFunc(data);
return { group, data, isMatched }; return { group, data, isMatched };
}) })

View File

@@ -42,8 +42,8 @@
export const extractKey = data => data.fileName; export const extractKey = data => data.fileName;
export const createMatcher = export const createMatcher =
({ fileName }) =>
filter => filter =>
({ fileName }) =>
filterName(filter, fileName); filterName(filter, fileName);
const ARCHIVE_ICONS = { const ARCHIVE_ICONS = {
'table.yaml': 'img table', 'table.yaml': 'img table',
@@ -70,7 +70,7 @@
import { getExtensions } from '../stores'; import { getExtensions } from '../stores';
import createQuickExportMenu from '../utility/createQuickExportMenu'; import createQuickExportMenu from '../utility/createQuickExportMenu';
import { exportQuickExportFile, } from '../utility/exportFileTools'; import { exportQuickExportFile } from '../utility/exportFileTools';
import openNewTab from '../utility/openNewTab'; import openNewTab from '../utility/openNewTab';
import AppObjectCore from './AppObjectCore.svelte'; import AppObjectCore from './AppObjectCore.svelte';
import InputTextModal from '../modals/InputTextModal.svelte'; import InputTextModal from '../modals/InputTextModal.svelte';

View File

@@ -1,6 +1,6 @@
<script lang="ts" context="module"> <script lang="ts" context="module">
export const extractKey = data => data.name; export const extractKey = data => data.name;
export const createMatcher = data => filter => filterName(filter, data.name); export const createMatcher = filter => data => filterName(filter, data.name);
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -1,11 +1,11 @@
<script context="module"> <script context="module">
export const extractKey = data => data._id; export const extractKey = data => data._id;
export const createMatcher = props => filter => { export const createMatcher = filter => props => {
const { _id, displayName, server } = props; const { _id, displayName, server } = props;
const databases = getLocalStorage(`database_list_${_id}`) || []; const databases = getLocalStorage(`database_list_${_id}`) || [];
return filterName(filter, displayName, server, ...databases.map(x => x.name)); return filterName(filter, displayName, server, ...databases.map(x => x.name));
}; };
export const createChildMatcher = props => filter => { export const createChildMatcher = filter => props => {
if (!filter) return false; if (!filter) return false;
const { _id } = props; const { _id } = props;
const databases = getLocalStorage(`database_list_${_id}`) || []; const databases = getLocalStorage(`database_list_${_id}`) || [];

View File

@@ -3,11 +3,8 @@
export const extractKey = ({ schemaName, pureName }) => (schemaName ? `${schemaName}.${pureName}` : pureName); export const extractKey = ({ schemaName, pureName }) => (schemaName ? `${schemaName}.${pureName}` : pureName);
export const createMatcher = export const createMatcher =
( (filter, cfg = DEFAULT_SEARCH_SETTINGS) =>
{ schemaName, pureName, objectComment, tableEngine, columns, objectTypeField, createSql }, ({ schemaName, pureName, objectComment, tableEngine, columns, objectTypeField, createSql }) => {
cfg = DEFAULT_SEARCH_SETTINGS
) =>
filter => {
const filterArgs = []; const filterArgs = [];
if (cfg.schemaName) filterArgs.push(schemaName); if (cfg.schemaName) filterArgs.push(schemaName);
if (objectTypeField == 'tables') { if (objectTypeField == 'tables') {
@@ -25,7 +22,8 @@
if (cfg.sqlObjectText) filterArgs.push(createSql); if (cfg.sqlObjectText) filterArgs.push(createSql);
} }
return filterName(filter, ...filterArgs); const res = filterName(filter, ...filterArgs);
return res;
}; };
export const createTitle = ({ schemaName, pureName }) => (schemaName ? `${schemaName}.${pureName}` : pureName); export const createTitle = ({ schemaName, pureName }) => (schemaName ? `${schemaName}.${pureName}` : pureName);

View File

@@ -1,6 +1,9 @@
<script lang="ts" context="module"> <script lang="ts" context="module">
export const extractKey = data => data.name; export const extractKey = data => data.name;
export const createMatcher = ({ name, title }) => filter => filterName(filter, name, title); export const createMatcher =
filter =>
({ name, title }) =>
filterName(filter, name, title);
</script> </script>
<script lang="ts"> <script lang="ts">

View File

@@ -104,8 +104,8 @@
export const extractKey = data => data.file; export const extractKey = data => data.file;
export const createMatcher = export const createMatcher =
({ file }) =>
filter => filter =>
({ file }) =>
filterName(filter, file); filterName(filter, file);
</script> </script>

View File

@@ -150,11 +150,8 @@
})); }));
} }
$: flatFilteredList = objectList.filter(data => { $: matcher = databaseObjectAppObject.createMatcher(filter, $databaseObjectAppObjectSearchSettings);
const matcher = databaseObjectAppObject.createMatcher(data, $databaseObjectAppObjectSearchSettings); $: flatFilteredList = objectList.filter(data => !matcher || matcher(data));
if (matcher && !matcher(filter)) return false;
return true;
});
export function focus() { export function focus() {
domListHandler?.focusFirst(); domListHandler?.focusFirst();