Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
var React = require('react');

var FieldBoolean = React.createClass({
getInitialState: function() {
return {
checked: null
};
},

removeField: function (fieldName, event) {
event.preventDefault();
this.props.removeField(fieldName);
},

handleChange: function (value) {
this.props.onChange(value);
},

isChecked: function (value) {
if (this.props.value === undefined) return;
return this.props.value === value;
},

render: function () {
var labelName = this.props.name.replace('_', ' ');

return (
<div className='form-group'>
<label
htmlFor={this.props.name}
className='col-sm-4 control-label'>
{this.props.isCustom ? (
<i
className='fa fa-minus-circle'
title='Remove Field'
onClick={this.removeField.bind(this, this.props.name)} />
) : null}
{labelName}
</label>
<div className='col-sm-8'>
<label className='radio-inline'>
<input
type='radio'
name={this.props.name}
checked={this.isChecked(true)}
onChange={this.handleChange.bind(this, true)} /> True
</label>
<label className='radio-inline'>
<input
type='radio'
name={this.props.name}
checked={this.isChecked(false)}
onChange={this.handleChange.bind(this, false)} /> False
</label>
</div>
</div>
);
}
});

module.exports = FieldBoolean;
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var React = require('react');

var Input = React.createClass({
var FieldText = React.createClass({

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

render: function () {
var labelName = this.props.name.replace('_', ' ');

return (
<div className="form-group">
<label
Expand All @@ -24,7 +26,7 @@ var Input = React.createClass({
onClick={this.removeField.bind(this, this.props.name)}
/>
) : null}
{this.props.name}
{labelName}
</label>
<div className="col-sm-8">
<input
Expand All @@ -41,4 +43,4 @@ var Input = React.createClass({
}
});

module.exports = Input;
module.exports = FieldText;
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ var LiveAPIEndpoints = React.createClass({

getData: function () {
var method = this.refs.request.state.selectedMethod;
return RequestUtils.shouldAddData(method) ? null : (
return RequestUtils.shouldIncludeData(method) ? (
this.refs.request.state.data
);
) : null;
},

makeRequest: function (event) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@ var _ = require('underscore');
var React = require('react');

var AddFieldsForm = require('./request/add-fields');
var Header = require('./helpers/header');
var Headers = require('./request/headers');
var FieldsData = require('./request/fields-data');
var Data = require('./request/data');
var FieldUrl = require('./request/field-url');
var Methods = require('./request/methods');
var RequestUtils = require('../utils/request');

var Request = React.createClass({
getInitialState: function () {
Expand All @@ -33,20 +31,17 @@ var Request = React.createClass({

addField: function (fieldName) {
var endpoint = this.state.endpoint;
var fields = endpoint.fields;

// Check if field already exists
if (_.findWhere(fields, {'name': fieldName})) return;
if (_.findWhere(endpoint.fields, {'name': fieldName})) return;

fields.push({
endpoint.fields.push({
name: fieldName,
required: false,
type: 'Added Field',
type: 'text',
isCustom: true
});

endpoint.fields = fields;

this.setState({
endpoint: endpoint
});
Expand Down Expand Up @@ -100,6 +95,7 @@ var Request = React.createClass({

render: function () {
var endpoint = this.state.endpoint;

return (
<div>
<h3>Request</h3>
Expand All @@ -119,18 +115,15 @@ var Request = React.createClass({
permissions={this.state.endpoint.permissions}
handleHeaderChange={this.handleHeaderChange} />

{RequestUtils.shouldAddData(this.state.method) ? null : (
<div>
{this.state.endpoint.fields.length ? <Header title='Data' /> : null}
<FieldsData
fields={endpoint.fields}
data={this.state.data}
removeCustomField={this.removeField}
onChange={this.handleDataFieldChange} />

<AddFieldsForm onAdd={this.addField} />
</div>
)}
<Data
method={this.state.selectedMethod}
fields={endpoint.fields}
data={this.state.data}
removeCustomField={this.removeField}
onChange={this.handleDataFieldChange} />

<AddFieldsForm
onAdd={this.addField} />
</div>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ var AddFieldsForm = React.createClass({
<div className="col-sm-2">
<button
type="button"
className='btn btn-sm btn-block btn-primary'
className='btn btn-sm btn-block btn-info'
onClick={this.addField}>
Add
</button>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
var React = require('react');

var FieldText = require('../fields/text');
var FieldBoolean = require('../fields/boolean');
var Header = require('../helpers/header');
var RequestUtils = require('../../utils/request');

var Data = React.createClass({
removeCustomField: function (fieldName) {
this.props.removeCustomField(fieldName);
},

handleBooleanChange: function (fieldName, value) {
this.props.onChange(value, fieldName);
},

handleTextChange: function (fieldName, event) {
this.props.onChange(event.target.value, fieldName);
},

_renderBooleanField: function (field, key) {
var value = this.props.data[field.name];

return (
<FieldBoolean
key={key}
name={field.name}
value={value}
required={field.required ? 'required' : false}
removeField={this.removeCustomField}
isCustom={field.isCustom ? 'isCustom' : false}
onChange={this.handleBooleanChange.bind(this, field.name)} />
);
},

_renderTextInput: function (field, key) {
var value = this.props.data[field.name];
var type = field.name == 'password' ? 'password' : 'text';
return (
<FieldText
key={key}
type={type}
name={field.name}
value={value}
placeholder={field.type}
required={field.required ? 'required' : false}
removeField={this.removeCustomField}
isCustom={field.isCustom ? 'isCustom' : false}
onChange={this.handleTextChange.bind(this, field.name)} />
);
},

_renderFields: function () {
return this.props.fields.map(function (field, key) {

switch (field.type) {
case ('BooleanField'):
return this._renderBooleanField(field, key);

case ('CharField'):
default:
return this._renderTextInput(field, key);

}
}, this);
},

render: function () {
if (!RequestUtils.shouldIncludeData(this.props.method)) {
return null;
}

return (
<div>
{this.props.fields.length ? <Header title='Data' /> : null}
{this._renderFields()}
</div>
);
}
});

module.exports = Data;
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var React = require('react');

var Header = require('../helpers/header');
var Input = require('../helpers/input');
var FieldText = require('../fields/text');

var FieldUrl = React.createClass({

Expand All @@ -25,7 +25,7 @@ var FieldUrl = React.createClass({
return (
<div>
<Header title='API Endpoint' />
<Input
<FieldText
type='text'
name='Url Endpoint'
value={this.state.url}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var React = require('react');

var Header = require('../helpers/header');
var Input = require('../helpers/input');
var FieldText = require('../fields/text');
var RequestUtils = require('../../utils/request');

var Headers = React.createClass({
Expand Down Expand Up @@ -30,7 +30,7 @@ var Headers = React.createClass({
return (
<div>
<Header title='Headers' />
<Input
<FieldText
name='authorization'
value={this.state.authorization}
placeholder='Token 1234567890'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ var Methods = React.createClass({

render: function () {
return (
<div>
<div className='text-center'>
<Header title='Method' />
<div className='btn-group methods'>
{this.state.methods.map(function (method, i) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ var Response = React.createClass({
{hasToken ? (
<div className='well well-default text-center'>
<button className='btn btn-sm btn-info' onClick={this.saveToken}>
<i className='fa fa-key' />
Save Token
<i className='fa fa-key' /> Save Token
</button>
<h6>Your token will be lost when you refresh the page.</h6>
</div>
Expand Down
18 changes: 9 additions & 9 deletions rest_framework_docs/static/rest_framework_docs/js/dist.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
module.exports = {

shouldAddData: function (method) {
shouldIncludeData: function (method) {
if (method === 'GET' || method === 'OPTIONS') {
return true;
return false;
}
return false;
return true;
},

shouldAddHeader: function (permissions) {
Expand Down
Loading