diff --git a/client/src/components/Settings/OtherSettings/OtherSettings.tsx b/client/src/components/Settings/OtherSettings/OtherSettings.tsx index 31bbd52..b6c767c 100644 --- a/client/src/components/Settings/OtherSettings/OtherSettings.tsx +++ b/client/src/components/Settings/OtherSettings/OtherSettings.tsx @@ -52,8 +52,7 @@ const OtherSettings = (props: ComponentProps): JSX.Element => { bookmarksSameTab: 0, searchSameTab: 0, dockerApps: 1, - kubernetesApps: 1, - unpinStoppedApps: 1 + kubernetesApps: 1 }); // Get config @@ -72,8 +71,7 @@ const OtherSettings = (props: ComponentProps): JSX.Element => { bookmarksSameTab: searchConfig('bookmarksSameTab', 0), searchSameTab: searchConfig('searchSameTab', 0), dockerApps: searchConfig('dockerApps', 0), - kubernetesApps: searchConfig('kubernetesApps', 0), - unpinStoppedApps: searchConfig('unpinStoppedApps', 0) + kubernetesApps: searchConfig('kubernetesApps', 0) }); }, [props.loading]); @@ -285,20 +283,6 @@ const OtherSettings = (props: ComponentProps): JSX.Element => { - - - - {/* KUBERNETES SETTINGS */}

Kubernetes

diff --git a/client/src/interfaces/Forms.ts b/client/src/interfaces/Forms.ts index 177821d..9df5b61 100644 --- a/client/src/interfaces/Forms.ts +++ b/client/src/interfaces/Forms.ts @@ -20,5 +20,4 @@ export interface SettingsForm { searchSameTab: number; dockerApps: number; kubernetesApps: number; - unpinStoppedApps: number; } diff --git a/controllers/apps.js b/controllers/apps.js index b5c66be..b3f52cf 100644 --- a/controllers/apps.js +++ b/controllers/apps.js @@ -62,6 +62,7 @@ exports.getApps = asyncWrapper(async (req, res, next) => { const orderType = useOrdering ? useOrdering.value : 'createdAt'; let apps; + let dockerApps = []; if (useDockerApi && useDockerApi.value == 1) { let containers = null; @@ -78,12 +79,7 @@ exports.getApps = asyncWrapper(async (req, res, next) => { } if (containers) { - apps = await App.findAll({ - order: [[orderType, 'ASC']] - }); - containers = containers.filter(e => Object.keys(e.Labels).length !== 0); - const dockerApps = []; for (const container of containers) { const labels = container.Labels; @@ -95,24 +91,7 @@ exports.getApps = asyncWrapper(async (req, res, next) => { dockerApps.push({ name: labels['flame.name'], url: labels['flame.url'], - icon: labels['flame.icon'] || 'docker' - }); - } - } - - if (unpinStoppedApps && unpinStoppedApps.value == 1) { - for (const app of apps) { - await app.update({ isPinned: false }); - } - } - - for (const item of dockerApps) { - if (apps.some(app => app.name === item.name)) { - const app = apps.filter(e => e.name === item.name)[0]; - await app.update({ ...item, isPinned: true }); - } else { - await App.create({ - ...item, + icon: labels['flame.icon'] || 'docker', isPinned: true }); } @@ -120,6 +99,7 @@ exports.getApps = asyncWrapper(async (req, res, next) => { } } + let kubernetesApps = []; if (useKubernetesApi && useKubernetesApi.value == 1) { let ingresses = null; @@ -136,14 +116,10 @@ exports.getApps = asyncWrapper(async (req, res, next) => { } if (ingresses) { - apps = await App.findAll({ - order: [[orderType, 'ASC']] - }); - ingresses = ingresses.filter(e => Object.keys(e.metadata.annotations).length !== 0); - const kubernetesApps = []; for (const ingress of ingresses) { const annotations = ingress.metadata.annotations; + const creationTimestamp = ingress.metadata.creationTimestamp; if ( 'flame.pawelmalak/name' in annotations && @@ -153,24 +129,8 @@ exports.getApps = asyncWrapper(async (req, res, next) => { kubernetesApps.push({ name: annotations['flame.pawelmalak/name'], url: annotations['flame.pawelmalak/url'], - icon: annotations['flame.pawelmalak/icon'] || 'kubernetes' - }); - } - } - - if (unpinStoppedApps && unpinStoppedApps.value == 1) { - for (const app of apps) { - await app.update({ isPinned: false }); - } - } - - for (const item of kubernetesApps) { - if (apps.some(app => app.name === item.name)) { - const app = apps.filter(e => e.name === item.name)[0]; - await app.update({ ...item, isPinned: true }); - } else { - await App.create({ - ...item, + icon: annotations['flame.pawelmalak/icon'] || 'kubernetes', + createdAt: creationTimestamp, isPinned: true }); } @@ -179,12 +139,28 @@ exports.getApps = asyncWrapper(async (req, res, next) => { } if (orderType == 'name') { - apps = await App.findAll({ - order: [[Sequelize.fn('lower', Sequelize.col('name')), 'ASC']] + apps = await App.findAll(); + apps = apps.concat(dockerApps); + apps = apps.concat(kubernetesApps); + apps.sort((a, b) => { + if (a.name < b.name) + return -1; + if (a.name > b.name) + return 1; + return 0; }); } else { - apps = await App.findAll({ - order: [[orderType, 'ASC']] + apps = await App.findAll(); + apps = apps.concat(dockerApps); + apps = apps.concat(kubernetesApps); + apps.sort((a, b) => { + if (!a[orderType] || !b[orderType]) + return -1; + if (a[orderType] < b[orderType]) + return -1; + if (a[orderType] > b[orderType]) + return 1; + return 0; }); }