@christianriedl/media 1.0.189 → 1.0.191

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.
@@ -8,6 +8,7 @@ export declare class BooksService implements IBooksService {
8
8
  user: string;
9
9
  log: ILogger;
10
10
  cachedAuthors?: IAuthorShort[];
11
+ cachedPlaces?: IBookPlace[];
11
12
  categories: string[];
12
13
  flags: string[];
13
14
  selectedAuthorId: number;
@@ -20,6 +21,7 @@ export declare class BooksService implements IBooksService {
20
21
  deleteAuthor(id: number): Promise<boolean>;
21
22
  getBooks(authorId?: number, bookId?: number): Promise<IBook[]>;
22
23
  getFullBooks(surName?: string, givenName?: string, title?: string, flags?: string, minRating?: number): Promise<IFullBook[]>;
24
+ getBooksFrom(firstAuthorId: number, firstBookId?: number, count?: number): Promise<IFullBook[]>;
23
25
  getBookPlaces(): Promise<IBookPlace[]>;
24
26
  addBook(book: IBook): Promise<number>;
25
27
  updateBook(book: IBook): Promise<boolean>;
@@ -5,6 +5,7 @@ export class BooksService {
5
5
  user;
6
6
  log;
7
7
  cachedAuthors;
8
+ cachedPlaces;
8
9
  categories;
9
10
  flags;
10
11
  selectedAuthorId;
@@ -14,8 +15,8 @@ export class BooksService {
14
15
  this.rest = rest;
15
16
  this.user = user;
16
17
  this.mediaUrl = rest.serviceUrl;
17
- this.categories = ["Literatur", "Geschichte", "Philosophie", "Naturwissenschaft"];
18
- this.flags = ["liesC", "liesH", "ausgeborgt"];
18
+ this.categories = ["Literatur", "Geschichte", "Philosophie", "Naturwissenschaft", "Reisen"];
19
+ this.flags = ["liesC", "liesH", "ausgeborgt", "neuesFach"];
19
20
  this.selectedAuthorId = 0;
20
21
  this.selectedBookId = 0;
21
22
  }
@@ -61,10 +62,17 @@ export class BooksService {
61
62
  const info = await this.rest.getData('apibooks/books/full', { surName, givenName, title, flags, minRating });
62
63
  return info.result;
63
64
  }
64
- async getBookPlaces() {
65
- const info = await this.rest.getData('apibooks/books/places');
65
+ async getBooksFrom(firstAuthorId, firstBookId, count) {
66
+ const info = await this.rest.getData('apibooks/books/from', { firstAuthorId, firstBookId, count });
66
67
  return info.result;
67
68
  }
69
+ async getBookPlaces() {
70
+ if (!this.cachedPlaces) {
71
+ const info = await this.rest.getData('apibooks/books/places');
72
+ this.cachedPlaces = info.result;
73
+ }
74
+ return this.cachedPlaces;
75
+ }
68
76
  async addBook(book) {
69
77
  const url = `apibooks/books`;
70
78
  const res = await this.rest.postDataEx(url, book);
@@ -1 +1 @@
1
- {"version":3,"file":"booksService.js","sourceRoot":"","sources":["../src/booksService.ts"],"names":[],"mappings":"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"}
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,YAAY,CAAgB;IAC5B,UAAU,CAAW;IACrB,KAAK,CAAW;IAChB,gBAAgB,CAAS;IACzB,cAAc,CAAS;IACvB,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,EAAE,QAAQ,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAgB,EAAE,SAAkB,EAAE,SAAmB,EAAE,EAAW;QACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAa,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC,MAAmB,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,eAAe;QACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAiB,wBAAwB,CAAC,CAAC;YAC/E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAwB,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,MAAe;QAC3B,MAAM,GAAG,GAAG,kBAAkB,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAA+B,GAAG,EAAE,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,MAA8B,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,cAAc,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5D,OAAO,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,MAAe;QAC9B,MAAM,GAAG,GAAG,kBAAkB,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAiC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,GAAG,CAAC,MAA+B,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9D,OAAO,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,EAAU;QACzB,MAAM,GAAG,GAAG,uBAAuB,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAiC,GAAG,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,MAA+B,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,OAAO,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAiB,EAAE,MAAe;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAU,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,MAAiB,CAAC;IAClC,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,OAAgB,EAAE,SAAkB,EAAE,KAAc,EAAE,KAAc,EAAE,SAAkB;QACvG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAc,qBAAqB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1H,OAAO,IAAI,CAAC,MAAqB,CAAC;IACtC,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,aAAqB,EAAE,WAAoB,EAAE,KAAc;QAC1E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAc,qBAAqB,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAChH,OAAO,IAAI,CAAC,MAAqB,CAAC;IACtC,CAAC;IACD,KAAK,CAAC,aAAa;QACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAe,uBAAuB,CAAC,CAAC;YAC5E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAsB,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAW;QACrB,MAAM,GAAG,GAAG,gBAAgB,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAA8B,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAG,GAAG,CAAC,MAA8B,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QACrD,OAAO,CAAC,CAAC,MAAM,CAAC;IACrB,CAAC;IACA,KAAK,CAAC,UAAU,CAAC,IAAW;QAExB,MAAM,GAAG,GAAG,gBAAgB,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA+B,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7E,MAAM,CAAC,GAAG,GAAG,CAAC,MAA+B,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QACxD,OAAO,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,EAAU;QACvB,MAAM,GAAG,GAAG,qBAAqB,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAiC,GAAG,CAAC,CAAC;QAC5E,MAAM,CAAC,GAAG,GAAG,CAAC,MAA+B,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAC7C,OAAO,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;CACJ"}
package/dist/iBooks.d.ts CHANGED
@@ -44,6 +44,8 @@ export interface IBookPlace {
44
44
  buchstaben2: string;
45
45
  zweitBuchstaben: string;
46
46
  zweitBuchstaben2: string;
47
+ firstAuthorId: number;
48
+ firstBookId: number;
47
49
  }
48
50
  export interface IPlace {
49
51
  vorne: string;
@@ -51,6 +53,10 @@ export interface IPlace {
51
53
  hinten: string;
52
54
  hinten2: string;
53
55
  color: string;
56
+ hintenAuthorId: number;
57
+ hintenBookId: number;
58
+ vorneAuthorId: number;
59
+ vorneBookId: number;
54
60
  }
55
61
  export interface IBooksService {
56
62
  categories: string[];
@@ -67,5 +73,6 @@ export interface IBooksService {
67
73
  updateBook(book: IBook): Promise<boolean>;
68
74
  deleteBook(id: number): Promise<boolean>;
69
75
  getFullBooks(surName?: string, givenName?: string, title?: string, flags?: string, minRating?: number): Promise<IFullBook[]>;
76
+ getBooksFrom(firstAuthorId: number, firstBookId?: number, count?: number): Promise<IFullBook[]>;
70
77
  getBookPlaces(): Promise<IBookPlace[]>;
71
78
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@christianriedl/media",
3
- "version": "1.0.189",
3
+ "version": "1.0.191",
4
4
  "description": "RIC media interfaces",
5
5
 
6
6
  "main": "dist/index.js",
@@ -7,6 +7,7 @@
7
7
  const emits = defineEmits<{
8
8
  (e: 'selectbook', id: number, func: () => void): void,
9
9
  (e: 'deletebook', id: number): void,
10
+ (e: 'showplace', id: number): void,
10
11
  (e: 'savebook', book: IBook): void
11
12
  }>();
12
13
 
@@ -47,6 +48,9 @@
47
48
  emits("savebook", book);
48
49
  showSave.value = false;
49
50
  }
51
+ function onShowPlace () {
52
+ emits("showplace", book.id);
53
+ }
50
54
  function fieldChanged () {
51
55
  showSave.value = true;
52
56
  }
@@ -83,6 +87,7 @@
83
87
  </v-col>
84
88
  <v-col cols="2">
85
89
  <v-btn v-if="showSave" icon="$save" :class="classObject" :disabled="props.readonly" @click="onSave"></v-btn>
90
+ <v-btn v-else icon="$gps" :class="classObject" @click="onShowPlace"></v-btn>
86
91
  <v-btn v-if="showDelete" icon="$delete" :class="classObject" :disabled="props.readonly" @click="onDelete"></v-btn>
87
92
  </v-col>
88
93
  </v-row>
@@ -2,23 +2,24 @@
2
2
  import { StyleValue } from 'vue';
3
3
  import { IPlace } from '@christianriedl/media';
4
4
  const props = defineProps<{ place: IPlace, height: number }>();
5
+ const emits = defineEmits<{
6
+ (e: 'select', place: IPlace): void
7
+ }>();
5
8
  const place: IPlace = props.place;
6
9
  const heightStyle: StyleValue = { height: props.height + "px" };
10
+
11
+ function select () {
12
+ emits('select', place);
13
+ }
7
14
  </script>
8
15
 
9
16
  <template>
10
- <v-row dense :class="[place.color,'place']" :style="heightStyle" >
11
- <v-col cols="12" >
12
- <p class="vorne">{{place.vorne}}</p>
13
- </v-col>
14
- <v-col cols="12" >
15
- <p class="vorne">{{place.vorne2}}</p>
16
- </v-col>
17
- <v-col cols="12" >
18
- <p class="hinten">{{place.hinten}}</p>
17
+ <v-row dense :class="[place.color,'place']" :style="heightStyle" @click="select">
18
+ <v-col v-if="place.vorne" cols="12" >
19
+ <p class="vorne">{{place.vorne}}<br>{{place.vorne2}}</p>
19
20
  </v-col>
20
- <v-col cols="12" >
21
- <p class="hinten">{{place.hinten2}}</p>
21
+ <v-col v-if="place.hinten" cols="12" >
22
+ <p class="hinten">{{place.hinten}}<br>{{place.hinten2}}</p>
22
23
  </v-col>
23
24
  </v-row>
24
25
  <v-divider></v-divider>
@@ -31,12 +32,12 @@
31
32
  border-width: medium;
32
33
  }
33
34
  .vorne {
34
- font-size: medium;
35
+ font-size: large;
35
36
  font-family: monospace;
36
37
  background-color: white;
37
38
  }
38
39
  .hinten {
39
- font-size: medium;
40
+ font-size: large;
40
41
  font-family: monospace;
41
42
  background-color: lightgrey;
42
43
  }
@@ -213,6 +213,30 @@
213
213
  alert ('UpdateBook - error');
214
214
  }
215
215
  }
216
+ async function showPlace (bookId: string) {
217
+ const places = await booksService.getBookPlaces();
218
+ const firstLetter = currentAuthor.surName.substring(0,1);
219
+ for (let i = 0; i < places.length; i++) {
220
+ const place = places[i];
221
+ if (place.buchstaben.includes(firstLetter) && place.firstAuthorId && place.firstBookId) {
222
+ const books = await booksService.getBooksFrom (place.firstAuthorId, place.firstBookId, place.buchstaben.length);
223
+ if (books) {
224
+ for (let j = 0; j < books.length; j++) {
225
+ const book = books[i];
226
+ if (book.authorId == currentAuthor.id && book.bookId == bookId) {
227
+ // Found !!
228
+ let text = `GEFUNDEN : ${place.vorzimmer ? "Vorzimmer" : "Wohnzimmer"} ${place.regalVonLinks}. Regal von links, ${place.fachVonOben}. Fach von oben, \n`;
229
+ if (!place.vorzimmer)
230
+ text += `${place.rechts ? "rechts" : "links"} ${place.hinten ? "hinten": "vorne" }, ${j + 1}. Buch von links`;
231
+ alert (text);
232
+ return;
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }
238
+ alert ("NICHT GEFUNDEN !!");
239
+ }
216
240
  function checkAuthor (author: IAuthor): boolean {
217
241
  if (!author.surName || !author.givenName) {
218
242
  alert("Vor oder Nachname fehlt !");
@@ -451,8 +475,12 @@
451
475
  <v-btn v-if="showAddBookLine" class="bg-office" @click="cancelAddNewBook" :disabled="readonly" icon="$cancel"></v-btn>
452
476
  </v-col>
453
477
  </v-row>
454
- <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>
455
- <book-line v-for="book in currentAuthor.books" :key="book.id" :book="book" :flags="booksService.flags" :readonly="readonly" :selected="selectedBook == book" :ismobile="isMobile" @selectbook="selectBook" @deletebook="deleteBook" @savebook="saveBook"></book-line>
478
+ <book-line v-if="showAddBookLine" :book="newBook" :flags="booksService.flags" :add="true" :allbooks="allBooks" :readonly="readonly"
479
+ :ismobile="isMobile" @selectbook="selectBook" @deletebook="deleteBook" @savebook="saveBook">
480
+ </book-line>
481
+ <book-line v-for="book in currentAuthor.books" :key="book.id" :book="book" :flags="booksService.flags" :readonly="readonly"
482
+ :selected="selectedBook == book" :ismobile="isMobile" @selectbook="selectBook" @deletebook="deleteBook" @savebook="saveBook" @showplace="showPlace">
483
+ </book-line>
456
484
  <v-textarea v-if="showSelectedBook" clearable auto-grow variant="outlined" label="Beschreibung" :disabled="isMobile" class="bg-office pt-2" v-model="selectedBook.description" @update:modelValue="descriptionChanged">
457
485
  </v-textarea>
458
486
  <v-textarea v-if="showSelectedBook" clearable auto-grow variant="outlined" label="Kommentar" :disabled="isMobile" class="bg-office" v-model="selectedBook.comment" @update:modelValue="descriptionChanged">
@@ -14,8 +14,11 @@
14
14
  const regalColor = "bg-brown-lighten-3";
15
15
  const doorColor = "bg-brown-darken-1";
16
16
  const glassColor = "bg-blue-grey-lighten-1";
17
- const placeHeight = ref(100);
17
+ const placeHeight = ref(120);
18
18
  const regale = reactive<Regal[]>(initPlaces());
19
+ const booksVorne = reactive<IFullBook[]>([]);
20
+ const booksHinten = reactive<IFullBook[]>([]);
21
+ const showBooks = ref(false);
19
22
 
20
23
  start();
21
24
 
@@ -24,7 +27,7 @@
24
27
  for (let i = 0; i < 10; i++) {
25
28
  let regal: Regal = { faecher: [], faecher2: [] };
26
29
  for (let j = 0; j < 6; j++) {
27
- const fach: IPlace = { vorne: "", hinten: "", color: regalColor };
30
+ const fach: IPlace = { vorne: "", hinten: "", vorne2: "", hinten2: "", color: regalColor };
28
31
  if (i < 8) {
29
32
  // Wohnzimmer
30
33
  if ((i < 2 || i > 5) && j > 2)
@@ -33,7 +36,7 @@
33
36
  fach.color = glassColor;
34
37
  }
35
38
  regal.faecher.push(fach);
36
- const fach2: IPlace = { vorne: "", hinten: "", color: regalColor };
39
+ const fach2: IPlace = { vorne: "", hinten: "", vorne2: "", hinten2: "", color: regalColor };
37
40
  if (i < 8) {
38
41
  // Wohnzimmer
39
42
  if ((i < 2 || i > 5) && j > 2)
@@ -61,10 +64,14 @@
61
64
  }
62
65
  let fach = regal.faecher[place.fachVonOben - 1];
63
66
  if (place.hinten) {
67
+ fach.hintenAuthorId = place.firstAuthorId;
68
+ fach.hintenBookId = place.firstBookId;
64
69
  fach.hinten = place.buchstaben;
65
70
  fach.hinten2 = place.zweitBuchstaben;
66
71
  }
67
72
  else {
73
+ fach.vorneAuthorId = place.firstAuthorId;
74
+ fach.vorneBookId = place.firstBookId;
68
75
  fach.vorne = place.buchstaben;
69
76
  fach.vorne2 = place.zweitBuchstaben;
70
77
  }
@@ -79,14 +86,28 @@
79
86
  }
80
87
  }
81
88
  }
89
+ async function select (place: IPlace) {
90
+ booksVorne.splice (0, booksVorne.length);
91
+ booksHinten.splice (0, booksHinten.length);
92
+ if (place.hintenAuthorId && place.hintenBookId) {
93
+ const books = await booksService.getBooksFrom (place.hintenAuthorId, place.hintenBookId, place.hinten.length);
94
+ if (books)
95
+ booksHinten.splice (0, 0, ...books);
96
+ }
97
+ if (place.vorneAuthorId && place.vorneBookId) {
98
+ const books = await booksService.getBooksFrom (place.vorneAuthorId, place.vorneBookId, place.vorne.length);
99
+ if (books)
100
+ booksVorne.splice (0, 0, ...books);
101
+ }
102
+ showBooks.value = true;
103
+ }
82
104
  </script>
83
105
 
84
106
  <template>
85
107
  <v-container fluid class="bg-office" >
86
- <h1>SOLL</h1>
87
108
  <v-row dense>
88
109
  <v-col cols="9">
89
- <h2>WOHNZIMMER</h2>
110
+ <h2>SOLL - WOHNZIMMER</h2>
90
111
  </v-col>
91
112
  <v-col cols="3">
92
113
  <h2>VORZIMMER</h2>
@@ -94,20 +115,19 @@
94
115
  </v-row>
95
116
  <v-row dense>
96
117
  <v-col v-for="n in 8" cols="1">
97
- <book-place v-for="m in 6" :place="regale[n-1].faecher[m-1]" :height="placeHeight" ></book-place>
118
+ <book-place v-for="m in 6" :place="regale[n-1].faecher[m-1]" :height="placeHeight" @select="select" ></book-place>
98
119
  </v-col>
99
120
  <v-col cols="1"></v-col>
100
121
  <v-col cols="1">
101
- <book-place v-for="m in 6" :place="regale[8].faecher[m-1]" :height="placeHeight" ></book-place>
122
+ <book-place v-for="m in 6" :place="regale[8].faecher[m-1]" :height="placeHeight" @select="select"></book-place>
102
123
  </v-col>
103
124
  <v-col cols="2" class="pl-2">
104
- <book-place v-for="m in 6" :place="regale[9].faecher[m-1]" :height="placeHeight" ></book-place>
125
+ <book-place v-for="m in 6" :place="regale[9].faecher[m-1]" :height="placeHeight" @select="select"></book-place>
105
126
  </v-col>
106
127
  </v-row>
107
- <h1>IST</h1>
108
128
  <v-row dense>
109
129
  <v-col cols="9">
110
- <h2>WOHNZIMMER</h2>
130
+ <h2>IST - WOHNZIMMER</h2>
111
131
  </v-col>
112
132
  <v-col cols="3">
113
133
  <h2>VORZIMMER</h2>
@@ -115,15 +135,34 @@
115
135
  </v-row>
116
136
  <v-row dense>
117
137
  <v-col v-for="n in 8" cols="1">
118
- <book-place v-for="m in 6" :place="regale[n-1].faecher2[m-1]" :height="placeHeight" ></book-place>
138
+ <book-place v-for="m in 6" :place="regale[n-1].faecher2[m-1]" :height="placeHeight" @select="select"></book-place>
119
139
  </v-col>
120
140
  <v-col cols="1"></v-col>
121
141
  <v-col cols="1">
122
- <book-place v-for="m in 6" :place="regale[8].faecher2[m-1]" :height="placeHeight" ></book-place>
142
+ <book-place v-for="m in 6" :place="regale[8].faecher2[m-1]" :height="placeHeight" @select="select"></book-place>
123
143
  </v-col>
124
144
  <v-col cols="2" class="pl-2">
125
- <book-place v-for="m in 6" :place="regale[9].faecher2[m-1]" :height="placeHeight" ></book-place>
145
+ <book-place v-for="m in 6" :place="regale[9].faecher2[m-1]" :height="placeHeight" @select="select"></book-place>
126
146
  </v-col>
127
147
  </v-row>
148
+ <v-dialog v-model="showBooks" >
149
+ <v-container>
150
+ <h2>Hinten</h2>
151
+ <v-row dense v-for="book in booksHinten" :key="book.bookId">
152
+ <v-col cols="5"><p class="font-weight-bold">{{book.givenName + ' ' + book.surName}}</p></v-col>
153
+ <v-col cols="7"><p>{{book.title}}</p></v-col>
154
+ </v-row>
155
+ <h2>Vorne</h2>
156
+ <v-row dense v-for="book in booksVorne" :key="book.bookId">
157
+ <v-col cols="5"><p class="font-weight-bold">{{book.givenName + ' ' + book.surName}}</p></v-col>
158
+ <v-col cols="7"><p>{{book.title}}</p></v-col>
159
+ </v-row>
160
+ <v-row dense>
161
+ <v-col cols="2">
162
+ <v-btn prepend-icon="$back" @click="showBocks = false">CLOSE</v-btn>
163
+ </v-col>
164
+ </v-row>
165
+ </v-container>
166
+ </v-dialog>
128
167
  </v-container>
129
168
  </template>