Skip to content

Commit 74e3f10

Browse files
authored
Mission editing slang (#483)
* Update GlobalDeploymentTab.tsx nicer symbol editing * nicer buttons
1 parent 4476a65 commit 74e3f10

File tree

2 files changed

+35
-17
lines changed

2 files changed

+35
-17
lines changed

src/components/incubator/ImportFromFileComponent.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
1+
import { FileInput } from '@blueprintjs/core';
2+
import { IconNames } from '@blueprintjs/icons';
13
import * as React from 'react';
24
import { parseString } from 'xml2js';
35
import { IAssessment, IAssessmentOverview } from '../../components/assessment/assessmentShape';
46
import { makeEntireAssessment, retrieveLocalAssessment } from '../../utils/xmlParser';
7+
import { controlButton } from '../commons';
58
import { assessmentTemplate, overviewTemplate } from '../incubator/assessmentTemplates';
69

710
type 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

src/components/incubator/editingWorkspaceSideContent/GlobalDeploymentTab.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ export class GlobalDeploymentTab extends React.Component<IProps, {}> {
3737
private deploymentTab = () => {
3838
const deployment = this.props.assessment.globalDeployment!;
3939
const symbols = deployment.external.symbols.map((symbol, i) => (
40-
<div key={i} className="mcq-option col-xs-12">
41-
{this.symbolTextareaContent(i)}
42-
<br />
43-
</div>
40+
<tr key={i}>
41+
<td>{this.symbolTextareaContent(i)}</td>
42+
<td>{controlButton('Delete', IconNames.MINUS, this.handleSymbolDelete(i))}</td>
43+
</tr>
4444
));
4545

4646
return (
@@ -61,7 +61,7 @@ export class GlobalDeploymentTab extends React.Component<IProps, {}> {
6161
Symbols:
6262
<br />
6363
<br />
64-
{symbols}
64+
<table style={{ width: '100%' }}>{symbols}</table>
6565
{controlButton('New Symbol', IconNames.PLUS, this.handleNewSymbol)}
6666
</div>
6767
);
@@ -88,6 +88,13 @@ export class GlobalDeploymentTab extends React.Component<IProps, {}> {
8888
this.props.updateAssessment(assessment);
8989
};
9090

91+
private handleSymbolDelete = (index: number) => () => {
92+
const assessment = this.props.assessment;
93+
const symbols = assessment.globalDeployment!.external.symbols;
94+
symbols.splice(index, 1);
95+
this.props.updateAssessment(assessment);
96+
};
97+
9198
private handleNewSymbol = () => {
9299
const assessment = this.props.assessment;
93100
const symbols = assessment.globalDeployment!.external.symbols;
@@ -104,6 +111,9 @@ export class GlobalDeploymentTab extends React.Component<IProps, {}> {
104111
private handleExternalSelect = (i: IExternal, e: React.ChangeEvent<HTMLSelectElement>) => {
105112
const assessment = this.props.assessment;
106113
assessment.globalDeployment!.external.name = i.name;
114+
assessment.globalDeployment!.external.symbols = JSON.parse(
115+
JSON.stringify(externalLibraries.get(i.name)!)
116+
);
107117
this.props.updateAssessment(assessment);
108118
};
109119
}

0 commit comments

Comments
 (0)