1+ import { FileInput } from '@blueprintjs/core' ;
2+ import { IconNames } from '@blueprintjs/icons' ;
13import * as React from 'react' ;
24import { parseString } from 'xml2js' ;
35import { IAssessment , IAssessmentOverview } from '../../components/assessment/assessmentShape' ;
46import { makeEntireAssessment , retrieveLocalAssessment } from '../../utils/xmlParser' ;
7+ import { controlButton } from '../commons' ;
58import { assessmentTemplate , overviewTemplate } from '../incubator/assessmentTemplates' ;
69
710type Props = {
811 newAssessment : ( assessment : IAssessment ) => void ;
912 updateEditingOverview : ( overview : IAssessmentOverview ) => void ;
1013} ;
1114
12- export class ImportFromFileComponent extends React . Component < Props , { isInvalidXml : boolean } > {
15+ type State = {
16+ fileInputText : string ;
17+ } ;
18+
19+ export class ImportFromFileComponent extends React . Component < Props , State > {
1320 private fileReader : FileReader ;
1421 public constructor ( props : any ) {
1522 super ( props ) ;
1623 this . handleFileRead = this . handleFileRead . bind ( this ) ;
1724 this . handleChangeFile = this . handleChangeFile . bind ( this ) ;
1825 this . makeMission = this . makeMission . bind ( this ) ;
1926 this . state = {
20- isInvalidXml : false
27+ fileInputText : 'Import XML'
2128 } ;
2229 }
2330
@@ -32,13 +39,14 @@ export class ImportFromFileComponent extends React.Component<Props, { isInvalidX
3239 return (
3340 < div >
3441 < div > Please ensure that the xml uploaded is trustable.</ div >
35- < input type = "file" id = "file" accept = ".xml" onChange = { this . handleChangeFile } />
36- < button onClick = { this . makeMission } > Make New Mission</ button >
37- { this . state . isInvalidXml ? (
38- < div > The xml uploaded is invalid.</ div >
39- ) : (
40- < div > You can edit this card</ div >
41- ) }
42+ < div >
43+ < FileInput
44+ text = { this . state . fileInputText }
45+ inputProps = { { accept : '.xml' } }
46+ onChange = { this . handleChangeFile }
47+ />
48+ </ div >
49+ < div > { controlButton ( 'Make New Mission' , IconNames . NEW_OBJECT , this . makeMission ) } </ div >
4250 </ div >
4351 ) ;
4452 }
@@ -57,13 +65,13 @@ export class ImportFromFileComponent extends React.Component<Props, { isInvalidX
5765 localStorage . setItem ( 'MissionEditingAssessmentSA' , JSON . stringify ( entireAssessment [ 1 ] ) ) ;
5866 this . props . newAssessment ( entireAssessment [ 1 ] ) ;
5967 this . setState ( {
60- isInvalidXml : false
68+ fileInputText : 'Success!'
6169 } ) ;
6270 } catch ( err ) {
6371 // tslint:disable-next-line:no-console
6472 console . log ( err ) ;
6573 this . setState ( {
66- isInvalidXml : true
74+ fileInputText : 'Invalid XML!'
6775 } ) ;
6876 }
6977 } ) ;
@@ -79,7 +87,7 @@ export class ImportFromFileComponent extends React.Component<Props, { isInvalidX
7987 }
8088 } ;
8189
82- private makeMission = ( e : any ) => {
90+ private makeMission = ( ) => {
8391 localStorage . setItem ( 'MissionEditingOverviewSA' , JSON . stringify ( overviewTemplate ) ) ;
8492 this . props . updateEditingOverview ( overviewTemplate ) ;
8593
0 commit comments