Add bage for advanced options

This commit is contained in:
Guilhem
2024-10-01 17:38:25 +02:00
parent f07b630f82
commit cf73f67079
5 changed files with 50 additions and 22 deletions
@@ -13,7 +13,7 @@
containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
>
<svelte:fragment slot="button">
<Button color="dark" size="xs" nonCaptureEvent={true}>
<Button color="nord" size="xs" nonCaptureEvent={true}>
<div class="flex flex-row gap-1 items-center"
><Pen size={14} /> Custom Tags&nbsp;<Tooltip light
>Tags are assigned to scripts and flows. Workers only accept jobs that correspond to their
+5 -1
View File
@@ -16,7 +16,7 @@
</script>
<div class="w-full">
<div class="flex flex-row justify-between items-center mb-2">
<div class="flex flex-row justify-between items-start mb-2">
<h2
class={twMerge(
subsection ? 'font-normal' : 'font-semibold',
@@ -50,7 +50,11 @@
{/if}
</h2>
<slot name="action" />
{#if collapsable && collapsed}
<slot name="badge" />
{/if}
</div>
<div class={collapsable && collapsed ? `hidden ${$$props.class}` : `${$$props.class}`}>
<slot />
</div>
+4 -2
View File
@@ -14,7 +14,7 @@
export let disabled = false
export let textClass = ''
export let textStyle = ''
export let color: 'blue' | 'red' = 'blue'
export let color: 'blue' | 'red' | 'nord' = 'blue'
export let id = (Math.random() + 1).toString(36).substring(10)
export let lightMode: boolean = false
@@ -71,7 +71,9 @@
"transition-all bg-surface-selected rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:bg-surface after:border-white after:border after:rounded-full after:transition-all ",
color == 'red'
? 'peer-checked:bg-red-600'
: 'peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500',
: color == 'blue'
? 'peer-checked:bg-blue-600 dark:peer-checked:bg-blue-500'
: 'peer-checked:bg-nord-300 dark:peer-checked:bg-frost-500',
lightToogle
? 'w-9 h-5 after:top-0.5 after:left-[2px] after:h-4 after:w-4'
: size === 'sm'
@@ -11,6 +11,8 @@
export let textDisabled = false
let toggleState = errorHandlerMuted
export let color: 'nord' | 'red' | 'blue' = 'nord'
async function toggleErrorHandler(): Promise<void> {
toggleState = !toggleState
if ($workspaceStore !== undefined) {
@@ -54,6 +56,7 @@
</script>
<Toggle
{color}
lightToogle={true}
size="sm"
checked={toggleState}
@@ -21,6 +21,7 @@
import ErrorHandlerToggleButtonV2 from '$lib/components/details/ErrorHandlerToggleButtonV2.svelte'
import WorkerTagPicker from '$lib/components/WorkerTagPicker.svelte'
import MetadataGen from '$lib/components/copilot/MetadataGen.svelte'
import Badge from '$lib/components/Badge.svelte'
export let noEditor: boolean
@@ -43,18 +44,26 @@
$: displayWorkerTagPicker = Boolean($flowStore.tag)
$: numberOfAdvancedOptionsOn = [
$flowStore.value.priority !== undefined && $flowStore.value.priority > 0,
Boolean($flowStore.ws_error_handler_muted),
Boolean($flowStore.visible_to_runner_only),
Boolean($flowStore.value.same_worker),
Boolean($flowStore.value.cache_ttl),
Boolean($flowStore.value.skip_expr),
Boolean($flowStore.value.early_return),
Boolean($flowStore.dedicated_worker),
Boolean($flowStore.value.concurrent_limit),
displayWorkerTagPicker
].filter(Boolean).length
$: activeAdvancedOptions = [
{
name: 'High Priority',
active: $flowStore.value.priority !== undefined && $flowStore.value.priority > 0
},
{ name: 'Error Handler Muted', active: Boolean($flowStore.ws_error_handler_muted) },
{ name: 'Invisible to Others', active: Boolean($flowStore.visible_to_runner_only) },
{ name: 'Shared Directory', active: Boolean($flowStore.value.same_worker) },
{ name: 'Cache Results', active: Boolean($flowStore.value.cache_ttl) },
{ name: 'Early Stop', active: Boolean($flowStore.value.skip_expr) },
{ name: 'Early Return', active: Boolean($flowStore.value.early_return) },
{ name: 'Dedicated Worker', active: Boolean($flowStore.dedicated_worker) },
{ name: 'Concurrent Limit', active: Boolean($flowStore.value.concurrent_limit) },
{ name: 'Worker Tag', active: displayWorkerTagPicker }
]
$: numberOfAdvancedOptionsOn = activeAdvancedOptions.filter((option) => option.active).length
$: activeAdvancedOptionNames = activeAdvancedOptions
.filter((option) => option.active)
.map((option) => option.name)
beforeUpdate(() => {
if (scrollableDiv) {
@@ -71,7 +80,7 @@
})
</script>
<div class="h-full overflow-auto flex flex-col" bind:this={scrollableDiv}>
<div class="h-full overflow-y-auto flex flex-col" bind:this={scrollableDiv}>
<FlowCard {noEditor} title="Settings">
<div class="grow min-h-0 p-4 h-full flex flex-col gap-8">
<!-- Metadata Section -->
@@ -233,18 +242,19 @@
>
<!-- Metadata Advanced Section -->
<!-- TODO: Add EE-only badge when we have it -->
<svelte:fragment slot="header">
<svelte:fragment slot="badge">
{#if numberOfAdvancedOptionsOn > 0}
<div
class="bg-blue-600 dark:bg-blue-500 w-4 h-4 rounded text-white flex items-center justify-center text-2xs"
>{numberOfAdvancedOptionsOn}
<div class="flex grow min-w-0 w-full flex-wrap gap-1">
{#each activeAdvancedOptionNames as optionName}
<Badge twBgColor="bg-nord-300" twTextColor="text-white">{optionName}</Badge>
{/each}
</div>
{/if}
</svelte:fragment>
<!-- Priority Section -->
<Toggle
color="nord"
lightToogle={true}
disabled={!$enterpriseLicense || isCloudHosted()}
checked={$flowStore.value.priority !== undefined && $flowStore.value.priority > 0}
@@ -284,6 +294,7 @@
<!-- Visibility Section -->
<Toggle
color="nord"
lightToogle={true}
size="sm"
checked={Boolean($flowStore.visible_to_runner_only)}
@@ -306,6 +317,7 @@
<!-- Error Handler Section -->
<div class="flex flex-row items-center py-1">
<ErrorHandlerToggleButtonV2
color="nord"
kind="flow"
scriptOrFlowPath={$pathStore}
bind:errorHandlerMuted={$flowStore.ws_error_handler_muted}
@@ -316,6 +328,7 @@
<!-- Shared Directory Section -->
{#if customUi?.settingsTabs?.sharedDiretory != false}
<Toggle
color="nord"
lightToogle={true}
bind:checked={$flowStore.value.same_worker}
options={{
@@ -334,6 +347,7 @@
{#if customUi?.settingsTabs?.cache != false}
<div>
<Toggle
color="nord"
lightToogle={true}
size="sm"
checked={Boolean($flowStore.value.cache_ttl)}
@@ -370,6 +384,7 @@
<div>
<!-- documentationLink="https://www.windmill.dev/docs/flows/early_stop -->
<Toggle
color="nord"
lightToogle={true}
checked={Boolean($flowStore.value.skip_expr)}
on:change={() => {
@@ -420,6 +435,7 @@
{#if customUi?.settingsTabs?.earlyReturn != false}
<div>
<Toggle
color="nord"
lightToogle={true}
checked={Boolean($flowStore.value.early_return)}
on:change={() => {
@@ -463,6 +479,7 @@
{#if customUi?.settingsTabs?.workerGroup != false}
<div>
<Toggle
color="nord"
lightToogle={true}
disabled={!$enterpriseLicense}
size="sm"
@@ -486,6 +503,7 @@
<div>
<Toggle
color="nord"
lightToogle={true}
disabled={!$enterpriseLicense || isCloudHosted()}
size="sm"
@@ -525,6 +543,7 @@
{#if customUi?.settingsTabs?.concurrency != false}
<div>
<Toggle
color="nord"
lightToogle={true}
disabled={!$enterpriseLicense}
size="sm"