Skip to content

Commit b8671d5

Browse files
authored
Merge pull request datacite#949 from datacite/pb646-software-field
Make software field for create/update repository required.
2 parents f98ed93 + 7992d60 commit b8671d5

File tree

9 files changed

+596
-553
lines changed

9 files changed

+596
-553
lines changed

app/controllers/providers/show/repositories/new.js

Lines changed: 238 additions & 231 deletions
Large diffs are not rendered by default.

app/controllers/repositories/show/edit.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default class EditController extends Controller {
2929
re3data = null;
3030
softwareList = softwareList;
3131
softwares = softwareList;
32+
isSoftwareFieldActive = false;
3233
clientTypeList = clientTypeList;
3334
clientTypes = clientTypeList;
3435

@@ -185,4 +186,10 @@ export default class EditController extends Controller {
185186
this.model.rollbackAttributes();
186187
this.router.transitionTo('repositories.show', this.model);
187188
}
189+
190+
// This helps to manage the validation state of the software field. The field is required, but we don't want to show it as invalid until the user has interacted with it.
191+
@action
192+
activateSoftwareField() {
193+
return this.set('isSoftwareFieldActive', true);
194+
}
188195
}

app/models/repository.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ const Validations = buildValidations({
156156
allowBlank: true,
157157
message: 'ISSN (print) is in the wrong format.'
158158
})
159+
],
160+
software: [
161+
validator('presence', true)
159162
]
160163
});
161164

app/routes/providers/show/repositories/new.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,22 @@ export default class NewRoute extends Route {
3737
})
3838
});
3939
}
40+
41+
setupController(controller, model) {
42+
// Call _super to maintain default behavior (controller.set('model', model))
43+
super.setupController(controller, model);
44+
45+
// Custom setup: Set additional properties
46+
controller.set('isSoftwareFieldActive', false);
47+
}
48+
49+
resetController(controller, isExiting, transition) {
50+
// If the user is exiting the route entirely, reset the transient properties
51+
if (isExiting) {
52+
controller.set('isSoftwareFieldActive', false);
53+
}
54+
55+
// Calls the default resetController behavior (important for query params)
56+
super.resetController(controller, isExiting, transition);
57+
}
4058
}

app/routes/repositories/show/edit.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,16 @@ export default class EditRoute extends Route {
3939

4040
controller.set('clientTypeList', filteredClientTypeList);
4141
controller.set('clientTypes', filteredClientTypeList);
42+
controller.set('isSoftwareFieldActive', false);
43+
}
44+
45+
resetController(controller, isExiting, transition) {
46+
// If the user is exiting the route entirely, reset the transient properties
47+
if (isExiting) {
48+
controller.set('isSoftwareFieldActive', false);
49+
}
50+
51+
// Calls the default resetController behavior (important for query params)
52+
super.resetController(controller, isExiting, transition);
4253
}
4354
}

app/styles/local.css

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@ div[doi-format].power-select-fragment .ember-basic-dropdown-trigger div.ember-vi
149149
/* VALIDATION - FORM-GROUPS */
150150

151151
.form-group .form-text {
152-
font-size: 16px;
153152
display: block;
154153
margin-top: 5px;
155154
margin-bottom: 10px;
@@ -557,7 +556,6 @@ div[doi-publisher] > div {
557556
.form-group input.is-valid + div.form-text {
558557
color: #2ecc71;
559558
}
560-
*/
561559

562560
/* VALIDATION - text areas (Mostly in doi form upload.) */
563561

app/templates/providers/show/repositories/new.hbs

Lines changed: 158 additions & 159 deletions
Large diffs are not rendered by default.

app/templates/repositories/show/edit.hbs

Lines changed: 160 additions & 160 deletions
Large diffs are not rendered by default.

tests/integration/helpers/repository-form-errors-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ module('Integration | Helper | repository-form-errors', function (hooks) {
1313

1414
await render(hbs`{{repository-form-errors this.model}}`);
1515

16-
assert.dom(this.element).hasText('repository ID, confirm repository ID');
16+
assert.dom(this.element).hasText('repository ID, confirm repository ID, software');
1717
});
1818
});

0 commit comments

Comments
 (0)