mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-21 00:02:30 +00:00
* use melt menu in sidebar * stop keyboard navigation for disabled items * use melt menu for FavoriteMenu and WorkspaceMenu * fix popover placement for menuButton * use melt menu for operator menu * fix notification * fix operator menu * Use melt menu in FlowJobsMenu * use melt menu for AppMenu * clean code * clean code * add use clickOutside option to Menu * use pointerdown_outside * use pointerdown_outside # Conflicts: # frontend/src/lib/components/meltComponents/Menu.svelte * use pointerdown in menus * add max-h to app dropdown menu * keep more open in operator menu * add a MenuItem component * clean * nit * nit * clean code * put conditionalMelt as utility function * remove unused Portal * Add debounce effect in operator menu * fix component jumping due to z-index * format pages * migrate dropdown to melt * migrate toggle to melt * migrate popup to melt popover * fix missing toggle item * feat: remove `pip` fallback option for python and ansible (#5186) * refactor!: Remove `pip` fallback option for python and ansible BREAKING CHANGE: pip was deprecated since 1.425.0 (2024-11-15) * fix errors in main.rs * fix tests * remove nsjail for pip * fix imports * fix compilation error * reinforce melt types * fix racing condition issue in closing operator menu * nit * fix id conflix with melt element * nit * clean code * use melt dropdown instead of menubar * prevent modal from closing on click outside button in menu * Apply automatic changes * fix nit * nit * close dropdown when opening a new one * replace MenuV2 with melt Menu (1/4) (#5214) * use melt menu in sidebar * stop keyboard navigation for disabled items * use melt menu for FavoriteMenu and WorkspaceMenu * fix popover placement for menuButton * use melt menu for operator menu * fix notification * fix operator menu * Use melt menu in FlowJobsMenu * use melt menu for AppMenu * clean code * clean code * add use clickOutside option to Menu * use pointerdown_outside * use pointerdown_outside # Conflicts: # frontend/src/lib/components/meltComponents/Menu.svelte * use pointerdown in menus * add max-h to app dropdown menu * keep more open in operator menu * add a MenuItem component * clean * nit * nit * clean code * put conditionalMelt as utility function * remove unused Portal * Add debounce effect in operator menu * fix component jumping due to z-index * feat: remove `pip` fallback option for python and ansible (#5186) * refactor!: Remove `pip` fallback option for python and ansible BREAKING CHANGE: pip was deprecated since 1.425.0 (2024-11-15) * fix errors in main.rs * fix tests * remove nsjail for pip * fix imports * fix compilation error * reinforce melt types * fix racing condition issue in closing operator menu * nit * fix id conflix with melt element * nit * prevent modal from closing on click outside button in menu --------- Co-authored-by: pyranota <92104930+pyranota@users.noreply.github.com> Co-authored-by: Ruben Fiszel <ruben@windmill.dev> # Conflicts: # frontend/src/lib/components/meltComponents/MenuItem.svelte # frontend/src/lib/utils.ts * clean * fix z index and render * fix initialize of dropdownmenu after melt migration * feat: add support for | None and Optional in python (#5361) * feat: add support for | None and Optional in python * update python parser package * add local rooting for MenuItem * fix z index * clean * nit * nit * clean code * nit * nit * clean code * reinforce melt types * wip * reiforce instance select types for toggleButton * nit * fix double event * fix selectedTable toggle * fix sqs toggleButton * fix potential issue with binding in toggleGroup * Update frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --------- Co-authored-by: pyranota <92104930+pyranota@users.noreply.github.com> Co-authored-by: Ruben Fiszel <ruben@windmill.dev> Co-authored-by: HugoCasa <hugo@casademont.ch> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
121 lines
3.4 KiB
Svelte
121 lines
3.4 KiB
Svelte
<script lang="ts">
|
|
import { dbSchemas, workspaceStore, type DBSchema } from '$lib/stores'
|
|
import Button from './common/button/Button.svelte'
|
|
import Drawer from './common/drawer/Drawer.svelte'
|
|
import DrawerContent from './common/drawer/DrawerContent.svelte'
|
|
import ObjectViewer from './propertyPicker/ObjectViewer.svelte'
|
|
import { sendUserToast } from '$lib/utils'
|
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte'
|
|
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte'
|
|
import { Loader2, RefreshCcw } from 'lucide-svelte'
|
|
import {
|
|
formatGraphqlSchema,
|
|
formatSchema,
|
|
getDbSchemas,
|
|
scripts
|
|
} from './apps/components/display/dbtable/utils'
|
|
import Alert from './common/alert/Alert.svelte'
|
|
|
|
export let resourceType: string | undefined
|
|
export let resourcePath: string | undefined = undefined
|
|
let dbSchema: DBSchema | undefined = undefined
|
|
let loading = false
|
|
|
|
let drawer: Drawer | undefined
|
|
|
|
async function getSchema() {
|
|
if (!resourceType || !resourcePath) return
|
|
if ($dbSchemas[resourcePath]) return
|
|
|
|
loading = true
|
|
|
|
try {
|
|
await getDbSchemas(
|
|
resourceType,
|
|
resourcePath,
|
|
$workspaceStore,
|
|
$dbSchemas,
|
|
(message: string) => {
|
|
if (drawer?.isOpen()) {
|
|
sendUserToast(message, true)
|
|
}
|
|
}
|
|
)
|
|
$dbSchemas = $dbSchemas
|
|
} catch (e) {
|
|
console.error(e)
|
|
}
|
|
loading = false
|
|
}
|
|
|
|
$: resourcePath && Object.keys(scripts).includes(resourceType || '') && getSchema()
|
|
|
|
$: dbSchema = resourcePath && resourcePath in $dbSchemas ? $dbSchemas[resourcePath] : undefined
|
|
|
|
$: shouldDisplayError = resourcePath && resourcePath in $dbSchemas && !$dbSchemas[resourcePath]
|
|
|
|
function handleSelected({ detail }: CustomEvent<string>) {
|
|
if (dbSchema && dbSchema.lang !== 'graphql') {
|
|
dbSchema.publicOnly = detail === 'dbo'
|
|
}
|
|
}
|
|
</script>
|
|
|
|
{#if loading}
|
|
<Loader2 size={14} class="animate-spin " />
|
|
{/if}
|
|
|
|
{#if dbSchema}
|
|
<Button
|
|
size="xs"
|
|
variant="border"
|
|
color="blue"
|
|
spacingSize="xs2"
|
|
btnClasses="mt-1"
|
|
on:click={drawer?.openDrawer}
|
|
>
|
|
Explore schema
|
|
</Button>
|
|
<Drawer bind:this={drawer}>
|
|
<DrawerContent title="Schema Explorer" on:close={drawer.closeDrawer}>
|
|
<svelte:fragment slot="actions">
|
|
<Button
|
|
on:click={getSchema}
|
|
startIcon={{
|
|
icon: RefreshCcw
|
|
}}
|
|
{loading}
|
|
size="xs"
|
|
color="light"
|
|
>
|
|
Refresh
|
|
</Button>
|
|
</svelte:fragment>
|
|
{#if dbSchema.lang !== 'graphql' && (dbSchema.schema?.public || dbSchema.schema?.PUBLIC || dbSchema.schema?.dbo)}
|
|
<ToggleButtonGroup
|
|
class="mb-4"
|
|
selected={dbSchema.publicOnly ? 'dbo' : 'all'}
|
|
on:selected={handleSelected}
|
|
let:item
|
|
>
|
|
<ToggleButton value="dbo" label={dbSchema.schema.dbo ? 'Dbo' : 'Public'} {item} />
|
|
<ToggleButton value="all" label="All" {item} />
|
|
</ToggleButtonGroup>
|
|
{/if}
|
|
{#if dbSchema.lang === 'graphql'}
|
|
{#await import('$lib/components/GraphqlSchemaViewer.svelte')}
|
|
<Loader2 class="animate-spin" />
|
|
{:then Module}
|
|
<Module.default code={formatGraphqlSchema(dbSchema.schema)} class="h-full" />
|
|
{/await}
|
|
{:else}
|
|
<ObjectViewer json={formatSchema(dbSchema)} pureViewer collapseLevel={1} />
|
|
{/if}
|
|
</DrawerContent>
|
|
</Drawer>
|
|
{:else if shouldDisplayError}
|
|
<Alert type="error" size="xs" title="Schema not available" class="mt-2">
|
|
Schema could not be loaded. Please check the permissions of the resource.
|
|
</Alert>
|
|
{/if}
|