From 7350524456dba40634c615f4d8a02b09e34b14ad Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Thu, 8 Sep 2022 10:30:13 +0200 Subject: [PATCH] ui: dashboard updates --- apps/ui/src/routes/__layout.svelte | 158 ----- apps/ui/src/routes/index.svelte | 1036 +++++++++++++--------------- 2 files changed, 495 insertions(+), 699 deletions(-) diff --git a/apps/ui/src/routes/__layout.svelte b/apps/ui/src/routes/__layout.svelte index 38fb61673..3feade818 100644 --- a/apps/ui/src/routes/__layout.svelte +++ b/apps/ui/src/routes/__layout.svelte @@ -159,156 +159,6 @@ -
@@ -408,14 +258,6 @@
-Dashboard -Applications -Git Sources -Destinations -Databases -Services IAM Settings diff --git a/apps/ui/src/routes/index.svelte b/apps/ui/src/routes/index.svelte index d9c646a83..5b5a70ea8 100644 --- a/apps/ui/src/routes/index.svelte +++ b/apps/ui/src/routes/index.svelte @@ -27,31 +27,7 @@ export let gitSources: any; export let destinations: any; - let filtered = { - applications: applications.filter( - (application: any) => application.teams[0].id === $appSession.teamId - ), - otherApplications: applications.filter( - (application: any) => application.teams[0].id !== $appSession.teamId - ), - databases: databases.filter((database: any) => database.teams[0].id === $appSession.teamId), - otherDatabases: databases.filter( - (database: any) => database.teams[0].id !== $appSession.teamId - ), - services: services.filter((service: any) => service.teams[0].id === $appSession.teamId), - otherServices: services.filter((service: any) => service.teams[0].id !== $appSession.teamId), - settings, - gitSources: gitSources.filter((gitSource: any) => gitSource.teams[0].id === $appSession.teamId), - otherGitSources: gitSources.filter( - (gitSource: any) => gitSource.teams[0].id !== $appSession.teamId - ), - destinations: destinations.filter( - (destination: any) => destination.teams[0].id === $appSession.teamId - ), - otherDestinations: destinations.filter( - (destination: any) => destination.teams[0].id !== $appSession.teamId - ) - }; + let filtered: any = setInitials(); import { get, post } from '$lib/api'; import Usage from '$lib/components/Usage.svelte'; import { t } from '$lib/translations'; @@ -68,6 +44,50 @@ let search = ''; let status: any = {}; + function setInitials(onlyOthers: boolean = false) { + return { + applications: + !onlyOthers && + applications.filter((application: any) => application.teams[0].id === $appSession.teamId), + otherApplications: applications.filter( + (application: any) => application.teams[0].id !== $appSession.teamId + ), + databases: + !onlyOthers && + databases.filter((database: any) => database.teams[0].id === $appSession.teamId), + otherDatabases: databases.filter( + (database: any) => database.teams[0].id !== $appSession.teamId + ), + services: + !onlyOthers && + services.filter((service: any) => service.teams[0].id === $appSession.teamId), + otherServices: services.filter((service: any) => service.teams[0].id !== $appSession.teamId), + gitSources: + !onlyOthers && + gitSources.filter((gitSource: any) => gitSource.teams[0].id === $appSession.teamId), + otherGitSources: gitSources.filter( + (gitSource: any) => gitSource.teams[0].id !== $appSession.teamId + ), + destinations: + !onlyOthers && + destinations.filter((destination: any) => destination.teams[0].id === $appSession.teamId), + otherDestinations: destinations.filter( + (destination: any) => destination.teams[0].id !== $appSession.teamId + ) + }; + } + function clearFiltered() { + filtered.applications = []; + filtered.otherApplications = []; + filtered.databases = []; + filtered.otherDatabases = []; + filtered.services = []; + filtered.otherServices = []; + filtered.gitSources = []; + filtered.otherGitSources = []; + filtered.destinations = []; + filtered.otherDestinations = []; + } function getRndInteger(min: number, max: number) { return Math.floor(Math.random() * (max - min + 1)) + min; } @@ -92,264 +112,165 @@ isRunning = response.isRunning; } if (isRunning) { - status[id] = 'Running'; - return 'Running'; + status[id] = 'running'; + return 'running'; } else { - status[id] = 'Stopped'; - return 'Stopped'; + status[id] = 'stopped'; + return 'stopped'; } } catch (error) { - status[id] = 'Error'; - return 'Error'; + status[id] = 'error'; + return 'error'; } finally { numberOfGetStatus--; } } - + function filterState(state: string) { + clearFiltered(); + filtered.applications = applications.filter((application: any) => { + if (status[application.id] === state && application.teams[0].id === $appSession.teamId) + return application; + }); + filtered.otherApplications = applications.filter((application: any) => { + if (status[application.id] === state && application.teams[0].id !== $appSession.teamId) + return application; + }); + filtered.databases = databases.filter((database: any) => { + if (status[database.id] === state && database.teams[0].id === $appSession.teamId) + return database; + }); + filtered.otherDatabases = databases.filter((database: any) => { + if (status[database.id] === state && database.teams[0].id !== $appSession.teamId) + return database; + }); + filtered.services = services.filter((service: any) => { + if (status[service.id] === state && service.teams[0].id === $appSession.teamId) + return service; + }); + filtered.otherServices = services.filter((service: any) => { + if (status[service.id] === state && service.teams[0].id !== $appSession.teamId) + return service; + }); + } + function filterSpecific(type: any) { + clearFiltered(); + const otherType = 'other' + type[0].toUpperCase() + type.substring(1); + filtered[type] = eval(type).filter( + (resource: any) => resource.teams[0].id === $appSession.teamId + ); + filtered[otherType] = eval(type).filter( + (resource: any) => resource.teams[0].id !== $appSession.teamId + ); + } + function applicationFilters(application: any) { + return ( + (application.name && application.name.toLowerCase().includes(search.toLowerCase())) || + (application.fqdn && application.fqdn.toLowerCase().includes(search.toLowerCase())) || + (application.repository && + application.repository.toLowerCase().includes(search.toLowerCase())) || + (application.buildpack && + application.buildpack.toLowerCase().includes(search.toLowerCase())) || + (application.branch && application.branch.toLowerCase().includes(search.toLowerCase())) || + (application.destinationDockerId && + application.destinationDocker.name.toLowerCase().includes(search.toLowerCase())) || + ('bot'.includes(search) && application.settings.isBot) + ); + } + function databaseFilters(database: any) { + return ( + (database.name && database.name.toLowerCase().includes(search.toLowerCase())) || + (database.type && database.type.toLowerCase().includes(search.toLowerCase())) || + (database.version && database.version.toLowerCase().includes(search.toLowerCase())) || + (database.destinationDockerId && + database.destinationDocker.name.toLowerCase().includes(search.toLowerCase())) + ); + } + function serviceFilters(service: any) { + return ( + (service.name && service.name.toLowerCase().includes(search.toLowerCase())) || + (service.type && service.type.toLowerCase().includes(search.toLowerCase())) || + (service.version && service.version.toLowerCase().includes(search.toLowerCase())) || + (service.destinationDockerId && + service.destinationDocker.name.toLowerCase().includes(search.toLowerCase())) + ); + } + function gitSourceFilters(source: any) { + return ( + (source.name && source.name.toLowerCase().includes(search.toLowerCase())) || + (source.type && source.type.toLowerCase().includes(search.toLowerCase())) || + (source.htmlUrl && source.htmlUrl.toLowerCase().includes(search.toLowerCase())) || + (source.apiUrl && source.apiUrl.toLowerCase().includes(search.toLowerCase())) + ); + } + function destinationFilters(destination: any) { + return ( + (destination.name && destination.name.toLowerCase().includes(search.toLowerCase())) || + (destination.type && destination.type.toLowerCase().includes(search.toLowerCase())) + ); + } function doSearch(bang?: string) { if (bang || bang === '') search = bang; if (search) { + filtered = setInitials(); if (search.startsWith('!')) { if (search === '!running') { - filtered.applications = applications.filter((application: any) => { - if ( - status[application.id] === 'Running' && - application.teams[0].id === $appSession.teamId - ) - return application; - }); - filtered.otherApplications = applications.filter((application: any) => { - if ( - status[application.id] === 'Running' && - application.teams[0].id !== $appSession.teamId - ) - return application; - }); - filtered.databases = databases.filter((database: any) => { - if (status[database.id] === 'Running' && database.teams[0].id === $appSession.teamId) - return database; - }); - filtered.otherDatabases = databases.filter((database: any) => { - if (status[database.id] === 'Running' && database.teams[0].id !== $appSession.teamId) - return database; - }); - filtered.services = services.filter((service: any) => { - if (status[service.id] === 'Running' && service.teams[0].id === $appSession.teamId) - return service; - }); - filtered.otherServices = services.filter((service: any) => { - if (status[service.id] === 'Running' && service.teams[0].id !== $appSession.teamId) - return service; - }); - filtered.gitSources = []; - filtered.otherGitSources = []; - filtered.destinations = []; - filtered.otherDestinations = []; + filterState('running'); } else if (search === '!stopped') { - filtered.applications = applications.filter((application: any) => { - if ( - status[application.id] === 'Stopped' && - application.teams[0].id === $appSession.teamId - ) - return application; - }); - filtered.otherApplications = applications.filter((application: any) => { - if ( - status[application.id] === 'Stopped' && - application.teams[0].id !== $appSession.teamId - ) - return application; - }); - filtered.databases = databases.filter((database: any) => { - if (status[database.id] === 'Stopped' && database.teams[0].id === $appSession.teamId) - return database; - }); - filtered.otherDatabases = databases.filter((database: any) => { - if (status[database.id] === 'Stopped' && database.teams[0].id !== $appSession.teamId) - return database; - }); - filtered.services = services.filter((service: any) => { - if (status[service.id] === 'Stopped' && service.teams[0].id === $appSession.teamId) - return service; - }); - filtered.otherServices = services.filter((service: any) => { - if (status[service.id] === 'Stopped' && service.teams[0].id !== $appSession.teamId) - return service; - }); - filtered.gitSources = []; - filtered.otherGitSources = []; - filtered.destinations = []; - filtered.otherDestinations = []; + filterState('stopped'); } else if (search === '!error') { - filtered.applications = applications.filter((application: any) => { - if ( - status[application.id] === 'Error' && - application.teams[0].id === $appSession.teamId - ) - return application; - }); - filtered.otherApplications = applications.filter((application: any) => { - if ( - status[application.id] === 'Error' && - application.teams[0].id !== $appSession.teamId - ) - return application; - }); - filtered.databases = databases.filter((database: any) => { - if (status[database.id] === 'Error' && database.teams[0].id === $appSession.teamId) - return database; - }); - filtered.otherDatabases = databases.filter((database: any) => { - if (status[database.id] === 'Error' && database.teams[0].id !== $appSession.teamId) - return database; - }); - filtered.services = services.filter((service: any) => { - if (status[service.id] === 'Error' && service.teams[0].id === $appSession.teamId) - return service; - }); - filtered.otherServices = services.filter((service: any) => { - if (status[service.id] === 'Error' && service.teams[0].id !== $appSession.teamId) - return service; - }); - filtered.gitSources = []; - filtered.otherGitSources = []; - filtered.destinations = []; - filtered.otherDestinations = []; + filterState('error'); } else if (search === '!app') { - filtered.applications = applications.filter( - (application: any) => application.teams[0].id === $appSession.teamId - ); - filtered.databases = []; - filtered.otherDatabases = []; - filtered.services = []; - filtered.otherServices = []; - filtered.gitSources = []; - filtered.otherGitSources = []; - filtered.destinations = []; - filtered.otherDestinations = []; + filterSpecific('applications'); } else if (search === '!db') { - filtered.applications = []; - filtered.otherApplications = []; - filtered.databases = databases.filter( - (database: any) => database.teams[0].id === $appSession.teamId - ); - filtered.services = []; - filtered.otherServices = []; - filtered.gitSources = []; - filtered.otherGitSources = []; - filtered.destinations = []; - filtered.otherDestinations = []; + filterSpecific('databases'); } else if (search === '!service') { - filtered.applications = []; - filtered.otherApplications = []; - filtered.databases = []; - filtered.otherDatabases = []; - filtered.services = services.filter( - (service: any) => service.teams[0].id === $appSession.teamId - ); - filtered.gitSources = []; - filtered.otherGitSources = []; - filtered.destinations = []; - filtered.otherDestinations = []; + filterSpecific('services'); } else if (search === '!git') { - filtered.applications = []; - filtered.otherApplications = []; - filtered.databases = []; - filtered.otherDatabases = []; - filtered.services = []; - filtered.otherServices = []; - filtered.gitSources = gitSources.filter( - (source: any) => source.teams[0].id === $appSession.teamId - ); - filtered.destinations = []; - filtered.otherDestinations = []; + filterSpecific('gitSources'); } else if (search === '!destination') { - filtered.applications = []; - filtered.otherApplications = []; - filtered.databases = []; - filtered.otherDatabases = []; - filtered.services = []; - filtered.otherServices = []; - filtered.gitSources = []; - filtered.otherGitSources = []; - filtered.destinations = destinations.filter( - (destination: any) => destination.teams[0].id === $appSession.teamId - ); + filterSpecific('destinations'); } else if (search === '!bot') { + clearFiltered(); filtered.applications = applications.filter((application: any) => { return application.settings.isBot; }); filtered.otherApplications = applications.filter((application: any) => { return application.settings.isBot && application.teams[0].id !== $appSession.teamId; }); - filtered.databases = []; - filtered.otherDatabases = []; - filtered.services = []; - filtered.otherServices = []; - filtered.gitSources = []; - filtered.otherGitSources = []; } else if (search === '!notmine') { - filtered.applications = []; - filtered.databases = []; - filtered.services = []; - filtered.gitSources = []; - filtered.destinations = []; + clearFiltered(); + filtered = setInitials(true); } } else { - filtered.applications = applications.filter((application: any) => { - return ( - (application.name && application.name.toLowerCase().includes(search.toLowerCase())) || - (application.fqdn && application.fqdn.toLowerCase().includes(search.toLowerCase())) || - (application.repository && - application.repository.toLowerCase().includes(search.toLowerCase())) || - (application.buildpack && - application.buildpack.toLowerCase().includes(search.toLowerCase())) || - (application.branch && - application.branch.toLowerCase().includes(search.toLowerCase())) || - (application.destinationDockerId && - application.destinationDocker.name.toLowerCase().includes(search.toLowerCase())) || - ('bot'.includes(search) && application.settings.isBot) - ); - }); - filtered.databases = databases.filter((database: any) => { - return ( - (database.name && database.name.toLowerCase().includes(search.toLowerCase())) || - (database.type && database.type.toLowerCase().includes(search.toLowerCase())) || - (database.version && database.version.toLowerCase().includes(search.toLowerCase())) || - (database.destinationDockerId && - database.destinationDocker.name.toLowerCase().includes(search.toLowerCase())) - ); - }); - filtered.services = services.filter((service: any) => { - return ( - (service.name && service.name.toLowerCase().includes(search.toLowerCase())) || - (service.type && service.type.toLowerCase().includes(search.toLowerCase())) || - (service.version && service.version.toLowerCase().includes(search.toLowerCase())) || - (service.destinationDockerId && - service.destinationDocker.name.toLowerCase().includes(search.toLowerCase())) - ); - }); - filtered.gitSources = gitSources.filter((source: any) => { - return ( - (source.name && source.name.toLowerCase().includes(search.toLowerCase())) || - (source.type && source.type.toLowerCase().includes(search.toLowerCase())) || - (source.htmlUrl && source.htmlUrl.toLowerCase().includes(search.toLowerCase())) || - (source.apiUrl && source.apiUrl.toLowerCase().includes(search.toLowerCase())) - ); - }); - filtered.destinations = destinations.filter((destination: any) => { - return ( - (destination.name && destination.name.toLowerCase().includes(search.toLowerCase())) || - (destination.type && destination.type.toLowerCase().includes(search.toLowerCase())) - ); - }); + filtered.applications = filtered.applications.filter((application: any) => + applicationFilters(application) + ); + filtered.otherApplications = filtered.otherApplications.filter((application: any) => + applicationFilters(application) + ); + filtered.databases = filtered.databases.filter((database: any) => + databaseFilters(database) + ); + filtered.otherDatabases = filtered.otherDatabases.filter((database: any) => + databaseFilters(database) + ); + filtered.services = filtered.services.filter((service: any) => serviceFilters(service)); + filtered.otherServices = filtered.otherServices.filter((service: any) => + serviceFilters(service) + ); + filtered.gitSources = filtered.gitSources.filter((source: any) => gitSourceFilters(source)); + filtered.otherGitSources = filtered.otherGitSources.filter((source: any) => + gitSourceFilters(source) + ); + filtered.destinations = filtered.destinations.filter((destination: any) => + destinationFilters(destination) + ); + filtered.otherDestinations = filtered.otherDestinations.filter((destination: any) => + destinationFilters(destination) + ); } } else { - filtered.applications = applications; - filtered.databases = databases; - filtered.services = services; - filtered.gitSources = gitSources; - filtered.destinations = destinations; + filtered = setInitials(); } } @@ -367,96 +288,98 @@ {#if applications.length !== 0 || destinations.length !== 0 || databases.length !== 0 || services.length !== 0 || gitSources.length !== 0 || destinations.length !== 0}
-
+
doSearch('')} + > + + + +
doSearch()} />
{/if} {#if (filtered.applications.length > 0 && applications.length > 0) || filtered.otherApplications.length > 0} -
+

Applications

{/if} {#if filtered.applications.length > 0 && applications.length > 0}
-
@@ -467,7 +390,7 @@ {#await getStatus(application)} {:then status} - {#if status === 'Running'} + {#if status === 'running'} {:else} @@ -493,6 +416,9 @@ {#if application.destinationDocker?.name}
{application.destinationDocker.name}
{/if} + {#if application.teams.length > 0 && application.teams[0].name} +
{application.teams[0].name}
+ {/if}
@@ -560,17 +486,17 @@

Other Teams

{/if} -
- {#if filtered.otherApplications.length > 0} + {#if filtered.otherApplications.length > 0} + - {#if (filtered.services.length > 0 && services.length > 0) || filtered.services.length > 0} +
+ {/if} + {#if (filtered.services.length > 0 && services.length > 0) || filtered.otherServices.length > 0}

Services

@@ -666,7 +595,7 @@ {#await getStatus(service)} {:then status} - {#if status === 'Running'} + {#if status === 'running'} {:else} @@ -685,6 +614,9 @@ {#if service.destinationDocker?.name}
{service.destinationDocker.name}
{/if} + {#if service.teams.length > 0 && service.teams[0].name} +
{service.teams[0].name}
+ {/if}
{#if service.fqdn} @@ -716,74 +648,77 @@

Nothing here.

{/if}
- {#if filtered.otherServices.length > 0} - {#if filtered.services.length > 0} -
- {/if} -
-

Other Teams

-
+ {/if} + {#if filtered.otherServices.length > 0} + {#if filtered.services.length > 0} +
{/if} - {#if filtered.otherServices.length > 0} -
- {#each filtered.otherServices as service} - -
- {#await getStatus(service)} - - {:then status} - {#if status === 'Running'} - - {:else} - - {/if} - {/await} -
- - {/if} - {#if (filtered.databases.length > 0 && databases.length > 0) || filtered.databases.length > 0} + {#if (filtered.databases.length > 0 && databases.length > 0) || filtered.otherDatabases.length > 0}

Databases

@@ -800,7 +735,7 @@ {#await getStatus(database)} {:then status} - {#if status === 'Running'} + {#if status === 'running'} {:else} @@ -820,6 +755,9 @@ {#if database.destinationDocker?.name}
{database.destinationDocker.name}
{/if} + {#if database.teams.length > 0 && database.teams[0].name} +
{database.teams[0].name}
+ {/if}
@@ -854,78 +792,81 @@

Nothing here.

{/if}
- {#if filtered.otherDatabases.length > 0} - {#if databases.length > 0} -
- {/if} -
-

Other Teams

-
+ {/if} + {#if filtered.otherDatabases.length > 0} + {#if filtered.databases.length > 0} +
{/if} - {#if filtered.otherDatabases.length > 0} -
- {#each filtered.otherDatabases as database} - -
- {#await getStatus(database)} - - {:then status} - {#if status === 'Running'} - - {:else} - - {/if} - {/await} -
- - - {#if filtered.otherGitSources.length > 0} - {#if gitSources.length > 0} -
- {/if} -
-

Other Teams

-
+ {/if} + {#if filtered.otherGitSources.length > 0} + {#if filtered.gitSources.length > 0} +
{/if} - {#if filtered.otherGitSources.length > 0} -
- {#each filtered.otherGitSources as source} - -
-
-
- {#if source?.type === 'gitlab'} - - +

Other Teams

+
+ {/if} + {#if filtered.otherGitSources.length > 0} +
+ {#each filtered.otherGitSources as source} + + {/if} - {#if (filtered.destinations.length > 0 && destinations.length > 0) || filtered.destinations.length > 0} + {#if (filtered.destinations.length > 0 && destinations.length > 0) || filtered.otherDestinations.length > 0}

Destinations

@@ -1124,6 +1072,9 @@ {#if destination.remoteEngine && !destination.sshKeyId}

SSH key missing

{/if} + {#if destination.teams.length > 0 && destination.teams[0].name} +
{destination.teams[0].name}
+ {/if}
@@ -1134,82 +1085,85 @@

Nothing here.

{/if}
- {#if filtered.otherDestinations.length > 0} - {#if destinations.length > 0} -