@christianriedl/media 1.0.182 → 1.0.183
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/booksService.d.ts +2 -0
- package/dist/booksService.js +5 -1
- package/dist/booksService.js.map +1 -1
- package/dist/iBooks.d.ts +2 -0
- package/package.json +1 -1
- package/src/components/BookLine.vue +6 -1
- package/src/components/BookSearchLine.vue +9 -2
- package/src/views/BooksPage.vue +22 -4
- package/src/views/BooksSearchPage.vue +55 -47
package/dist/booksService.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export declare class BooksService implements IBooksService {
|
|
|
10
10
|
cachedAuthors?: IAuthorShort[];
|
|
11
11
|
categories: string[];
|
|
12
12
|
flags: string[];
|
|
13
|
+
selectedAuthorId: number;
|
|
14
|
+
selectedBookId: number;
|
|
13
15
|
constructor(rest: IRest, user: string, statistics: IStatistics, log: ILogger);
|
|
14
16
|
getAuthors(surName?: string, givenName?: string, withBooks?: boolean, id?: number): Promise<IAuthor[]>;
|
|
15
17
|
getAuthorsShort(): Promise<IAuthorShort[]>;
|
package/dist/booksService.js
CHANGED
|
@@ -7,13 +7,17 @@ export class BooksService {
|
|
|
7
7
|
cachedAuthors;
|
|
8
8
|
categories;
|
|
9
9
|
flags;
|
|
10
|
+
selectedAuthorId;
|
|
11
|
+
selectedBookId;
|
|
10
12
|
constructor(rest, user, statistics, log) {
|
|
11
13
|
this.log = log;
|
|
12
14
|
this.rest = rest;
|
|
13
15
|
this.user = user;
|
|
14
16
|
this.mediaUrl = rest.serviceUrl;
|
|
15
17
|
this.categories = ["Literatur", "Geschichte", "Philosophie", "Naturwissenschaft"];
|
|
16
|
-
this.flags = ["
|
|
18
|
+
this.flags = ["liesC", "liesH", "ausgeborgt"];
|
|
19
|
+
this.selectedAuthorId = 0;
|
|
20
|
+
this.selectedBookId = 0;
|
|
17
21
|
}
|
|
18
22
|
async getAuthors(surName, givenName, withBooks, id) {
|
|
19
23
|
const info = await this.rest.getData('apibooks/authors', { surName, givenName, withBooks, id });
|
package/dist/booksService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booksService.js","sourceRoot":"","sources":["../src/booksService.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,cAAc,GAAqC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpF,MAAM,OAAO,YAAY;IACrB,IAAI,CAAQ;IACZ,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,GAAG,CAAU;IACb,aAAa,CAAkB;IAC/B,UAAU,CAAW;IACrB,KAAK,CAAW;IAChB,YAAY,IAAW,EAAE,IAAY,EAAE,UAAuB,EAAE,GAAY;QACxE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"booksService.js","sourceRoot":"","sources":["../src/booksService.ts"],"names":[],"mappings":"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"}
|
package/dist/iBooks.d.ts
CHANGED
|
@@ -35,6 +35,8 @@ export interface IFullBook {
|
|
|
35
35
|
export interface IBooksService {
|
|
36
36
|
categories: string[];
|
|
37
37
|
flags: string[];
|
|
38
|
+
selectedAuthorId: number;
|
|
39
|
+
selectedBookId: number;
|
|
38
40
|
getAuthors(surName?: string, givenName?: string, withBooks?: boolean, id?: number): Promise<IAuthor[]>;
|
|
39
41
|
getAuthorsShort(): Promise<IAuthorShort[]>;
|
|
40
42
|
addAuthor(author: IAuthor): Promise<number>;
|
package/package.json
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
const showSelect = ref(!props.add);
|
|
16
16
|
const showSave = ref(false);
|
|
17
17
|
const selected = ref<IBook | string | undefined>();
|
|
18
|
+
const flags = ref<string[]>(book.flags ? book.flags.split(',') : []);
|
|
18
19
|
|
|
19
20
|
async function titleChanged(arg: IBook | string) {
|
|
20
21
|
if (typeof arg == 'string') {
|
|
@@ -45,6 +46,10 @@
|
|
|
45
46
|
function fieldChanged () {
|
|
46
47
|
showSave.value = true;
|
|
47
48
|
}
|
|
49
|
+
function flagsChanged () {
|
|
50
|
+
showSave.value = true;
|
|
51
|
+
book.flags = flags.value.join(',');
|
|
52
|
+
}
|
|
48
53
|
</script>
|
|
49
54
|
|
|
50
55
|
<template>
|
|
@@ -70,7 +75,7 @@
|
|
|
70
75
|
<v-rating hover clearable :length="5" :size="32" v-model="book.rating" active-color="primary" @update:modelValue="fieldChanged" />
|
|
71
76
|
</v-col>
|
|
72
77
|
<v-col cols="2">
|
|
73
|
-
|
|
78
|
+
<v-select v-model="flags" :items="props.flags" multiple hide-details density="compact" single-line @update:modelValue="flagsChanged"></v-select>
|
|
74
79
|
</v-col>
|
|
75
80
|
<v-col cols="2">
|
|
76
81
|
<v-btn v-if="showSave" icon="$save" :disabled="props.readonly" @click="onSave"></v-btn>
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { IFullBook } from '@christianriedl/media';
|
|
3
3
|
const props = defineProps<{ book: IFullBook, ismobile?: boolean }>();
|
|
4
|
+
const emits = defineEmits<{
|
|
5
|
+
(e: 'selectbook'): void
|
|
6
|
+
}>();
|
|
4
7
|
const book = props.book;
|
|
8
|
+
|
|
9
|
+
function onSelect () {
|
|
10
|
+
emits ("selectbook");
|
|
11
|
+
}
|
|
5
12
|
</script>
|
|
6
13
|
|
|
7
14
|
<template>
|
|
8
|
-
<v-row v-if="props.ismobile" dense align="center" class="bg-office">
|
|
15
|
+
<v-row v-if="props.ismobile" dense align="center" class="bg-office" @click="onSelect">
|
|
9
16
|
<v-col cols="12" >
|
|
10
17
|
<p class="font-weight-bold">{{book.givenName + ' ' + book.surName}}</p>
|
|
11
18
|
</v-col>
|
|
@@ -13,7 +20,7 @@
|
|
|
13
20
|
<p class="font-weight-medium">{{book.title}}</p>
|
|
14
21
|
</v-col>
|
|
15
22
|
</v-row>
|
|
16
|
-
<v-row v-else dense align="center"
|
|
23
|
+
<v-row v-else dense align="center" class="bg-office" @click="onSelect >
|
|
17
24
|
<v-col cols="6" >
|
|
18
25
|
<p class="font-weight-bold">{{book.givenName + ' ' + book.surName}}</p>
|
|
19
26
|
</v-col>
|
package/src/views/BooksPage.vue
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { inject, ref, reactive, onMounted, onUnmounted, computed, StyleValue } from 'vue';
|
|
3
|
+
import { useRouter } from 'vue-router';
|
|
3
4
|
import { IAppState, appStateSymbol, getOpenAISymbol, IOpenAIService, ICompleteData, EScope, EDevice } from '@christianriedl/utils';
|
|
4
5
|
import { BooksService, getBooksSymbol, IAuthorShort, IAuthor, IBook } from '@christianriedl/media';
|
|
5
6
|
import BookLine from '../components/BookLine.vue';
|
|
6
7
|
|
|
8
|
+
const router = useRouter();
|
|
7
9
|
const appState = inject(appStateSymbol)!;
|
|
8
10
|
const getBooksService = inject(getBooksSymbol)!;
|
|
9
11
|
const booksService = getBooksService() as BooksService;
|
|
@@ -32,6 +34,11 @@
|
|
|
32
34
|
if (authorsShort) {
|
|
33
35
|
authors.splice(0, authors.length, ...authorsShort);
|
|
34
36
|
}
|
|
37
|
+
�f (booksService.selectedAuthorId) {
|
|
38
|
+
getCurrentAuthor (booksService.selectedAuthorId, true)
|
|
39
|
+
booksService.selectedAuthorId = 0;
|
|
40
|
+
booksService.selectedBookId = 0;
|
|
41
|
+
}
|
|
35
42
|
}
|
|
36
43
|
async function addAuthor() {
|
|
37
44
|
if (!checkAuthor(author))
|
|
@@ -121,6 +128,11 @@
|
|
|
121
128
|
await getAuthorDataFromAI(author.surName, author.givenName);
|
|
122
129
|
}
|
|
123
130
|
}
|
|
131
|
+
function search () {
|
|
132
|
+
booksService.selectedAuthorId = 0;
|
|
133
|
+
booksService.selectedBookId = 0;
|
|
134
|
+
router.push({ path: 'booksearch' });
|
|
135
|
+
}
|
|
124
136
|
async function addNewBook() {
|
|
125
137
|
if (lastAllBooksId.value != author.id) {
|
|
126
138
|
allBooks.value = await getAuthorBooksFromAI (author.surName, author.givenName, author.id);
|
|
@@ -262,7 +274,7 @@
|
|
|
262
274
|
if (!author.yearOfDeath)
|
|
263
275
|
author.yearOfDeath = result.sterbetag ? getYear(result.sterbetag) : undefined;
|
|
264
276
|
if (!author.category)
|
|
265
|
-
author.category = categories[0];
|
|
277
|
+
author.category = booksService.categories[0];
|
|
266
278
|
if (!author.country)
|
|
267
279
|
author.country = result.geburtsland;
|
|
268
280
|
return true;
|
|
@@ -342,7 +354,10 @@
|
|
|
342
354
|
<v-defaults-provider :defaults="{'VBtn':{'size':'large','variant':'flat','class':'bg-office'}}">
|
|
343
355
|
<v-row v-if="isMobile" dense align="center">
|
|
344
356
|
<v-col cols="6">Name</v-col>
|
|
345
|
-
<v-col cols="
|
|
357
|
+
<v-col cols="5">Vorname</v-col>
|
|
358
|
+
<v-col cols="1">
|
|
359
|
+
<v-btn icon="$search" @click="search"></v-btn>
|
|
360
|
+
</v-col>
|
|
346
361
|
</v-row>
|
|
347
362
|
<v-row v-else dense align="center">
|
|
348
363
|
<v-col cols="2">Name</v-col>
|
|
@@ -351,6 +366,9 @@
|
|
|
351
366
|
<v-col cols="1">Bis</v-col>
|
|
352
367
|
<v-col cols="2">Kategorie</v-col>
|
|
353
368
|
<v-col cols="2">Land</v-col>
|
|
369
|
+
<v-col cols="2">
|
|
370
|
+
<v-btn prepend-icon="$search" @click="search">Search</v-btn>
|
|
371
|
+
</v-col>
|
|
354
372
|
</v-row>
|
|
355
373
|
<v-row v-if="isMobile" dense align="center">
|
|
356
374
|
<v-col cols="6">
|
|
@@ -400,8 +418,8 @@
|
|
|
400
418
|
<v-btn v-if="showAddBookLine" @click="cancelAddNewBook" :disabled="readonly" icon="$cancel"></v-btn>
|
|
401
419
|
</v-col>
|
|
402
420
|
</v-row>
|
|
403
|
-
<book-line v-if="showAddBookLine" :book="newBook" :flags="
|
|
404
|
-
<book-line v-for="book in author.books" :key="book.id" :book="book" :flags="
|
|
421
|
+
<book-line v-if="showAddBookLine" :book="newBook" :flags="booksService.flags" :add="true" :allbooks="allBooks" :readonly="readonly" :ismobile="isMobile" @selectbook="selectBook" @deletebook="deleteBook" @savebook="saveBook"></book-line>
|
|
422
|
+
<book-line v-for="book in author.books" :key="book.id" :book="book" :flags="booksService.flags" :readonly="readonly" :ismobile="isMobile" @selectbook="selectBook" @deletebook="deleteBook" @savebook="saveBook"></book-line>
|
|
405
423
|
<v-textarea v-if="showCurrentBook" clearable auto-grow variant="outlined" label="Beschreibung" :disabled="isMobile" class="pt-2" v-model="currentBook.description" @update:modelValue="descriptionChanged">
|
|
406
424
|
</v-textarea>
|
|
407
425
|
<v-textarea v-if="showCurrentBook" clearable auto-grow variant="outlined" label="Kommentar" :disabled="isMobile" v-model="currentBook.comment" @update:modelValue="descriptionChanged">
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { inject, ref, reactive, onMounted, onUnmounted, computed, StyleValue } from 'vue';
|
|
3
3
|
import { IAppState, appStateSymbol, getOpenAISymbol, IOpenAIService, ICompleteData, EScope, EDevice } from '@christianriedl/utils';
|
|
4
|
-
import { BooksService, getBooksSymbol, IAuthorShort, IAuthor,
|
|
4
|
+
import { BooksService, getBooksSymbol, IAuthorShort, IAuthor, IFullBook } from '@christianriedl/media';
|
|
5
5
|
import BookSearchLine from '../components/BookSearchLine.vue';
|
|
6
6
|
|
|
7
7
|
const appState = inject(appStateSymbol)!;
|
|
8
8
|
const getBooksService = inject(getBooksSymbol)!;
|
|
9
9
|
const booksService = getBooksService() as BooksService;
|
|
10
10
|
const authors = reactive<IAuthorShort[]>([]);
|
|
11
|
-
const books = ref<
|
|
12
|
-
const selected = ref<IAuthorShort
|
|
11
|
+
const books = ref<IFullBook[]>([]);
|
|
12
|
+
const selected = ref<IAuthorShort>({ id:0, gN: "", sN: "" });
|
|
13
13
|
const title = ref("");
|
|
14
14
|
const rating = ref(0);
|
|
15
15
|
const flags = ref("");
|
|
@@ -25,54 +25,62 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
async function search() {
|
|
28
|
-
|
|
28
|
+
const sel = selected.value;
|
|
29
|
+
if (sel) {
|
|
30
|
+
books.value = await booksService.getFullBooks(sel.sN, sel.gN, title.value, flags.value, rating.value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function select (book: IFullBook) {
|
|
34
|
+
booksService.selectedAuthorId = book.authorId;
|
|
35
|
+
booksService.selectedBookId = book.bookId;
|
|
29
36
|
}
|
|
30
37
|
</script>
|
|
31
38
|
|
|
32
39
|
<template>
|
|
33
40
|
<v-container fluid class="bg-office" :style="heightStyle">
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
41
|
+
<v-defaults-provider :defaults="{'VBtn':{'size':'large','variant':'flat','class':'bg-office'}}">
|
|
42
|
+
<v-row v-if="isMobile" dense align="center">
|
|
43
|
+
<v-col cols="6">
|
|
44
|
+
<v-select v-model="selected" :items="authors" label="Author" return-object item-value="id" item-title="sN" hide-details density="compact" single-line ></v-select>
|
|
45
|
+
</v-col>
|
|
46
|
+
<v-col cols="6">
|
|
47
|
+
<p>{{selected.gN}}</p>
|
|
48
|
+
</v-col>
|
|
49
|
+
<v-col cols="6">
|
|
50
|
+
<v-text-field label="Titel" v-model="title" hide-details density="compact"></v-text-field>
|
|
51
|
+
</v-col>
|
|
52
|
+
<v-col cols="2">
|
|
53
|
+
<v-select label="Status" v-model="flags" :items="booksService.flags" hide-details density="compact" single-line ></v-select>
|
|
54
|
+
</v-col>
|
|
55
|
+
<v-col cols="2">
|
|
56
|
+
<v-rating label="Rating" hover clearable :length="5" :size="16" v-model="rating" active-color="primary" />
|
|
57
|
+
</v-col>
|
|
58
|
+
<v-col cols="2">
|
|
59
|
+
<v-btn @click="search" icon="$search"></v-btn>
|
|
60
|
+
</v-col>
|
|
61
|
+
</v-row>
|
|
62
|
+
<v-row v-else dense align="center">
|
|
63
|
+
<v-col cols="2">
|
|
64
|
+
<v-select v-model="selected" :items="authors" label="Author" return-object item-value="id" item-title="sN" hide-details density="compact" single-line ></v-select>
|
|
65
|
+
</v-col>
|
|
66
|
+
<v-col cols="2">
|
|
67
|
+
<p>{{selected.gN}}</p>
|
|
68
|
+
</v-col>
|
|
69
|
+
<v-col cols="3">
|
|
70
|
+
<v-text-field label="Titel" v-model="title" hide-details density="compact"></v-text-field>
|
|
71
|
+
</v-col>
|
|
72
|
+
<v-col cols="2">
|
|
73
|
+
<v-select label="Status" v-model="flags" :items="booksService.flags" hide-details density="compact" single-line ></v-select>
|
|
74
|
+
</v-col>
|
|
75
|
+
<v-col cols="1">
|
|
76
|
+
<v-rating label="Rating" hover clearable :length="5" :size="32" v-model="rating" active-color="primary" />
|
|
77
|
+
</v-col>
|
|
78
|
+
<v-col cols="2">
|
|
79
|
+
<v-btn @click="search" prepend-icon="$search">Search</v-btn>
|
|
80
|
+
</v-col>
|
|
81
|
+
</v-row>
|
|
82
|
+
<v-divider></v-divider>
|
|
83
|
+
<book-search-line v-for="book in books" :key="book.bookId" :book="book" :ismobile="isMobile" @selectbook="select(book)"></book-search-line>
|
|
84
|
+
</v-defaults-provider>
|
|
77
85
|
</v-container>
|
|
78
86
|
</template>
|