Skip to content

Commit 513a249

Browse files
committed
now using custom matchers; switched to filtering queries, not errors for consistency
1 parent 11285fc commit 513a249

4 files changed

Lines changed: 36 additions & 9 deletions

File tree

src/components/AuthorCardViewing.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import { computed, defineComponent, onUpdated, PropType } from 'vue'
4747
import { AuthorType } from 'src/types'
4848
import { useStepperErrors } from 'src/store/stepper-errors'
4949
import { useValidation } from 'src/store/validation'
50-
import { byError, byDuplicateAuthor, emailQueries, orcidQueries } from 'src/error-filtering'
50+
import { byError, duplicateAuthorMatcher, duplicateAuthorQueries, emailQueries, orcidQueries } from 'src/error-filtering'
5151
5252
export default defineComponent({
5353
name: 'AuthorCardViewing',
@@ -82,7 +82,9 @@ export default defineComponent({
8282
.map(query => query.replace.message)
8383
})
8484
const duplicateErrors = computed(() => {
85-
return errors.value.filter(byDuplicateAuthor(props.index)).map(() => 'This author is a duplicate.')
85+
return duplicateAuthorQueries
86+
.filter(byError(errors.value, duplicateAuthorMatcher(props.index)))
87+
.map(query => query.replace.message)
8688
})
8789
const authorErrors = computed(() => [...emailErrors.value, ...orcidErrors.value, ...duplicateErrors.value])
8890
return {

src/components/IdentifierCardViewing.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
import { computed, defineComponent, PropType } from 'vue'
4646
import { IdentifierType } from 'src/types'
4747
import { useValidation } from 'src/store/validation'
48-
import { byError, byDuplicateIdentifier, identifierValueQueries } from 'src/error-filtering'
48+
import { byError, duplicateIdentifierMatcher, duplicateIdentifierQueries, identifierValueQueries } from 'src/error-filtering'
4949
5050
export default defineComponent({
5151
name: 'IdentifierCardViewing',
@@ -71,7 +71,9 @@ export default defineComponent({
7171
.map(query => query.replace.message)
7272
})
7373
const duplicateErrors = computed(() => {
74-
return errors.value.filter(byDuplicateIdentifier(props.index)).map(() => 'This identifier is a duplicate.')
74+
return duplicateIdentifierQueries
75+
.filter(byError(errors.value, duplicateIdentifierMatcher(props.index)))
76+
.map(query => query.replace.message)
7577
})
7678
const identifierErrors = computed(() => [...identifierValueErrors.value, ...duplicateErrors.value])
7779
return {

src/components/Keyword.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
<script lang="ts">
4747
import { computed, defineComponent } from 'vue'
4848
import { useValidation } from 'src/store/validation'
49-
import { byError, byDuplicateKeyword, keywordQueries } from 'src/error-filtering'
49+
import { byError, duplicateKeywordMatcher, duplicateKeywordQueries, keywordQueries } from 'src/error-filtering'
5050
5151
export default defineComponent({
5252
name: 'Keyword',
@@ -72,7 +72,9 @@ export default defineComponent({
7272
.map(query => query.replace.message)
7373
})
7474
const duplicateErrors = computed(() => {
75-
return errors.value.filter(byDuplicateKeyword(props.index)).map(() => 'This keyword is a duplicate.')
75+
return duplicateKeywordQueries
76+
.filter(byError(errors.value, duplicateKeywordMatcher(props.index)))
77+
.map(query => query.replace.message)
7678
})
7779
const validationErrors = computed(() => [...keywordErrors.value, ...duplicateErrors.value])
7880
return {

src/error-filtering.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const defaultMatcher: Comparator = (error, query) => {
3030
return true
3131
}
3232

33-
export const byDuplicateAuthor = (index: number) => {
33+
export const duplicateAuthorMatcher = (index: number) => {
3434
return (error: ErrorObject) => {
3535
if (error.instancePath !== '/authors') {
3636
return false
@@ -45,7 +45,7 @@ export const byDuplicateAuthor = (index: number) => {
4545
}
4646
}
4747

48-
export const byDuplicateIdentifier = (index: number) => {
48+
export const duplicateIdentifierMatcher = (index: number) => {
4949
return (error: ErrorObject) => {
5050
if (error.instancePath !== '/identifiers') {
5151
return false
@@ -60,7 +60,7 @@ export const byDuplicateIdentifier = (index: number) => {
6060
}
6161
}
6262

63-
export const byDuplicateKeyword = (index: number) => {
63+
export const duplicateKeywordMatcher = (index: number) => {
6464
return (error: ErrorObject) => {
6565
if (error.instancePath !== '/keywords') {
6666
return false
@@ -110,6 +110,27 @@ export const dateReleasedQueries: ErrorQuery[] = [{
110110
}
111111
}]
112112

113+
export const duplicateAuthorQueries: ErrorQuery[] = [{
114+
find: {},
115+
replace: {
116+
message: 'This author is a duplicate.'
117+
}
118+
}]
119+
120+
export const duplicateIdentifierQueries: ErrorQuery[] = [{
121+
find: {},
122+
replace: {
123+
message: 'This identifier is a duplicate.'
124+
}
125+
}]
126+
127+
export const duplicateKeywordQueries: ErrorQuery[] = [{
128+
find: {},
129+
replace: {
130+
message: 'This keyword is a duplicate.'
131+
}
132+
}]
133+
113134
export const emailQueries = (index: number) => {
114135
return [{
115136
find: {

0 commit comments

Comments
 (0)