ucsc-xena-client
Version:
UCSC Xena Client. Functional genomics visualizations.
221 lines (194 loc) • 6.53 kB
JavaScript
;
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; }; }();
var _PureComponent2 = require('../PureComponent');
var _PureComponent3 = _interopRequireDefault(_PureComponent2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }
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 React = require('react');
var _ = require('../underscore_ext');
var meta = require('../meta');
var classNames = require('classnames');
// Styles
var compStyles = require('./Tooltip.module.css');
var element = {
value: function value(i, v) {
return React.createElement(
'span',
{ key: i },
v
);
},
label: function label(i, l) {
return React.createElement(
'span',
{ key: i },
l
);
},
labelValue: function labelValue(i, l, v) {
return React.createElement(
'span',
{ key: i },
l,
': ',
v
);
},
url: function url(i, text, _url) {
return React.createElement(
'span',
{ key: i },
React.createElement(
'a',
{ href: _url, target: '_blank' },
text
)
);
}
// popOver: (i, text, dataList) => (
// <span key={i}><a><PopOverVariants label={text} body={dataList}/></a></span>
// ),
};
function overlay() {
return React.createElement('div', { className: compStyles.overlay });
}
//var PopOverVariants = React.createClass({
// getInitialState() {
// return { showModal: false };
// },
//
// close() {
// this.setState({ showModal: false });
// },
//
// open() {
// this.setState({ showModal: true });
// },
//
// render() {
// var label = this.props.label,
// dataList = this.props.body;
//
// var rowsOut = _.map(dataList, (row, i) => (
// <tr key={i}>
// {row.map(([type, ...args], i) => element[type](i, ...args))}
// </tr>
// ));
//
//
// return (
// <div>
// <span
// onClick={this.open}
// >
// {label}
// </span>
//
// <Modal show={this.state.showModal} onHide={this.close}>
// <Modal.Header closeButton>
// <Modal.Title>Variants</Modal.Title>
// </Modal.Header>
// <Modal.Body>
// <div>
// <table> {rowsOut} </table>
// </div>
// </Modal.Body>
// <Modal.Footer>
// <Button onClick={this.close}>Close</Button>
// </Modal.Footer>
// </Modal>
// </div>
// );
// }
//});
var Tooltip = function (_PureComponent) {
_inherits(Tooltip, _PureComponent);
function Tooltip() {
_classCallCheck(this, Tooltip);
return _possibleConstructorReturn(this, (Tooltip.__proto__ || Object.getPrototypeOf(Tooltip)).apply(this, arguments));
}
_createClass(Tooltip, [{
key: 'render',
value: function render() {
var _props = this.props,
data = _props.data,
open = _props.open,
onClick = _props.onClick,
onClose = _props.onClose,
frozen = _props.frozen,
rows = _.getIn(data, ['rows']),
sampleID = _.getIn(data, ['sampleID']);
// no tooltip info
if (!rows && !sampleID) {
return React.createElement('div', null);
}
var rowsOut = _.map(rows, function (row, i) {
return React.createElement(
'li',
{ key: i },
row.map(function (_ref, i) {
var _ref2 = _toArray(_ref),
type = _ref2[0],
args = _ref2.slice(1);
return element[type].apply(element, [i].concat(_toConsumableArray(args)));
})
);
});
var closeIcon = frozen ? React.createElement(
'i',
{ className: 'material-icons', onClick: onClose },
'close'
) : null;
var sample = sampleID ? React.createElement(
'span',
null,
sampleID
) : null;
return React.createElement(
'div',
{ onClick: onClick },
frozen ? overlay(onClick) : null,
React.createElement(
'div',
{ className: classNames(compStyles.Tooltip, _defineProperty({}, compStyles.open, open)) },
React.createElement(
'ul',
{ className: compStyles.content },
React.createElement(
'li',
{ className: compStyles.title },
sample,
closeIcon
),
rowsOut
),
React.createElement(
'div',
{ className: compStyles.actions },
React.createElement(
'span',
{ className: compStyles.zoomHint },
meta.name + '-click to ' + (frozen ? "unfreeze" : "freeze") + ' tooltip'
),
React.createElement(
'a',
{ href: 'http://xena.ucsc.edu/spreadsheet-zoom/', target: '_blank' },
React.createElement(
'i',
{ className: 'material-icons' },
'help'
)
)
)
)
);
}
}]);
return Tooltip;
}(_PureComponent3.default);
module.exports = Tooltip;