UNPKG

sws-frontend

Version:

sws frontend project

97 lines 4.95 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var ReactDOM = require("react-dom"); var helpers_1 = require("../commons/helpers"); // WARN changed var DataGrid = require("react-datagrid"); require("react-datagrid/index.css"); var sorty = require("sorty"); var sort = sorty; var Dims = require("react-dimensions"); var Dimensions = Dims; var initialSortInfo = [{}]; require("./table.scss"); var _Table = (function (_super) { __extends(_Table, _super); function _Table(props) { var _this = _super.call(this, props) || this; _this.state = { sortInfo: props.sortInfo || initialSortInfo }; return _this; } _Table.prototype.componentWillUpdate = function (nextProps, nextState) { //scrolltoTop only when change filter if (nextProps.scrollToTop) { // workaround to move the scroller to the top which needed on filtering // https://jira.fao.org/ciok/browse/SWS-1535 var scroller = ReactDOM.findDOMNode(this).getElementsByClassName("ref-verticalScrollbar"); if (scroller && scroller.length > 0) scroller[0].scrollTop = 0; } }; _Table.prototype.render = function () { var _this = this; var sortInfo = this.state.sortInfo; var _a = this.props, columns = _a.columns, dataSource = _a.dataSource, containerHeight = _a.containerHeight, containerWidth = _a.containerWidth; var className = (columns[columns.length - 1].className == 'actions-col') ? 'last-col-action' : ''; //const computedSortInfo = sortInfo.length == 0 ? initialSortInfo : sortInfo; var props = helpers_1.merge(this.props, { sortInfo: sortInfo, style: { height: containerHeight - 100, width: containerWidth }, dataSource: sort(sortInfo)(dataSource), className: className, onSortChange: function (_sortInfo) { var customSortInfo = _sortInfo.map(function (s, idx) { var column = columns.find(function (c) { return c.name == s.name; }); // return (column && (column.fn !== undefined)) ? merge(s, {fn:(a,b)=>column.fn(a, b)}) : s // const prevSort = sortInfo.find(_s=>_s.name==s.name?true:false); var nextSort = _sortInfo[idx]; return { 'name': s.name, 'fn': (column && column.fn) || (nextSort && nextSort.fn) || s.fn, 'dir': (nextSort && nextSort.dir) }; }); return _this.setState({ sortInfo: customSortInfo }); }, }); return React.createElement(DataGrid, __assign({}, props, { style: { height: 500 } })); }; return _Table; }(React.Component)); //TODO: cleanup!!! //export default new Dimensions({containerStyle:{flexGrow:1}, elementResize:true})(_Table) exports.default = _Table; /* TableDropDown Component */ var react_bootstrap_1 = require("react-bootstrap"); var bootstrap_1 = require("../commons/bootstrap"); exports.TableDropdown = function (p) { var id = p.id, items = p.items, onClick = p.onClick; return (items && items.length > 0) ? /* we stop propagation to avoid a click of the containing row */ React.createElement(bootstrap_1.Dropdown, { pullRight: true, className: "actions-col", id: id, onClick: function (e) { return e.stopPropagation(); } }, React.createElement(bootstrap_1.Dropdown.Toggle, { noCaret: true, onClick: function (e) { return e.stopPropagation(); } }, React.createElement("i", { className: "material-icons" }, "more_vert")), React.createElement(bootstrap_1.Dropdown.Menu, { className: "" }, items && items.map(function (v, idx) { var onclick = v.onClick || onClick; // https://facebook.github.io/react/docs/lists-and-keys.html on key attribute return React.createElement(react_bootstrap_1.MenuItem, { key: idx, eventKey: idx, onClick: onclick }, v.content); }))) : null; }; //# sourceMappingURL=table.js.map