From e415258787c776d4a5291632f47c2fcceba9a040 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 9 Feb 2021 19:22:20 +0100 Subject: [PATCH 1/4] basic select filtering in RunnersOverview ref #52 --- package.json | 1 + src/components/RunnersOverview.svelte | 40 +++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 150355de..9c48c4bf 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "svelte-filepond": "0.0.1", "svelte-focus-trap": "1.0.1", "svelte-i18n": "3.3.0", + "svelte-select": "^3.16.1", "tailwindcss": "2.0.2", "tinro": "0.5.12", "toastify-js": "1.9.3", diff --git a/src/components/RunnersOverview.svelte b/src/components/RunnersOverview.svelte index 9aac8adc..79962d74 100644 --- a/src/components/RunnersOverview.svelte +++ b/src/components/RunnersOverview.svelte @@ -1,16 +1,38 @@ +{JSON.stringify(filterGroupIDs)} {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:GET')} {#await runners_promise}
+
+ + + + +
@@ -65,7 +99,8 @@ .toString() .toLowerCase() .includes(searchvalue)} - + {#if filterGroupIDs.includes(runner.group.id)||filterGroupIDs.length===0} + {/if} + {/if} {/if} {/each} -- 2.47.2 From e23821a7cbe73fda420e4bcaaa2dbf5a89b56cc9 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Fri, 12 Feb 2021 18:04:10 +0100 Subject: [PATCH 2/4] WIP on filter ref #52 --- src/components/RunnersOverview.svelte | 37 +++++++++++++++++++++------ 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/components/RunnersOverview.svelte b/src/components/RunnersOverview.svelte index 79962d74..e73d901d 100644 --- a/src/components/RunnersOverview.svelte +++ b/src/components/RunnersOverview.svelte @@ -16,6 +16,7 @@ $: filter__teams = selectedFilter_teams||[]; $: filter__orgs = selectedFilter_orgs||[]; $:filterGroupIDs=filter__teams.concat(filter__orgs).map(i=>i.value) + $: allteams = []; $: teams = []; $: orgs = []; $:selectgroups=orgs.map(function(g){ @@ -25,14 +26,26 @@ return {value:g.id,label:g.name} }) RunnerTeamService.runnerTeamControllerGetAll().then((val) => { - teams = val; - }); - RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { - orgs = val; + allteams = val; + RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { + orgs = val; + teams = allteams; + const org_ids=orgs.map(o=>o.id) + for (const i of org_ids) { + teams=teams.filter(t=>t.parentGroup.id!==i) + } + }); }); +
+

DEBUG

{JSON.stringify(filterGroupIDs)} +
+{JSON.stringify(teams)} +
+{JSON.stringify(orgs)} +
{#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:GET')} {#await runners_promise}
+ selectedFilter_teams=null; + teams = allteams; + console.log(teams); + const org_ids=orgs.map(o=>o.id) + console.log(org_ids); + for (const i of org_ids) { + teams=teams.filter(t=>t.parentGroup.id!==i) + } + console.log(teams); + }} selectedValue={selectedFilter_orgs} placeholder="Filter by Organization" containerClasses="mt-1 py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" items={selectgroups} isMulti={true}> + }} selectedValue={selectedFilter_teams} placeholder="Filter by Team" containerClasses="mt-1 py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" items={selectteams} isMulti={true}>
-- 2.47.2 From 575b4ce9708625fbec23c49101f44825c6a75bce Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Fri, 12 Feb 2021 18:47:46 +0100 Subject: [PATCH 3/4] =?UTF-8?q?=E2=9C=A8=20RunnersOverview=20-=20basic=20w?= =?UTF-8?q?orking=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #52 --- src/components/RunnersOverview.svelte | 56 +++++++-------------------- 1 file changed, 14 insertions(+), 42 deletions(-) diff --git a/src/components/RunnersOverview.svelte b/src/components/RunnersOverview.svelte index e73d901d..39f0cdad 100644 --- a/src/components/RunnersOverview.svelte +++ b/src/components/RunnersOverview.svelte @@ -12,40 +12,26 @@ current_runners = val; }); $: selectedFilter_teams = null; - $: selectedFilter_orgs = null; + $: selectedFilter = null; $: filter__teams = selectedFilter_teams||[]; - $: filter__orgs = selectedFilter_orgs||[]; + $: filter__orgs = selectedFilter||[]; $:filterGroupIDs=filter__teams.concat(filter__orgs).map(i=>i.value) - $: allteams = []; $: teams = []; $: orgs = []; - $:selectgroups=orgs.map(function(g){ - return {value:g.id,label:g.name} + $:mappedteams=teams.map(function(g){ + return {value:g.id,label:g.parentGroup.name+" > "+g.name} }) - $:selectteams=teams.map(function(g){ + $:selectgroups=(orgs.map(function(g){ return {value:g.id,label:g.name} - }) + })).concat(mappedteams) RunnerTeamService.runnerTeamControllerGetAll().then((val) => { - allteams = val; - RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { - orgs = val; - teams = allteams; - const org_ids=orgs.map(o=>o.id) - for (const i of org_ids) { - teams=teams.filter(t=>t.parentGroup.id!==i) - } - }); + teams = val; + }); + RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { + orgs = val; }); -
-

DEBUG

-{JSON.stringify(filterGroupIDs)} -
-{JSON.stringify(teams)} -
-{JSON.stringify(orgs)} -
{#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:GET')} {#await runners_promise}
- + - - + selectedFilter=event.detail + }} selectedValue={selectedFilter} placeholder="Filter by Organization/ Team" containerClasses="mt-1 py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" items={selectgroups} isMulti={true}>
@@ -120,7 +92,7 @@ selectedFilter_teams=event.detail .toString() .toLowerCase() .includes(searchvalue)} - {#if filterGroupIDs.includes(runner.group.id)||filterGroupIDs.length===0} + {#if filterGroupIDs.includes(runner.group.id)||filterGroupIDs.includes(runner.group.parentGroup?.id)||filterGroupIDs.length===0}
{#each current_runners as runner} - {#if Object.values(runner) - .toString() - .toLowerCase() - .includes(searchvalue)} + {#if runner.firstname.toLowerCase().includes(searchvalue.toLowerCase())||runner.middlename.toLowerCase().includes(searchvalue.toLowerCase())||runner.lastname.toLowerCase().includes(searchvalue.toLowerCase())||should_display_based_on_id(runner.id)} {#if filterGroupIDs.includes(runner.group.id)||filterGroupIDs.includes(runner.group.parentGroup?.id)||filterGroupIDs.length===0}
@@ -138,6 +173,7 @@
-- 2.47.2 From 5dc11c285d4e2155a3945bc44cbfcf61fe02c5f3 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Fri, 12 Feb 2021 19:06:31 +0100 Subject: [PATCH 4/4] RunnersOverview - support should_display_based_on_id search ref #52 --- src/components/RunnersOverview.svelte | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/RunnersOverview.svelte b/src/components/RunnersOverview.svelte index 39f0cdad..9ff8b3c7 100644 --- a/src/components/RunnersOverview.svelte +++ b/src/components/RunnersOverview.svelte @@ -30,6 +30,12 @@ RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { orgs = val; }); + function should_display_based_on_id(id) { + if(searchvalue.toString().slice(-1)==="*"){ + return id.toString().startsWith(searchvalue.replace("*","")) + } + return id.toString()===searchvalue; + } {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:GET')} @@ -88,10 +94,7 @@
-- 2.47.2