Workspace settings and links (#3267)

* Workspace settings and links

* Encryption not EE

* Upgrade button

* Customer portal to dark
This commit is contained in:
Henri Courdent
2024-02-22 14:45:12 +01:00
committed by GitHub
parent 34ffde0652
commit 2102af6d48
3 changed files with 111 additions and 59 deletions
@@ -99,18 +99,20 @@
}
</script>
<div class="my-8" />
<div class="flex flex-col gap-1">
<div class=" text-primary text-md font-semibold"> Plans </div>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold">Plans</div>
</div>
</div>
{#if customer_id}
<div class="mt-2 mb-2">
<Button
endIcon={{ icon: ExternalLink }}
color="dark"
href="/api/w/{$workspaceStore}/workspaces/billing_portal">Customer Portal</Button
>
<p class="text-xs text-tertiary mt-1">
See invoices, change billing information or subscription details
See invoices, change billing information or subscription details.
</p>
</div>
{/if}
@@ -91,7 +91,15 @@
bind:filteredItems={filteredUsers}
f={(x) => x.email + ' ' + x.name + ' ' + x.company}
/>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold"> Members & Invites </div>
<div class="text-tertiary text-xs">
Add members to your workspace and manage their roles. You can also invite or auto-invites users to join your workspace.
<a href="https://www.windmill.dev/docs/core_concepts/roles_and_permissions" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
<div class="flex flex-row justify-between items-center">
<PageHeader
title="Members ({filteredUsers?.length ?? users?.length ?? ''})"
@@ -657,12 +657,15 @@
{#if tab == 'users'}
<WorkspaceUserSettings />
{:else if tab == 'deploy_to'}
<div class="my-2 pt-4"
><Alert type="info" title="Link this workspace to another Staging/Prod workspace"
>Linking this workspace to another staging/prod workspace unlock the Web-based flow to
deploy to another workspace.</Alert
></div
>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold"> Link this workspace to another Staging / Prod workspace </div>
<div class="text-tertiary text-xs">
Connecting this workspace with another staging/production workspace enables web-based deployment to that workspace.
<a href="https://www.windmill.dev/docs/core_concepts/staging_prod" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
{#if $enterpriseLicense}
<DeployToSetting bind:workspaceToDeployTo />
{:else}
@@ -677,10 +680,11 @@
{:else if tab == 'slack'}
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-md font-semibold"> Connect workspace to Slack </div>
<div class=" text-primary text-lg font-semibold"> Connect workspace to Slack </div>
<div class="text-tertiary text-xs">
Connect your Windmill workspace to your Slack workspace to trigger a script or a flow
with a '/windmill' command or to configure Slack error handlers.
<a href="https://www.windmill.dev/docs/integrations/slack" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
@@ -767,6 +771,11 @@
</div>
</div>
{:else if tab == 'export_delete'}
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold">Export or Delete workspace</div>
</div>
</div>
<PageHeader title="Export workspace" primary={false} />
<div class="flex justify-start">
<Button
@@ -825,22 +834,23 @@
{/if}
</div>
{:else if tab == 'webhook'}
<PageHeader title="Webhook on changes" primary={false} />
<div class="mt-2"
><Alert type="info" title="Send events to an external service"
>Connect your windmill workspace to an external service to sync or get notified about any
changes.</Alert
></div
>
<h3 class="mt-5 text-secondary"
>URL to send requests to<Tooltip>
This URL will be POSTed to with a JSON body depending on the type of event. The type is
indicated by the <pre>type</pre> field. The other fields are dependent on the type.
</Tooltip>
</h3>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold"> Workspace Webhook</div>
<div class="text-tertiary text-xs">
Connect your Windmill workspace to an external service to sync or get notified about any change.
<a href="https://www.windmill.dev/docs/core_concepts/webhooks#workspace-webhook" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
<div class="flex flex-col gap-4 my-4">
<div class="flex flex-col gap-1">
<div class=" text-primary text-base font-semibold"> URL to send requests to</div>
<div class="text-tertiary text-xs">
This URL will be POSTed to with a JSON body depending on the type of event. The type is indicated by the type field. The other fields are dependent on the type.
</div>
</div>
</div>
<div class="flex gap-2">
<input class="justify-start" type="text" bind:value={webhook} />
<Button color="blue" btnClasses="justify-end" on:click={editWebhook}>Set Webhook</Button>
@@ -853,9 +863,20 @@
connection or a custom script to send notifications anytime any job would fail.
</Alert>
{/if}
<PageHeader title="Script to run as error handler" primary={false} />
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold"> Workspace Error Handler</div>
<div class="text-tertiary text-xs">
Define a script or flow to be executed automatically in case of error in the workspace.
<a href="https://www.windmill.dev/docs/core_concepts/error_handling#workspace-error-handler" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
<div class="flex flex-col gap-4 my-4">
<div class="flex flex-col gap-1">
<div class=" text-primary text-base font-semibold"> Script or flow to run as error handler</div>
</div>
</div>
<ErrorOrRecoveryHandler
isEditable={true}
errorOrRecovery="error"
@@ -912,12 +933,17 @@
</Button>
</div>
{:else if tab == 'openai'}
<PageHeader title="Windmill AI" primary={false} />
<div class="mt-2">
<Alert type="info" title="Select an OpenAI resource to unlock Windmill AI features!">
Windmill AI uses OpenAI's GPT-3.5-turbo for code completion and GPT-4 Turbo for all other
AI features.
</Alert>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold"> Windmill AI</div>
<div class="text-tertiary text-xs">
Select an OpenAI resource to unlock Windmill AI features.
</div>
<div class="text-tertiary text-xs">
Windmill AI uses OpenAI's GPT-3.5-turbo for code completion and GPT-4 Turbo for all other AI features.
<a href="https://www.windmill.dev/docs/core_concepts/ai_generation" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
<div class="mt-5 flex gap-1">
{#key [openaiResourceInitialPath, usingOpenaiClientCredentialsOauth]}
@@ -944,7 +970,15 @@
/>
</div>
{:else if tab == 'windmill_lfs'}
<PageHeader title="S3 Storage" primary={false} />
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold">S3 Storage</div>
<div class="text-tertiary text-xs">
Connect your Windmill workspace to your S3 bucket or your Azure Blob storage.
<a href="https://www.windmill.dev/docs/core_concepts/persistent_storage#connect-your-windmill-workspace-to-your-s3-bucket-or-your-azure-blob-storage" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
{#if !$enterpriseLicense}
<Alert type="info" title="S3 storage is limited to 20 files in Windmill CE">
Windmill S3 bucket browser will not work for buckets containing more than 20 files and
@@ -1004,18 +1038,16 @@
</div>
{/if}
{:else if tab == 'git_sync'}
<PageHeader
title="Git sync"
primary={true}
tooltip="Connect the Windmill workspace to a Git repository to automatically commit and push scripts, flows and apps to the repository on each deploy."
documentationLink="https://www.windmill.dev/docs/advanced/git_sync"
/>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold"> Git Sync </div>
<div class="text-tertiary text-xs">
Connect the Windmill workspace to a Git repository to automatically commit and push
scripts, flows and apps to the repository on each deploy.
scripts, flows, and apps to the repository on each deploy.
<a href="https://www.windmill.dev/docs/advanced/git_sync" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
{#if !$enterpriseLicense}
<div class="mb-2" />
@@ -1392,11 +1424,18 @@ git push</code
<Loader2 class="animate-spin mt-4" size={20} />
{/if}
{:else if tab == 'default_app'}
<PageHeader
title="Workspace default app"
tooltip="Users who are operators in this workspace will be redirected to this app automatically when login into this workspace."
primary={false}
/>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold">Workspace default app</div>
<div class="text-tertiary text-xs">
If configured, users who are operators in this workspace will be redirected to this app automatically when logging into this workspace.
</div>
<div class="text-tertiary text-xs">
Make sure the default app is shared with all the operators of this workspace before turning this feature on.
<a href="https://www.windmill.dev/docs/apps/default_app" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
{#if !$enterpriseLicense}
<Alert type="info" title="Windmill EE only feature">
Default app can only be set on Windmill Enterprise Edition.
@@ -1418,15 +1457,18 @@ git push</code
{/key}
</div>
{:else if tab == 'encryption'}
<PageHeader title="Workspace secret encryption" primary={false} />
<Alert type="info" title="Windmill EE only feature">
When updating the encryption key of a workspace, all secrets will be re-encrypted with the
new key and the previous key will be replaced by the new one.
<br />
If you're manually updating the key to match another workspace key from another Windmill instance,
make sure not to use the 'SECRET_SALT' environment variable or, if you're using it, make sure
it the salt matches across both instances.
</Alert>
<div class="flex flex-col gap-4 my-8">
<div class="flex flex-col gap-1">
<div class=" text-primary text-lg font-semibold">Workspace secret encryption</div>
<div class="text-tertiary text-xs">
When updating the encryption key of a workspace, all secrets will be re-encrypted with the new key and the previous key will be replaced by the new one.
</div>
<div class="text-tertiary text-xs">
If you're manually updating the key to match another workspace key from another Windmill instance, make sure not to use the 'SECRET_SALT' environment variable or, if you're using it, make sure it the salt matches across both instances.
<a href="https://www.windmill.dev/docs/core_concepts/workspace_secret_encryption" target="_blank" class="text-blue-500">Learn more</a>.
</div>
</div>
</div>
<div class="mt-5 flex gap-1 mb-10">
<Button
color="blue"