mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-10 08:07:03 +00:00
* feat: give dbt its own editor with an explicitly refreshed model graph Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * chore: bump ee ref for the agent-worker dbt editor graph Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: scope editor graph retention by principal, carry parse context, honor nlang Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * chore: bump ee ref Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: keep the dbt editor's model graph and log panel mounted across tabs Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: keep the dbt_edge to dbt_node joins on an index-usable equality Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: poll a parse until the job ends, resolve the project key, correct the docs Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: surface a slow parse's job, bound poll failures, drop banned bindable defaults Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: hide the dbt Generated UI content, not only its tab Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: honor disabled Triggers in the dbt tab fallback, record permissioned_as Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat: one dbt pane with the run drawn on the models, and a full-height script graph Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat: move the dbt build arguments behind the Build button Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: trim the dbt editor toolbar and stop the graph asserting a cause it lacks Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat: mark dbt as alpha in the language picker and announce it once Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * chore: trim the dbt alpha notice Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat: give a selected dbt model the whole detail section, with a close that deselects Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: close the dbt detail panel by clicking away, and make its close obvious Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: cache the agent-worker dbt query, which needs the private feature to compile Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: never fall back to a settings tab the embedder disabled Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: preview dbt rows from the same project the graph was parsed from * feat: hide the script-kind selector for dbt projects * fix: pin a dbt row preview to the project its graph was parsed from * fix: pin a dbt row preview to the arguments its graph was parsed under * fix: keep dbt preview placeholders live while its vars stay pinned * fix: report a warehouse-less dbt parse's counts and flag stale preview args * fix: tell the pinned-vars case apart from a stale placeholder * chore: update ee-repo-ref to 59044635769f18f8ff5073236cfc7b5f41e917cc This commit updates the EE repository reference after PR #707 was merged in windmill-ee-private. Previous ee-repo-ref: 7e424384cdd4cef8653b55b04f17ad3f801bc50c New ee-repo-ref: 59044635769f18f8ff5073236cfc7b5f41e917cc Automated by sync-ee-ref workflow. --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
95 lines
2.9 KiB
Svelte
95 lines
2.9 KiB
Svelte
<script lang="ts">
|
|
import { WorkspaceService, type Script, type WorkspaceDefaultScripts } from '$lib/gen'
|
|
import { defaultScripts, workspaceStore } from '$lib/stores'
|
|
import { flip } from 'svelte/animate'
|
|
import Toggle from './Toggle.svelte'
|
|
import { defaultScriptLanguages } from '$lib/scripts'
|
|
import Alert from './common/alert/Alert.svelte'
|
|
|
|
interface Props {
|
|
small?: boolean
|
|
}
|
|
|
|
let { small = false }: Props = $props()
|
|
|
|
function computeLangs(defaultScripts: WorkspaceDefaultScripts | undefined): Script['language'][] {
|
|
const allLangs = Object.keys(defaultScriptLanguages) as Script['language'][]
|
|
if (!defaultScripts || defaultScripts.order == undefined) return allLangs
|
|
return defaultScripts.order
|
|
?.concat(allLangs.filter((l) => !defaultScripts.order?.includes(l)))
|
|
.filter((x) => x != 'nativets') as Script['language'][]
|
|
}
|
|
|
|
async function changePosition(i: number, up: boolean) {
|
|
let norder = langs
|
|
if (up) {
|
|
;[norder[i], norder[i - 1]] = [norder[i - 1], norder[i]]
|
|
} else {
|
|
;[norder[i], norder[i + 1]] = [norder[i + 1], norder[i]]
|
|
}
|
|
defaultScripts.update((s) => ({ ...s, order: norder }))
|
|
await WorkspaceService.editDefaultScripts({
|
|
workspace: $workspaceStore!,
|
|
requestBody: $defaultScripts
|
|
})
|
|
}
|
|
let langs = $derived(computeLangs($defaultScripts))
|
|
</script>
|
|
|
|
<Alert title="Global to workspace" type="info" class="mb-4" size={small ? 'xs' : 'sm'}>
|
|
This setting is only available to admins and will affect all users in the workspace.
|
|
</Alert>
|
|
<div class="h-full w-full flex-col {small ? 'gap-0' : 'gap-2'} flex">
|
|
{#each langs as lang, i (lang)}
|
|
<div
|
|
animate:flip={{ duration: 300 }}
|
|
class="w-full p-2 rounded {small
|
|
? ''
|
|
: 'border border-secondary'} grid grid-cols-3 items-center"
|
|
>
|
|
<p class={small ? 'text-2xs font-medium justify-center' : 'text-sm'}>{lang}</p>
|
|
<div>
|
|
{#if i > 0}
|
|
<button
|
|
onclick={() => changePosition(i ?? 0, true)}
|
|
class={small ? 'mr-2 text-secondary text-sm' : 'text-lg mr-2'}
|
|
title="Move up"
|
|
>
|
|
↑</button
|
|
>
|
|
{/if}
|
|
{#if i < langs.length - 1}
|
|
<button
|
|
onclick={() => changePosition(i ?? 0, false)}
|
|
class={small ? 'mr-2 text-secondary text-sm' : 'text-lg mr-2'}
|
|
title="Move down">↓</button
|
|
>
|
|
{/if}</div
|
|
>
|
|
<!-- <Toggle options={{ right: 'custom default' }} size="xs" /> -->
|
|
<div class="flex justify-end">
|
|
<Toggle
|
|
options={{ right: 'hide' }}
|
|
size="xs"
|
|
color="red"
|
|
checked={$defaultScripts?.hidden?.includes(lang)}
|
|
on:change={(e) => {
|
|
let toggled = e.detail
|
|
if (toggled) {
|
|
defaultScripts.update((s) => ({
|
|
...(s ?? {}),
|
|
hidden: [...(s?.hidden ?? []), lang]
|
|
}))
|
|
} else {
|
|
defaultScripts.update((s) => ({
|
|
...(s ?? {}),
|
|
hidden: (s?.hidden ?? []).filter((h) => h != lang)
|
|
}))
|
|
}
|
|
}}
|
|
/>
|
|
</div>
|
|
</div>
|
|
{/each}
|
|
</div>
|