'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