TestsEditor.js 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. 'use strict';
  2. function filledArray(l, n) {
  3. return Array.from({
  4. length: l
  5. }, (_, i) => n);
  6. }
  7. class TestsEditor extends React.Component {
  8. constructor(props) {
  9. super(props);
  10. this.state = {
  11. 'inputs': props.inputs,
  12. 'outputs': props.outputs,
  13. 'tests': props.tests,
  14. 'onUnmount': props.onUnmount
  15. };
  16. }
  17. componentWillUnmount() {
  18. this.state.onUnmount(this.state.tests);
  19. }
  20. render() {
  21. const inputs = this.state.inputs;
  22. const outputs = this.state.outputs;
  23. const tests = this.state.tests;
  24. if (inputs.length == 0 || outputs.length == 0) return /*#__PURE__*/React.createElement("div", {
  25. className: "testsEditor"
  26. }, /*#__PURE__*/React.createElement("div", {
  27. className: "noInputsOutputsMessage"
  28. }, "There should be inputs and outputs to add tests"));
  29. return /*#__PURE__*/React.createElement("div", {
  30. className: "testsEditor"
  31. }, /*#__PURE__*/React.createElement("div", {
  32. className: "tables"
  33. }, /*#__PURE__*/React.createElement("div", {
  34. className: "testsTableWrapper inputs"
  35. }, /*#__PURE__*/React.createElement("table", {
  36. className: "testsTable inputs"
  37. }, /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null), inputs.map((name, i) => /*#__PURE__*/React.createElement("td", {
  38. key: i
  39. }, name))), tests.map((t, test_i) => /*#__PURE__*/React.createElement("tr", {
  40. key: test_i
  41. }, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", {
  42. className: "removeRowButton animated unselectable",
  43. onClick: e => {
  44. const tests_length = this.state.tests.length;
  45. this.setState(state => {
  46. if (state.tests.length != tests_length) return state;
  47. state.tests.splice(test_i, 1);
  48. return state;
  49. });
  50. }
  51. }, "-")), t.slice(0, inputs.length).map((v, input_i) => /*#__PURE__*/React.createElement("td", {
  52. key: input_i,
  53. className: 'checkbox ' + (tests[test_i][input_i] ? 'checked' : 'unchecked'),
  54. onClick: e => {
  55. this.setState(state => {
  56. state.tests[test_i][input_i] = state.tests[test_i][input_i] ? 0 : 1;
  57. return state;
  58. });
  59. }
  60. }))))))), /*#__PURE__*/React.createElement("div", {
  61. className: "testsTableWrapper outputs"
  62. }, /*#__PURE__*/React.createElement("table", {
  63. className: "testsTable outputs"
  64. }, /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", null, outputs.map((name, i) => /*#__PURE__*/React.createElement("td", {
  65. key: i
  66. }, name))), tests.map((t, test_i) => /*#__PURE__*/React.createElement("tr", {
  67. key: test_i
  68. }, t.slice(inputs.length, t.length).map((v, output_i) => /*#__PURE__*/React.createElement("td", {
  69. key: output_i,
  70. className: 'checkbox ' + (tests[test_i][inputs.length + output_i] ? 'checked' : 'unchecked'),
  71. onClick: e => {
  72. this.setState(state => {
  73. state.tests[test_i][inputs.length + output_i] = state.tests[test_i][inputs.length + output_i] ? 0 : 1;
  74. return state;
  75. });
  76. }
  77. })))))))), /*#__PURE__*/React.createElement("div", {
  78. className: "addRowButton animated unselectable",
  79. onClick: e => {
  80. const tests_length = this.state.tests.length;
  81. this.setState(state => {
  82. if (state.tests.length != tests_length) return state;
  83. const test_length = state.inputs.length + state.outputs.length;
  84. state.tests.push(filledArray(test_length, 0));
  85. return state;
  86. });
  87. }
  88. }, "+"));
  89. }
  90. }