make app public page not require login at all

This commit is contained in:
Ruben Fiszel
2023-01-02 13:02:45 +01:00
parent fb1de7dfa7
commit 1e10057a42
13 changed files with 56 additions and 49 deletions

View File

@@ -11,8 +11,8 @@ use serde::Deserialize;
use crate::error::{Error, Result};
pub const MAX_PER_PAGE: usize = 1000;
pub const DEFAULT_PER_PAGE: usize = 100;
pub const MAX_PER_PAGE: usize = 10000;
pub const DEFAULT_PER_PAGE: usize = 1000;
#[derive(Deserialize)]
pub struct Pagination {

View File

@@ -1,7 +1,5 @@
<script lang="ts">
import { faSpinner } from '@fortawesome/free-solid-svg-icons'
import { Icon } from 'svelte-awesome'
import { fade } from 'svelte/transition'
import { Loader2 } from 'lucide-svelte'
import { Drawer, DrawerContent } from './common'
export let content: string | undefined
@@ -52,10 +50,9 @@
{/if}
<pre class="whitespace-pre-wrap break-words bg-gray-50 text-xs w-full p-2"
>{#if content}<span>{content}</span>{:else if isLoading}<Icon
data={faSpinner}
class="animate-spin"
/>{:else}<span class="text-gray-600">No logs are available yet</span>{/if}</pre
>{#if content}<span>{content}</span>{:else if isLoading}
<Loader2 class="animate-spin" />
{:else}<span class="text-gray-600">No logs are available yet</span>{/if}</pre
>
</div>
</div>

View File

@@ -8,11 +8,11 @@
import LogViewer from './LogViewer.svelte'
import DisplayResult from './DisplayResult.svelte'
import Button from './common/button/Button.svelte'
import { faSpinner } from '@fortawesome/free-solid-svg-icons'
import { flowStateStore } from './flows/flowState'
import { flowStore } from './flows/flowStore'
import { workspaceStore } from '$lib/stores'
import { Icon } from 'svelte-awesome'
import { Loader2 } from 'lucide-svelte'
export let mod: FlowModule
export let schema: Schema
@@ -77,16 +77,8 @@
bind:args={stepArgs}
/>
{#if testIsLoading}
<Button
on:click={testJobLoader?.cancelJob}
btnClasses="w-full mt-4"
color="red"
size="sm"
startIcon={{
icon: faSpinner,
classes: 'animate-spin'
}}
>
<Button on:click={testJobLoader?.cancelJob} btnClasses="w-full mt-4" color="red" size="sm">
<Loader2 class="animate-spin mr-1" />
Cancel
</Button>
{/if}
@@ -104,7 +96,7 @@
{:else}
<div class="p-2">
{#if testIsLoading}
<Icon data={faSpinner} class="animate-spin" />
<Loader2 class="animate-spin" />
{:else}
Test to see the result here
{/if}

View File

@@ -141,7 +141,7 @@
workspace: workspace!,
id,
running: job.running,
logOffset: job.logs?.length ?? 0
logOffset: job.logs?.length ? job.logs?.length + 1 : 0
})
if (previewJobUpdates.new_logs) {

View File

@@ -1,6 +1,6 @@
<script lang="ts">
import { Button, type ButtonType } from '$lib/components/common'
import { faSpinner } from '@fortawesome/free-solid-svg-icons'
import { Loader2 } from 'lucide-svelte'
import { getContext } from 'svelte'
import type { AppInput } from '../../inputType'
import type { Output } from '../../rx'
@@ -83,16 +83,12 @@
}}
{size}
{color}
endIcon={loading
? {
icon: faSpinner,
classes: 'animate-spin w-4'
}
: undefined}
>
{labelValue}
{#if !loading}
<span class="w-5" />
{:else}
<Loader2 class="animate-spin" />
{/if}
</Button>
</AlignWrapper>

View File

@@ -30,7 +30,7 @@
'dateinputcomponent'
],
'2:12-4:12': ['barchartcomponent', 'piechartcomponent', 'formcomponent', 'displaycomponent'],
'3:6-6:8': ['tablecomponent']
'3:10-6:12': ['tablecomponent']
}
// Finds the key that is associated with the component type and extracts the dimensions from it
const [dimension] = Object.entries(dimensions).find(([_, value]) =>

View File

@@ -4,7 +4,7 @@
import Icon from 'svelte-awesome'
import { ButtonType } from './model'
import { goto } from '$app/navigation'
import { faSpinner } from '@fortawesome/free-solid-svg-icons'
import { Loader2 } from 'lucide-svelte'
export let size: ButtonType.Size = 'md'
export let spacingSize: ButtonType.Size = size
@@ -118,11 +118,7 @@
type="submit"
>
{#if loading}
<Icon
data={faSpinner}
class={`animate-spin ${startIconClass}`}
scale={ButtonType.IconScale[size]}
/>
<Loader2 class="animate-spin mr-1" size={14} />
{:else if startIcon}
<Icon data={startIcon.icon} class={startIconClass} scale={ButtonType.IconScale[size]} />
{/if}

View File

@@ -145,7 +145,7 @@
</div>
<h3 class="mb-2 mt-6"
>Use pre-made <span class="text-blue-500">{kind == 'script' ? 'common' : kind}</span> script</h3
>Use pre-made <span class="text-blue-500">{kind == 'script' ? 'action' : kind}</span> script</h3
>
{#if pick_existing == 'hub'}
<PickHubScript bind:filter {kind} on:pick>

View File

@@ -18,7 +18,7 @@
import LogViewer from '../LogViewer.svelte'
import { Pane } from 'svelte-splitpanes'
import SplitPanesWrapper from '../splitPanes/SplitPanesWrapper.svelte'
import { fade } from 'svelte/transition'
import { Loader, Loader2 } from 'lucide-svelte'
export let path: string | undefined
export let lang: Preview.language
@@ -78,21 +78,25 @@
-->
{#if selectedTab === 'logs'}
<SplitPanesWrapper horizontal>
<Pane class="!duration-[0ms] relative">
<Pane class="relative">
<LogViewer
duration={previewJob?.['duration_ms']}
content={previewJob?.logs}
isLoading={previewIsLoading}
/>
</Pane>
<Pane class="!duration-[0ms]">
<Pane>
{#if previewJob != undefined && 'result' in previewJob && previewJob.result != undefined}
<pre class="overflow-x-auto break-words relative h-full p-2"
><DisplayResult result={previewJob.result} />
</pre>
{:else}
<div class="text-sm text-gray-600 p-2">
{previewIsLoading ? '' : 'Test to see the result here'}
{#if previewIsLoading}
<Loader2 class="animate-spin" />
{:else}
Test to see the result here'
{/if}
</div>
{/if}
</Pane>

View File

@@ -6,9 +6,9 @@
import { OauthService } from '$lib/gen'
import { oauthStore } from '$lib/stores'
import Icon from 'svelte-awesome'
import { faSpinner } from '@fortawesome/free-solid-svg-icons'
import CenteredPage from '$lib/components/CenteredPage.svelte'
import PageHeader from '$lib/components/PageHeader.svelte'
import { Loader2 } from 'lucide-svelte'
let client_name = $page.params.client_name
let error = $page.url.searchParams.get('error')
@@ -41,6 +41,6 @@
<CenteredPage>
<PageHeader title="Connection to {client_name} in progress" />
<div class="mx-auto w-0">
<Icon class="animate-spin" data={faSpinner} scale={2.0} />
<Loader2 class="animate-spin" />
</div>
</CenteredPage>

View File

@@ -49,6 +49,7 @@
import { goto } from '$app/navigation'
import Popover from '$lib/components/Popover.svelte'
import ScheduleEditor from '$lib/components/ScheduleEditor.svelte'
import { Loader2 } from 'lucide-svelte'
let userSettings: UserSettings
let script: Script | undefined
@@ -232,10 +233,8 @@
</Badge>
{/if}
{#if deploymentInProgress}
<Badge
color="yellow"
icon={{ data: faSpinner, position: 'right', class: 'animate-spin' }}
>
<Badge color="yellow">
<Loader2 class="animate-spin mr-2" />
Deployment in progress
</Badge>
{/if}

View File

@@ -5,10 +5,12 @@
import type { EditorBreakpoint } from '$lib/components/apps/types'
import { Skeleton } from '$lib/components/common'
import { AppService, AppWithLastVersion } from '$lib/gen'
import { WindmillIcon } from '$lib/components/icons'
import { AppService, AppWithLastVersion, GlobalUserInfo, UserService } from '$lib/gen'
import { writable } from 'svelte/store'
let app: AppWithLastVersion | undefined = undefined
let user: GlobalUserInfo | undefined = undefined
async function loadApp() {
app = await AppService.getPublicAppBySecret({
@@ -17,14 +19,35 @@
})
}
async function loadUser() {
try {
user = await UserService.globalWhoami()
} catch (e) {}
}
if (browser) {
loadApp()
loadUser()
}
const breakpoint = writable<EditorBreakpoint>('lg')
</script>
<div class="z-50 text-xs fixed bottom-1 right-2 ">
<a href="https://windmill.dev" class="whitespace-nowrap text-gray-500 inline-flex items-center"
>Powered by &nbsp;<WindmillIcon />&nbsp;Windmill</a
>
</div>
{#if app}
<div class="z-50 text-xs text-gray-500 fixed top-1 left-2">
<div>
{#if user}
Logged in as {user.email}
{:else}
Not logged in
{/if}
</div>
<a class="text-blue-400" href="/">Go to app</a>
</div>
<div class="border rounded-md p-2 w-full">
<AppPreview
workspace={$page.params.workspace}
@@ -36,5 +59,5 @@
/>
</div>
{:else}
<Skeleton layout={[10]} />
<Skeleton layout={[[4], 0.5, [50]]} />
{/if}