Skip to content

Commit

Permalink
validate creator. #192
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Fenner committed Apr 15, 2019
1 parent 8c2166b commit 20ad15c
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 28 deletions.
23 changes: 4 additions & 19 deletions app/components/doi-creator.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,11 @@
import Component from '@ember/component';
import { validator, buildValidations } from 'ember-cp-validations';
import { computed } from '@ember/object';
import { isArray } from '@ember/array';

const Validations = buildValidations({
'fragment.name': [
validator('presence', {
presence: true,
isWarning: computed('model.model.state', 'model.model.prefix', function () {
return (this.get('model.model.state') === 'draft' || this.get('model.model.prefix') === '10.5072');
}),
disabled: computed('model.model.mode', function () {
return !["new", "edit"].includes(this.get('model.model.mode'));
})
})
]
});

export default Component.extend(Validations, {
errorMessage: computed('validations.messages', function () {
if (this.get('validations.messages').length > 0) {
return this.get('validations.messages').get('firstObject');
export default Component.extend({
errorMessage: computed('fragment.validations.messages', function () {
if (this.get('fragment.validations.messages').length > 0) {
return this.get('fragment.validations.messages').get('firstObject');
} else {
return null;
}
Expand Down
18 changes: 17 additions & 1 deletion app/models/creator.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,24 @@
import attr from 'ember-data/attr';
import Fragment from 'ember-data-model-fragments/fragment';
import { fragmentArray, array } from 'ember-data-model-fragments/attributes';
import { validator, buildValidations } from 'ember-cp-validations';
import { computed } from '@ember/object';

export default Fragment.extend({
const Validations = buildValidations({
'name': [
validator('presence', {
presence: true,
isWarning: computed('model.model.state', 'model.model.prefix', function () {
return (this.get('model.model.state') === 'draft' || this.get('model.model.prefix') === '10.5072');
}),
disabled: computed('model.model.mode', function () {
return !["new", "edit"].includes(this.get('model.model.mode'));
})
})
]
});

export default Fragment.extend(Validations, {
name: attr('string'),
givenName: attr('string', { defaultValue: null }),
familyName: attr('string', { defaultValue: null }),
Expand Down
16 changes: 9 additions & 7 deletions app/templates/components/doi-creator.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -38,22 +38,24 @@
<label for="name" class="subtitle">Name{{if showPersonal ' (from Given Name and Family Name)'}}</label>
</div>
<div class="input-group">
{{input type="text" class="form-control creator-field" value=fragment.name oninput=(action "updateName") onblur=(action "validateName") readonly=isReadonly}}
{{input type="text" class="form-control creator-field no-error" value=fragment.name oninput=(action "updateName") readonly=isReadonly}}
<span class="input-group-btn">
{{#bs-button outline=true onClick=(action "deleteCreator" index)}}{{fa-icon "trash"}}{{/bs-button}}
</span>
</div>

<div class="help-block help-block-fragment no-error">The main {{if showPersonal 'researchers' 'organizations'}} involved in producing the data, or the authors of the publication, in priority order.</div>
{{else}}
<div>
<label for="name" class="subtitle">Name{{if showPersonal ' (from Given Name and Family Name)'}}</label>
</div>
{{input type="text" class="form-control creator-field" value=fragment.name oninput=(action "updateName") onblur=(action "validateName") readonly=isReadonly}}
{{/if}}

{{#if errorMessage}}
<div class="help-block help-block-fragment has-error">{{errorMessage}}</div>
{{else}}
<div class="help-block help-block-fragment">The main {{if showPersonal 'researchers' 'organizations'}} involved in producing the data, or the authors of the publication, in priority order.</div>
{{#if errorMessage}}
<div class="help-block help-block-fragment has-error">{{errorMessage}}</div>
{{else}}
<div class="help-block help-block-fragment">The main {{if showPersonal 'researchers' 'organizations'}} involved in producing the data, or the authors of the publication, in priority order.</div>
{{/if}}
{{/if}}

{{#if showPersonal}}
Expand Down
6 changes: 5 additions & 1 deletion app/templates/components/doi-creators.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@
<label class="control-label col-md-3">Creator(s)</label>
<div class="col-md-9">
{{#each model.creators as |creator index|}}
{{doi-creator model=model fragment=creator form=form index=index setIsValidating=(action "setIsValidating") setHasErrors=(action "setHasErrors")}}
{{#if (gt index 0)}}
{{doi-creator model=model fragment=creator form=form index=index}}
{{else}}
{{doi-creator model=model fragment=creator form=form index=index setIsValidating=(action "setIsValidating") setHasErrors=(action "setHasErrors")}}
{{/if}}
{{/each}}

{{#if (lte model.creators.length 24)}}
Expand Down

0 comments on commit 20ad15c

Please sign in to comment.