mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2024-12-26 05:19:05 +01:00
change: move searchbar and buttons into burger
This commit is contained in:
parent
4a622aae41
commit
08bfd3edff
@ -1,21 +1,17 @@
|
|||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
Icon,
|
Icon,
|
||||||
Button,
|
|
||||||
InputGroup,
|
|
||||||
Input,
|
|
||||||
Collapse,
|
Collapse,
|
||||||
Navbar,
|
Navbar,
|
||||||
NavbarBrand,
|
NavbarBrand,
|
||||||
Nav,
|
Nav,
|
||||||
NavItem,
|
|
||||||
NavbarToggler,
|
NavbarToggler,
|
||||||
Dropdown,
|
Dropdown,
|
||||||
DropdownToggle,
|
DropdownToggle,
|
||||||
DropdownMenu,
|
DropdownMenu
|
||||||
InputGroupText,
|
|
||||||
} from "sveltestrap";
|
} from "sveltestrap";
|
||||||
import NavbarLinks from "./NavbarLinks.svelte";
|
import NavbarLinks from "./NavbarLinks.svelte";
|
||||||
|
import NavbarTools from "./NavbarTools.svelte";
|
||||||
|
|
||||||
export let username; // empty string if auth. is disabled, otherwise the username as string
|
export let username; // empty string if auth. is disabled, otherwise the username as string
|
||||||
export let authlevel; // Integer
|
export let authlevel; // Integer
|
||||||
@ -104,7 +100,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:window bind:innerWidth={screenSize} />
|
<svelte:window bind:innerWidth={screenSize} />
|
||||||
<Navbar color="light" light expand="sm" fixed="top">
|
<Navbar color="light" light expand="md" fixed="top">
|
||||||
<NavbarBrand href="/">
|
<NavbarBrand href="/">
|
||||||
<img alt="ClusterCockpit Logo" src="/img/logo.png" height="25rem" />
|
<img alt="ClusterCockpit Logo" src="/img/logo.png" height="25rem" />
|
||||||
</NavbarBrand>
|
</NavbarBrand>
|
||||||
@ -112,11 +108,11 @@
|
|||||||
<Collapse
|
<Collapse
|
||||||
{isOpen}
|
{isOpen}
|
||||||
navbar
|
navbar
|
||||||
expand="sm"
|
expand="md"
|
||||||
on:update={({ detail }) => (isOpen = detail.isOpen)}
|
on:update={({ detail }) => (isOpen = detail.isOpen)}
|
||||||
>
|
>
|
||||||
<Nav navbar>
|
<Nav class="ms-auto" navbar>
|
||||||
{#if screenSize > 1500 || screenSize < 576}
|
{#if screenSize > 1500 || screenSize < 768}
|
||||||
<NavbarLinks
|
<NavbarLinks
|
||||||
{clusters}
|
{clusters}
|
||||||
links={views.filter(
|
links={views.filter(
|
||||||
@ -175,55 +171,7 @@
|
|||||||
</Dropdown>
|
</Dropdown>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
|
<NavbarTools username={username} authlevel={authlevel} roles={roles} screenSize={screenSize}/>
|
||||||
</Nav>
|
</Nav>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
<Nav>
|
|
||||||
<NavItem>
|
|
||||||
<form method="GET" action="/search">
|
|
||||||
<InputGroup>
|
|
||||||
<Input
|
|
||||||
type="text"
|
|
||||||
placeholder="Search 'type:<query>' ..."
|
|
||||||
name="searchId"
|
|
||||||
/>
|
|
||||||
<Button outline type="submit"><Icon name="search" /></Button
|
|
||||||
>
|
|
||||||
<InputGroupText
|
|
||||||
style="cursor:help;"
|
|
||||||
title={authlevel >= roles.support
|
|
||||||
? "Example: 'projectId:a100cd', Types are: jobId | jobName | projectId | arrayJobId | username | name"
|
|
||||||
: "Example: 'jobName:myjob', Types are jobId | jobName | projectId | arrayJobId "}
|
|
||||||
><Icon name="info-circle" /></InputGroupText
|
|
||||||
>
|
|
||||||
</InputGroup>
|
|
||||||
</form>
|
|
||||||
</NavItem>
|
|
||||||
{#if username}
|
|
||||||
<NavItem>
|
|
||||||
<form method="POST" action="/logout">
|
|
||||||
<Button
|
|
||||||
outline
|
|
||||||
color="success"
|
|
||||||
type="submit"
|
|
||||||
style="margin-left: 10px;"
|
|
||||||
>
|
|
||||||
{#if screenSize > 1630}
|
|
||||||
<Icon name="box-arrow-right" /> Logout {username}
|
|
||||||
{:else}
|
|
||||||
<Icon name="box-arrow-right" />
|
|
||||||
{/if}
|
|
||||||
</Button>
|
|
||||||
</form>
|
|
||||||
</NavItem>
|
|
||||||
{/if}
|
|
||||||
<NavItem>
|
|
||||||
<Button
|
|
||||||
outline
|
|
||||||
on:click={() => (window.location.href = "/config")}
|
|
||||||
style="margin-left: 10px;"
|
|
||||||
>
|
|
||||||
<Icon name="gear" />
|
|
||||||
</Button>
|
|
||||||
</NavItem>
|
|
||||||
</Nav>
|
|
||||||
</Navbar>
|
</Navbar>
|
||||||
|
124
web/frontend/src/NavbarTools.svelte
Normal file
124
web/frontend/src/NavbarTools.svelte
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<script>
|
||||||
|
import {
|
||||||
|
Icon,
|
||||||
|
NavItem,
|
||||||
|
InputGroup,
|
||||||
|
Input,
|
||||||
|
Button,
|
||||||
|
InputGroupText,
|
||||||
|
Container,
|
||||||
|
Row,
|
||||||
|
Col
|
||||||
|
} from "sveltestrap";
|
||||||
|
|
||||||
|
export let username; // empty string if auth. is disabled, otherwise the username as string
|
||||||
|
export let authlevel; // Integer
|
||||||
|
export let roles; // Role Enum-Like
|
||||||
|
export let screenSize // screensize
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if screenSize >= 768}
|
||||||
|
<NavItem>
|
||||||
|
<form method="GET" action="/search">
|
||||||
|
<InputGroup>
|
||||||
|
<Input
|
||||||
|
type="text"
|
||||||
|
placeholder="Search 'type:<query>' ..."
|
||||||
|
name="searchId"
|
||||||
|
style="margin-left: 10px;"
|
||||||
|
/> <!-- bootstrap classes w/o effect -->
|
||||||
|
<Button outline type="submit"><Icon name="search" /></Button
|
||||||
|
>
|
||||||
|
<InputGroupText
|
||||||
|
style="cursor:help;"
|
||||||
|
title={authlevel >= roles.support
|
||||||
|
? "Example: 'projectId:a100cd', Types are: jobId | jobName | projectId | arrayJobId | username | name"
|
||||||
|
: "Example: 'jobName:myjob', Types are jobId | jobName | projectId | arrayJobId "}
|
||||||
|
><Icon name="info-circle" /></InputGroupText
|
||||||
|
>
|
||||||
|
</InputGroup>
|
||||||
|
</form>
|
||||||
|
</NavItem>
|
||||||
|
{#if username}
|
||||||
|
<NavItem>
|
||||||
|
<form method="POST" action="/logout">
|
||||||
|
<Button
|
||||||
|
outline
|
||||||
|
color="success"
|
||||||
|
type="submit"
|
||||||
|
style="margin-left: 10px;"
|
||||||
|
>
|
||||||
|
{#if screenSize > 1630}
|
||||||
|
<Icon name="box-arrow-right" /> Logout {username}
|
||||||
|
{:else}
|
||||||
|
<Icon name="box-arrow-right" />
|
||||||
|
{/if}
|
||||||
|
</Button>
|
||||||
|
</form>
|
||||||
|
</NavItem>
|
||||||
|
{/if}
|
||||||
|
<NavItem>
|
||||||
|
<Button
|
||||||
|
outline
|
||||||
|
on:click={() => (window.location.href = "/config")}
|
||||||
|
style="margin-left: 10px;"
|
||||||
|
>
|
||||||
|
<Icon name="gear" />
|
||||||
|
</Button>
|
||||||
|
</NavItem>
|
||||||
|
{:else}
|
||||||
|
<NavItem>
|
||||||
|
<Container>
|
||||||
|
<Row cols={2}>
|
||||||
|
<Col xs="6">
|
||||||
|
<form method="POST" action="/logout">
|
||||||
|
<Button
|
||||||
|
outline
|
||||||
|
color="success"
|
||||||
|
type="submit"
|
||||||
|
size="sm"
|
||||||
|
class="my-2 w-100"
|
||||||
|
>
|
||||||
|
<Icon name="box-arrow-right" /> Logout {username}
|
||||||
|
</Button>
|
||||||
|
</form>
|
||||||
|
</Col>
|
||||||
|
<Col xs="6">
|
||||||
|
<Button
|
||||||
|
outline
|
||||||
|
on:click={() => (window.location.href = "/config")}
|
||||||
|
size="sm"
|
||||||
|
class="my-2 w-100"
|
||||||
|
>
|
||||||
|
{#if authlevel >= roles.admin}
|
||||||
|
<Icon name="gear" /> Admin Settings
|
||||||
|
{:else}
|
||||||
|
<Icon name="gear" /> Plotting Options
|
||||||
|
{/if}
|
||||||
|
</Button>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Container>
|
||||||
|
</NavItem>
|
||||||
|
<NavItem style="margin-left: 10px; margin-right:10px;">
|
||||||
|
<form method="GET" action="/search">
|
||||||
|
<InputGroup>
|
||||||
|
<Input
|
||||||
|
type="text"
|
||||||
|
placeholder="Search 'type:<query>' ..."
|
||||||
|
name="searchId"
|
||||||
|
/>
|
||||||
|
<Button outline type="submit"><Icon name="search" /></Button
|
||||||
|
>
|
||||||
|
<InputGroupText
|
||||||
|
style="cursor:help;"
|
||||||
|
title={authlevel >= roles.support
|
||||||
|
? "Example: 'projectId:a100cd', Types are: jobId | jobName | projectId | arrayJobId | username | name"
|
||||||
|
: "Example: 'jobName:myjob', Types are jobId | jobName | projectId | arrayJobId "}
|
||||||
|
><Icon name="info-circle" /></InputGroupText
|
||||||
|
>
|
||||||
|
</InputGroup>
|
||||||
|
</form>
|
||||||
|
</NavItem>
|
||||||
|
{/if}
|
Loading…
Reference in New Issue
Block a user