Skip to content

Instantly share code, notes, and snippets.

@timelyportfolio
Last active November 19, 2017 14:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timelyportfolio/4acc0624527bfc9fa78ce15144b90b21 to your computer and use it in GitHub Desktop.
Save timelyportfolio/4acc0624527bfc9fa78ce15144b90b21 to your computer and use it in GitHub Desktop.
react + antd from R with reactR
license: mit
height: 600
scrolling: yes

Just because we use R does not mean we can't play with the awesome JavaScript tools React and antd-design.

Example

bl.ock

Code

nearly all JavaScript from this ant-design example

library(htmltools)
library(reactR)
library(pipeR)

antd <- htmlDependency(
  name = "antd",
  version = "2.13.10",
  src = c(href="https://unpkg.com/antd/dist/"),
  script = "antd.min.js",
  stylesheet = "antd.min.css"
)

### steps with button ####
steps_button <- list(
  list(
    title= 'Data',
    content= 'Raw Data'
  ),
  list(
    title= 'Model',
    content= 'Code for Model'
  ),
  list(
    title= 'Plot',
    content= 'Beautiful Plot'
  )
) %>>% jsonlite::toJSON(auto_unbox=TRUE)

content_data <- tags$pre(
  HTML(paste0(
    capture.output(str(iris,max.level=1)),
    collapse="<br/>"
  ))
)

content_model <- tags$pre("lm(Petal.Width~Petal.Length, data=iris)")

content_plot <- HTML(
  svglite::htmlSVG({plot(lm(Petal.Length~Petal.Width,data=iris),which=1)},standalone=FALSE)
)

tagList(
  tags$div(id="stepapp", style="width:30%;"),
  steps_button %>>%
    {
      sprintf(
'
const steps = %s;

steps[0].content = %s;
steps[1].content = %s;
steps[2].content = <img src="%s" />

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      current: 0,
    };
  }
  next() {
    const current = this.state.current + 1;
    this.setState({ current });
  }
  prev() {
    const current = this.state.current - 1;
    this.setState({ current });
  }
  render() {
    const { current } = this.state;
    return (
      <div>
        <antd.Steps current={current} size="small">
          {steps.map(item => <antd.Steps.Step key={item.title} title={item.title} />)}
        </antd.Steps>
      <div className="steps-content">{steps[this.state.current].content}</div>
      <div className="steps-action">
        {
          this.state.current < steps.length - 1
          &&
          <antd.Button type="primary" onClick={() => this.next()}>Next</antd.Button>
        }
        {
          this.state.current === steps.length - 1
          &&
          <antd.Button type="primary" onClick={() => message.success("Processing complete!")}>Done</antd.Button>
        }
        {
          this.state.current > 0
          &&
          <antd.Button style={{ marginLeft: 8 }} type="ghost" onClick={() => this.prev()}>
            Previous
          </antd.Button>
        }
        </div>
      </div>
    );
  }
}

ReactDOM.render(<App />, document.querySelector("#stepapp"));
      ',
      .,
      content_data,
      content_model,
      base64enc::dataURI(rsvg::rsvg_png(charToRaw(content_plot)),mime="image/png")
    )
  } %>>%
    babel_transform() %>>%
    HTML %>>%
    tags$script()
) %>>%
  attachDependencies(
    list(
      html_dependency_react(offline=FALSE),
      antd
    )
  ) %>>%
  browsable()

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<script src="//unpkg.com/react/umd/react.production.min.js"></script>
<script src="//unpkg.com/react-dom/umd/react-dom.production.min.js"></script>
<link href="https://unpkg.com/antd/dist/antd.min.css" rel="stylesheet" />
<script src="https://unpkg.com/antd/dist/antd.min.js"></script>
</head>
<body style="background-color:white;">
<div id="stepapp" style="width:30%;"></div>
<script>"use strict";
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var steps = [{ "title": "Data", "content": "Raw Data" }, { "title": "Model", "content": "Code for Model" }, { "title": "Plot", "content": "Beautiful Plot" }];
steps[0].content = React.createElement(
"pre",
null,
"'data.frame': 150 obs. of 5 variables:",
React.createElement("br", null),
" $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...",
React.createElement("br", null),
" $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...",
React.createElement("br", null),
" $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...",
React.createElement("br", null),
" $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...",
React.createElement("br", null),
" $ Species : Factor w/ 3 levels \"setosa\",\"versicolor\",..: 1 1 1 1 1 1 1 1 1 1 ..."
);
steps[1].content = React.createElement(
"pre",
null,
"lm(Petal.Width~Petal.Length, data=iris)"
);
steps[2].content = React.createElement("img", { src: "data:image/png;base64,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" });
var App = function (_React$Component) {
_inherits(App, _React$Component);
function App(props) {
_classCallCheck(this, App);
var _this = _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).call(this, props));
_this.state = {
current: 0
};
return _this;
}
_createClass(App, [{
key: "next",
value: function next() {
var current = this.state.current + 1;
this.setState({ current: current });
}
}, {
key: "prev",
value: function prev() {
var current = this.state.current - 1;
this.setState({ current: current });
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var current = this.state.current;
return React.createElement(
"div",
null,
React.createElement(
antd.Steps,
{ current: current, size: "small" },
steps.map(function (item) {
return React.createElement(antd.Steps.Step, { key: item.title, title: item.title });
})
),
React.createElement(
"div",
{ className: "steps-content" },
steps[this.state.current].content
),
React.createElement(
"div",
{ className: "steps-action" },
this.state.current < steps.length - 1 && React.createElement(
antd.Button,
{ type: "primary", onClick: function onClick() {
return _this2.next();
} },
"Next"
),
this.state.current === steps.length - 1 && React.createElement(
antd.Button,
{ type: "primary", onClick: function onClick() {
return message.success("Processing complete!");
} },
"Done"
),
this.state.current > 0 && React.createElement(
antd.Button,
{ style: { marginLeft: 8 }, type: "ghost", onClick: function onClick() {
return _this2.prev();
} },
"Previous"
)
)
);
}
}]);
return App;
}(React.Component);
ReactDOM.render(React.createElement(App, null), document.querySelector("#stepapp"));</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment