This commit is contained in:
parent
59cf71c140
commit
38e98ec74b
@ -8,6 +8,10 @@
|
|||||||
<i>output</i>
|
<i>output</i>
|
||||||
<span>yaml</span>
|
<span>yaml</span>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="/export/print">
|
||||||
|
<i>print</i>
|
||||||
|
<span>print</span>
|
||||||
|
</a>
|
||||||
<!-- TODO
|
<!-- TODO
|
||||||
<a>
|
<a>
|
||||||
<i>Quiz</i>
|
<i>Quiz</i>
|
||||||
|
12
src/routes/export/print/+page.svelte
Normal file
12
src/routes/export/print/+page.svelte
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<PrintShip {...$ship} />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getContext } from "svelte";
|
||||||
|
import { readable } from "svelte/store";
|
||||||
|
|
||||||
|
import PrintShip from "./PrintShip/index.svelte";
|
||||||
|
|
||||||
|
const api = getContext("api");
|
||||||
|
|
||||||
|
const ship = api?.svelteStore ?? readable({});
|
||||||
|
</script>
|
49
src/routes/export/print/PrintShip/Identification.svelte
Normal file
49
src/routes/export/print/PrintShip/Identification.svelte
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<h1>
|
||||||
|
ship name: <div class="fill" />
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<div class="details">
|
||||||
|
<h2>
|
||||||
|
{#if shipClass}
|
||||||
|
{shipClass}-class,
|
||||||
|
{/if}
|
||||||
|
{shipType}
|
||||||
|
</h2>
|
||||||
|
<div class="reqs">
|
||||||
|
{cost} <i>paid</i> {mass} <i>weight</i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export let shipClass;
|
||||||
|
export let shipType;
|
||||||
|
export let cost = 0;
|
||||||
|
export let mass = 0;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
h1 {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
font-size: var(--font-scale-8);
|
||||||
|
align-items: baseline;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: var(--font-scale-7);
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.fill {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
display: inline-block;
|
||||||
|
flex: 1;
|
||||||
|
border-bottom: 1px solid black;
|
||||||
|
}
|
||||||
|
.details {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
}
|
||||||
|
.reqs {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
21
src/routes/export/print/PrintShip/MainSystems/Drive.svelte
Normal file
21
src/routes/export/print/PrintShip/MainSystems/Drive.svelte
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{#if rating}
|
||||||
|
<div class="thrust">
|
||||||
|
{rating}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export let rating = 0;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
div.thrust {
|
||||||
|
background-image: url(/icons/standard-drive.svg);
|
||||||
|
width: 2em;
|
||||||
|
background-size: 2em;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
height: 2em;
|
||||||
|
line-height: 2em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
13
src/routes/export/print/PrintShip/MainSystems/Ftl.svelte
Normal file
13
src/routes/export/print/PrintShip/MainSystems/Ftl.svelte
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{#if type && type !== "none"}
|
||||||
|
<img src="/icons/ftl-drive.svg" alt="ftl drive" title="ftl drive" />
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export let type = null;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
img {
|
||||||
|
height: 2em;
|
||||||
|
}
|
||||||
|
</style>
|
34
src/routes/export/print/PrintShip/MainSystems/index.svelte
Normal file
34
src/routes/export/print/PrintShip/MainSystems/index.svelte
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<div class="main-systems">
|
||||||
|
<Ftl type={ftl.type} />
|
||||||
|
|
||||||
|
<Drive rating={drive.rating} />
|
||||||
|
|
||||||
|
<img
|
||||||
|
class="internal"
|
||||||
|
src="/icons/internal-systems.svg"
|
||||||
|
alt="internal systems"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Ftl from "./Ftl.svelte";
|
||||||
|
import Drive from "./Drive.svelte";
|
||||||
|
|
||||||
|
export let ftl = {};
|
||||||
|
export let drive = {};
|
||||||
|
|
||||||
|
// TODO advanced drive
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.main-systems {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1em;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
height: 2em;
|
||||||
|
}
|
||||||
|
</style>
|
34
src/routes/export/print/PrintShip/index.svelte
Normal file
34
src/routes/export/print/PrintShip/index.svelte
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<div>Printing this page will only prints the ship sheet.</div>
|
||||||
|
|
||||||
|
<div class="print-output">
|
||||||
|
<Identification {...identification} />
|
||||||
|
|
||||||
|
<MainSystems {...propulsion} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Identification from "./Identification.svelte";
|
||||||
|
import MainSystems from "./MainSystems/index.svelte";
|
||||||
|
|
||||||
|
export let identification = {};
|
||||||
|
export let propulsion = {};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.print-output {
|
||||||
|
width: 4.25in;
|
||||||
|
height: 5.5in;
|
||||||
|
border: 1px solid black;
|
||||||
|
padding: 1em;
|
||||||
|
margin: 0px auto;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
:global(body > *) {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.print-output {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue
Block a user