diff --git a/src/LatestInteraction/DemoLatestInteraction.js b/src/LatestInteraction/DemoLatestInteraction.js index 7f805eeaf158cbca59f236d02907060e38a5d1e9..fafd8715cce7751069b1a949b437d2288bc891ba 100644 --- a/src/LatestInteraction/DemoLatestInteraction.js +++ b/src/LatestInteraction/DemoLatestInteraction.js @@ -1,5 +1,5 @@ import React from 'react' -import {LatestInteraction} from './index' +import {LatestInteraction} from './LatestInteraction' export function DemoLatestInteraction(props) { const intended = {action_names: ["A", "A", "B", "C"], primitive_valences:[1, 2, 3, 4]}; diff --git a/src/LatestInteraction/LatestInteraction.js b/src/LatestInteraction/LatestInteraction.js new file mode 100644 index 0000000000000000000000000000000000000000..ec3026c30ffcf8f3eb06488565f11e08f815142c --- /dev/null +++ b/src/LatestInteraction/LatestInteraction.js @@ -0,0 +1,65 @@ +import React from 'react' +import {observer} from 'mobx-react' + +import { actionClassName } from '../utils/valenceColours'; + +export const LatestInteraction = observer( + function LatestInteraction(props) { + let intended, enacted; + let iteration = null; + if ('int-trace' in props.store.components && props.store.components['int-trace'].showInteraction) { + intended = props.store.components['int-trace'].currentInteraction.intended; + enacted = props.store.components['int-trace'].currentInteraction.enacted; + const iteration_id = props.store.components['int-trace'].currentInteraction.id; + iteration = [<p key="first"><span className="label">Iteration:</span> {iteration_id}</p>, <hr key="last"/>]; + } else { + intended = props.intended; + enacted = props.enacted; + } + + /** + * Return the + * @param {Object} inter object representing the interaction to display (either intended or enacted) + * @param {Number} i index of primitive action which row this is makeing + */ + function inter2row(inter, length, i) { + if (i < length) { + return ( + <td className={actionClassName(inter.primitive_valences[i])}> + {inter.action_names[i]} ({inter.primitive_valences[i]}) + </td>); + } else { + return null; + } + } + + const length_i = intended.action_names.length, + length_e = enacted.action_names.length; + let rows = []; + for (let i=0; i<Math.max(length_i, length_e); i++) { + rows.push( + <tr key={i}> + {inter2row(intended, length_i, i)} + {inter2row(enacted, length_e, i)} + </tr> + ); + } + + return ( + <div className="latest-interaction"> + {iteration} + <table> + <thead> + <tr> + <th className="label">Intended</th> + <th className="label">Enacted</th> + </tr> + </thead> + <tbody> + {rows} + </tbody> + </table> + </div> + ); + } + ) \ No newline at end of file diff --git a/src/LatestInteraction/RosLastestInteraction.js b/src/LatestInteraction/RosLastestInteraction.js index d673976335b2023d7d86b15f0f94e4836281ba34..2899cc9ece45e1c9fdd73c168dff61b7364f731d 100644 --- a/src/LatestInteraction/RosLastestInteraction.js +++ b/src/LatestInteraction/RosLastestInteraction.js @@ -2,7 +2,7 @@ import React, {Component} from 'react' import RosLib from 'roslib' import {Modal} from '../utils/modeHandler' -import {LatestInteraction} from './index' +import {LatestInteraction} from './LatestInteraction' class RosLatestInteraction extends Component { constructor(props) { diff --git a/src/LatestInteraction/index.js b/src/LatestInteraction/index.js index 0cd9f57b7e766405615c33e17252c2fb3460acd8..624763d0ce870e4db0a5e9b3ddc76fccf0955706 100644 --- a/src/LatestInteraction/index.js +++ b/src/LatestInteraction/index.js @@ -1,69 +1,4 @@ -import React from 'react' -import {observer} from 'mobx-react' - import './LatestInteraction.css' -import { actionClassName } from '../utils/valenceColours'; - -export const LatestInteraction = observer( -function LatestInteraction(props) { - let intended, enacted; - let iteration = null; - if ('int-trace' in props.store.components && props.store.components['int-trace'].showInteraction) { - intended = props.store.components['int-trace'].currentInteraction.intended; - enacted = props.store.components['int-trace'].currentInteraction.enacted; - const iteration_id = props.store.components['int-trace'].currentInteraction.id; - iteration = [<p key="first"><span className="label">Iteration:</span> {iteration_id}</p>, <hr key="last"/>]; - } else { - intended = props.intended; - enacted = props.enacted; - } - - /** - * Return the - * @param {Object} inter object representing the interaction to display (either intended or enacted) - * @param {Number} i index of primitive action which row this is makeing - */ - function inter2row(inter, length, i) { - if (i < length) { - return ( - <td className={actionClassName(inter.primitive_valences[i])}> - {inter.action_names[i]} ({inter.primitive_valences[i]}) - </td>); - } else { - return null; - } - } - - const length_i = intended.action_names.length, - length_e = enacted.action_names.length; - let rows = []; - for (let i=0; i<Math.max(length_i, length_e); i++) { - rows.push( - <tr key={i}> - {inter2row(intended, length_i, i)} - {inter2row(enacted, length_e, i)} - </tr> - ); - } - - return ( - <div className="latest-interaction"> - {iteration} - <table> - <thead> - <tr> - <th className="label">Intended</th> - <th className="label">Enacted</th> - </tr> - </thead> - <tbody> - {rows} - </tbody> - </table> - </div> - ); -} -) export { DemoLatestInteraction } from './DemoLatestInteraction' export { RosLatestInteraction } from './RosLastestInteraction' \ No newline at end of file