sws-frontend
Version:
sws frontend project
97 lines • 4.95 kB
JavaScript
;
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