123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- 'use strict';
- /**
- * Licensed Materials - Property of IBM
- * IBM Watson Analytics (C) Copyright IBM Corp. 2019
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['doT', 'jquery', 'text!./templates/GeneratePDFView.html', 'text!../../app/ui/templates/SelectMenu.html', '../../app/nls/StringResources', '../../lib/@waca/core-client/js/core-client/ui/core/View'], function (doT, $, GeneratePDFTemplate, SelectMenuTemplate, stringResources, View) {
- 'use strict';
- var KEY_CODES = {
- ENTER: 13,
- UP: 38,
- DOWN: 40,
- TAB: 9,
- SPACE: 32
- };
- var GeneratePDFView = View.extend([], {
- generatePDFTemplate: doT.template(GeneratePDFTemplate),
- selectMenuTemplate: doT.template(SelectMenuTemplate),
- pageSize: [stringResources.get('letter'), stringResources.get('legal'), stringResources.get('a4'), stringResources.get('tabloid')],
- orientation: [stringResources.get('portrait'), stringResources.get('landscape')],
- selectIndexPageSize: 0,
- selectIndexOrientation: 0,
- pdfDocsLink: 'https://www.ibm.com/support/knowledgecenter/SSEP7J_11.0.0/com.ibm.swg.ba.cognos.ug_ca_dshb.doc/ca_export_to_PDF.html',
- checkBoxState: false,
- events: {
- 'primaryaction .dtSelectListItem': '_onSelectValue',
- 'primaryaction .dtColDropdown': 'toggleSelectMenu',
- 'primaryaction .dtEditFooterContent': 'toggleCheckbox'
- },
- init: function init() {
- GeneratePDFView.inherited('init', this, arguments);
- },
- render: function render() {
- this.$el.empty();
- this.$el.append(this.generatePDFTemplate({
- pagesize: stringResources.get('pageSize'),
- orientation: stringResources.get('orientation'),
- printInfo: stringResources.get('printPDFInfo'),
- pdfLink: this.pdfDocsLink,
- getRow: this._getRow.bind(this),
- filterOptionText: stringResources.get('includeFilters')
- }));
- return this.$el;
- },
- remove: function remove() {
- if (this._closeSelectMenu_bind) {
- $(document.body).off('click', this._closeSelectMenu_bind);
- this._closeSelectMenu_bind = null;
- }
- GeneratePDFView.inherited('init', this, arguments);
- },
- onOpen: function onOpen() {
- this.$el.closest('.modalDialog').addClass('exportPDF');
- },
- getPageSize: function getPageSize() {
- var pageSize = {};
- pageSize = {
- pageSize: this.pageSize[this.selectIndexPageSize],
- orientation: this.orientation[this.selectIndexOrientation]
- };
- return pageSize;
- },
- _onSelectValue: function _onSelectValue(event) {
- this._selectValue(event.currentTarget);
- this._closeSelectMenu();
- },
- _selectValue: function _selectValue(target) {
- var $currentTarget = $(target);
- var $dropDownNode = $currentTarget.closest('.dtSelect').find('.dtColDropdown');
- var $list = $currentTarget.parent('.dtSelectList');
- var rowId = $list.data('rowid');
- var index = $currentTarget.data('optid');
- if (rowId == 0) {
- this.selectIndexPageSize = index;
- } else {
- this.selectIndexOrientation = index;
- }
- var update = this._getRow(rowId);
- var text = null;
- var checkmarkSelector = '.row_checkIcon_' + rowId + ' .dt-checked';
- this.$checkmark = this.$el.find(checkmarkSelector);
- this.$tableRow = this.$checkmark.closest('.dtEditTableRowsItem');
- if (update.state.selectedIndex >= 0) {
- text = update.state.values[update.state.selectedIndex];
- this.$checkmark.removeClass('hidden');
- this.$tableRow.addClass('mapped');
- } else {
- this.$checkmark.addClass('hidden');
- this.$tableRow.removeClass('mapped');
- }
- $dropDownNode.find('.dtColDropdownLabel').text(text);
- },
- toggleSelectMenu: function toggleSelectMenu(event) {
- var $currentTarget = $(event.currentTarget);
- if ($currentTarget.hasClass('dtColDropdown') && this.$el.find('.dtSelectList').length) {
- this._closeSelectMenu();
- } else if ($currentTarget.hasClass('dtColDropdown')) {
- this._openSelectMenu(event);
- }
- },
- _onDropDownKeydown: function _onDropDownKeydown($node, event) {
- var $current = $node.find('span.psuedoHover');
- var next = [];
- var prev = [];
- var isUpArrow = event.which === KEY_CODES.UP || event.keyCode === KEY_CODES.UP;
- var isDownArrow = event.which === KEY_CODES.DOWN || event.keyCode === KEY_CODES.DOWN;
- var isDirectionAllowed = isUpArrow || isDownArrow;
- var isEnter = event.which === KEY_CODES.ENTER || event.keyCode === KEY_CODES.ENTER;
- var isTab = event.which === KEY_CODES.TAB || event.keyCode === KEY_CODES.TAB;
- if (isTab) {
- this._closeSelectMenu();
- }
- if ($current.length) {
- next = $current.next();
- prev = $current.prev();
- if (isDirectionAllowed) {
- //Check for hover due to mouse
- $current = $current.is(':hover') ? $current.addClass('noPsuedoHover') : $current;
- //Remove psuedo Hover
- $current = $current.removeClass('psuedoHover');
- }
- }
- if ($current.length) {
- if (isEnter) {
- this._selectValue($current);
- } else if (isDirectionAllowed) {
- if (isUpArrow) {
- if (prev.length) {
- prev.addClass('psuedoHover').removeClass('noPsuedoHover');
- } else {
- $node.find('span').last().addClass('psuedoHover').removeClass('noPsuedoHover');
- }
- } else if (isDownArrow) {
- if (next.length) {
- next.addClass('psuedoHover').removeClass('noPsuedoHover');
- } else {
- $node.find('span').first().addClass('psuedoHover').removeClass('noPsuedoHover');
- }
- }
- }
- } else if (isDirectionAllowed) {
- if (isUpArrow) {
- $node.find('span').last().addClass('psuedoHover').removeClass('noPsuedoHover');
- } else if (isDownArrow) {
- $node.find('span').first().addClass('psuedoHover').removeClass('noPsuedoHover');
- }
- }
- $current = $node.find('span.psuedoHover');
- if ($current.length && !this._iswithinVerticalBounds($current, $node)) {
- $current.get(0).scrollIntoView();
- }
- },
- _closeSelectMenu: function _closeSelectMenu() {
- var $list = this.$el.find('.dtSelectList');
- if ($list.length) {
- var $dropDownNode = $list.siblings('.dtColDropdown');
- $dropDownNode.find('.dtDropDownIcon').removeClass('open');
- $list.hide();
- $list.remove();
- $dropDownNode.unbind('keydown', this._onDropDownKeydown_bind);
- if (this._closeSelectMenu_bind) {
- $(document.body).off('click', this._closeSelectMenu_bind);
- }
- $dropDownNode.attr('aria-expanded', false);
- }
- },
- _openSelectMenu: function _openSelectMenu(event) {
- event.preventDefault();
- event.stopPropagation();
- var $dropDownNode = $(event.currentTarget);
- var $selectNode = $dropDownNode.parent();
- var $dtDropDownIcon = $dropDownNode.find('.dtDropDownIcon');
- var rowId = event.currentTarget.dataset.rowid;
- var sHtml = this.selectMenuTemplate({
- rowId: rowId,
- getRow: this._getRow.bind(this)
- });
- var $node = $(sHtml);
- $selectNode.append($node);
- $dtDropDownIcon.addClass('open');
- $dropDownNode.attr('aria-expanded', true);
- this._closeSelectMenu_bind = this._closeSelectMenu.bind(this);
- this._onDropDownKeydown_bind = this._onDropDownKeydown.bind(this, $node);
- $(document.body).on('click', this._closeSelectMenu_bind);
- $dropDownNode.keydown(this._onDropDownKeydown_bind);
- $node.on('mouseover mousemove mousein mouseout', function (event) {
- $node.find('span').removeClass('noPsuedoHover psuedoHover');
- $(event.target).addClass('psuedoHover');
- });
- $node.show();
- var $list = $selectNode.find('.dtSelectList');
- var $selected = $list.find('span.dtSelected').addClass('psuedoHover');
- if ($selected.length) {
- if (!this._iswithinVerticalBounds($selected, $list)) {
- $selected.get(0).scrollIntoView();
- }
- }
- },
- _iswithinVerticalBounds: function _iswithinVerticalBounds($childElement, $containerElem) {
- var containerRect = $containerElem.get(0).getBoundingClientRect();
- var childRect = $childElement.get(0).getBoundingClientRect();
- return childRect.top >= containerRect.top && childRect.bottom <= containerRect.bottom;
- },
- toggleCheckbox: function toggleCheckbox(event) {
- event.stopPropagation();
- event.preventDefault();
- var $content = $(event.currentTarget);
- var $checkInput = $content.find('input');
- var $label = $content.find('label');
- $checkInput.prop('checked', !$checkInput.prop('checked'));
- var state = $checkInput.prop('checked');
- $label.toggleClass('dt-checked', state);
- this.checkBoxState = state;
- },
- _getRow: function _getRow(rowIndex) {
- if (rowIndex == 0) {
- return {
- state: {
- selectedIndex: this.selectIndexPageSize,
- values: this.pageSize
- }
- };
- } else {
- return {
- state: {
- selectedIndex: this.selectIndexOrientation,
- values: this.orientation
- }
- };
- }
- }
- });
- return GeneratePDFView;
- });
- //# sourceMappingURL=GeneratePDFView.js.map
|