Pools: löschbar mit Zuordnungs-Auflösung, Neuanmelden über Keychain, Key-Status
- delete_pool löst Projektzuordnungen (Terminal-Config bleibt), Dialog zeigt betroffene Projekte - oauth_login: nur bei ungenutztem Pool, löscht vorher den suffixierten Keychain-Eintrag; Warn-Dialog mit keychain_status; oauth_refresh raus - PoolInfo.hasCredentials: apikey-Dateicheck; Button Key ändern/eintragen, einheitliche Button-Breite - Starten deaktiviert ohne Pool bzw. ohne Key (Tooltip unterscheidet) - Icon-Pfad im Terminal-Dialog gekürzt mit Hover-Popover
This commit is contained in:
@@ -13,8 +13,19 @@ interface Project {
|
||||
|
||||
interface Pool {
|
||||
name: string;
|
||||
credentialFile: string;
|
||||
credentialType: string;
|
||||
hasCredentials: boolean;
|
||||
}
|
||||
|
||||
function poolReady(p: Project): boolean {
|
||||
if (!p.pool) return false;
|
||||
const pool = pools.value.find((x) => x.name === p.pool);
|
||||
return pool !== undefined && pool.hasCredentials;
|
||||
}
|
||||
|
||||
function startBlockedReason(p: Project): string | undefined {
|
||||
if (poolReady(p)) return undefined;
|
||||
return p.pool ? "projects.needsKey" : "projects.needsPool";
|
||||
}
|
||||
|
||||
const projects = ref<Project[]>([]);
|
||||
@@ -192,7 +203,13 @@ onUnmounted(() => window.clearInterval(timer));
|
||||
<button v-if="p.running" class="stop" @click="stop(p)">
|
||||
{{ $t("projects.stop") }}
|
||||
</button>
|
||||
<button v-else class="start" @click="openTerminal(p)">
|
||||
<button
|
||||
v-else
|
||||
class="start"
|
||||
:disabled="!poolReady(p)"
|
||||
:title="startBlockedReason(p) && $t(startBlockedReason(p)!)"
|
||||
@click="openTerminal(p)"
|
||||
>
|
||||
{{ $t("projects.start") }}
|
||||
</button>
|
||||
</span>
|
||||
@@ -223,9 +240,11 @@ onUnmounted(() => window.clearInterval(timer));
|
||||
<button v-if="settings.icon" @click="settings.icon = null">
|
||||
{{ $t("projects.remove") }}
|
||||
</button>
|
||||
<span class="icon-path">
|
||||
{{ settings.icon ?? $t("projects.defaultIcon") }}
|
||||
<span v-if="settings.icon" class="icon-path hover-pop">
|
||||
{{ settings.icon.split("/").pop() }}
|
||||
<span class="pop pop-path">{{ settings.icon }}</span>
|
||||
</span>
|
||||
<span v-else class="icon-path">{{ $t("projects.defaultIcon") }}</span>
|
||||
</span>
|
||||
</label>
|
||||
<p class="hint">{{ $t("projects.appliesNextStart") }}</p>
|
||||
|
||||
Reference in New Issue
Block a user