static
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
import {setContext} from "svelte";
|
||||
import Navbar from "./Navbar.svelte";
|
||||
import HomeIndex from "./home/Index.svelte";
|
||||
import BuildReport from "./build/Report.svelte";
|
||||
|
||||
const components = {
|
||||
members: Members,
|
||||
@@ -13,6 +14,7 @@
|
||||
recordNotFound: RecordNotFound,
|
||||
contentIndex: ContentIndex,
|
||||
homeIndex: HomeIndex,
|
||||
buildReport: BuildReport,
|
||||
};
|
||||
|
||||
export let title;
|
||||
|
||||
@@ -7,60 +7,85 @@
|
||||
const channel = getContext("channel");
|
||||
const user = getContext("user");
|
||||
|
||||
function buildWebsite(e) {
|
||||
e.preventDefault();
|
||||
|
||||
axios.post(channel.lucentUrl + "/build").then(response => {
|
||||
window.location.href = channel.lucentUrl + "/build-report"
|
||||
})
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<nav class="lx-nav">
|
||||
<a class="nav-item" href="{channel.lucentUrl}">{channel.name}</a>
|
||||
<a class="nav-item" href="{channel.lucentUrl}/members">Members</a>
|
||||
<a class="nav-item" href="{channel.lucentUrl}/profile">
|
||||
<Avatar side="28" name={user.name}/>
|
||||
</a
|
||||
>
|
||||
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<a class="nav-item" href="{channel.lucentUrl}">{channel.name}</a>
|
||||
<a class="nav-item" href="{channel.lucentUrl}/members">Members</a>
|
||||
|
||||
{#if channel.generateCommand}
|
||||
<button on:click={buildWebsite} class="btn btn-outline-primary btn-sm">Build website</button>
|
||||
{/if}
|
||||
</div>
|
||||
<div>
|
||||
<a class="nav-item" href="{channel.lucentUrl}/profile">
|
||||
<Avatar side="28" name={user.name}/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="offcanvas offcanvas-start show border-0 bg-light-subtle" style="margin-top:36px " data-bs-scroll="true"
|
||||
data-bs-backdrop="false"
|
||||
tabindex="-1" aria-labelledby="offcanvasScrollingLabel">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="offcanvasScrollingLabel">Content</h5>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
</nav>
|
||||
|
||||
<div class="accordion" id="accordionPanelsStayOpenExample">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="panelsStayOpen-headingOne">
|
||||
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true" aria-controls="panelsStayOpen-collapseOne">
|
||||
Main
|
||||
</button>
|
||||
</h2>
|
||||
<div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show" aria-labelledby="panelsStayOpen-headingOne">
|
||||
<div class="accordion-body">
|
||||
<NavbarMenu
|
||||
<div class="offcanvas offcanvas-start show border-0 bg-light-subtle" style="padding-top:36px " data-bs-scroll="true"
|
||||
data-bs-backdrop="false"
|
||||
tabindex="-1" aria-labelledby="offcanvasScrollingLabel">
|
||||
<!-- <div class="offcanvas-header">-->
|
||||
<!-- <h5 class="offcanvas-title" id="offcanvasScrollingLabel">Content</h5>-->
|
||||
<!-- </div>-->
|
||||
<div class="offcanvas-body">
|
||||
|
||||
<div class="accordion" id="accordionPanelsStayOpenExample">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="panelsStayOpen-headingOne">
|
||||
<button class="accordion-button" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true"
|
||||
aria-controls="panelsStayOpen-collapseOne">
|
||||
Main
|
||||
</button>
|
||||
</h2>
|
||||
<div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show"
|
||||
aria-labelledby="panelsStayOpen-headingOne">
|
||||
<div class="accordion-body">
|
||||
<NavbarMenu
|
||||
schemas={ channel.schemas.filter((sc) => sc.isEntry)}
|
||||
schema={schema}
|
||||
/>
|
||||
</div>
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="panelsStayOpen-headingTwo">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false" aria-controls="panelsStayOpen-collapseTwo">
|
||||
Other
|
||||
</button>
|
||||
</h2>
|
||||
<div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse" aria-labelledby="panelsStayOpen-headingTwo">
|
||||
<div class="accordion-body">
|
||||
<NavbarMenu
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="panelsStayOpen-headingTwo">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false"
|
||||
aria-controls="panelsStayOpen-collapseTwo">
|
||||
Other
|
||||
</button>
|
||||
</h2>
|
||||
<div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse"
|
||||
aria-labelledby="panelsStayOpen-headingTwo">
|
||||
<div class="accordion-body">
|
||||
<NavbarMenu
|
||||
schemas={ channel.schemas.filter((sc) => !sc.isEntry)}
|
||||
schema={schema}
|
||||
/>
|
||||
</div>
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
@@ -1,29 +0,0 @@
|
||||
<script>
|
||||
import Icon from "./common/Icon.svelte";
|
||||
|
||||
export let label;
|
||||
let isExpanded = true;
|
||||
</script>
|
||||
|
||||
<span class="sidebar-header d-flex align-items-center">
|
||||
{#if !isExpanded}
|
||||
<span class="d-flex" on:click={(e) => (isExpanded = true)}>
|
||||
<Icon icon="circle-chevron-down" viewBox="0 0 512 512" />
|
||||
</span>
|
||||
{/if}
|
||||
|
||||
{#if isExpanded}
|
||||
<span class="d-flex" on:click={(e) => (isExpanded = false)}>
|
||||
<Icon icon="circle-chevron-up" viewBox="0 0 512 512" />
|
||||
</span>
|
||||
{/if}
|
||||
<span class="ms-1">{label}</span>
|
||||
<div class="actions">
|
||||
<slot name="actions" />
|
||||
</div>
|
||||
</span>
|
||||
{#if isExpanded}
|
||||
<div class="mb-2">
|
||||
<slot />
|
||||
</div>
|
||||
{/if}
|
||||
@@ -1,10 +0,0 @@
|
||||
<script>
|
||||
export let active = false;
|
||||
</script>
|
||||
|
||||
<div class="sidebar-item" class:active>
|
||||
<slot />
|
||||
<div class="actions">
|
||||
<slot name="actions" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,47 +0,0 @@
|
||||
<script>
|
||||
export let active = "";
|
||||
import { getContext } from "svelte";
|
||||
const user = getContext("user");
|
||||
let logged = user?.id ? true : false;
|
||||
let menuItems = [
|
||||
{
|
||||
name: "Account",
|
||||
link: "/profile",
|
||||
auth: true,
|
||||
guest: false,
|
||||
},
|
||||
{
|
||||
name: "Login",
|
||||
link: "/login",
|
||||
auth: false,
|
||||
guest: true,
|
||||
},
|
||||
{
|
||||
name: "Register",
|
||||
link: "/register",
|
||||
auth: false,
|
||||
guest: true,
|
||||
},
|
||||
];
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<ul class="nav justify-content-center mt-4 mb-5">
|
||||
{#each menuItems as item}
|
||||
{#if item.auth == logged || item.guest == !logged}
|
||||
<li class="nav-item">
|
||||
<a
|
||||
class="nav-link"
|
||||
class:active={active == item.name}
|
||||
href={item.link}>{item.name}</a
|
||||
>
|
||||
</li>
|
||||
{/if}
|
||||
{/each}
|
||||
</ul>
|
||||
<style>
|
||||
.nav-item a.active{
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
@@ -1,11 +1,11 @@
|
||||
<script>
|
||||
import ErrorAlert from "../common/ErrorAlert.svelte";
|
||||
import SpinnerButton from "../common/SpinnerButton.svelte";
|
||||
import Nav from "./Nav.svelte";
|
||||
import Avatar from "./Avatar.svelte";
|
||||
import {getContext} from "svelte";
|
||||
|
||||
const user = getContext("user");
|
||||
const channel = getContext("channel");
|
||||
let name = user.name;
|
||||
let email = user.email;
|
||||
let errorMessage = "";
|
||||
@@ -45,7 +45,6 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<Nav active="Account"/>
|
||||
|
||||
<div class="wrapper-tiny">
|
||||
<ErrorAlert message={errorMessage}/>
|
||||
@@ -64,18 +63,7 @@
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- <form on:submit={saveEmail}>-->
|
||||
<!-- <div class="input-group mb-3">-->
|
||||
<!-- <input-->
|
||||
<!-- type="text"-->
|
||||
<!-- bind:value={email}-->
|
||||
<!-- class="form-control"-->
|
||||
<!-- placeholder="Email"-->
|
||||
<!-- />-->
|
||||
<!-- <SpinnerButton label="Update" />-->
|
||||
<!-- </div>-->
|
||||
<!-- </form>-->
|
||||
<div class="list-group">
|
||||
<a class="list-group-item list-group-item-action" href="/logout">Logout from this device</a>
|
||||
<a class="list-group-item list-group-item-action" href="{ channel.lucentUrl }/logout">Logout from this device</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<script>
|
||||
import {getContext} from "svelte";
|
||||
import SpinnerButton from "../common/SpinnerButton.svelte";
|
||||
import ErrorAlert from "../common/ErrorAlert.svelte";
|
||||
import MemberSettingsCard from "../members/MemberSettingsCard.svelte";
|
||||
import SuccessAlert from "../common/SuccessAlert.svelte";
|
||||
import Radio from "../forms/Radio.svelte";
|
||||
|
||||
const channel = getContext("channel");
|
||||
export let title;
|
||||
$: output = "";
|
||||
const eventSource = new EventSource(channel.lucentUrl + "/build-report-source");
|
||||
|
||||
console.log("heklko")
|
||||
eventSource.onmessage = function(event) {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log(data)
|
||||
output = output + "message: " + data.time;
|
||||
}
|
||||
eventSource.onerror = (e)=>{
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div class="wrapper-tiny transparent mb-5">
|
||||
<div class="lx-card mt-5">
|
||||
<h3 class="header-small mb-5">{title}</h3>
|
||||
|
||||
{output}
|
||||
</div>
|
||||
</div>
|
||||
@@ -158,13 +158,13 @@
|
||||
<EditHeader {schema} {record} {isCreateMode} {graph} bind:activeContentTab/>
|
||||
|
||||
{#if !["_graph", "_info"].includes(activeContentTab)}
|
||||
<div
|
||||
style="position:fixed;bottom:0;left:0px;width:100%;background:rgba(255,255,255,.7);z-index:10"
|
||||
<div class="shadow-lg "
|
||||
style="position:fixed;bottom:0;left:0px;width:100%;background:rgba(255,255,255,1);z-index:1050"
|
||||
>
|
||||
<div
|
||||
class="d-flex mt-4 mb-3 align-items-center justify-content-center"
|
||||
class="d-flex mt-4 mb-3 align-items-center justify-content-center"
|
||||
>
|
||||
<StatusSelect bind:status={record.status} {schema}/>
|
||||
<StatusSelect bind:status={record.status} {record} {schema}/>
|
||||
{#if isCreateMode}
|
||||
<button
|
||||
class="ms-2 btn btn-primary btn-spinner"
|
||||
|
||||
@@ -45,19 +45,7 @@
|
||||
<Icon icon="ellipsis"/>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<!--{#if channel.previewTargets.length > 0}-->
|
||||
<!-- <h6 class="dropdown-header">Preview targets</h6>-->
|
||||
<!-- {#each channel.previewTargets as previewTarget}-->
|
||||
<!-- <a-->
|
||||
<!-- class="dropdown-item"-->
|
||||
<!-- target="_blank"-->
|
||||
<!-- rel="noreferrer"-->
|
||||
<!-- href="{previewTarget.url}?id={record.data-->
|
||||
<!-- .id}&schema={record._sys.schema}"-->
|
||||
<!-- >{previewTarget.label}</a-->
|
||||
<!-- >-->
|
||||
<!-- {/each}-->
|
||||
<!--{/if}-->
|
||||
|
||||
<h6 class="dropdown-header">Record Actions</h6>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
<script>
|
||||
import {getContext} from "svelte";
|
||||
import Status from "./Status.svelte";
|
||||
import {getStatus, getStatusList} from "./StatusText";
|
||||
|
||||
const channel = getContext("channel");
|
||||
export let status = "draft";
|
||||
export let record;
|
||||
export let schema;
|
||||
let dropdown;
|
||||
$: currentStatus = getStatus(status);
|
||||
@@ -16,31 +19,40 @@
|
||||
</script>
|
||||
|
||||
<!-- Example split danger button -->
|
||||
<div class="btn-group dropup">
|
||||
<button type="button" class="btn btn-{currentStatus.bg}"
|
||||
>{currentStatus.text}</button
|
||||
>
|
||||
<button
|
||||
bind:this={dropdown}
|
||||
type="button"
|
||||
class="btn btn-{currentStatus.bg} dropdown-toggle dropdown-toggle-split"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<span class="visually-hidden">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<div class="dropdown-header">Change status to</div>
|
||||
{#each statusList as astatus}
|
||||
{#if astatus.value !== status}
|
||||
<button
|
||||
type="button"
|
||||
class="dropdown-item my-2 rounded w-100 bg-{astatus.bg} text-{astatus.color}"
|
||||
on:click={(e) => updateStatus(e, astatus.value)}
|
||||
>
|
||||
{astatus.text}
|
||||
</button>
|
||||
{/if}
|
||||
{/each}
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="btn-group dropup">
|
||||
<button type="button" class="btn btn-{currentStatus.bg}"
|
||||
>{currentStatus.text}</button
|
||||
>
|
||||
<button
|
||||
bind:this={dropdown}
|
||||
type="button"
|
||||
class="btn btn-{currentStatus.bg} dropdown-toggle dropdown-toggle-split"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<span class="visually-hidden">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<div class="dropdown-header">Change status to</div>
|
||||
{#each statusList as astatus}
|
||||
{#if astatus.value !== status}
|
||||
<button
|
||||
type="button"
|
||||
class="dropdown-item my-2 rounded w-100 bg-{astatus.bg} text-{astatus.color}"
|
||||
on:click={(e) => updateStatus(e, astatus.value)}
|
||||
>
|
||||
{astatus.text}
|
||||
</button>
|
||||
{/if}
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
{#if channel.previewTarget}
|
||||
<a href="{channel.previewTarget}?schema={schema.name}&id={record.id}" target="_blank" class="btn btn-outline-info ms-3">
|
||||
Preview
|
||||
</a>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user