UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

269 lines (268 loc) 13.4 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 (Object.prototype.hasOwnProperty.call(b, 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); }; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var React = __importStar(require("react")); var mobx_1 = require("mobx"); var mobx_react_1 = require("mobx-react"); var lodash_1 = require("lodash"); var classnames_1 = __importDefault(require("classnames")); var bind_1 = __importDefault(require("../../../../utils/bind")); var Sorter_1 = __importDefault(require("../Sorter")); var Filter_1 = __importDefault(require("../Filter")); var Cell_1 = __importDefault(require("../TableRow/Cell")); var columnManager_1 = require("../columnManager"); var styles = __importStar(require("../style.mless")); var TableHeader = /** @class */ (function (_super) { __extends(TableHeader, _super); function TableHeader() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.activeOrder = _this.props.defaultActiveOrder || null; _this.activeDataIndex = _this.props.defaultActiveDataIndex || ''; _this.debounceColumnsFiltersChange = lodash_1.debounce(function (filters) { var onColumnsFiltersChange = _this.props.onColumnsFiltersChange; if (onColumnsFiltersChange) { onColumnsFiltersChange(filters); } }, 500); return _this; } Object.defineProperty(TableHeader.prototype, "borderStyle", { get: function () { var _a = this.props, bordered = _a.bordered, tableOption = _a.tableOption; var borderOpts = lodash_1.get(tableOption, 'border'); return (bordered === undefined ? borderOpts.show : bordered) ? { borderBottom: borderOpts.width + "px " + borderOpts.type + " " + borderOpts.color } : {}; }, enumerable: false, configurable: true }); Object.defineProperty(TableHeader.prototype, "tableHeaderStyle", { get: function () { var _a = this.props, tableTitleFont = _a.tableTitleFont, tableTitleBgColor = _a.tableTitleBgColor, tableTitle = _a.tableOption.tableTitle; var settingTableTitle = __assign(__assign({}, tableTitleFont), { backgroundColor: tableTitleBgColor }); for (var key in tableTitle) { if (Object.prototype.hasOwnProperty.call(tableTitle, key) && (!lodash_1.get(settingTableTitle, key) || lodash_1.get(settingTableTitle, 'backgroundColor') === 'inherit')) { lodash_1.set(settingTableTitle, key, lodash_1.get(tableTitle, key)); } } return settingTableTitle; }, enumerable: false, configurable: true }); TableHeader.prototype.setActiveDataIndex = function (dataIndex) { var _a, _b; this.activeDataIndex = dataIndex; if (this.activeOrder && dataIndex.length > 0) { (_b = (_a = this.props).onSortChange) === null || _b === void 0 ? void 0 : _b.call(_a, { field: dataIndex, order: this.activeOrder }); } }; TableHeader.prototype.setActiveOrder = function (order) { var _a, _b; this.activeOrder = order; if (order && this.activeDataIndex.length > 0) { (_b = (_a = this.props).onSortChange) === null || _b === void 0 ? void 0 : _b.call(_a, { field: this.activeDataIndex, order: order }); } }; TableHeader.prototype.handleRestFilterValue = function (key) { var _a = this.props, handleChangeFilters = _a.handleChangeFilters, filters = _a.filters, dataSource = _a.dataSource, getTableData = _a.getTableData; var newFilters = __spread(filters).filter(function (value) { return value.key !== key; }); handleChangeFilters(newFilters); getTableData(dataSource); this.debounceColumnsFiltersChange(newFilters); }; TableHeader.prototype.handleUpdateFilterValue = function (filterValue) { var _a = this.props, handleChangeFilters = _a.handleChangeFilters, filters = _a.filters, dataSource = _a.dataSource, getTableData = _a.getTableData; var index = filters.findIndex(function (f) { return f.key.toString() === filterValue.key.toString(); }); if (index !== -1) { filters[index] = filterValue; } else { filters.push(filterValue); } handleChangeFilters(filters); getTableData(dataSource); this.debounceColumnsFiltersChange(filters); }; TableHeader.prototype.componentDidMount = function () { var _a = this.props, defaultActiveDataIndex = _a.defaultActiveDataIndex, defaultActiveOrder = _a.defaultActiveOrder; if (defaultActiveOrder && defaultActiveDataIndex) { this.setActiveDataIndex(defaultActiveDataIndex); this.setActiveOrder(defaultActiveOrder); } }; TableHeader.prototype.UNSAFE_componentWillReceiveProps = function (nextProps) { // 内部可以自动更改 if (this.props.defaultActiveDataIndex !== nextProps.defaultActiveDataIndex && nextProps.defaultActiveDataIndex !== this.activeDataIndex) { this.setActiveDataIndex(nextProps.defaultActiveDataIndex || ''); } if (this.props.defaultActiveOrder !== nextProps.defaultActiveOrder && nextProps.defaultActiveOrder !== this.activeOrder) { this.setActiveOrder(nextProps.defaultActiveOrder || 'ascend'); } }; TableHeader.prototype.render = function () { var _this = this; var Sorter = Sorter_1.default; var Filter = Filter_1.default; var _a = this.props, columns = _a.columns, fixedIndexes = _a.fixedIndexes, filters = _a.filters, dataSource = _a.dataSource, data = _a.data, setData = _a.setData, handleCellResize = _a.handleCellResize; return (React.createElement("div", { className: styles.tr }, columns.map(function (col, index) { var _a, _b, _c; var columnIsFixed = columnManager_1.getColumnIsFixed(fixedIndexes, col, index); var style = columnIsFixed.isFixed ? columnManager_1.getColumnPositionStyle(columns, col.dataIndex, columnIsFixed.position) : {}; var titleDom = col.title; if (col.sorter || col.showFilter) { titleDom = (React.createElement("div", { className: styles.title, style: __assign(__assign({}, _this.tableHeaderStyle), { justifyContent: col.align === 'left' ? 'flex-start' : col.align === 'right' ? 'flex-end' : 'center' }) }, col.title, col.sorter ? (React.createElement(Sorter, { column: col, dataIndex: col.dataIndex || String(index), sorter: col.sorter, dataSource: data, onChange: setData, activeDataIndex: _this.activeDataIndex, onActiveDataIndexChange: _this.setActiveDataIndex, activeOrder: _this.activeOrder, onActiveOrderChange: _this.setActiveOrder })) : null, col.showFilter ? (React.createElement(Filter, { dataIndex: col.dataIndex || String(index), filter: !!col.showFilter, filters: filters, dataSource: dataSource, onFilterValueChange: _this.handleUpdateFilterValue, onFilterValueRest: _this.handleRestFilterValue })) : null)); } return (React.createElement("div", { className: classnames_1.default(styles.thContainer, col.className, (_a = {}, _a[styles.columnFixed] = columnIsFixed.isFixed, _a), (_b = {}, _b[styles.columnFixedLeftLast] = columnManager_1.columnIsFixedLeft(columnIsFixed), _b), (_c = {}, _c[styles.columnFixedRightLast] = columnManager_1.columnIsFixedRight(columnIsFixed), _c)), key: index, style: __assign(__assign(__assign({}, style), _this.borderStyle), { background: _this.tableHeaderStyle.backgroundColor }) }, React.createElement(Cell_1.default, { col: col, renderDom: titleDom, handleCellResize: handleCellResize }))); }))); }; __decorate([ mobx_1.observable, __metadata("design:type", Object) ], TableHeader.prototype, "activeOrder", void 0); __decorate([ mobx_1.observable, __metadata("design:type", String) ], TableHeader.prototype, "activeDataIndex", void 0); __decorate([ mobx_1.computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], TableHeader.prototype, "borderStyle", null); __decorate([ mobx_1.computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], TableHeader.prototype, "tableHeaderStyle", null); __decorate([ bind_1.default, mobx_1.action, __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], TableHeader.prototype, "setActiveDataIndex", null); __decorate([ bind_1.default, mobx_1.action, __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], TableHeader.prototype, "setActiveOrder", null); __decorate([ bind_1.default, __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], TableHeader.prototype, "handleRestFilterValue", null); __decorate([ bind_1.default, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], TableHeader.prototype, "handleUpdateFilterValue", null); TableHeader = __decorate([ mobx_react_1.observer ], TableHeader); return TableHeader; }(React.Component)); exports.default = TableHeader;