UNPKG

@gooddata/react-components

Version:

GoodData.UI - A powerful JavaScript library for building analytical applications

71 lines 2.95 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { 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 extendStatics(d, b); }; 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) || function () { __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; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); // (C) 2007-2018 GoodData Corporation var React = require("react"); var get = require("lodash/get"); var noop = require("lodash/noop"); var gooddata_js_1 = require("@gooddata/gooddata-js"); var PureTable_1 = require("./PureTable"); var SortableTable = /** @class */ (function (_super) { __extends(SortableTable, _super); function SortableTable(props) { var _this = _super.call(this, props) || this; _this.state = { sortItems: [], }; _this.handlePushData = _this.handlePushData.bind(_this); return _this; } SortableTable.prototype.componentWillReceiveProps = function (nextProps) { if (!gooddata_js_1.DataLayer.ResultSpecUtils.isSortValid(nextProps.dataSource.getAfm(), this.state.sortItems[0])) { this.setState({ sortItems: [] }); } }; SortableTable.prototype.handlePushData = function (pushedData) { var sortItems = get(pushedData, "properties.sortItems"); if (sortItems) { // TODO save sortItems together with some resultSpec fingerprint // GoodData.UI case // 1. click on header -> sort // 2. change programatically sort in resultSpec // 3. Local state overrides new sort in resultSpec -> wrong this.setState({ sortItems: sortItems, }); } this.props.pushData(pushedData); }; SortableTable.prototype.render = function () { return (React.createElement(PureTable_1.PureTable, __assign({}, this.props, { pushData: this.handlePushData, resultSpec: gooddata_js_1.DataLayer.ResultSpecUtils.applySorting(this.props.resultSpec, this.state.sortItems) }))); }; SortableTable.defaultProps = { pushData: noop, }; return SortableTable; }(React.Component)); exports.SortableTable = SortableTable; //# sourceMappingURL=SortableTable.js.map