@@ -14,6 +14,7 @@ import GeoPointEditor from 'components/GeoPointEditor/GeoPointEditor.react';
14
14
import FileEditor from 'components/FileEditor/FileEditor.react' ;
15
15
import ObjectPickerDialog from 'dashboard/Data/Browser/ObjectPickerDialog.react' ;
16
16
import styles from 'dashboard/Data/Browser/Browser.scss' ;
17
+ import getFileName from 'lib/getFileName' ;
17
18
18
19
export default class EditRowDialog extends React . Component {
19
20
constructor ( props ) {
@@ -23,14 +24,16 @@ export default class EditRowDialog extends React.Component {
23
24
const { currentObject, openObjectPickers, expandedTextAreas } = this . initializeState (
24
25
selectedObject
25
26
) ;
26
- this . state = { currentObject, openObjectPickers, expandedTextAreas } ;
27
+ this . state = { currentObject, openObjectPickers, expandedTextAreas, showFileEditor : false } ;
27
28
28
29
this . updateCurrentObject = this . updateCurrentObject . bind ( this ) ;
29
30
this . handleChange = this . handleChange . bind ( this ) ;
30
31
this . openAcl = this . openAcl . bind ( this ) ;
31
32
this . openPointer = this . openPointer . bind ( this ) ;
32
33
this . toggleObjectPicker = this . toggleObjectPicker . bind ( this ) ;
33
34
this . openRelation = this . openRelation . bind ( this ) ;
35
+ this . openFileEditor = this . openFileEditor . bind ( this ) ;
36
+ this . hideFileEditor = this . hideFileEditor . bind ( this ) ;
34
37
}
35
38
36
39
componentWillReceiveProps ( props ) {
@@ -217,6 +220,18 @@ export default class EditRowDialog extends React.Component {
217
220
this . setState ( { expandedTextAreas } ) ;
218
221
}
219
222
223
+ openFileEditor ( ) {
224
+ this . setState ( {
225
+ showFileEditor : true
226
+ } ) ;
227
+ }
228
+
229
+ hideFileEditor ( ) {
230
+ this . setState ( {
231
+ showFileEditor : false
232
+ } ) ;
233
+ }
234
+
220
235
render ( ) {
221
236
const { selectedObject, className, columns, onClose, schema, useMasterKey } = this . props ;
222
237
const { currentObject, openObjectPickers, expandedTextAreas } = this . state ;
@@ -248,6 +263,7 @@ export default class EditRowDialog extends React.Component {
248
263
'restricted'
249
264
] . indexOf ( name ) >= 0 ) ;
250
265
266
+ let val = currentObject [ name ] ;
251
267
switch ( type ) {
252
268
case 'String' :
253
269
inputComponent = (
@@ -258,7 +274,7 @@ export default class EditRowDialog extends React.Component {
258
274
: false
259
275
}
260
276
disabled = { isDisabled }
261
- placeholder = { name === 'password' ? '(hidden)' : '' }
277
+ placeholder = { name === 'password' ? '(hidden)' : val === undefined ? '(undefined)' : '' }
262
278
value = { currentObject [ name ] }
263
279
onChange = { newValue => this . updateCurrentObject ( newValue , name ) }
264
280
onBlur = { newValue => this . handleChange ( newValue , name ) }
@@ -270,6 +286,7 @@ export default class EditRowDialog extends React.Component {
270
286
< TextInput
271
287
disabled = { isDisabled }
272
288
value = { currentObject [ name ] }
289
+ placeholder = { val === undefined ? '(undefined)' : '' }
273
290
onChange = { newValue => this . updateCurrentObject ( newValue , name ) }
274
291
onBlur = { newValue => this . handleChange ( parseFloat ( newValue ) , name ) }
275
292
/>
@@ -287,6 +304,7 @@ export default class EditRowDialog extends React.Component {
287
304
expandedTextAreas [ name ] . rows
288
305
}
289
306
disabled = { isDisabled }
307
+ placeholder = { val === undefined && '(undefined)' }
290
308
value = { currentObject [ name ] }
291
309
onChange = { newValue => this . updateCurrentObject ( newValue , name ) }
292
310
onBlur = { newValue =>
@@ -297,7 +315,7 @@ export default class EditRowDialog extends React.Component {
297
315
break ;
298
316
case 'Boolean' :
299
317
inputComponent = isDisabled ? (
300
- < TextInput disabled = { true } value = { selectedObject [ name ] } />
318
+ < TextInput disabled = { true } placeholder = { val === undefined && '(undefined)' } value = { selectedObject [ name ] } />
301
319
) : (
302
320
< Toggle
303
321
type = { Toggle . Types . TRUE_FALSE }
@@ -328,13 +346,24 @@ export default class EditRowDialog extends React.Component {
328
346
) ;
329
347
break ;
330
348
case 'File' :
349
+ let file = selectedObject [ name ] ;
350
+ let fileName = file && file . url ( ) ? getFileName ( file ) : '' ;
331
351
inputComponent = (
332
352
< div style = { { padding : '25px' } } >
333
- < FileEditor
334
- value = { selectedObject [ name ] }
335
- style = { { position : 'inherit' } }
336
- onCommit = { newValue => this . handleChange ( newValue , name ) }
337
- />
353
+ { file && < Pill value = { fileName } fileDownloadLink = { file . url ( ) } /> }
354
+ < div style = { { cursor : 'pointer' } } >
355
+ < Pill
356
+ value = { file ? 'Change file' : 'Select file' }
357
+ onClick = { ( ) => this . openFileEditor ( ) }
358
+ />
359
+ { this . state . showFileEditor && (
360
+ < FileEditor
361
+ value = { file }
362
+ onCancel = { this . hideFileEditor }
363
+ onCommit = { newValue => this . handleChange ( newValue , name ) }
364
+ />
365
+ ) }
366
+ </ div >
338
367
</ div >
339
368
) ;
340
369
break ;
@@ -364,6 +393,7 @@ export default class EditRowDialog extends React.Component {
364
393
< Pill
365
394
onClick = { ( ) => this . openPointer ( targetClass , pointerId ) }
366
395
value = { pointerId }
396
+ followClick = { true }
367
397
/>
368
398
) }
369
399
< Pill
@@ -403,6 +433,7 @@ export default class EditRowDialog extends React.Component {
403
433
< Pill
404
434
onClick = { ( ) => this . openRelation ( relation ) }
405
435
value = { `View ${ type } ` }
436
+ followClick = { true }
406
437
/>
407
438
< Pill
408
439
onClick = { ( ) => this . toggleObjectPicker ( name , true ) }
0 commit comments