UNPKG

@gooddata/react-components

Version:

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

91 lines 5.14 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-2019 GoodData Corporation var React = require("react"); var MenuList_1 = require("@gooddata/goodstrap/lib/List/MenuList"); var classNames = require("classnames"); var executionResultHelper_1 = require("../../../helpers/executionResultHelper"); var SubMenu_1 = require("../../menu/SubMenu"); var aggregationsMenuHelper_1 = require("./aggregationsMenuHelper"); var MENU_HEADER_OFFSET = -36; var AggregationsSubMenu = /** @class */ (function (_super) { __extends(AggregationsSubMenu, _super); function AggregationsSubMenu() { return _super !== null && _super.apply(this, arguments) || this; } AggregationsSubMenu.prototype.render = function () { var _a = this.props, toggler = _a.toggler, isMenuOpened = _a.isMenuOpened, intl = _a.intl; var menuOpenedProp = isMenuOpened ? { opened: true } : {}; return (React.createElement(SubMenu_1.default, __assign({ toggler: toggler, offset: MENU_HEADER_OFFSET }, menuOpenedProp), React.createElement(MenuList_1.ItemsWrapper, null, React.createElement("div", { className: "gd-aggregation-submenu s-table-header-submenu-content" }, React.createElement(MenuList_1.Header, null, intl.formatMessage({ id: "visualizations.menu.aggregations.rows" })), this.renderSubMenuItems())))); }; AggregationsSubMenu.prototype.getPreviousAttributeName = function (rowAttributeHeaders, attributeHeaderIndex) { return executionResultHelper_1.getNthAttributeName(rowAttributeHeaders, attributeHeaderIndex - 1); }; AggregationsSubMenu.prototype.getAttributeName = function (rowAttributeHeaders, afmAttributeHeaderIndex) { var intl = this.props.intl; if (afmAttributeHeaderIndex === 0) { return intl.formatMessage({ id: "visualizations.menu.aggregations.all-rows" }); } var attributeName = this.getPreviousAttributeName(rowAttributeHeaders, afmAttributeHeaderIndex); return intl.formatMessage({ id: "visualizations.menu.aggregations.within-attribute" }, { attributeName: attributeName }); }; AggregationsSubMenu.prototype.getSubtotalNameTestClass = function (attributeLocalIdentifier) { var attributeClass = attributeLocalIdentifier.replace(/\./g, "-"); return "s-aggregation-item-" + attributeClass; }; AggregationsSubMenu.prototype.renderSubMenuItems = function () { var _this = this; var _a = this.props, totalType = _a.totalType, rowAttributeHeaders = _a.rowAttributeHeaders, measureLocalIdentifiers = _a.measureLocalIdentifiers, columnTotals = _a.columnTotals; return rowAttributeHeaders.map(function (_attributeHeader, headerIndex) { var attributeLocalIdentifier = executionResultHelper_1.getNthAttributeLocalIdentifier(rowAttributeHeaders, headerIndex); var isSelected = aggregationsMenuHelper_1.default.isTotalEnabledForAttribute(attributeLocalIdentifier, totalType, columnTotals); var onClick = function () { return _this.props.onAggregationSelect({ type: totalType, measureIdentifiers: measureLocalIdentifiers, include: !isSelected, attributeIdentifier: attributeLocalIdentifier, }); }; var attributeName = _this.getAttributeName(rowAttributeHeaders, headerIndex); return (React.createElement(MenuList_1.Item, { checked: isSelected, key: attributeLocalIdentifier }, React.createElement("div", { onClick: onClick, className: classNames("gd-aggregation-menu-item-inner", "s-menu-aggregation-inner", _this.getSubtotalNameTestClass(attributeLocalIdentifier), { "s-menu-aggregation-inner-selected": isSelected, }) }, attributeName))); }); }; AggregationsSubMenu.defaultProps = { isMenuOpened: false, }; return AggregationsSubMenu; }(React.Component)); exports.default = AggregationsSubMenu; //# sourceMappingURL=AggregationsSubMenu.js.map