Skip to content

Commit dcf23a3

Browse files
committed
fix: unable to set progress #169
1 parent 842b719 commit dcf23a3

File tree

7 files changed

+85
-62
lines changed

7 files changed

+85
-62
lines changed

src/jelu-ui/src/components/AddBook.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -809,6 +809,9 @@ let displayDatepicker = computed(() => {
809809
type="number"
810810
min="0"
811811
class="input focus:input-accent"
812+
icon-right="delete"
813+
icon-right-clickable
814+
@icon-right-click="form.pageCount = null;form.currentPageNumber=null"
812815
/>
813816
</o-field>
814817
</div>
@@ -981,6 +984,11 @@ let displayDatepicker = computed(() => {
981984
type="number"
982985
min="0"
983986
class="input focus:input-accent"
987+
:max="form.pageCount"
988+
:disabled="form.pageCount == null"
989+
icon-right="delete"
990+
icon-right-clickable
991+
@icon-right-click="form.currentPageNumber = null"
984992
/>
985993
</o-field>
986994
</div>
@@ -994,6 +1002,7 @@ let displayDatepicker = computed(() => {
9941002
v-model="form.percentRead"
9951003
:min="0"
9961004
:max="100"
1005+
:disabled="form.pageCount != null"
9971006
/>
9981007
</o-field>
9991008
</div>

src/jelu-ui/src/components/BookDetail.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,12 @@ getBook()
806806
</span>
807807
<span v-if="book?.currentPageNumber">&nbsp;(<span class="font-semibold capitalize">{{ t('labels.current') }}</span> : {{ book.currentPageNumber }})</span>
808808
</p>
809+
<p
810+
v-if="book?.book.pageCount == null && book?.currentPageNumber == null && book?.percentRead != null"
811+
class="capitalize"
812+
>
813+
{{ t('book.percent_read') }} {{ book.percentRead }} %
814+
</p>
809815
<p v-if="book?.book?.publishedDate">
810816
<span class="font-semibold capitalize">{{ t('book.published_date') }} :</span>
811817
{{ formatDateString(book.book.publishedDate) }}

src/jelu-ui/src/components/EditBookModal.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,10 @@ watch(() => publishedDate.value, (newVal, oldVal) => {
526526
v-model="userbook.book.pageCount"
527527
type="number"
528528
min="0"
529+
icon-right="delete"
530+
icon-right-clickable
529531
class="input focus:input-accent"
532+
@icon-right-click="userbook.book.pageCount = null;userbook.currentPageNumber=null"
530533
/>
531534
</o-field>
532535
</div>
@@ -677,7 +680,12 @@ watch(() => publishedDate.value, (newVal, oldVal) => {
677680
v-model="userbook.currentPageNumber"
678681
type="number"
679682
min="0"
683+
:max="userbook.book.pageCount"
684+
:disabled="userbook.book.pageCount == null"
680685
class="input focus:input-accent"
686+
icon-right="delete"
687+
icon-right-clickable
688+
@icon-right-click="userbook.currentPageNumber = null"
681689
/>
682690
</o-field>
683691
</div>
@@ -691,6 +699,7 @@ watch(() => publishedDate.value, (newVal, oldVal) => {
691699
v-model="userbook.percentRead"
692700
:min="0"
693701
:max="100"
702+
:disabled="userbook.book.pageCount != null"
694703
/>
695704
</o-field>
696705
</div>

src/jelu-ui/src/components/ReadProgressModal.vue

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ const update = () => {
3838
}
3939
4040
watch(() => [userBookUpdate.value.currentPageNumber, userBookUpdate.value.percentRead],(newVals, oldVals) => {
41-
if (props.pageCount != null) {
42-
ObjectUtils.computePages(newVals, oldVals, userBookUpdate.value, props.pageCount)
43-
}
44-
})
41+
if (props.pageCount != null) {
42+
ObjectUtils.computePages(newVals, oldVals, userBookUpdate.value, props.pageCount)
43+
}
44+
})
4545
4646
</script>
4747

@@ -64,16 +64,22 @@ watch(() => [userBookUpdate.value.currentPageNumber, userBookUpdate.value.percen
6464
v-model="userBookUpdate.percentRead"
6565
:min="0"
6666
:max="100"
67+
:disabled="pageCount != null"
6768
/>
6869
</div>
69-
<div class="field">
70+
<div
71+
v-if="pageCount != null"
72+
class="field"
73+
>
7074
<label class="label">
7175
<span class="label-text font-semibold first-letter:capitalize">{{ t('book.current_page_number') }} : </span>
7276
</label>
7377
<o-input
7478
v-model="userBookUpdate.currentPageNumber"
7579
type="number"
7680
min="0"
81+
:max="pageCount"
82+
:disabled="pageCount == null"
7783
class="input focus:input-accent"
7884
/>
7985
</div>

src/jelu-ui/src/utils/ObjectUtils.ts

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,19 @@ export class ObjectUtils {
5353
public static unwrapUserBook = (book: Book): UserBook => {
5454
const userbook = book.userbook
5555
if (userbook != undefined) {
56-
userbook.book = {
57-
...book,
58-
userbook: undefined
59-
}
60-
console.log('ub')
61-
console.log(userbook)
62-
return userbook
56+
userbook.book = {
57+
...book,
58+
userbook: undefined
59+
}
60+
console.log('ub')
61+
console.log(userbook)
62+
return userbook
6363
} else {
64-
const converted = {
65-
id: undefined,
66-
book: book
67-
} as UserBook
68-
return converted
64+
const converted = {
65+
id: undefined,
66+
book: book
67+
} as UserBook
68+
return converted
6969
}
7070
}
7171
public static swalMixin = Swal.mixin({
@@ -96,28 +96,25 @@ export class ObjectUtils {
9696
* @param target userbook, or reactive form
9797
* @param pageCount current pageCount
9898
*/
99-
public static computePages = (newVals: Array<number | null | undefined>, oldVals: Array<number | null | undefined>,
99+
public static computePages = (newVals: Array<number | string | null | undefined>, oldVals: Array<number | string | null | undefined>,
100100
target: { currentPageNumber?: number | null, percentRead?: number | null }, pageCount: number | null) => {
101+
console.log("pagecount " + pageCount)
101102
if (pageCount != null) {
102-
if (newVals[0] != null && newVals[0] != oldVals[0]) {
103-
target.percentRead = Math.min(100, ((newVals[0] * 100) / pageCount))
104-
} else if (newVals[1] != null && newVals[1] != oldVals[1]) {
105-
target.currentPageNumber = Math.trunc(Math.min(pageCount, ((newVals[1] * pageCount) / 100)))
106-
} else if (newVals.length > 2 && newVals[2] != oldVals[2]) {
107-
if (target.currentPageNumber != null && newVals[2] != null) {
108-
if (target.currentPageNumber > newVals[2]) {
109-
target.currentPageNumber = newVals[2]
110-
target.percentRead = 100
111-
} else {
112-
target.percentRead = Math.min(100, ((target.currentPageNumber * 100) / newVals[2]))
113-
}
114-
}
103+
console.log(newVals)
104+
console.log(oldVals)
105+
if (newVals[0] as number >= pageCount) {
106+
target.currentPageNumber = pageCount
107+
target.percentRead = 100
108+
} else {
109+
target.percentRead = Math.min(100, ((newVals[0] as number * 100) / pageCount))
115110
}
111+
} else {
112+
target.currentPageNumber = null
116113
}
117114
}
118-
119-
// https://stackoverflow.com/questions/39924644/es6-generate-an-array-of-numbers
120-
public static range = (start: number, end: number, step: number) => {
121-
return Array.from(Array.from(Array(Math.ceil((end - start) / step)).keys()), x => start + x * step);
122-
}
115+
116+
// https://stackoverflow.com/questions/39924644/es6-generate-an-array-of-numbers
117+
public static range = (start: number, end: number, step: number) => {
118+
return Array.from(Array.from(Array(Math.ceil((end - start) / step)).keys()), x => start + x * step);
119+
}
123120
}

src/main/kotlin/io/github/bayang/jelu/dao/BookRepository.kt

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -738,9 +738,7 @@ class BookRepository(
738738
book.isbn13?.let {
739739
updated.isbn13 = book.isbn13.trim()
740740
}
741-
book.pageCount?.let {
742-
updated.pageCount = book.pageCount
743-
}
741+
updated.pageCount = book.pageCount
744742
book.publisher?.let {
745743
updated.publisher = book.publisher.trim()
746744
}
@@ -904,19 +902,17 @@ class BookRepository(
904902
if (book.toRead != null) {
905903
found.toRead = book.toRead
906904
}
907-
if (book.percentRead != null) {
908-
found.percentRead = book.percentRead
909-
}
910-
if (book.currentPageNumber != null) {
911-
found.currentPageNumber = book.currentPageNumber
912-
val current = book.currentPageNumber
913-
val total = found.book.pageCount
914-
if (total != null) {
915-
if (current >= total) {
916-
found.percentRead = 100
917-
} else {
918-
found.percentRead = current.times(100).div(total)
919-
}
905+
found.percentRead = book.percentRead
906+
found.currentPageNumber = book.currentPageNumber
907+
val current = book.currentPageNumber
908+
val total = book.book?.pageCount
909+
if (total != null) {
910+
if (current == null) {
911+
found.percentRead = 0
912+
} else if (current >= total) {
913+
found.percentRead = 100
914+
} else {
915+
found.percentRead = current.times(100).div(total)
920916
}
921917
}
922918
if (book.book != null) {

src/test/kotlin/io/github/bayang/jelu/service/BookServiceTest.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1532,29 +1532,29 @@ class BookServiceTest(
15321532

15331533
update = UserBookUpdateDto(percentRead = null, book = null, toRead = null, currentPageNumber = 20, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
15341534
updated = bookService.update(saved.id!!, update)
1535-
Assertions.assertEquals(50, updated.percentRead)
1535+
Assertions.assertNull(updated.percentRead)
15361536
Assertions.assertEquals(update.currentPageNumber, updated.currentPageNumber)
15371537
Assertions.assertNull(updated.book.pageCount)
15381538

15391539
update = UserBookUpdateDto(percentRead = null, book = BookCreateDto(pageCount = 100), toRead = null, currentPageNumber = null, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
15401540
updated = bookService.update(saved.id!!, update)
1541-
Assertions.assertEquals(50, updated.percentRead)
1542-
Assertions.assertEquals(20, updated.currentPageNumber)
1541+
Assertions.assertEquals(0, updated.percentRead)
1542+
Assertions.assertNull(updated.currentPageNumber)
15431543
Assertions.assertEquals(update.book?.pageCount, updated.book.pageCount)
15441544

1545-
update = UserBookUpdateDto(percentRead = null, book = null, toRead = null, currentPageNumber = 40, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
1545+
update = UserBookUpdateDto(percentRead = null, book = BookCreateDto(pageCount = 100), toRead = null, currentPageNumber = 40, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
15461546
updated = bookService.update(saved.id!!, update)
15471547
Assertions.assertEquals(40, updated.percentRead)
15481548
Assertions.assertEquals(40, updated.currentPageNumber)
15491549
Assertions.assertEquals(100, updated.book.pageCount)
15501550

1551-
update = UserBookUpdateDto(percentRead = null, book = null, toRead = null, currentPageNumber = 100, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
1551+
update = UserBookUpdateDto(percentRead = null, book = BookCreateDto(pageCount = 100), toRead = null, currentPageNumber = 100, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
15521552
updated = bookService.update(saved.id!!, update)
15531553
Assertions.assertEquals(100, updated.percentRead)
15541554
Assertions.assertEquals(100, updated.currentPageNumber)
15551555
Assertions.assertEquals(100, updated.book.pageCount)
15561556

1557-
update = UserBookUpdateDto(percentRead = null, book = null, toRead = null, currentPageNumber = 0, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
1557+
update = UserBookUpdateDto(percentRead = null, book = BookCreateDto(pageCount = 100), toRead = null, currentPageNumber = 0, lastReadingEvent = null, owned = null, personalNotes = null, borrowed = null)
15581558
updated = bookService.update(saved.id!!, update)
15591559
Assertions.assertEquals(0, updated.percentRead)
15601560
Assertions.assertEquals(0, updated.currentPageNumber)
@@ -1777,7 +1777,7 @@ class BookServiceTest(
17771777
Assertions.assertEquals(createBook.isbn13?.trim(), saved.book.isbn13)
17781778
Assertions.assertEquals("This is a test summary with a newline", saved.book.summary)
17791779
Assertions.assertEquals(createBook.publisher, saved.book.publisher)
1780-
Assertions.assertEquals(createBook.pageCount, saved.book.pageCount)
1780+
Assertions.assertNull(saved.book.pageCount)
17811781
Assertions.assertEquals(createBook.goodreadsId, saved.book.goodreadsId)
17821782
Assertions.assertNull(saved.book.librarythingId)
17831783
Assertions.assertEquals(createUserBookDto.owned, saved.owned)
@@ -1821,7 +1821,7 @@ class BookServiceTest(
18211821
Assertions.assertEquals(createBook.isbn13?.trim(), saved.book.isbn13)
18221822
Assertions.assertEquals("This is a test summary with a newline", saved.book.summary)
18231823
Assertions.assertEquals(createBook.publisher, saved.book.publisher)
1824-
Assertions.assertEquals(createBook.pageCount, saved.book.pageCount)
1824+
Assertions.assertNull(saved.book.pageCount)
18251825
Assertions.assertEquals(createBook.goodreadsId, saved.book.goodreadsId)
18261826
Assertions.assertNull(saved.book.librarythingId)
18271827
Assertions.assertEquals(createUserBookDto.owned, saved.owned)
@@ -1866,7 +1866,7 @@ class BookServiceTest(
18661866
Assertions.assertEquals(createBook.isbn13?.trim(), saved.book.isbn13)
18671867
Assertions.assertEquals("This is a test summary with a newline", saved.book.summary)
18681868
Assertions.assertEquals(createBook.publisher, saved.book.publisher)
1869-
Assertions.assertEquals(createBook.pageCount, saved.book.pageCount)
1869+
Assertions.assertNull(saved.book.pageCount)
18701870
Assertions.assertEquals(createBook.goodreadsId, saved.book.goodreadsId)
18711871
Assertions.assertNull(saved.book.librarythingId)
18721872
Assertions.assertEquals(createUserBookDto.owned, saved.owned)
@@ -2076,7 +2076,7 @@ class BookServiceTest(
20762076
Assertions.assertEquals("", updated.book.librarythingId)
20772077
Assertions.assertEquals(updater.owned, updated.owned)
20782078
Assertions.assertEquals(saved.toRead, updated.toRead)
2079-
Assertions.assertEquals(updater.percentRead, updated.percentRead)
2079+
Assertions.assertEquals(0, updated.percentRead)
20802080
Assertions.assertEquals(updater.personalNotes, updated.personalNotes)
20812081
Assertions.assertEquals(updater.borrowed, updated.borrowed)
20822082
Assertions.assertNotNull(updated.creationDate)

0 commit comments

Comments
 (0)