Skip to content

Commit a88cc13

Browse files
authored
Merge pull request #356 from citation-file-format/344-related-resources-validation
implement validation for related resources screen
2 parents 283786e + 5e3202a commit a88cc13

3 files changed

Lines changed: 36 additions & 24 deletions

File tree

src/components/ScreenRelatedResources.vue

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
outlined
2020
standout
2121
v-bind:model-value="repositoryCode"
22-
v-bind:rules="[validateRepositoryCode]"
22+
v-bind:error="repositoryCodeError.hasError"
23+
v-bind:error-message="repositoryCodeError.messages.join(', ')"
2324
v-on:update:modelValue="setRepositoryCode"
2425
/>
2526

@@ -32,8 +33,8 @@
3233
outlined
3334
standout
3435
v-bind:model-value="url"
35-
v-bind:error="false"
36-
v-bind:error-message="''"
36+
v-bind:error="urlError.hasError"
37+
v-bind:error-message="urlError.messages.join(', ')"
3738
v-on:update:modelValue="setUrl"
3839
/>
3940

@@ -46,8 +47,8 @@
4647
outlined
4748
standout
4849
v-bind:model-value="repository"
49-
v-bind:error="false"
50-
v-bind:error-message="''"
50+
v-bind:error="repositoryError.hasError"
51+
v-bind:error-message="repositoryError.messages.join(', ')"
5152
v-on:update:modelValue="setRepository"
5253
/>
5354

@@ -60,23 +61,10 @@
6061
outlined
6162
standout
6263
v-bind:model-value="repositoryArtifact"
63-
v-bind:error="false"
64-
v-bind:error-message="''"
64+
v-bind:error="repositoryArtifactError.hasError"
65+
v-bind:error-message="repositoryArtifactError.messages.join(', ')"
6566
v-on:update:modelValue="setRepositoryArtifact"
6667
/>
67-
<p class="question">
68-
The URL of the work in a source code repository
69-
</p>
70-
<q-input
71-
bg-color="white"
72-
label="repository-code"
73-
outlined
74-
standout
75-
v-bind:model-value="repositoryCode"
76-
v-bind:error="false"
77-
v-bind:error-message="''"
78-
v-on:update:modelValue="setRepositoryCode"
79-
/>
8068
</div>
8169

8270
<div id="form-button-bar">
@@ -88,8 +76,9 @@
8876
<script lang="ts">
8977
import Stepper from 'components/Stepper.vue'
9078
import StepperActions from 'components/StepperActions.vue'
91-
import { defineComponent } from 'vue'
79+
import { computed, defineComponent } from 'vue'
9280
import { useCff } from '../store/cff'
81+
import { getMyErrors } from 'src/store/validator'
9382
9483
export default defineComponent({
9584
name: 'ScreenRelatedResources',
@@ -110,7 +99,11 @@ export default defineComponent({
11099
setRepository,
111100
setRepositoryArtifact,
112101
setRepositoryCode,
113-
setUrl
102+
setUrl,
103+
repositoryError: computed(() => getMyErrors('/repository')),
104+
repositoryArtifactError: computed(() => getMyErrors('/repository-artifact')),
105+
repositoryCodeError: computed(() => getMyErrors('/repository-code')),
106+
urlError: computed(() => getMyErrors('/url'))
114107
}
115108
}
116109
})

src/components/Stepper.vue

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,18 @@
5757
/>
5858

5959
<q-step
60-
color="primary"
60+
error-color="negative"
61+
error-icon="warning"
6162
icon=""
6263
name="related-resources"
6364
title="Related resources"
65+
v-bind:active-icon="isValidScreenRelatedResources.hasError ? 'warning' : 'edit'"
66+
v-bind:color="isValidScreenRelatedResources.hasError ? 'negative' : 'primary'"
67+
v-bind:error="isValidScreenRelatedResources.hasError"
6468
v-bind:order="4"
6569
v-if="showAdvanced"
6670
v-on:click="setStepName('related-resources')"
6771
/>
68-
6972
<q-step
7073
color="primary"
7174
icon=""
@@ -129,6 +132,7 @@ import { getMyErrors } from 'src/store/validator'
129132
import { computed } from 'vue'
130133
import { useCff } from 'src/store/cff'
131134
import { authorsErrors } from 'src/authors-errors'
135+
import { relatedResourcesErrors } from 'src/related-resources-errors'
132136
133137
export default {
134138
setup () {
@@ -138,6 +142,7 @@ export default {
138142
isValidScreenAuthors: computed(() => authorsErrors(authors.value)),
139143
isValidScreenStart: computed(() => getMyErrors('', ['message', 'title'])),
140144
isValidScreenVersionSpecific: computed(() => getMyErrors('/date-released')),
145+
isValidScreenRelatedResources: computed(relatedResourcesErrors),
141146
setStepName,
142147
showAdvanced,
143148
stepName

src/related-resources-errors.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { getMyErrors } from 'src/store/validator'
2+
3+
export const relatedResourcesErrors = () => {
4+
const errors = [
5+
getMyErrors('/repository'),
6+
getMyErrors('/repository-artifact'),
7+
getMyErrors('/repository-code'),
8+
getMyErrors('/url')
9+
]
10+
return {
11+
hasError: errors.some(result => result.hasError),
12+
messages: errors.map(result => result.messages.join(', '))
13+
}
14+
}

0 commit comments

Comments
 (0)