@@ -2,6 +2,7 @@ import React, {Component} from 'react';
22import PropTypes from 'prop-types' ;
33import Loader from 'jsx/Loader' ;
44import FilterableDataTable from 'jsx/FilterableDataTable' ;
5+ import { withTranslation } from 'react-i18next' ;
56
67/**
78 * Behavioural Feedback Component.
@@ -80,83 +81,80 @@ class BehaviouralFeedback extends Component {
8081 * @return {* } a formatted table cell for a given column
8182 */
8283 formatColumn ( column , cell , rowData , rowHeaders ) {
83- let reactElement ;
84- switch ( column ) {
85- case 'PSCID' :
86- reactElement = (
84+ const { t} = this . props ;
85+ const labelPSCID = t ( 'PSCID' , { ns : 'loris' } ) ;
86+ const labelDCCID = t ( 'DCCID' , { ns : 'loris' } ) ;
87+ const labelBVL = t ( 'Feedback Level' , { ns : 'behavioural_qc' } ) ;
88+ const labelInstrument = t ( 'Instrument' , { ns : 'loris' , count : 1 } ) ;
89+ const labelTestName = t ( 'Test Name' , { ns : 'behavioural_qc' } ) ;
90+ const labelVisit = t ( 'Visit' , { ns : 'loris' } ) ;
91+
92+ // PSCID column (match English or translated)
93+ if ( column === 'PSCID' || column === labelPSCID ) {
94+ return (
8795 < td >
88- < a href = { this . props . baseURL +
89- '/' +
90- rowData [ 'DCCID' ]
91- } >
92- { rowData [ 'PSCID' ] }
96+ < a
97+ href = { this . props . baseURL + '/' + rowData [ labelDCCID ] }
98+ >
99+ { rowData [ labelPSCID ] }
93100 </ a >
94101 </ td >
95102 ) ;
96- break ;
97- case 'DCCID' :
98- reactElement = (
103+ }
104+
105+ // DCCID column
106+ if ( column === 'DCCID' || column === labelDCCID ) {
107+ return (
99108 < td >
100- < a href = { this . props . baseURL +
101- '/' +
102- rowData [ 'DCCID' ]
103- } >
104- { rowData [ 'DCCID' ] }
109+ < a href = { this . props . baseURL + '/' + rowData [ labelDCCID ] } >
110+ { rowData [ labelDCCID ] }
105111 </ a >
106112 </ td >
107113 ) ;
108- break ;
109- case 'Feedback Level' :
114+ }
115+
116+ // Feedback Level column — build link depending on row data
117+ if ( column === 'Feedback Level' || column === labelBVL ) {
110118 let bvlLink = '' ;
111119 let bvlLevel = '' ;
112- if ( rowData [ 'Instrument' ] ) {
120+ if ( rowData [ labelInstrument ] ) {
113121 bvlLink = this . props . baseURL +
114- '/instruments/' +
115- rowData [ 'Test Name' ] +
116- '/?candID=' +
117- rowData [ 'DCCID' ] +
118- '&sessionID=' +
119- rowData [ 'sessionID' ] +
120- '&commentID=' +
121- rowData [ 'commentID' ] ;
122- // Open feedback panel
123- bvlLink += '&showFeedback=true' ;
124- bvlLevel = 'Instrument : ' + rowData [ 'Instrument' ] ;
125- } else if ( rowData [ 'Visit' ] ) {
122+ '/instruments/' +
123+ rowData [ labelTestName ] +
124+ '/?candID=' + rowData [ labelDCCID ] +
125+ '&sessionID=' + rowData [ 'sessionID' ] +
126+ '&commentID=' + rowData [ 'commentID' ] +
127+ '&showFeedback=true' ;
128+ bvlLevel = labelInstrument + ' : '
129+ + rowData [ labelInstrument ] ;
130+ } else if ( rowData [ labelVisit ] ) {
126131 bvlLink = this . props . baseURL +
127- '/instrument_list/' +
128- '?candID=' +
129- rowData [ 'DCCID' ] +
130- '&sessionID=' +
131- rowData [ 'sessionID' ] ;
132- // Open feedback panel
133- bvlLink += '&showFeedback=true' ;
134- bvlLevel = 'Visit : ' + rowData [ 'Visit' ] ;
132+ '/instrument_list/?candID=' + rowData [ labelDCCID ] +
133+ '&sessionID=' + rowData [ 'sessionID' ] +
134+ '&showFeedback=true' ;
135+ bvlLevel = labelVisit + ' : '
136+ + rowData [ labelVisit ] ;
135137 } else {
136- bvlLink = this . props . baseURL +
137- '/' + rowData [ 'DCCID' ] ;
138- // Open feedback panel
139- bvlLink += '/?showFeedback=true' ;
140- bvlLevel = 'Profile : ' + rowData [ 'PSCID' ] ;
138+ bvlLink = this . props . baseURL + '/' + rowData [ labelDCCID ]
139+ + '/?showFeedback=true' ;
140+ bvlLevel = t ( 'Profile' , { ns : 'behavioural_qc' } ) + ' : '
141+ + rowData [ labelPSCID ] ;
141142 }
142- reactElement = (
143+ return (
143144 < td >
144145 < a href = { bvlLink } > { bvlLevel } </ a >
145146 </ td >
146147 ) ;
147- break ;
148- default :
149- reactElement = (
150- < td > { cell } </ td >
151- ) ;
152148 }
153- return reactElement ;
149+
150+ return < td > { cell } </ td > ;
154151 }
155152
156153 /**
157154 * @return {JSX } the feedback form to render.
158155 */
159156 render ( ) {
157+ const { t} = this . props ;
160158 // Waiting for async data to load.
161159 if ( ! this . state . isLoaded ) {
162160 return < Loader /> ;
@@ -167,7 +165,7 @@ class BehaviouralFeedback extends Component {
167165 // The fields configured for display/hide.
168166 let fields = [
169167 {
170- label : 'Instrument' ,
168+ label : t ( 'Instrument' , { ns : 'loris' , count : 1 } ) ,
171169 show : false ,
172170 filter : {
173171 name : 'Instrument' ,
@@ -179,23 +177,23 @@ class BehaviouralFeedback extends Component {
179177 } ,
180178 } ,
181179 {
182- label : 'DCCID' ,
180+ label : t ( 'DCCID' , { ns : 'loris' } ) ,
183181 show : true ,
184182 filter : {
185183 name : 'DCCID' ,
186184 type : 'text' ,
187185 } ,
188186 } ,
189187 {
190- label : 'PSCID' ,
188+ label : t ( 'PSCID' , { ns : 'loris' } ) ,
191189 show : true ,
192190 filter : {
193191 name : 'PSCID' ,
194192 type : 'text' ,
195193 } ,
196194 } ,
197195 {
198- label : 'Visit' ,
196+ label : t ( 'Visit' , { ns : 'loris' } ) ,
199197 show : false ,
200198 filter : {
201199 name : 'Visit' ,
@@ -204,7 +202,7 @@ class BehaviouralFeedback extends Component {
204202 } ,
205203 } ,
206204 {
207- label : 'Project' ,
205+ label : t ( 'Project' , { ns : 'loris' , count : 1 } ) ,
208206 show : false ,
209207 filter : {
210208 name : 'Project' ,
@@ -213,7 +211,7 @@ class BehaviouralFeedback extends Component {
213211 } ,
214212 } ,
215213 {
216- label : 'Cohort' ,
214+ label : t ( 'Cohort' , { ns : 'loris' , count : 1 } ) ,
217215 show : false ,
218216 filter : {
219217 name : 'Cohort' ,
@@ -222,7 +220,7 @@ class BehaviouralFeedback extends Component {
222220 } ,
223221 } ,
224222 {
225- label : 'Site' ,
223+ label : t ( 'Site' , { ns : 'loris' , count : 1 } ) ,
226224 show : false ,
227225 filter : {
228226 name : 'Site' ,
@@ -243,19 +241,19 @@ class BehaviouralFeedback extends Component {
243241 show : false ,
244242 } ,
245243 {
246- label : 'Feedback Level' ,
244+ label : t ( 'Feedback Level' , { ns : 'behavioural_qc' } ) ,
247245 show : true ,
248246 } ,
249247 {
250- label : 'Test Name' ,
248+ label : t ( 'Test Name' , { ns : 'behavioural_qc' } ) ,
251249 show : false ,
252250 } ,
253251 {
254- label : 'Field Name' ,
252+ label : t ( 'Field Name' , { ns : 'behavioural_qc' } ) ,
255253 show : false ,
256254 } ,
257255 {
258- label : 'Feedback Status' ,
256+ label : t ( 'Feedback Status' , { ns : 'behavioural_qc' } ) ,
259257 show : true ,
260258 } ,
261259 ] ;
@@ -280,6 +278,8 @@ BehaviouralFeedback.propTypes = {
280278 display : PropTypes . bool ,
281279 data : PropTypes . object ,
282280 baseURL : PropTypes . string . isRequired ,
281+ t : PropTypes . func ,
283282} ;
284283
285- export default BehaviouralFeedback ;
284+ export default withTranslation (
285+ [ 'behavioural_qc' , 'loris' ] ) ( BehaviouralFeedback ) ;
0 commit comments