@@ -45,8 +45,30 @@ pkp.Vue.component('data-statement-form', {
4545 } , 2500 ) ;
4646 } ,
4747 watch : {
48- flagMounted ( newVal , oldVal ) {
48+ flagMounted ( newVal , oldVal ) {
4949 this . updateDataSubmittedField ( ) ;
50+ } ,
51+ fields ( newVal , oldVal ) {
52+ const getField = ( name ) => newVal . find ( field => field . name === name ) ;
53+
54+ const dataStatementTypesField = getField ( 'dataStatementTypes' ) ;
55+ if ( ! dataStatementTypesField || ! dataStatementTypesField . value ) {
56+ return ;
57+ }
58+
59+ const fieldsToUpdate = [
60+ { name : 'dataStatementReason' , const : pkp . const . DATA_STATEMENT_TYPE_PUBLICLY_UNAVAILABLE }
61+ ] ;
62+
63+ fieldsToUpdate . forEach ( ( { name, const : constValue } ) => {
64+ const field = getField ( name ) ;
65+ if ( field ) {
66+ field . isRequired = dataStatementTypesField . value . includes ( constValue ) ;
67+ if ( ! field . isRequired && this . errors [ field . name ] ) {
68+ this . $delete ( this . errors , field . name ) ;
69+ }
70+ }
71+ } ) ;
5072 }
5173 }
5274} ) ;
@@ -55,7 +77,7 @@ function addEventListeners() {
5577 let checkRepoAvailable = document . querySelectorAll ( 'input[name="dataStatementTypes"][value="' + pkp . const . DATA_STATEMENT_TYPE_REPO_AVAILABLE + '"]' ) [ 0 ] ;
5678 let checkPublicUnavailable = document . querySelectorAll ( 'input[name="dataStatementTypes"][value="' + pkp . const . DATA_STATEMENT_TYPE_PUBLICLY_UNAVAILABLE + '"]' ) [ 0 ] ;
5779 let checkDataverseSubmitted = document . querySelectorAll ( 'input[name="dataStatementTypes"][value="' + pkp . const . DATA_STATEMENT_TYPE_DATAVERSE_SUBMITTED + '"]' ) [ 0 ] ;
58-
80+
5981 let dataStatementUrlsField = document . getElementById ( 'dataStatement-dataStatementUrls-description' ) . parentNode ;
6082 let dataStatementReasonField = document . querySelectorAll ( '[id^="dataStatement-dataStatementReason-description"' ) [ 0 ] . parentNode ;
6183 let currentUrl = window . location . href ;
@@ -78,7 +100,7 @@ function addEventListeners() {
78100 ) {
79101 let panelSections = document . getElementsByClassName ( 'panelSection' ) ;
80102 let datasetFilesPanel = document . getElementById ( 'datasetFiles' ) . parentNode . parentNode ;
81- let datasetSubjectField = document . getElementById ( 'datasetMetadata-datasetSubject-control' ) ;
103+ let datasetSubjectField = document . getElementById ( 'datasetMetadata-datasetSubject-control' ) ;
82104 let datasetMetadataPanel = null ;
83105
84106 for ( let panelSection of panelSections ) {
@@ -87,7 +109,7 @@ function addEventListeners() {
87109 break ;
88110 }
89111 }
90-
112+
91113 checkDataverseSubmitted . addEventListener ( 'change' , function ( ) {
92114 if ( this . checked ) {
93115 datasetFilesPanel . style . display = '' ;
@@ -97,7 +119,7 @@ function addEventListeners() {
97119 datasetMetadataPanel . style . display = 'none' ;
98120 }
99121 } ) ;
100-
122+
101123 datasetFilesPanel . style . display = ( checkDataverseSubmitted . checked ? '' : 'none' ) ;
102124 datasetMetadataPanel . style . display = ( checkDataverseSubmitted . checked ? '' : 'none' ) ;
103125 }
0 commit comments