2023-10-11 17:43:28 +02:00
|
|
|
<script lang="ts">
|
2023-10-11 21:17:03 +02:00
|
|
|
import IntegerInput from "./IntegerInput.svelte";
|
2023-10-11 23:04:07 +02:00
|
|
|
import TextInput from "./TextInput.svelte";
|
2023-10-24 11:37:27 +02:00
|
|
|
import NewListTextInput from "./ListTextInput/NewListTextInput.svelte";
|
|
|
|
import ListTextInputElement from "./ListTextInput/ListTextInputElement.svelte";
|
2023-11-01 20:21:59 +01:00
|
|
|
import {invoke} from "@tauri-apps/api/tauri";
|
|
|
|
import {AgeRating, LanguageISO, type Metadata} from "./metadata";
|
|
|
|
|
|
|
|
let returnMessage = "";
|
2023-10-11 21:17:03 +02:00
|
|
|
|
2023-10-11 23:04:07 +02:00
|
|
|
let seriesTitle = "";
|
|
|
|
let volumeTitle = "";
|
2023-10-11 21:17:03 +02:00
|
|
|
let volumeNumber = 0;
|
|
|
|
let chapterNumber = 0;
|
2023-10-11 23:04:07 +02:00
|
|
|
let pageCount = 1;
|
2023-10-11 21:17:03 +02:00
|
|
|
let chapterCount = 0;
|
2023-10-11 23:04:07 +02:00
|
|
|
let summary = "";
|
|
|
|
let releaseYear: number;
|
|
|
|
let releaseMonth: number;
|
|
|
|
let releaseDay: number;
|
|
|
|
let author: string;
|
|
|
|
let typesetter: string;
|
|
|
|
let editor: string;
|
|
|
|
let translator: string;
|
|
|
|
let publisher: string;
|
2023-10-24 11:37:27 +02:00
|
|
|
let tags: Array<string> = [];
|
2023-10-11 23:04:07 +02:00
|
|
|
let genre = "Hentai";
|
2023-11-01 20:21:59 +01:00
|
|
|
let lang = LanguageISO.EN;
|
|
|
|
let ageRating = AgeRating.R18;
|
2023-10-24 11:37:27 +02:00
|
|
|
|
|
|
|
$: {
|
|
|
|
if (releaseYear < 0) {
|
|
|
|
releaseMonth = -1;
|
|
|
|
}
|
|
|
|
if (releaseMonth < 0) {
|
|
|
|
releaseDay = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function deleteTag(event: any) {
|
|
|
|
console.log("deleted")
|
|
|
|
tags.splice(event.detail.tagId, 1);
|
|
|
|
tags = tags;
|
|
|
|
}
|
2023-11-01 20:21:59 +01:00
|
|
|
|
|
|
|
async function saveMetadata() {
|
|
|
|
let message: Metadata = {
|
|
|
|
title: volumeTitle,
|
|
|
|
series_title: seriesTitle,
|
|
|
|
|
|
|
|
chapter_number: 0,
|
|
|
|
|
|
|
|
total_chapter_count: -1,
|
|
|
|
|
|
|
|
volume_number: -1,
|
|
|
|
|
|
|
|
summary: "",
|
|
|
|
|
|
|
|
year: 2023,
|
|
|
|
month: -1,
|
|
|
|
day: -1,
|
|
|
|
|
|
|
|
writer: "",
|
|
|
|
translator: "",
|
|
|
|
letterer: "",
|
|
|
|
editor: "",
|
|
|
|
|
|
|
|
publisher: "",
|
|
|
|
|
|
|
|
genre: "",
|
|
|
|
|
|
|
|
tags: [],
|
|
|
|
|
|
|
|
page_count: 10,
|
|
|
|
|
|
|
|
language: LanguageISO.EN,
|
|
|
|
|
|
|
|
characters: [],
|
|
|
|
|
|
|
|
age_rating: AgeRating.R18,
|
|
|
|
}
|
|
|
|
console.log(message);
|
|
|
|
returnMessage = await invoke("test", { message })
|
|
|
|
}
|
2023-10-11 17:43:28 +02:00
|
|
|
</script>
|
|
|
|
|
2023-11-01 20:21:59 +01:00
|
|
|
<form class="metadataInput" on:submit|preventDefault={saveMetadata}>
|
2023-10-11 17:43:28 +02:00
|
|
|
<h1>Metadata</h1>
|
|
|
|
|
|
|
|
<label for="series">Series:</label>
|
2023-10-11 23:04:07 +02:00
|
|
|
<TextInput id="series" bind:value={seriesTitle} placeholder="Series Title" /><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
|
|
|
<label for="title">Title:</label>
|
2023-10-11 23:04:07 +02:00
|
|
|
<TextInput id="title" bind:value={volumeTitle} placeholder="Volume Title" /><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
|
|
|
<label for="volume">Volume:</label>
|
2023-10-11 21:17:03 +02:00
|
|
|
<IntegerInput id="volume" bind:value={volumeNumber} />
|
2023-10-11 17:43:28 +02:00
|
|
|
<label for="chapter">Chapter:</label>
|
2023-10-11 21:17:03 +02:00
|
|
|
<IntegerInput id="chapter" bind:value={chapterNumber} /> /
|
2023-10-11 17:43:28 +02:00
|
|
|
|
2023-10-11 21:17:03 +02:00
|
|
|
<IntegerInput id="chapter_count" bind:value={chapterCount} negative={true}/><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
|
|
|
<label for="page_count">Page Count</label>
|
2023-10-11 23:04:07 +02:00
|
|
|
<IntegerInput id="page_count" bind:value={pageCount} defaultValue={1} /><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
|
|
|
<label for="summary">Summary:</label><br>
|
|
|
|
<label for="summary"></label><input id="series" type="text"><br>
|
|
|
|
|
|
|
|
<label for="release_date">Release Date:</label>
|
2023-10-11 23:04:07 +02:00
|
|
|
<IntegerInput id="release_year" bind:value={releaseYear} defaultValue={new Date().getFullYear()} />
|
2023-10-24 11:37:27 +02:00
|
|
|
{#if releaseYear > 0}
|
|
|
|
<IntegerInput id="release_month" bind:value={releaseMonth} defaultValue={new Date().getMonth()} />
|
|
|
|
{#if releaseMonth > 0}
|
|
|
|
<IntegerInput id="release_day" bind:value={releaseDay} defaultValue={new Date().getDay()} />
|
|
|
|
{/if}
|
|
|
|
{/if}
|
|
|
|
<br>
|
|
|
|
<!--TODO: if date element is 0 do not display finer element, also set finer element to -1-->
|
2023-10-11 17:43:28 +02:00
|
|
|
|
|
|
|
<label for="author">Author:</label>
|
2023-10-24 11:37:27 +02:00
|
|
|
<TextInput id="author" bind:value={author} placeholder="Author" /><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
2023-11-01 20:21:59 +01:00
|
|
|
<label for="translator">Translator:</label>
|
|
|
|
<TextInput id="translator" bind:value={translator} placeholder="Translator" /><br>
|
|
|
|
|
2023-10-11 17:43:28 +02:00
|
|
|
<label for="typesetter">Typesetter:</label>
|
2023-10-24 11:37:27 +02:00
|
|
|
<TextInput id="typesetter" bind:value={typesetter} placeholder="Typesetter" /><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
|
|
|
<label for="editor">Editor:</label>
|
2023-10-11 23:04:07 +02:00
|
|
|
<TextInput id="editor" bind:value={editor} placeholder="Editor" /><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
2023-10-24 11:37:27 +02:00
|
|
|
<label for="publisher">Publisher:</label>
|
2023-10-11 23:04:07 +02:00
|
|
|
<TextInput id="publisher" bind:value={publisher} placeholder="Publisher" /><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
2023-10-24 11:37:27 +02:00
|
|
|
<label for="new-tag">Tags:</label>
|
|
|
|
<!-- List of Tags, New Button -->
|
|
|
|
{#each tags as tag, id}
|
|
|
|
<ListTextInputElement {id} bind:value={tag} on:deleted={deleteTag}/>
|
|
|
|
{/each}
|
|
|
|
<NewListTextInput id="new-tag" bind:value={tags[tags.length]}/><br>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
2023-11-01 20:21:59 +01:00
|
|
|
<label for="genre">Genre:</label>
|
2023-10-11 23:04:07 +02:00
|
|
|
<TextInput id="genre" bind:value={genre} placeholder="Genre" />
|
2023-10-11 17:43:28 +02:00
|
|
|
|
2023-11-01 20:21:59 +01:00
|
|
|
<label for="lang">Language:</label>
|
2023-10-11 17:43:28 +02:00
|
|
|
<input id="lang" type="text"><br>
|
|
|
|
|
2023-11-01 20:21:59 +01:00
|
|
|
<label for="age_rating">Age Rating:</label>
|
2023-10-11 17:43:28 +02:00
|
|
|
<input id="age_rating" type="text"><br>
|
|
|
|
|
|
|
|
<input type="submit" value="Save"/>
|
2023-11-01 20:21:59 +01:00
|
|
|
<p>{returnMessage}</p>
|
|
|
|
</form>
|
2023-10-11 17:43:28 +02:00
|
|
|
|
|
|
|
<style>
|
|
|
|
.metadataInput {
|
|
|
|
height: 100%;
|
|
|
|
|
|
|
|
overflow: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.metadataInput label, input[type="submit"] {
|
|
|
|
margin-left: 4rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
.metadataInput h1 {
|
|
|
|
position: sticky;
|
|
|
|
top: 0;
|
|
|
|
|
|
|
|
margin: 0;
|
|
|
|
|
|
|
|
border-bottom: 2px solid black;
|
|
|
|
|
|
|
|
background-color: var(--color-bg);
|
|
|
|
padding: 1.3rem;
|
|
|
|
}
|
|
|
|
</style>
|