mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-07 00:01:49 +00:00
Go to settings button in Assets Dropdown on not found
This commit is contained in:
@@ -54,6 +54,7 @@
|
||||
unifiedSize={'md'}
|
||||
variant={buttonVariant}
|
||||
wrapperClasses={className}
|
||||
iconOnly
|
||||
{btnClasses}
|
||||
on:click={async () => {
|
||||
if (asset.kind === 'resource' && isDbType(_resourceMetadata?.resource_type)) {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<script lang="ts">
|
||||
import { AlertTriangle, Edit2 } from 'lucide-svelte'
|
||||
import { Button } from '../common'
|
||||
import { Tooltip } from '../meltComponents'
|
||||
import ExploreAssetButton, { assetCanBeExplored } from '../ExploreAssetButton.svelte'
|
||||
import S3FilePicker from '../S3FilePicker.svelte'
|
||||
import DbManagerDrawer from '../DBManagerDrawer.svelte'
|
||||
import ResourceEditorDrawer from '../ResourceEditorDrawer.svelte'
|
||||
import type { Asset } from '$lib/gen'
|
||||
import Popover from '../meltComponents/Popover.svelte'
|
||||
|
||||
type Props = {
|
||||
s3FilePicker?: S3FilePicker | undefined
|
||||
@@ -14,6 +14,8 @@
|
||||
resourceEditorDrawer?: ResourceEditorDrawer | undefined
|
||||
resourceDataCache: Record<string, string | undefined>
|
||||
asset: Asset
|
||||
ducklakeNotFound?: boolean
|
||||
datatableNotFound?: boolean
|
||||
onClick?: () => void
|
||||
}
|
||||
let {
|
||||
@@ -22,6 +24,8 @@
|
||||
resourceEditorDrawer,
|
||||
resourceDataCache,
|
||||
asset,
|
||||
ducklakeNotFound = false,
|
||||
datatableNotFound = false,
|
||||
onClick
|
||||
}: Props = $props()
|
||||
</script>
|
||||
@@ -30,20 +34,39 @@
|
||||
{#if asset.kind === 'resource' && resourceDataCache[asset.path] !== undefined}
|
||||
<Button
|
||||
startIcon={{ icon: Edit2 }}
|
||||
size="xs"
|
||||
variant="default"
|
||||
spacingSize="xs2"
|
||||
unifiedSize="md"
|
||||
iconOnly
|
||||
on:click={() => (resourceEditorDrawer?.initEdit(asset.path), onClick?.())}
|
||||
/>
|
||||
{/if}
|
||||
{#if asset.kind === 'resource' && resourceDataCache[asset.path] === undefined}
|
||||
<Tooltip class="mr-2.5">
|
||||
<AlertTriangle size={16} class="text-orange-600 dark:text-orange-500" />
|
||||
<svelte:fragment slot="text">Could not find resource</svelte:fragment>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
{#if assetCanBeExplored(asset, { resource_type: resourceDataCache[asset.path] })}
|
||||
{#if (asset.kind === 'resource' && resourceDataCache[asset.path] === undefined) || ducklakeNotFound || datatableNotFound}
|
||||
<Popover contentClasses="px-3 py-2">
|
||||
<svelte:fragment slot="trigger">
|
||||
<Button
|
||||
startIcon={{ icon: AlertTriangle }}
|
||||
variant="default"
|
||||
unifiedSize="md"
|
||||
btnClasses="text-red-500"
|
||||
iconOnly
|
||||
/>
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="content">
|
||||
<span class="text-sm">Not found</span>
|
||||
{#if ducklakeNotFound}
|
||||
<Button wrapperClasses="mt-1" href="/workspace_settings?tab=windmill_lfs">
|
||||
Go to Ducklake settings
|
||||
</Button>
|
||||
{:else if datatableNotFound}
|
||||
<Button wrapperClasses="mt-1" href="/workspace_settings?tab=windmill_data_tables">
|
||||
Go to Data Table settings
|
||||
</Button>
|
||||
{:else if asset.kind === 'resource' && resourceDataCache[asset.path] === undefined}
|
||||
<Button wrapperClasses="mt-1" href="/resources">Go to Resources</Button>
|
||||
{/if}
|
||||
</svelte:fragment>
|
||||
</Popover>
|
||||
{:else if assetCanBeExplored(asset, { resource_type: resourceDataCache[asset.path] })}
|
||||
<ExploreAssetButton
|
||||
{asset}
|
||||
{s3FilePicker}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
} from './lib'
|
||||
import DbManagerDrawer from '../DBManagerDrawer.svelte'
|
||||
import { untrack } from 'svelte'
|
||||
import { ResourceService } from '$lib/gen'
|
||||
import { ResourceService, WorkspaceService } from '$lib/gen'
|
||||
import { workspaceStore } from '$lib/stores'
|
||||
import Tooltip from '../meltComponents/Tooltip.svelte'
|
||||
import Tooltip2 from '../Tooltip.svelte'
|
||||
@@ -23,6 +23,7 @@
|
||||
import AssetButtons from './AssetButtons.svelte'
|
||||
import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte'
|
||||
import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte'
|
||||
import { resource } from 'runed'
|
||||
|
||||
let {
|
||||
assets,
|
||||
@@ -61,6 +62,13 @@
|
||||
}
|
||||
})
|
||||
|
||||
let datatables = resource([], () =>
|
||||
WorkspaceService.listDataTables({ workspace: $workspaceStore ?? '' })
|
||||
)
|
||||
let ducklakes = resource([], () =>
|
||||
WorkspaceService.listDucklakes({ workspace: $workspaceStore ?? '' })
|
||||
)
|
||||
|
||||
$effect(() => {
|
||||
assets
|
||||
untrack(() => {
|
||||
@@ -97,7 +105,7 @@
|
||||
class={twMerge(
|
||||
size === '3xs' ? 'h-[1.6rem]' : 'py-1.5',
|
||||
'text-xs flex items-center gap-1.5 px-2 rounded-md relative',
|
||||
'border border-tertiary/30',
|
||||
'border',
|
||||
'bg-surface hover:bg-surface-hover active:bg-surface',
|
||||
'transition-all hover:text-primary cursor-pointer'
|
||||
)}
|
||||
@@ -117,6 +125,14 @@
|
||||
<svelte:fragment slot="content">
|
||||
<ul class="divide-y rounded-md">
|
||||
{#each assets as asset}
|
||||
{@const ducklakeNotFound =
|
||||
asset.kind === 'ducklake' &&
|
||||
ducklakes.current &&
|
||||
!ducklakes.current.find((name) => name === asset.path)}
|
||||
{@const datatableNotFound =
|
||||
asset.kind === 'datatable' &&
|
||||
datatables.current &&
|
||||
!datatables.current.find((name) => name === asset.path)}
|
||||
<li
|
||||
class="text-sm px-3 h-12 flex gap-3 items-center hover:bg-surface-hover/25"
|
||||
onmouseenter={() => onHoverLi?.(asset, 'enter')}
|
||||
@@ -187,6 +203,8 @@
|
||||
{dbManagerDrawer}
|
||||
{resourceEditorDrawer}
|
||||
{s3FilePicker}
|
||||
{ducklakeNotFound}
|
||||
{datatableNotFound}
|
||||
/>
|
||||
</li>
|
||||
{/each}
|
||||
|
||||
Reference in New Issue
Block a user