Skip to content

Commit da10ce4

Browse files
author
Emmanouil Konstantinidis
committed
Boolean field working
1 parent 5a2d2f0 commit da10ce4

File tree

4 files changed

+97
-33782
lines changed

4 files changed

+97
-33782
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
var React = require('react');
2+
3+
var FieldBoolean = React.createClass({
4+
getInitialState: function() {
5+
return {
6+
checked: null
7+
};
8+
},
9+
10+
removeField: function (fieldName, event) {
11+
event.preventDefault();
12+
this.props.removeField(fieldName);
13+
},
14+
15+
handleChange: function (value) {
16+
this.props.onChange(value);
17+
},
18+
19+
isChecked: function () {
20+
if (this.props.value === undefined) return;
21+
},
22+
23+
render: function () {
24+
var labelName = this.props.name.replace('_', ' ');
25+
26+
return (
27+
<div className='form-group'>
28+
<label
29+
htmlFor={this.props.name}
30+
className='col-sm-4 control-label'>
31+
{this.props.isCustom ? (
32+
<i
33+
className='fa fa-minus-circle'
34+
title='Remove Field'
35+
onClick={this.removeField.bind(this, this.props.name)} />
36+
) : null}
37+
{labelName}
38+
</label>
39+
<div className='col-sm-8'>
40+
<label className='radio-inline'>
41+
<input
42+
type='radio'
43+
name={this.props.name}
44+
value='True'
45+
checked={this.isChecked(true)}
46+
onChange={this.handleChange.bind(this, true)} /> True
47+
</label>
48+
<label className='radio-inline'>
49+
<input
50+
type='radio'
51+
name={this.props.name}
52+
value='False'
53+
checked={this.isChecked(false)}
54+
onChange={this.handleChange.bind(this, false)} /> False
55+
</label>
56+
</div>
57+
</div>
58+
);
59+
}
60+
});
61+
62+
module.exports = FieldBoolean;

rest_framework_docs/static/rest_framework_docs/js/components/fields/text.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var React = require('react');
22

3-
var Input = React.createClass({
3+
var FieldText = React.createClass({
44

55
removeField: function (fieldName, event) {
66
event.preventDefault();
@@ -12,6 +12,8 @@ var Input = React.createClass({
1212
},
1313

1414
render: function () {
15+
var labelName = this.props.name.replace('_', ' ');
16+
1517
return (
1618
<div className="form-group">
1719
<label
@@ -24,7 +26,7 @@ var Input = React.createClass({
2426
onClick={this.removeField.bind(this, this.props.name)}
2527
/>
2628
) : null}
27-
{this.props.name}
29+
{labelName}
2830
</label>
2931
<div className="col-sm-8">
3032
<input
@@ -41,4 +43,4 @@ var Input = React.createClass({
4143
}
4244
});
4345

44-
module.exports = Input;
46+
module.exports = FieldText;

rest_framework_docs/static/rest_framework_docs/js/components/request/data.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var React = require('react');
22

33
var FieldText = require('../fields/text');
4+
var FieldBoolean = require('../fields/boolean');
45
var Header = require('../helpers/header');
56
var RequestUtils = require('../../utils/request');
67

@@ -9,12 +10,27 @@ var Data = React.createClass({
910
this.props.removeCustomField(fieldName);
1011
},
1112

12-
handleChange: function (fieldName, event) {
13+
handleBooleanChange: function (fieldName, value) {
14+
this.props.onChange(value, fieldName);
15+
},
16+
17+
handleTextChange: function (fieldName, event) {
1318
this.props.onChange(event.target.value, fieldName);
1419
},
1520

1621
_renderBooleanField: function (field, key) {
17-
console.log(field, key);
22+
var value = this.props.data[field.name];
23+
24+
return (
25+
<FieldBoolean
26+
key={key}
27+
name={field.name}
28+
value={value}
29+
required={field.required ? 'required' : false}
30+
removeField={this.removeCustomField}
31+
isCustom={field.isCustom ? 'isCustom' : false}
32+
onChange={this.handleBooleanChange.bind(this, field.name)} />
33+
);
1834
},
1935

2036
_renderTextInput: function (field, key) {
@@ -30,7 +46,7 @@ var Data = React.createClass({
3046
required={field.required ? 'required' : false}
3147
removeField={this.removeCustomField}
3248
isCustom={field.isCustom ? 'isCustom' : false}
33-
onChange={this.handleChange.bind(this, field.name)} />
49+
onChange={this.handleTextChange.bind(this, field.name)} />
3450
);
3551
},
3652

@@ -56,10 +72,7 @@ var Data = React.createClass({
5672

5773
return (
5874
<div>
59-
6075
{this.props.fields.length ? <Header title='Data' /> : null}
61-
62-
6376
{this._renderFields()}
6477
</div>
6578
);

0 commit comments

Comments
 (0)