123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- 'use strict';
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| IBM Cognos Products: Content Explorer
- *| (C) Copyright IBM Corp. 2019
- *|
- *| US Government Users Restricted Rights - Use, duplication or disclosure
- *| restricted by GSA ADP Schedule Contract with IBM Corp.
- *+------------------------------------------------------------------------+
- */
- define(['react', 'ca-ui-toolkit', 'prop-types', '../../../../app/ui/dialogs/EditableDialog', '../nls/StringResources'], function (React, UI_TOOLKIT, PropTypes, EditableDialog, StringResources) {
- /**
- * @description This class provides all of the contents inside a serviceability panel.
- * The UI is a two-level hierarchy. The first level is Section, and the second level is Field.
- *
- * For each Section, it has an attribute called "open" to control if this section should be
- * opened in default. It also has an attribute called "sectionName" which should be a string.
- * If "sectionName" is an empty string, the section name component will not be rendered.
- *
- * For each Field, it has attributes which are "fieldName", "fieldValue", and "type". They are all
- * strings. The values of "fieldName" and "fieldValue" could be any string. If "fieldName" is an
- * empty string, the field name component will not be rendered. "type" is also a string and its
- * value should be one of ['SimpleTable', 'Default', 'ReactNode']. If "type" is not specified, we will render
- * it in a default way.
- *
- * If the "type" is 'SimpleTable', the "fieldValues" should be an object which has the following properties:
- * - columnLength: how many columns you want to display
- * - rowLength: how many rows you want to display
- * - headerValue: (col) => {return value;}, where "col" is an integer represents the column number, and "value"
- * is a string.
- * - cellValue: (row, col) => {return value;}, where "row" and "col" are row number and col number which both
- * are integers. The "value" should be a string.
- *
- * A object should be provided to tell this class how to render Sections and Fields. It should looks like:
- * [
- * {
- * sectionName: 'section A',
- * sectionValues: [{
- * fieldName: 'field a1',
- * fieldValue: 'field value of a1',
- * type: 'SimpleTable'
- * },
- * {
- * fieldName: 'field a2',
- * fieldValue: 'field value of a2'
- * }
- * ],
- * properties: {
- * open: true | false
- * }
- * },
- * {
- * sectionName: 'section B',
- * sectionValues: [],
- * properties: {}
- * }
- * ]
- * Content has all components on a serviceability panel.
- * It consists of many sections, which consists of many fields.
- */
- var Label = UI_TOOLKIT.Label;
- var Container = UI_TOOLKIT.Container;
- var Button = UI_TOOLKIT.Button;
- var ToggleSwitchSection = UI_TOOLKIT.ToggleSwitchSection;
- var CollapsibleSection = UI_TOOLKIT.CollapsibleSection;
- var Paragraph = UI_TOOLKIT.Paragraph;
- var Separator = UI_TOOLKIT.Separator;
- var SimpleTable = UI_TOOLKIT.SimpleTable;
- var FIELD_TITLE_CLASS = 's12yFieldTitle';
- var FIELD_VALUE_CLASS = 's12yFieldValue';
- var SHOW_INFO_ON_ALL_CONTENTS = StringResources.get('showInfoForAll');
- var HIDE_INFO_ON_ALL_CONTENTS = StringResources.get('hideInfoForAll');
- var Content = function (_React$Component) {
- _inherits(Content, _React$Component);
- function Content(props) {
- _classCallCheck(this, Content);
- var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
- _this._dashboardS12yFeature = _this.props.dashboardApi.getFeature('Serviceability');
- _this.state = {
- infoIsVisible: _this._dashboardS12yFeature.isInfoVisible()
- };
- _this._onClickSpec = _this._onClickSpec.bind(_this);
- _this._onClickShowInfo = _this._onClickShowInfo.bind(_this);
- _this._fieldContentGenerators = {
- 'SimpleTable': _this._createSimpleTable.bind(_this),
- 'Default': _this._createParagraph.bind(_this),
- 'ReactNode': function ReactNode(fieldSpec) {
- return fieldSpec.node;
- }
- };
- return _this;
- }
- Content.prototype._onClickSpec = function _onClickSpec() {
- var allSpec = { 'widget spec': this.props.widgetInfo.getSpec(), 'dashboard spec': this.props.dashboardApi.getSpec() };
- var buttons = [{
- type: 's12yDialogCopyButton',
- text: StringResources.get('copyButton'),
- handler: function handler() {
- document.execCommand('copy');
- },
- defaultId: 's12yDialogCopyButton'
- }, {
- text: StringResources.get('closeButton'),
- type: 'secondary s12yDialogCloseButton',
- defaultId: 'close'
- }];
- var options = {
- sType: 'editableInfo',
- sTitle: StringResources.get('specification'),
- sValue: JSON.stringify(allSpec, null, 4),
- updateable: false,
- showCloseX: true,
- buttons: buttons
- };
- var boardModelDialog = new EditableDialog(options);
- boardModelDialog.open();
- };
- Content.prototype._onClickShowInfo = function _onClickShowInfo(willShowInfo) {
- if (willShowInfo === true) {
- this._dashboardS12yFeature.showInfo();
- } else {
- this._dashboardS12yFeature.hideInfo();
- }
- this.setState({ infoIsVisible: willShowInfo });
- };
- Content.prototype.render = function render() {
- var _this2 = this;
- var sections = this.props.UISpec.map(function (sectionSpec) {
- return _this2._createSection(sectionSpec);
- });
- var showInfoToggle = !this.props.showButtons ? null : React.createElement(ToggleSwitchSection, {
- label: this.state.infoIsVisible ? HIDE_INFO_ON_ALL_CONTENTS : SHOW_INFO_ON_ALL_CONTENTS,
- rtl: false,
- className: 'showInfoToggle',
- checked: this.state.infoIsVisible,
- onChange: this._onClickShowInfo
- });
- var specButton = !this.props.showButtons ? null : React.createElement(Button, {
- label: StringResources.get('showDetails'),
- className: 'specDialogButton',
- onClick: this._onClickSpec,
- intent: 'primary'
- });
- this.container = React.createElement(
- Container,
- { width: 'auto', className: 's12yContent' },
- sections,
- showInfoToggle,
- specButton
- );
- return this.container;
- };
- Content.prototype._createSection = function _createSection(sectionSpec) {
- var _this3 = this;
- var fields = sectionSpec.sectionValues.map(function (fieldSpec, fieldIndex) {
- var isLastField = fieldIndex + 1 === sectionSpec.sectionValues.length;
- return _this3._createField(fieldSpec, isLastField);
- });
- var section = void 0;
- if (sectionSpec.sectionName === '') {
- section = React.createElement(
- React.Fragment,
- null,
- fields
- );
- } else {
- // Take section name, convert to lower case, and get rid of any spaces if any
- var id = 'serviceability_section_' + sectionSpec.sectionName.toLowerCase().replace(/\s/g, '');
- section = React.createElement(
- CollapsibleSection,
- {
- id: id,
- 'aria-controls': id,
- label: sectionSpec.sectionName,
- defaultOpen: sectionSpec.properties.open,
- labelStyle: {
- 'font-size': '16px',
- 'font-weight': 'bold',
- 'padding-left': '8px'
- },
- className: 's12ySection' },
- fields,
- React.createElement(Separator, { className: 'sectionSeparator' })
- );
- }
- return section;
- };
- Content.prototype._createField = function _createField(fieldSpec, isLastField) {
- var fieldContent = void 0;
- var fieldContentGenerator = this._fieldContentGenerators[fieldSpec.type];
- if (!fieldContentGenerator) {
- fieldContentGenerator = this._fieldContentGenerators['Default'];
- }
- fieldContent = fieldContentGenerator(fieldSpec);
- // Take field name, convert to lower case, and get rid of any spaces if any
- var id = 'serviceability_field_' + fieldSpec.fieldName.toLowerCase().replace(/\s/g, '');
- return React.createElement(
- Container,
- { id: id, 'aria-controls': id, className: 's12yField' },
- fieldContent,
- isLastField ? null : React.createElement(Separator, { className: 'fieldSeparator' })
- );
- };
- Content.prototype._createParagraph = function _createParagraph(fieldSpec) {
- return React.createElement(
- Container,
- { className: 'Default' },
- React.createElement(Label, { className: FIELD_TITLE_CLASS, label: fieldSpec.fieldName, type: 'caption' }),
- React.createElement(
- Paragraph,
- { className: FIELD_VALUE_CLASS },
- ' ',
- fieldSpec.fieldValue,
- ' '
- )
- );
- };
- Content.prototype._createSimpleTable = function _createSimpleTable(fieldSpec) {
- return React.createElement(
- Container,
- { className: 'SimpleTable' },
- fieldSpec.fieldName === '' ? null : React.createElement(Label, { className: FIELD_TITLE_CLASS, label: fieldSpec.fieldName, type: 'caption' }),
- React.createElement(SimpleTable, {
- className: 's12ySimpleTable',
- colLength: fieldSpec.fieldValue.columnLength,
- rowLength: fieldSpec.fieldValue.rowLength,
- headerRenderer: function headerRenderer(col) {
- var header = void 0;
- if (typeof fieldSpec.fieldValue.headerValue === 'function') {
- header = React.createElement(
- Paragraph,
- { className: FIELD_VALUE_CLASS + ' s12ySimpleTableHeader s12ySimpleTableHeader_' + col },
- fieldSpec.fieldValue.headerValue(col)
- );
- } else {
- header = null;
- }
- return header;
- },
- cellRenderer: function cellRenderer(row, col) {
- return React.createElement(
- Paragraph,
- { className: FIELD_VALUE_CLASS + ' s12ySimpleTableCell s12ySimpleTableCell_' + row + '_' + col },
- fieldSpec.fieldValue.cellValue(row, col)
- );
- } })
- );
- };
- return Content;
- }(React.Component);
- Content.propTypes = {
- widgetInfo: PropTypes.shape({
- getSpec: PropTypes.func
- }),
- dashboardApi: PropTypes.any,
- UISpec: PropTypes.array,
- showButtons: PropTypes.bool
- };
- return Content;
- });
- //# sourceMappingURL=ServiceabilityContent.js.map
|