@lyra/vision
Version:
React-based data management tool for Lyra projects
75 lines (55 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _reactJsonInspector = require('react-json-inspector');
var _reactJsonInspector2 = _interopRequireDefault(_reactJsonInspector);
var _JsonDump = require('./JsonDump');
var _JsonDump2 = _interopRequireDefault(_JsonDump);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class ResultCollection extends _react2.default.PureComponent {
constructor(props) {
super(props);
this.state = { expanded: [] };
}
handleToggleExpandRow(id) {
const expanded = this.state.expanded;
const currentIndex = expanded.indexOf(id);
if (currentIndex === -1) {
expanded.push(id);
} else {
expanded.splice(currentIndex, 1);
}
}
getExpandRowHandler(id) {
return () => this.handleToggleExpandRow(id);
}
isExpanded(id) {
return this.state.expanded.indexOf(id) !== -1;
}
shouldExpand(path, item) {
// Expand root-level nodes and refs
return !isNaN(path) || item && item._ref;
}
render() {
return this.props.viewMode === 'inspect' ? _react2.default.createElement(_reactJsonInspector2.default, {
className: 'vision_result-list',
data: this.props.data,
isExpanded: this.shouldExpand,
search: false,
filterOptions: { ignoreCase: true }
}) : _react2.default.createElement(_JsonDump2.default, { data: this.props.data });
}
}
ResultCollection.propTypes = {
data: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.arrayOf(_propTypes2.default.object)]),
viewMode: _propTypes2.default.oneOf(['inspector', 'dump'])
};
ResultCollection.defaultProps = {
viewMode: 'dump'
};
exports.default = ResultCollection;